Tag Archives: apache htpd

Lamp Stack (Linux Apaxhe Mysql php) και Virtual Hosts σε Centos 6.6

Εφόσον είδαμε πως να στήσουμε Lamp Stack σε Ubuntu και Debian και πως στήσαμε VirtualHosts σε αυτό ήρθε η ώρα να σας δείξουμε πως να το κάνετε και σε Centos 6.6 (Αν και βγήκε η έκδοση 7, λόγο ότι βγαίνει μόνο σε 64 bit και δεν έχω το κατάλληλο hardware για 64 bit VMs το έκανα σε 6.6).

Εγκατάσταση Apache Mysql php

Κατ’ αρχάς εγκαθιστούμε τον http server, την mysql, την php και κάποια php modules, χρήσιμα για ένα μέσο site, με την εντολή:

yum install httpd mysql php php-devel php-mysql php-pdo php-xml php-imap php-pear.noarch php-gd php-pear

Και μετά για δοκιμή δίνουμε:

echo "<?php phpinfo(); ?>" > /var/www/http/info.php

Και μπορούμε να δούμε αν παίζει δίνοντας στον browser http://^server_address^/info.php ή http://localhost/info.php αν στήνουμε τον server στο ίδιο μηχάνημα.

Ακόμη κάποια site θέλουν το Plugin Imagemagick που εγκαθιστάτε με τις εντολές:

yum install ImageMagick ImageMagick-devel gcc
pecl install imagick
echo "extension=imagick.so" > /etc/php.d/imagick.ini
sudo service httpd restart

 Δημιουργία VirtualHost

Για να ελέγχεται αν το configuration του apache έχει κάποιο λάθος ,που ενδεχομένως να κάνατε εσείς, κατα την διάρκεια εκτέλεσης του οδηγού δίνουμε:

sudo httpd -t

Ο τρόπος που θα δημιουργούμε τα virtualhost είναι ο ίδιος που χρησιμοποιεί το Debian/Ubuntu μόνο που θα τον στήσουμε εμείς Εξ’ αρχής.

Γι αυτό κατ’ αρχάς θα κάνουμε 2 φακέλους, έναν που θα περιέχει όλα τα vhosts και έναν που θα έχει τα «ενεργά» vhosts:

sudo mkdir -p /etc/httpd/vhosts-enabled
sudo mkdir -p /etc/httpd/vhosts-available

Στο folder /etc/httpd/vhosts/vhosts-enabled θα υπάρχουν τα virtual hosts που θα θέλουμε να σερβίρουμε και θα είναι Symbolic Links των αρχείων που θα περιγράφουν τα Vhost που θα βρίσκονται στον φάκελο /etc/httpd/vhosts/vhosts-available και θα είναι αρχεία υπό μορφή *.conf

Και για να «ενεργοποιήσουμε» ανοίγουμε με τον αγαπημένο μας editor:

sudo nano /etc/httpd/conf/httpd.conf

Αν δεν έχετε τον nano μπορείτε ή να το κάνετε με vi η να τον εγκαταστήσετε με την εντολή:

sudo yum install nano

Κάνουμε uncomment (αφαιρούμε το # από μπροστά) την γραμμή που λέει

# NameVirtualHost *:80

Και προσθέτουμε στο τέλος του αρχείου τα παρακάτω:

Include vhosts-enabled/*.conf

Και με Ctrl+O αποθηκεύουμε και με Ctrl+X βγαίνουμε από τον Editor

Και δημιουργούμε έναν φάκελο φιλοξενίας των virtual host:

sudo mkdir vhosts

Τώρα αν θέλουμε να δημιουργήσουμε ένα virtual Host δημιουργούμε έναν φάκελο στο /var/www/vhosts που θα περιέχει έναν φάκελο για τα αρχεία του site και έναν φάκελο για τα logs. Αυτό είναι δυνατόν να γίνουν με τις εντολές:


cd /var/www/vhosts
sudo mkdir ^όνομα_vhost^
sudo mkdir ^όνομα_vhost^/htdocs #Φάκελος φιλοξενίας site
sudo mkdir ^όνομα_vhost^/logs #Φάκελος logs

Όπου το ^όνομα_vhost^ ένα χαρακτηριστικό όνομα για το site σας (πχ. το url του)

Μέτα πηγαίνετε στον φάκελο /etc/httpd/vhosts-enabled με την εντολή:

cd /etc/httpd/vhosts-enabled

Με τον αγαπημένο σας editor δημιουργείτε ένα αρχείο που το όνομα θα έχει την μορφή ^όνομα_vhost^.conf

sudo nano ^όνομα_vhost^.conf

Και βάζουμε περιεχόμενο της μορφής:


<Virtualhost *:80>
ServerName ^domain_or_ip^

DocumentRoot  ^path_που_περιεχει_τα_αρχεία_του_σιτε^

DirectoryIndex index.php home.php index.html index.htm

ErrorLog ^Path_για_logs_σφαλμάτων^
CustomLog ^path_για_άλλου_είδους_logs^ combined
</Virtualhost>

Όπου:

  • ^domain_or_ip^: To domain ή η IP που θέλουμε το site να σερβίρετε.
  • ^path_που_περιεχει_τα_αρχεία_του_σιτε^: Εκεί που έχουμε τα αρχεία του site μας (στην περίπτωσή μας /var/www/vhosts/^όνομα_vhost^/htdocs )
  • ^Path_για_logs_σφαλμάτων^: Path που θα καταγράφονται ότι error υπάρχει. (συγκεκριμένη τιμή /var/www/vhosts/^όνομα_vhost^/logs/error.log)
  • ^path_για_άλλου_είδους_logs^: Path που καταγράφονται logs για το ποια IP επισκέπτεται το site. (συγκεκριμένή τιμή /var/www/vhosts/^όνομα_vhost^/logs/custom.log)

Το virtualhost το ενεργοποιούμε με τις εντολές:

sudo ln -s `pwd`/^όνομα_vhost^.conf ../vhosts-enabled/^όνομα_vhost^.conf

ή εναλλακτικά

sudo ln -s /etc/httpd/vhosts-available/^όνομα_vhost^.conf /etc/httpd/vhosts-enabled/^όνομα_vhost^.conf

Και μετά δίνεις

sudo service httpd restart

και δίνοντας http://^site_url^ στον browser σας μπορείτε να επισκεφτείτε το site σας. (Αρκεί στο /var/www/vhosts/^όνομα_vhost^/htdocs να έχετε βάλει καποιο περιεχόμενο 😉 )
 

Virtual Hosts στον Apache httpd server σε Ubuntu και Debian

Εφόσον είδαμε σε αυτό το άρθρο πως να στήσεις ένα lamp stack τώρα θα δούμε πως θα έχεις την δυνατότητα να στήσεις virtualhosts στον apache2 server. Με απλά λόγια το virtual host, vhost για συντομία, είναι ο μηχανισμός που σου επιτρέπει να hostάρεις παραπάνω από ένα site στον ίδιο webserver.

Σε ubuntu, debian και λοιπές διανομές βασισμένες πάνω σε αυτές το virtualhost είναι ένα απλά ένα αρχείο με κατάλληλες ρυθμίσεις στον φάκελο /etc/apache2/sites-available ενώ τα site που apache θα σερβίρει είναι στο /etc/apache2/sites-enabled. Ακόμη ο φάκελος /etc/apache2/sites-enabled περιέχει symbolic links των vhost που θέλουμε να σερβίρει.

Τώρα το εκάστοτε αρχείο virtualhost έχει την εξής δομή:

 
<VirtualHost <ip>: <port> >
ServerAdmin <email>
ServerName <ip ή domain>
ServerAlias <ip ή domain>
DocumentRoot <path>

ErrorLog <path για logs σφαλμάτων>
CustomLog <path_για_logs> combined

<Directory />
   Order allow,deny
   Allow from all
   Require all granted
</Directory>
</Virtualhost>

Όπου:

  • <ip>: η Ip της διεπαφής που θα σερβίρει το περιεχόμενο και  <port> η θύρα που θα την σερβίρει. Για ip συνήσταται το * που συμαίνει για κάθε ip και port η 80 για http και 445 για https
  • <email> : όπως και η επιλογή ServerAdmin είναι προαιρετική και σε περίπτωση λάθους ή προβλήματος δύνεται η δυνατότητα να εμφανίζει που να επικοινωνήσουν για την επίλυσή του (πχ. σφάλμα 404)
  • <ip ή domain> είναι το όνομα που θα δίνει ο χρήστης στον browser όταν θα επισκέπτεται το εξής ιστότοπο. Πχ. αν το site σας είναι το http://malakies.gr θα βάλεται malakies.gr στην θέση του <ip ή domain>
  • <path> είναι η διαδρομή του φακέλου που θα περιέχει τα αρχεία που θα σερβίρει πχ. /home/www/htdocs.
  • <path για logs σφαλμάτων>,<path_για_logs> είναι η διαδρομή των αρχείων που θα καταγράφουν τα σφάλματα. Το ένα είναι για τα σφάλματα της php ή του script που θα τρέχει και θα εμφανίζει το περιεχόμενο και του άλλου θα καταγράφει την ip του ποιος έκανε αίτημα  http.

Tο εκάστοτε αρχείο το αποθηκεύουμε με το όνομα της μορφής κάτι.conf συνήθως η ονοματολογία του κάτι είναι της μορφής αριθμός-ονομα_site και επιλέγεται η ονοματολογία αυτή λόγο ότι ο apache «σκανάρει» με αλφαβητική σειρά τα vhosts προκειμένου να σερβίρει το κατάλληλο domain.

Tα vhosts τώρα ενεργοποιούνται με την εντολή:

sudo a2ensite κάτι

Και απενεργοποιούνται με την εντολή:

sudo a2dissite κάτι

Προκειμένου να εφαρμοστούν οι αλλαγές γίνεται ΠΑΝΤΑ:

sudo service apache2 reload

πχ. Ενα έχεται κάνει ένα vhost /etc/apache2/sites-available/mitsos.conf το ενεργοποιείται με τις εντολές:

sudo a2ensite mitsos 
sudo service apache2 reload 

και το απενεργοποιείται:

 sudo a2dissite mitsos
sudo service apache2 reload 
Παράδειγμα:

Έστω ότι έχουμε 2 site ένα που όταν θα δίνουμε mitsos στον browser θα εμφανίζει «Γειά σου Μίτσο» και ένα maria που θα εμφανίζει στον browser «Γεια σου Μαρία».

Για να γίνει αυτό πρώτα θα πειροάξουμε το hosts file (προϋποθέτουμε ότι είμαστε σε linux) του υπολογιστή που θα επισκεπτόμαστε το site. Αυτό το κάνουμε γιατί δεν υπάρχει domain mitsos ή maria έτσι για τις δοκιμές μας δημιουργούμε ένα. Σε περίπτωση που χρησιμοποιείται ΠΡΑΓΜΑΤΙΚΑ domain δεν χρειάζεται καν να αγγίξεται το αρχείο /etc/hosts που θα πειράξουμε.

Δίνουμε την εντολή:

sudo nano /etc/hosts 

και εκεί βάζουμε τις γραμμές

<ip> maria
<ip> mitsos

Όπου <ip> είναι η ip του μηχανήματος που θα φιλοξενεί το site και αποθηκεύουμε με CTRL+O και με CTRL+X τερματίζουμε το nano.

Μετά δημιουργούμε τους φακέλους (προϋποθέτουμε ότι το /home/user ανήκει σε χρήστη που κάνει τις ρυθμίσεις):

mkdir -p /home/user/maria/{htdocs,errors}
chmod -R +x /home/user/maria/
mkdir -p /home/user/mitsos/{htdocs,errors}
chmod -R +x /home/user/mitsos

Και το περιεχόμενο για το εκάστοτε site:


echo "<? php ehco \"Γεια σου Μίτσο\";?>" > /home/user/mitsos/htdocs/index.php
echo "<? php ehco \"Γεια σου Μαρία\";?>" > /home/user/maria/htdocs/index.php

Εφόσον τα κάνουμε δημιουργούμε τα vhosts:

  • Για το mitsos μημιουργούμε το /usr/apache2/sites-available/000-mitsos.conf
    <VirtualHost *:80 >
    
    ServerName mitsos
    ServerAlias mitsos
    DocumentRoot /home/user/mitsos/htdocs
    
    ErrorLog /home/user/mitsos/errors/error.log
    CustomLog /home/user/mitsos/errors/access.log combined
    
    <Directory />
       Order allow,deny
       Allow from all
       Require all granted
    </Directory>
    </Virtualhost>
    
  • Για το maria δημιουρφούμε το αρχείο /usr/apache2/sites-available/000-mitsos.conf
    <VirtualHost *:80 >
    
    ServerName maria
    ServerAlias maria
    DocumentRoot /home/user/maria/htdocs
    
    ErrorLog /home/user/mitsos/errors/error.log
    CustomLog /home/user/mitsos/errors/access.log combined
    
    <Directory />
       Order allow,deny
       Allow from all
       Require all granted
    </Directory>
    </Virtualhost>

Και τα ενεργοποιούμε με τις εξής εντολές:


sudo a2ensite 000-mitsos
sudo a2ensite 000-maria
sudo service apache2 reload

Σημείωση: Στην ενεργοποίηση των vhost δίνεται το όνομα του αρχείου του vhost ΧΩΡΙΣ την κατάληξη.

Λοιπόν πλέον είστε έτοιμος για να hostaρεται τα δικά σας site με έναν server.