Monday, September 14, 2015

HOW TO SETUP AN APACHE VIRTUAL HOST ON UBUNTU 14.04 Server

Prerequire
  • ก่อนสร้าง vhost ตอนเราติดตั้ง Server มันได้ลง LAMP เรียบร้อยแล้วนะครับ
  • ถ้าเรายังไม่ได้ลง LAMP ก็ลงให้เรียบร้อยซะ ตามกระทู้เยอะแยะใน internet นะหาเอง
Step
  • สร้าง directory สำหรับ vhost ตัวที่เราจะสร้างใหม่
sudo mkdir /var/www/mysite.com
  • สร้างไฟล์สำหรับทดสอบ vhost ไว้รอเลย
sudo echo "<?php phpinfo(); ?>" > /var/www/mysite.com/index.php
  • จัดการสิทธิ์การเข้าถึงเว็บไซต์อันนี้ก่อน
sudo chmod -R 705 /var/www/mysite.com
sudo chown -R $USER:$USER /var/www/mysite.com
  • หลังจากเตรียมพาธสำหรับ vhost เราแล้วมา คอนฟิกกัน
  • สร้างคอนฟิก vhost อันใหม่ของเราโดยสำเนาจาก คอนฟิกเริ่มต้น
  • ซึ่งคอนฟิกเริ่มต้นของ Ubuntu 14.04 จะเป็น /etc/apache2/site-available/000-default.conf นะ
  • สำเนาด้วยคำสั่ง (แนะนำว่า ให้ตามด้วย .conf จะได้เข้าใจว่าไฟล์นี้คือคอนฟิกไฟล์)
sudo cp /etc/apache2/site-available/000-default.conf /etc/apache2/site-available/mysite.com.conf
  • จากนั้นเปิดคอนฟิก vhost ตัวใหม่ของเราขึ้นมา
sudo vi /etc/apache2/site-available/mysite.com.conf
  • แก้ไขให้เป็นประมาณนี้นะ และเมื่อเรียบร้อยแล้ว ก็บันทึกไฟล์คอนฟิกซะ
<VirtualHost *:80>
    ServerAdmin admin@mysite.com
    ServerName mysite.com
    ServerAlias www.mysite.com
    DocumentRoot /var/www/mysite.com
</VirtualHost>
  • เปิดใช้ vhost ใหม่ด้วยคำสั่ง
sudo a2ensite mysite.com.conf
  • รีสตาร์ท apache สักรอบ
sudo service apache2 restart
  • ทดสอบ vhost บน linux client โดยแก้ไขไฟล์ /etc/hosts ส่วนบน windows client แก้ไขไฟล์  C:\System32\drivers\etc\hosts เพิ่มประมาณนี้
  • <ไอพีเครื่องที่เราคอนฟิก apache vhost นั่นแหละ> mysite.com เช่น
10.100.90.90 mysiste.com
  • ที่ client เราเปิด browser ขึ้นมาแล้วพิมพ์
http://mysite.com/
เพิ่มเติม
  • ข้อสังเกตุในการสร้างคอนฟิกสำหรับแต่ละ site
  • /etc/apache2/site-available/mysite.com.conf
  • คอนฟิกไฟล์ site ของเราต้องลงท้ายด้วย .conf หว่า ไม่งั้น a2ensite ไม่ได้นะ not exist file หว่า
  • สมมุติเราสร้าง mysite.com เราต้องสร้างเป็น mysite.com.conf
  • sudo a2ensite mysite.com หรือ sudo a2ensite mysite.com.conf 
  • สรุปใช้คำสั่งได้ทั้งสองแบบนะ แต่คอนฟิกต้องลงท้ายด้วย .conf ว่างั้น
  • แต่ไม่อยากใส่ .conf ของไฟล์ vhost เราล่ะทำไง อ่านต่อได้เลย คับ
  • sudo cp /usr/sbin/a2ensite /usr/sbin/a2ensite.old
  • sudo nano /usr/sbin/a2ensite
I just had the same problem. I'd say it has nothing to do with the apache.conf.
a2ensite must have changed - line 532 is the line that enforces the .conf suffix:
else {
    $dir    = 'sites';
    $sffx   = '.conf';
    $reload = 'reload';
}
If you change it to:
else {
    $dir    = 'sites';
    #$sffx   = '.conf';
    $sffx   = '';
    $reload = 'reload';
}
...it will work without any suffix.
Of course you wouldn't want to change the a2ensite script, but changing the conf file's suffix is the correct way.
It's probably just a way of enforcing the ".conf"-suffix.
Ref
  • https://www.vultr.com/docs/apache-virtual-hosts-on-ubuntu-14-04-lts
  • https://www.godaddy.com/help/how-to-setup-an-apache-virtual-host-on-ubuntu-1404-12381
  • http://stackoverflow.com/questions/20591889/site-does-not-exist-error-for-a2ensite
  • http://askubuntu.com/questions/450722/why-apache-virtual-hosts-on-ubuntu-14-04-is-not-working

No comments:

Post a Comment