Create Apache Virtual Host on Ubuntu 16.04

Apache เป็น Web Server ที่ได้รับความนิยมมากที่สุดตัวหนึ่ง สามารถติดตั้งได้ทั้งบน Windows และ Linux และมันยังสามารถทำ Virtual Host ได้อีกด้วย พูดง่าย ๆ ก็คือ ภายใน 1 Host สามารถมีได้หลาย Website หรือหลาย Domain นั่นเอง หากใครใช้ ISPConfig จะเข้าใจได้ไม่ยาก


Get Started

  • ทำการ Update และ Upgrade
# apt-get update && apt-get upgrade -y
  • ทำการติดตั้ง Package
# apt-get install apache2 -y
  • ทำการ Start Service Apache
# service apache2 start
  • เข้าไปที่หน้าเว็บ http://localhost/ จะเห็นว่า Root Directory จะอยู่ที่ /var/www/html
  • ทำการสร้าง Root Directory สำหรับ Site ที่เราจะสร้าง
# mkdir -p /var/www/virtualhost1.lab.local/public_html
# mkdir -p /var/www/virtualhost2.lab.local/public_html
  • ทำการแก้ไข Permission
# chown -R lablocal:lablocal /var/www/virtualhost1.lab.local/public_html
# chown -R lablocal:lablocal /var/www/virtualhost2.lab.local/public_html
# chmod -R 755 /var/www
  • ทำการสร้างหน้า Web Page ของ virtualhost1.lab.local
# vi /var/www/virtualhost1.lab.local/public_html/index.html
<html>
  <head>
    <title>Welcome to virtualhost1.lab.local</title>
  </head>
  <body>
    <h1>Success!  The virtualhost1.lab.local virtual host is working!</h1>
  </body>
</html>
  • ทำการสร้างหน้า Web Page ของ virtualhost2.lab.local
# vi /var/www/virtualhost2.lab.local/public_html/index.html
<html>
  <head>
    <title>Welcome to virtualhost2.lab.local</title>
  </head>
  <body>
    <h1>Success!  The virtualhost2.lab.local virtual host is working!</h1>
  </body>
</html>
  • ทำการสร้างไฟล์ Virtual Host Config ของ virtualhost1.lab.local
# vi /etc/apache2/sites-available/virtualhost1.lab.local.conf
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName virtualhost1.lab.local
    ServerAlias virtualhost1.lab.local
    DocumentRoot /var/www/virtualhost1.lab.local/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin admin@example.com
    ServerName virtualhost1.lab.local
    ServerAlias virtualhost1.lab.local
    DocumentRoot /var/www/virtualhost1.lab.local/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
  • ทำการสร้างไฟล์ Virtual Host Config ของ virtualhost2.lab.local
# vi /etc/apache2/sites-available/virtualhost2.lab.local.conf
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName virtualhost2.lab.local
    ServerAlias virtualhost2.lab.local
    DocumentRoot /var/www/virtualhost2.lab.local/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin admin@example.com
    ServerName virtualhost2.lab.local
    ServerAlias virtualhost2.lab.local
    DocumentRoot /var/www/virtualhost2.lab.local/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
  • หากต้องการทำ Redirect ก็สามารถเขียนลงในไฟล์ Virtual Host Config
<VirtualHost *:80>
    ...
    RedirectPermanent / https://xxx.lab.local/
    ...
</VirtualHost>
  • ทำการ Enable ไฟล์ Virtual Host ของทั้งสอง Site
# a2ensite virtualhost1.lab.local.conf
# a2ensite virtualhost2.lab.local.conf
  • ทำการ Restart Service
# service apache2 reload

อ่านเพิ่มเติม : https://do.co/1kaxEAK


Leave a Reply

Your email address will not be published. Required fields are marked *