====== Apache - Εξυπηρετητής ιστοσελίδων ====== ===== Εγκατάσταση apache2 ===== Για να εγκαταστήσουμε τον apache aptitude install apache2 Για να ελέγξουμε ότι εγκαταστάθηκε σωστά δοκιμάζουμε στην συνέχεια από έναν browser την διεύθυνση http://localhost Η εκκίνηση/τερματισμός και η επανεκκίνηση του apache γίνεται όπως και σε όλες τις υπηρεσίες στο debian linux.Π.χ. gia την επανεκκίνηση /etc/init.d/apache2 restart (start/stop για εκκίνηση/τερματισμό) Εάν μας βγάλει το παρακάτω μήνυμα Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName βλ.[[el:linux:debian:server:networking]] ===== Εγκατάσταση πρόσθετων modules ===== ==== php ==== Για να εγκαταστήσουμε php aptitude install php libapache2-mod-php Εάν έχουμε και βάση δεδομένων mysql στο σύστημά μας θα χρειαστούμε την δυνατότητα επικοινωνίας της php με αυτή aptitude install php-mysql Για να ελέγξουμε ότι λειτουργεί η php δημιουργούμε ένα αρχείο /var/www/html/phpinfo.php
Το ελέγχουμε με http://localhost/phpinfo.php Για να εγκαταστήσουμε επίσης τον php debugger ώστε να έχουμε την δυνατότητα να καλέσουμε την php από command line (και να δούμε για παράδειγμα την έκδοση) aptitude install php-db ==== apc ==== aptitude install php-apc Τροποποιούμε το αρχείο /etc/php5/apache2/php.ini προσθέτωντας την παρακάτω γραμμή apc.rfc1867 = 1 Τέλος επανεκκινούμε τον apache2 /etc/init.d/apache2 restart ==== PECL uploadprogress library ==== aptitude install php5-dev make pecl install uploadprogress Τροποποιούμε το αρχείο /etc/php5/apache2/php.ini προσθέτωντας την παρακάτω γραμμή extension=uploadprogress.so Τέλος επανεκκινούμε τον apache2 /etc/init.d/apache2 restart === Ρυθμίσεις php === Για να μπορούμε να κάνουμε upload μεγάλα αρχεία πάνω από 2MB (π.χ. το component virtuemart στο joomla) θα πρέπει να ανέβάσουμε το όριο ασφαλείας που έχει η php. Τροποποιούμε το αρχείο /etc/php5/apache2/php.ini ; Maximum allowed size for uploaded files. upload_max_filesize = 4M ==== ioncube ==== Κατεβάζουμε τον loader από http://www.ioncube.com/loaders.php cd /tmp/ wget https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz Αποσυμπιέζουμε στον φάκελο tmp tar xvfz ioncube_loaders_lin_x86-64.tar.gz cd ioncube/ mkdir /usr/local/lib/ioncube Μας ενδιαφέρει ο loader για την έκδοση της php που έχουμε php -v Εάν έχουμε π.χ. την php 5.3 mv ioncube_loader_lin_5.*.so /usr/local/lib/ioncube/ chown www-data.www-data -R /usr/local/lib/ioncube/ Προσθέτουμε στις πρώτες γραμμές του αρχείου /etc/php5/apache2/php.ini να φορτώνει τον ioncube loader zend_extension=/usr/local/lib/ioncube/ioncube_loader_lin_5.3.so Ελέγχουμε ότι τα αρχεία ρυθμίσεων του apache είναι ok apache2ctl -t Επανεκκινούμε τον apache2 /etc/init.d/apache2 restart Εάν υπάρχει πρόβλημα cp /tmp/ioncube/loader-wizard.php /home/weballdesign/public_html/www chown weballdesign.weballdesign /home/weballdesign/public_html/loader-wizard.php lynx wwww.weballdesign.gr/loader-wizard.php Μόλις λυθεί rm /home/weballdesign/public_html/loader-wizard.php ==== perl ==== Για να εγκαταστήσουμε την perl και το module της στον apache2 aptitude install perl libapache2-mod-perl2 /etc/init.d/apache2 restart ===== Εξυπηρέτηση site ===== Θα ρυθμίσουμε αρχικά τον apache να προβάλλει ένα συγκεκριμένο site όταν ανοίγουμε την διεύθυνση http://localhost. Ήδη είναι ρυθμισμένος να εμφανίζει το περιεχόμενο του φακέλου /var/www/apache2-default κάνωντας ανακατεύθυνση όταν ανοίγουμε την διεύθυνση http://localhost στην διεύθυνση http://localhost/apache2-default. Η ρύθμιση αυτή είναι στο αρχείο /etc/apache2/sites-available/default. Υπάρχουν πολλοί τρόποι να ρυθμιστεί ο apche να εξυπηρετεί sites. Ο τρόπος που επιλέγει η διανομή debian είναι αρκετά καλά δομημένος. Διαφέρει όμως από τους τρόπους ρύθμισης άλλων διανομών linux και συνήθως δεν υποστηρίζεται από εξωτερικά εργαλεία ρύθμισης του apache. Για το λόγο αυτό θα ακολουθήσουμε έναν πιο γενικό τρόπο ρύθμισης. Όλα τα sites θα τα καταγράψουμε στο αρχείο /etc/apache2/httpd.conf Πριν ξεκινήσουμε θα πρέπει να απενεργοποιήσουμε το site που ήδη εξυπηρετείται a2dissite 000-default /etc/init.d/apache2 restart Αυτό διαγράφει τον συμβολικό δεσμό στο /etc/apache2/sites-enabled/000-default που δείχνει στο διαθέσιμο site /etc/apache2/sites-available/default. Η λογική αυτή υπάρχει και για τα modules και οι εντολές που ενεργοποιούν απενεργοποιούν sites και modules είνα αντίστοιχα: a2ensite, a2dissite, a2enmod, a2dismod (πατήστε TAB μετά από καθεμία για να δείτε τα διαθέσιμα sites/modules) Μετά από κάθε αλλή σε configuration file του apache είναι καλό να τρέχουμε πρώτα την παρακάτω εντολή πριν κάνουμε επανεκκίνηση. Θα ελέγξει την ορθότητα των configuration files, ώστε να αποφύγουμε την αποτυχία επανεκκίνησης του apache. apache2ctl -t ==== Προκαθορισμένο ριζικό site==== Αντιγράφουμε τα περιεχόμενα ενός site σε έναν φάκελο π.χ. στον /var/www/mysite. Στην συνέχεια προσθέτουμε στο αρχείο /etc/apache2/httpd.conf τις παρακάτω γραμμές. (Αφήνουμε και τις απενεργοποιημένες γραμμές που ξεκινούν με σχόλιο #, θα μας χρειαστούν αργότερα NameVirtualHost *:80
404 Error - Page not found
[404] Page not found
Sorry, the file was not found on this server.
Please ensure that you have entered the url correctly. If you did so, then probably the file was removed from the server.
You will be redirected to our homepage in 10 seconds.
[404] Δεν βρέθηκε η σελίδα
Δυστυχώς, η σελίδα δεν βρέθηκε.
Παρακαλώ σιγουρέψτε ότι εισάγατε σωστή την διεύθυνση. Εάν την έχετε εισαγάγει σωστά είναι πιθανό ότι η διεύθυνση δεν είναι πλέον έγκυρη.
Θα μεταφερθείτε στην αρχική μας σελίδα σε 10 δευτερόλεπτα..
==== mod_rewrite====
Ένα από τα πιο ισχυρά και βέβαια, από τα πιο πολύπλοκα features του apache
=== Αλλαγή domain.com σε www.domain.com ===
Αυτό μπορεί να φανεί αρκετά χρήσιμο σε πολλές περιπτώσεις. Αρκεί να προσθέσουμε τα παρακάτω
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://www.domain.com/$1 [L,R]
==== mod_suexec ====
Για να εγκαταστήσουμε το module
aptitude install apache2-suexec
Για να δούμε πληροφορίες εκτελούμε
/usr/lib/apache2/suexec -V
Για να αλλάξουμε τον προκαθορισμένο φάκελο κάτω από τον οποίον εκτελούνται cgi και php μέσω suexec, εγκαθιστούμε το πακέτο apache2-suexec-custom αντί το apache2-suexec
aptitude install apache2-suexec-custom
Στην συνέχεια τροποποιούμε το αρχείο /etc/apache2/suexec/www-data αλλάζοντας την 1η γραμμή του από /var/www/ π.χ. σε /home
==== mod_fcgid ====
Σε συνδυασμό με την suexec μπορούμε να χρησιμοποιήσουμε το module fcgid το οποίο εκτελεί τα php scripts με δικαιώματα του χρήστη και όχι του apache και είναι αρκετά γρήγορο σε σχέση με τα cgi
Για την εγκατάσταση
apt-get install libapache2-mod-fcgid php-cgi
a2dismod php
a2enmod fcgi
service apache2 restart
Στην συνέχεια προσθέτουμε στο configuration αρχείο του apache που αφορά το domain που θέλουμε στην ενότητα public_html Directory
#!/bin/bash
PHPRC=/etc/php5/apache2/php.ini
export PHPRC
umask 027
exec /usr/bin/php-cgi
Του δίνουμε δικαιώματα εκτέλεσης και επανεκκινούμε τον apache
chmod +x /home/testdom/fcgi-bin/php5.fcgi
/etc/init.d/apache2 restart
Για νέους χρήστες μπορούμε να προσθέσουμε αυτόν τον φάκελο και το αρχείο στο /etc/skel/
Τα αρχεία της εφαρμογής που εκτελούμε καθώς και το fcgi wrapper θα πρέπει να έχουν ιδιοκτήτη τον χρήστη και να μην υπάρχει η δυνατότητα εγγραφής από την ομάδα ή από τους άλλους. Ειδάλλως η suexec δεν θα τα εκτελέσει
To log της suexec είναι στο φάκελο /var/log/apache2/
==== Protected Web Dirs ====
a2enmod dav_fs dav
Θα δημιουργήσουμε ένα αρχείο .htaccess (ή θα βάλουμε τις ρυθμίσεις κατευθείαν στο conf αρχείο του apache)
AuthUserFile /home/testuser/.htpass
AuthGroupFile /dev/null
AuthName "Restricted Area, pls provide username and password"
AuthType Basic
require valid-user
Το αρχείο .htpass θα δημιουργηθεί ως εξής :
cd ~testuser
htpasswd -c .htpass testuser
Για προσθήκη περισσότερων χρηστών
htpasswd .htpass otherusername
==== mod_status ====
Εάν θέλουμε να παρακολουθήσουμε τις συνδέσεις που γίνονται στους virtual hosts που έχουμε τότε μπορούμε να ενεργοποιήσουμε το module **mod_status**
a2enmod status
Στην συνέχεια τροποποιούμε το αρχείο **/etc/apache2/mods-enabled/status.conf** εισάγωντας στο Location directive τις ip από τις οποίες μπορούμε να έχουμε πρόσβαση