Mr.Green

สร้าง บันทึกและแบ่งปัน

พิมพ์ค้นหาบทความได้ในช่องค้นหา

Apache Virtual Hosts on Ubuntu 20.04

Apache Virtual Hosts on Ubuntu 20.04 เป็นบทความที่เขียนขึ้นมาเพื่ออ้างอิงในการจัดทำ virtual hosts บน Ubuntu เหตุที่ต้องจัดเพื่อลดการเช่าพื้นที่และต้องการทดสอบการทำงาน

ส่วนข้อมูลในการอ้างอิง ได้ทดลองโดยยึดแนวทางในการจัดทำผ่านทาง URL นี้

https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-20-04

ขออธิบายในภาพรวมก่อน

Hosting ในการจัดเก็บข้อมูลเว็บไซต์ ได้ใช้วิธีการโดยใช้บริการจาก Digitalocean ลักษณะการทำงานโดยปกติหากเราเช่าพื้นที่ทั่วไป เราแค่เอาข้อมูลเว็บไซต์ขึ้นไปเก็บไว้ยังพื้นที่ที่ทางผู้ให้บริการเตรียมไว้ให้

แต่ในกรณีของ DitgitalOcean มันจะแตกต่างกันตรงที่ เมื่อเราซ์้อบริการแล้ว ทางผู้ให้บริการจะให้เราสร้าง Droplet เมื่อเราสร้างเสร็จ ทางผู้ให้บริการจะสร้าง Server จำลองให้เราพร้อมกับติดตั้ง Linux ให้เรียบร้อย ตามที่เราเลือกในขณะสร้างว่าเราจะใช้ Linus ตัวไหนเป็น OS หรือหากเราไม่ค่อยชำนาญเราอาจจะใช้บริการติดตั้งผ่านทางที่ผู้ให้บริการจัดเตรียมไว้ให้ก็ได้

ในส่วนตัวใช้วิธีการตอนสร้าง Droplete แค่เลือกใช้ Ubuntu อย่างเดียว เหตุผลที่เลือกเพราะ พวก php จะได้เวอร์ชั่นใหม่ว่า Debian แต่การติดตั้งมันคล้ายๆๆกัน

หลังจากนั้น ดำเนินการติดตั้ง lamp แล้วติดตั้ง wordpress แล้วไปจดโดเมน มาผูกกับ droplet ที่เราสร้าง เมื่อดำเนินการเสร็จเรียบร้อย จึงเป็นที่มาของ เว็บไซต์ knupan.com

ต่อมาเนื่องจากเว็บไซต์ดังกล่าว มีสองส่วนรวมกัน นั้นคือ Blog กับ knowledge ปัญหามันตามมา คือ knowledge สร้างจาก pluging และเป็นของฟรี แม้ว่ามันจะใช้งานได้ดี แต่ว่ามันจะมีปัญหาทางด้านการสำรองข้อมูลหรือย้ายข้อมูล

เลยตัดสินใจแยก เป็น 2 เว็บไซต์ ครั้งแรกจะแยก Droplete แต่หากแยกรายเดือนน่าจะเพิ่มขึ้นอีก เลยลองใช้พื้นที่เดิม แต่จดโดเมนใหม่ แล้วทำ virtual host เพื่อทดสอบดู โดยการกำหนดให้

  • เว็บไซต์ แรกเป็น Blog อย่างเดียว นั้นคือเว็บ knupan.com
  • อีกเว็บไซต์ซื้อ knowledge Theme มาสร้างสำหรับเป็น Wiki หรือ knowledge

สรุปไฟล์คอนฟิกหรือที่เก็บไฟล์

พื้นที่หรือห้องสำหรับเก็บไฟล์ที่เราสร้างเป็นเว็บไซต์ knupan.com

/var/www/knupan/
root@knupan:/var/www/knupan# ls
index.php        wp-blog-header.php    wp-includes        wp-signup.php
license.txt      wp-comments-post.php  wp-links-opml.php  wp-trackback.php
public_html      wp-config-sample.php  wp-load.php        xmlrpc.php
readme.html      wp-config.php         wp-login.php
wp-activate.php  wp-content            wp-mail.php
wp-admin         wp-cron.php           wp-settings.php

ไฟล์คอนฟิกสำหรับปรับแต่งค่าโดยการกำหนดว่า ข้อมูลที่เก็บเว็บไซต์เราอยู่ในไดว์เร็กเตอรีไหน จากตัวอย่างไฟล์คอนฟิกจะอยู่ใน /etc/apache2/sites-available/knupan.conf

การกำหนดในไฟล์ knupan.conf

<VirtualHost *:80>
    ServerName knupan.com
    ServerAlias www.knupan.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/knupan/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.knupan.com [OR]
RewriteCond %{SERVER_NAME} =knupan.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

สร้างพื้นที่สำหรับจัดเก็บเว็บไซต์ nst-green.name

พื้นที่หรือห้องสำหรับเก็บไฟล์ที่เราสร้างเว็บไซต์ จริงๆๆ แล้วน่าจะเก็บไว้ใน /var/www/nst-green/ ได้ แต่ในตอนทดสอบครั้งแรก เรียกหน้าแล้วไม่ทำงานเลยเอามาวางไว้ใน /var/www/nst-green/public_html แต่หลังจากเอามาวางไว้ในไดว์เร็กเตอรีดังกล่าวแล้ว ยังทดสอบไม่ผ่าน เหตุผลเพราะน่าจะเกิดจากไม่ได้ใช้คำสั่ง

sudo certbot certonly --standalone -d nst-green.name
sudo certbot --apache

แต่หลังจากใช้คำสั่งที่ผ่านมาแล้ว สามารถเรียกหน้าเว็บไซต์ได้ เลยไม่อยากแก้ กับไม่ย้ายข้อมูลเลยยังคงไว้ในไดว์เร็กเตอรีเดิม

/var/www/nst-green/public_html
root@knupan:/var/www/nst-green/public_html# ls
index.php        wp-blog-header.php    wp-includes        wp-signup.php
knupan           wp-comments-post.php  wp-links-opml.php  wp-trackback.php
license.txt      wp-config-sample.php  wp-load.php        xmlrpc.php
readme.html      wp-config.php         wp-login.php
wp-activate.php  wp-content            wp-mail.php
wp-admin         wp-cron.php           wp-settings.php

และได้สร้างไฟว์คอนฟิกขึ้นมาเพื่อแจ้งและกำหนดค่าว่า ข้อมูลที่เก็บเว็บไซต์ไว้อยู่ตรงไหน

vi   /etc/apache2/sites-available/nst-green.conf 
<VirtualHost *:80>
    ServerName  nst-green.name
    ServerAlias www.nst-green.name
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/nst-green/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.nst-green.name [OR]
RewriteCond %{SERVER_NAME} =nst-green.name
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

เปิดค่า nst-green.conf

sudo a2ensite nst-green.conf

ปิดค่า 000-default.conf ซึ่งเป็นค่าเริ่มตั้นหลังจากเราติดตั้ง apache

 sudo a2dissite 000-default.conf

ทดสอบว่าที่เราปรับแต่งในไฟล์ nst-green.conf ผิดพลาดตรงไหนบ้างอย่างไร

sudo apache2ctl configtest

สั่ง รีสตาร์ท Apache ในการทำงานในกรณีที่เรามีการปรับแต่งอะไรก็ตาม หลังจากเราปรับแต่งเสร็จ อย่าลืมใช้คำสั่ง รีสตาร์ท Apache ทุกครั้ง

sudo systemctl restart apache2

ขั้นตอนเอาข้อมูลไปเก็บไว้ในที่เรากำหนด โดยใช้คำสั่งตามข้างล่าง หรือไม่เราอาจจะส่งผ่าน FTP ก็ได้

sudo cp -a /tmp/wordpress/. /var/www/nst-green/public_html/

หลังจากนั้นใช้คำสั่งเหล่านี้ประกอบทุกครั้ง

sudo chown -R www-data:www-data /var/www/nst-green/public_html/
sudo find /var/www/nst-green/public_html/ -type d -exec chmod 750 {} \;
sudo find /var/www/nst-green/public_html/ -type f -exec chmod 640 {} \;
systemctl restart apache2

สรุป

ในการกำหนดค่าเพื่อทำ Apache Virtual Hosts on Ubuntu 20.0 มีหลักๆๆ ดังนี้

  1. กำหนดที่ตั้งหรือที่เก็บของข้อมูลเว็บไซต์ของเรา ส่วนมากจะอยู่ใน /var/www/ ให้เราแยกออกเป็น 2 ไดว์เร็กเตอรี่
  2. เข้าไปแก้ค่าโดยการกำหนดไฟล์คอนฟิกขึ้นมาใหม่ แล้วกำหนดค่าชี้ให้เห็นเส้นทางว่า เราเก็บไฟล์ข้อมูลเว็บของเราไว้ตรงไหน โดยสร้างไว้ใน /etc/apache2/sites-available/ หากมี 2 เว็บไซต์ ก็ให้กำหนดไว้ 2 ไฟล์ หากมี 3 เว็บไซต์ ก็ให้กำหนดไว้ 3 ไฟล์
  3. หลังจากนั้นเปิดค่าแล้วเอาข้อมูลไปวางไว้ตามที่เราต้องการ
Tags:  ,

Leave a Reply

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