Το Virtual Hosting είναι ένας τρόπος hosting πολλών διαφορετικών domain names σε έναν φυσικό server . Επιτρέπει το μοίρασμα των πόρων του φυσικού server πχ cpu , ram , στα διάφορα domain names .
Παρακάτω θα φτιάξουμε ένα setup για τα domain names , test1.com , test2.com .
Αν το apache δεν είναι εγκατεστημένο στο σύστημα σας χρησιμοποιήστε την apt -get για να το εγκαταστήσετε :
sudo apt-get update
sudo apt-get install apache2
1.Δημιουργία των directories
Αρχικά το directory /var/www/html είναι το default του web server . Εμέις θέλουμε να δημιουργήσουμε ενα directory για το κάθε domain name , και για κάθε domain name , έναν φάκελο που θα έχει τα αρχεία του . :
sudo mkdir -p /var/www/test1.com/public_html
sudo mkdir -p /var/www/test2.com/public_html
Τώρα δημιουργήσαμε αυτούς τους φακέλους , αλλά μόνο ο χρήστης root έχει δικαιώματα . Για να δώσουμε δικαιώματα στον απλό χρήστη χρησιμοποιούμε τις εντολές :
sudo chown -R $USER:$USER /var/www/test1.com/public_html
sudo chown -R $USER:$USER /var/www/test2.com/public_html
Όπου user το όνομα του χρήστη στον οποίο θέλουμε να δώσουμε δικαιώματα .
2.Δημιουργία demo σελίδας σε κάθε Virtual Host
Τώρα αφου τα directories είναι έτοιμα , θα βάλουμε στον φάκελο του κάθε virtual host μια πολύ απλή σελίδα index.html . Αυτο θα βοηθήσει αργότερα όταν θα χρειαστούμε να τεστάρουμε τους virtual hosts .
sudo vi /var/www/test1.com/public_html/index.html
Το index.html θα είναι ένα πολύ απλό html page που απλά θα δείχνει ότι είμαστε στο σωστό directory .
/var/www/example.com/public_html/index.html
<html>
<head>
<title>Welcome to test1.com!</title>
</head>
<body>
<h1>Success! The test1.com virtual host is working!</h1>
</body>
</html>
Επαναλαμβάνουμε ακριβώς την ίδια διαδικασία και για το domain name test2
sudo vi /var/www/test2.com/public_html/index.html
/var/www/example.com/public_html/index.html
<html>
<head>
<title>Welcome to test2.com!</title>
</head>
<body>
<h1>Success! The test2.com virtual host is working!</h1>
</body>
</html>
3.Δημιουργία νέων Virtual Host files
Τα Virtual Host Files προσδιορίζουν τις ρυθμίσεις λειτουργίας των virtual host μας , και ρυθμίζουν πως θα απαντά ο server στα αιτήματα που του γίνονται .
Ο Apache έχει ένα default virtual host file που λέγεται 000-default.conf και μπορούμε να το χρησιμοποιήσουμε για να φτιάξουμε τα δικα μας αρχεία .
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/test1.com.conf
sudo vi /etc/apache2/sites-available/test1.com.conf
Με κάποιες μικρές διαφορές το αρχείο πρέπει να έχει την παρακάτω μορφή
/etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Για αρχή θα αλλάξουμε το email στο πεδίο Serveradmin έτσι ώστε ο admin του server να μπορεί να δέχεται email .
Μετά , κάτω απο την γραμμή του email θα προσθέσουμε 2 νέες πεδία :
ServerName test1.com
ServerAlias www.test1.com
Τέλος , αλλάζουμε το πεδίο DocumentRoot ώστε να δείχνει στο directory που δημιουργήσαμε πριν , δηλαδή το :
/var/www/test1.com/public_html
Αποθηκεύουμε το αρχείο . Βέβαια φτιάξαμε το Virtual Host File για το domain name test1. Για το domain name test2 θα επαναλάβουμε ακριβώς την ίδια διαδικασία .
4.Ενεργοποίηση των Virtual Host files
Ως τώρα έχουμε δημιουργήσει τα virtual host fiiles σύμφωνα με τις ανάγκες μας , αλλά ο apache δεν πρόκειται να τα χρησιμοποιήσει , αν δεν τα ενεργοποιήσουμε πρώτα .
Ενεργοποιούμε με την σειρά το καθε domain name :
sudo a2ensite test1.com.conf
sudo a2ensite test2.com.conf
Το a2ensite είναι ένα εργαλείο για την ενεργοποίηση των sites .
Αφου εκτελέσουμε τις 2 απο πάνω εντολές θα πάρουμε λογικά την ακόλουθη έξοδο :
Enabling site test1.com.
To activate the new configuration, you need to run:
service apache2 reload
Θα χρειαστεί να κάνουμε reload τον Apache , αλλά πριν γίνεται αυτό πρέπει να κάνουμε disable to 000-default.conf μιας και πλεον χρησιμοποιούμε τα δικά μας configuration files .
sudo a2dissite 000-default.conf
Τώρα είμαστε έτοιμοι να κάνουμε reload τον Apache
sudo systemctl restart apache2
5.Test των αποτελεσμάτων
Για να είμαστε σίγουροι ότι δεν κάναμε κάποιο λάθος , θα ανοίξουμε εναν browser , και θα δοκιμάσουμε να μπούμε στα 2 site που δημιουργήσαμε πριν , τα :http://test1.comhttp://test2.com
Αν δούμε το μήνυμα Sucess!The test.com virtual host is working και στις 2 σελίδες όλα έγιναν σωστά και είμαστε έτοιμοι!