ถ้าต้องการเพิ่มเว็บเข้าไปใน host โดยที่แยกคนละ site คนละโดแมนออกจากกันเพื่อความสะดวกในการดูแล
- เพิ่ม directory สำหรับเก็บข้อมูลก่อน
sudo mkdir -p /Users/Shared/www/example.com/published
- ตั้งสิทธิให้ apache เข้าไปวิ่งเล่นเขียนอ่านได้
cd /Users/Shared/www/example.com/published
sudo chown -R www-data:www-data *;
sudo find . -type d -exec chmod 755 {} \;
sudo find . -type f -exec chmod 644 {} \;
- สร้างไฟล์ configuration แยกออกมาจากตัวเดิม
sudo nano /etc/apache2/sites-available/example.com.conf
- พิมพ์ตามตัวอย่าง
12345678910111213141516171819202122232425262728293031
<VirtualHost *:443 *:80>
<Directory "/Users/Shared/www/example.com/published">
#Access control in Apache 2.2:
#Allow from all
#Order allow,deny
#Access control in Apache 2.4:
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
</Directory>
DefaultLanguage th_TH
DocumentRoot /usr/share/www/example.com/published
#log files
CustomLog ${APACHE_LOG_DIR}/example.com.access.log "combined"
ErrorLog ${APACHE_LOG_DIR}/example.com.error.log
RewriteEngine on
#rewrite to https
RewriteCond %{SERVER_NAME} =www.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
#security
php_admin_value open_basedir "/usr/share/www/example.com/published"
#server
ServerAdmin phunsanit@gmail.com
ServerAlias www.example.com
ServerName example.com
</VirtualHost>
- line 1 <VirtualHost *:443 *:80 ถ้าใส่ไว้ port เดียวอย่าลืมเช็คคอนฟิกของ SSL ด้วย บางระบบจะเขียนไว้ในไฟล์ต่างกัน เช่น เพิ่ม suffix -le-ssl ใน Let’s Encrypt
- best practice ที่ดีคือ ถ้า http และ https ต่างกันมาก ควรแยกคอนฟิกเกอเรชั่นแยกกัน
- line 3 ใน Access control เลือกให้ตรงกับ apache version ที่ใช้ ถ้าไม่ใช้ให้ลบออก หรือใส่ # ไว้ด้านหน้า
- line 2, 14 ตำแหน่งในการ run PHP และให้ user เรียกดูไฟล์ css, js, รูปภาพได้
- line 18 เป็นส่วนที่กำหนดให้ run PHP ในนี้เท่านั้น
- ส่วนที่เป็น ServerAlias และ ServerName จะเป็นตัวที่ให้ apache เลือกว่าจะแสดงผลให้ URL อะไร เช่น ในการทดสอบอาจจะเปลี่ยนเป็น www.pitt.plusmagi.internal และ pitt.plusmagi.internal
- เทส config โดย
sudo apache2ctl configtest
- เปิดใช้งาน configuration
sudo a2ensite example.com.conf
- รีสตาร์ apache
sudo systemctl restart apache2
ทดลองใส่ไฟล์เข้าไปใน /Users/Shared/www/example.com/published แล้วเรียก url ที่ใส่เพิ่มเข้าไปดูว่าสามารถเรียกได้รึเปล่า
อ่านเพิ่มเติม