สอนเซ็ต VPS สำหรับ WordPress เป็นมิตรกับคนไม่เก่ง Linux ม๊ากมาก
เนื่องด้วยช่วงนี้ มีเหตุการณ์ที่คนรอบตัว มีปัญหา Shared Hosting เยอะมาก พอเราไปแนะนำว่า ให้เช่า Cloud สิ ก็มักจะได้รับคำตอบว่าคอนฟิกไม่เป็น
ซึ่ง ก็ไม่ผิดนะ เป็นโปรแกรมเมอร์นี่นา คอนฟิก server เองไม่เป็นก็ไม่แปลก แต่ที่ขัดใจคือ หลายคนตั้งกำแพงมาก่อนเลยว่า ยุ่งยากแน่ๆ ไม่ล่ะกูไม่ทำ
แต่ถ้ามองดีๆ จะพบว่า พวก Web Dev สายอื่น ที่ไม่ใช่ PHP เค้าก็คอนฟิก server กันได้เองเป็นปกติ โดยเฉพาะพวก Nodejs น่าจะคุ้นเคย command line กันมาก แล้วทำไม กะอีแค่เขียน PHP จะทำให้คนคนนั้น เซ็ตอัพ server ใช้เองไม่ได้ ลองลดกำแพงในใจดู แล้วจะพบว่า อันที่จริง ทำแบบง่ายๆ ก็ทำได้เว้ย!
ก่อนจะไปต่อ มาเปรียบเทียบข้อดีข้อเสียก่อนดีกว่า
Cloud VPS ดีกว่า Shared Host ที่…
- ไม่ต้องไปแย่ง/แบ่ง ทรัพยากร จำพวก CPU, RAM, Disk, Bandwidth กับใคร
- จัดการได้เต็มร้อย อยากแก้ php.ini แค่ไหนก็ทำ
- ลงอะไรแปลกๆ เพิ่มได้ด้วย เช่น GitLab หรือ ทำ cronjob
Cloud VPS ด้อยกว่า Shared Host ที่…
- เนื่องจากได้เสป็คมากกว่า มันจึงแพงกว่า ถูกสุดน่าจะอยู่ที่เดือนละ $5 ซึ่งตกปีละราวๆ 2,000 บาท ในขณะที่ Shared Host ถูกสุดแค่ปีละไม่กี่ร้อย (เคยเจอปีละ 199 บาทด้วยแว้บๆ ที่ไหนจำไม่ได้)
- ไม่มี Control Panel ให้ จะลงเองก็ได้ แต่ค่า License แอบแพง ตัวฟรี ก็ไม่ค่อยเก่ง ใช้แล้วขัดใจเปล่าๆ (แนะนำว่า หัดใช้งานแบบไม่มี Control Panel ดีกว่า เดี๋ยวสอน อ่านต่อไปๆ)
- ไม่มี Web Mail ให้ ซึ่ง ก็ไม่ใช่เรื่องใหญ่อะไร ปกติ Web Mail ตาม Shared Host มันก็ตกถังแสปมตลอดอยู่แล้ว และถ้าอยากมีจริงๆ ก็ลงเองได้ เช่น RoundCube แต่ให้ดีสุด ใครอยากมีอีเมลโดเมนตัวเองฟรี แนะให้ใช้ Zoho แต่ถ้าอยากเสียตังก็ Gmail เลยจ้า
เลือก CloudVPS ที่ไหนดี?
- ส่วนตัวผมใช้ Scaleway ราคาถูกดี ผมใช้แพลน 7.99 Euro อยู่ ข้อเสียคือ เซิร์ฟอยู่ฝรั่งเศส มันจะช้าๆ หน่อย ปิงราวๆ 200ms แต่ใช้ CloudFlare ก็ช่วยได้เยอะ
- DigitalOcean เป็นหนึ่งในตัวเลือกที่ดีมาก แพลน $20 คุ้มดี หาคูปองฟรีง่ายด้วย ยิ่งถ้ามีอีเมลนักศึกษา สามารถเอาไปกดรับ GitHub Education Pack ได้
- Bangmod.cloud ของคนไทยเราเองนี่แหละ เจ้าของใจดีมาก บางทีก็ไม่เก็บตัง #ผิด
- Vultr อันนี้ส่วนตัวยังไม่เคยใช้ น่าจะพอๆ กับ DigitalOcean
ต่อไป เป็นสิ่งที่ควรรู้ เกี่ยวกับสิ่งที่จะสอนในบทความนี้
แล้ววันนี้จะสอนเซ็ทอัพอะไรบ้าง
- สอนทุกอย่างที่ทำให้เราไม่ต้องง้อ Cloudways
- ตามนี้เลย https://hub.docker.com/r/linuxconfig/lemp/
- คร่าวๆ ก็ Nginx, PHP7.0, MariaDB
- มี PHPMyAdmin ให้ด้วย
เทคโนโลยีที่จะได้สัมผัส
- Nginx เว็บเซิร์ฟเวอร์ที่เก่งมากๆ ถึงจะรัน PHP ได้ไม่เก่งเท่า Apache แต่ก็มีความสามารถด้านอื่นที่เก่งกว่าเพียบ เช่น Reverse Proxy, Caching
- MariaDB ใช้แทนที่ MySQL ได้ทุกอย่าง แต่ประสิทธิภาพดีกว่า
- tmux เผื่อเน็ตตัดกลางทาง จะได้เข้าไปทำต่อจากเดิมได้ รายละเอียดเพิ่มเติม เรศเคยสอนแล้ว ตามไปอ่านได้เลยที่ไผบ่มัก tmux
- docker ช่วยให้เซ็ทอัพได้ไวขึ้นมากกกก ถึงแม้ที่สอนใช้วันนี้ จะไม่ใช่ best practice สำหรับการใช้ docker ก็เถอะ…
เข้าเรื่องซักที
คำส่ังผมอิงจาก Ubuntu นะครับ (เวอร์ชันไหนก็ได้ เอา LTS อันล่าสุดไปเลยก็ดี) ดังนั้นแนะนำให้สร้าง instance เป็น Ubuntu ก่อน หลังจาก ssh เข้าเครื่อง server ได้แล้ว ก็พิมพ์คำสั่งที่แปะไว้ให้ได้เลยครับ ทำไปทีละคำสั่ง
อัพเดต server ให้เรียบร้อย
apt-get updateapt-get upgradeapt-get install tmux docker.io -y
เข้าใช้ tmux
tmux new
หลังจากนี้ ถ้าเน็ตหลุดไป เวลา ssh กลับมาแล้วก็พิมพ์ tmux a
มันจะพากลับมาที่จุดเดิม ทำต่อจากเดิมได้เลย
เริ่มลง lemp โดยใช้ docker
docker pull linuxconfig/lempdocker run --name=lemp -d -p 80:80 -p 3306:3306 -v /var/www/:/var/www/ --restart always linuxconfig/lempdocker exec -it lemp bash
อัพเดต container
apt-get updateapt-get upgrade
ลง phpmyadmin + image magick
apt-get install phpmyadmin php-imagick -yphpenmod mcrypt imagick
ย้ายคอนฟิกมาไว้ในที่ที่แก้ง่ายๆ จะได้แก้ได้จากนอก container
mv /etc/nginx/nginx.conf /var/www/nginx.main.confln -s /var/www/nginx.main.conf /etc/nginx/nginx.conftouch /var/www/nginx.confln -s /var/www/nginx.conf /etc/nginx/conf.d/nginx.conf
เตรียมพวก directory
mkdir /var/www/html/mkdir /var/www/logs/
เอา phpmyadmin directory มาวางไว้ใน default web directory
ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
Reboot container
exitdocker restart lemp
เสร็จละ ต่อไปมาทำความรู้จัก Server ใหม่ของเรากันดีกว่า
- PHPMyAdmin อยู่ที่ http://ip_address/phpmyadmin
username: admin
password: pass
อย่าลืมเปลี่ยนรหัสผ่านด้วยล่ะ! - Default web directory อยู่ที่
/var/www/html/
- เพิ่มลดโดเมน ให้แก้ที่
/var/www/nginx.conf
- แก้
/var/www/nginx.conf
เสร็จแล้วต้อง reload ด้วย เอาง่ายๆ ก็สั่งdocker restart lemp
หรือถ้าอยู่ใน container อยู่แล้ว สั่งservice nginx reload
- ไม่มี FTP? ไม่ยาก เหมือน SSH นั่นแหละ เข้าด้วยโปรโตคอล SFTP ที่พอร์ท 22 ได้เลย
วิธีเพิ่มลดโดเมน
ไม่ยากๆ ก่อนอื่น SFTP เข้าไปที่ /var/www/
แล้วแก้ไขไฟล์ nginx.conf
จากนั้น เพิ่มโค้ดนี้ลงไป จะไปแทรกไว้บนสุด ล่างสุด หรือตรงไหนก็ได้
server { server_name mydomain.com www.mydomain.com;
charset utf-8;
root /var/www/mydomain; #จะเอาไปไว้ไหนก็แก้ไขตามใจเลย
index index.php; # ใช้ทดแทน mod_rewrite ทำให้ WordPress ใช้ custom url ได้
location / {
try_files $uri $uri/ /index.php?$args;
} # ทำให้ Nginx รันไฟล์ PHP ได้
location ~ \.php$ {
include /etc/nginx/snippets/fastcgi-php.conf;
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
}
}
อัพโหลดขึ้นไปทับของเดิมให้เรียบร้อย แล้วไปที่ command line แล้วสั่ง
docker restart lemp
หรือถ้าอยู่ใน container อยู่แล้ว ให้สั่งแบบนี้แทน
service nginx reload
แค่นี้ก็เป็นอันเสร็จสิ้น เวลาอัพไฟล์ของเว็บนี้ ก็เอาไปใส่ไว้ใน /var/www/mydomain/
ใครมีคำถาม ถามทิ้งไว้ได้เลยจ้า
จบ.