Jir4yu.me

ความรู้สึก.. ที่ตอนไหนๆก็(ไม่)เหมือนกัน

ย้ายเครื่องใหม่.. ผู้ให้บริการเดิม

ย้าย Server ใหม่, แต่ยังใช้ DigitalOcean เหมือนเดิม

ช่วงหลังๆ เว็บไซต์ Jir4yu.me เองมีปัญหาเรื่องการ access อยู่บ่อยๆ อาจจะเป็นเพราะในตอนแรกที่ผมหัดลองใช้ linux ได้ลง package มั่วมาก อาจจะทำให้เกิดปัญหาบางอย่างเช่น port ชนกัน หรือ web server ที่ทำงานได้ไม่ตรงตามประสิทธิภาพ เลยคิดว่าจะลอง backup ไฟล์ทั้งหมดที่ WordPress เก็บเอาไว้รวมถึง database ของเว็บไซต์นี้ด้วย ซึ่งก็รวมแล้วประมาณ 1.2GB เศษ ตั้งใจว่าจะย้ายไปลง droplet(ชื่อที่ใช้เรียก server บน DigitalOcean) ใหม่ในสภาพแวดล้อมที่เหมือนเดิมทุกประการคือใช้ droplet เล็กสุดเดือนละ 5$

ตอนที่ยังอยู่ ip ตัวเก่านี้ได้ลง web server เป็น NGINX ที่ติด pagespeed module ของ Google เข้ามาด้วย ซึ่งก็ได้ผลค่อนข้างดีพอสมควร คือเราไม่จำเป็นต้องไปปรับ config อะไรมากมายเพื่อให้ตรงตาม pagespeed guide ที่เหล่าบรรดา web developer ชอบเอาเว็บไซต์เข้าไป analyze ที่ https://developers.google.com/speed/pagespeed/insights อย่างเช่นหากในนั้นฟ้องว่าให้ Optimize images เราก็จะเข้าไปหา plugins หรือตัวช่วยอื่นบน WordPress มาช่วยลดทอนในส่วนนี้กันใช่มั้ยครับ แต่สำหรับใครที่ใช้ Pagespeed module แล้วเราก็แค่เพิ่ม filter เข้าไปในไฟล์ config ของ web server เพียงบรรทัดเดียว เท่านี้ตัว web server ก็จะจัดการเรื่องพวกนี้ให้เลย ซึ่งข้อดีก็คือตัว pagespeed module เนี่ยมันครอบคลุมเกือบทุกฟังก์ชั่นที่เราอยากจะปรับใช้ให้ตรงตาม guideline ของ Google

fisherman-resort

ใครที่อยากจะหาข้อมูลเพิ่มว่ามันมี filter อะไรให้เรียกใช้บ้างก็เข้าไปดูเองได้เลยที่ ลิงค์นี้

ข้อเสียของมันเท่าที่ผมคิดออกตอนนี้ก็คือมัน config ในตอนแรกค่อนข้างยาก คืออย่างน้อยแล้วเราต้องเช่า server เองแล้วติดตั้งลงทุกอย่างเอง ปรับเปลี่ยนไฟล์ config เองซึ่งแน่นอนว่าใครที่ใช้ shared hosts อาจจะทำไม่ได้แล้วในส่วนนี้

แต่ที่ย้ายลงมาเครื่องใหม่ ip ใหม่เนี่ย ผมไม่ได้ติดตั้ง pagespeed module กับเว็บ Jir4yu.me แล้วเพราะขี้เกียจไปนั่งแก้โน่นแก้นี่เยอะ แล้วก็คิดว่าช่างหัว pagespeed insight ไปบ้าง ทำไมทำเว็บไซต์ของตัวเองทั้งทีต้องไปยึดติดอะไรมากมายกับเครื่องมือเพียงไม่กี่ชิ้น ตอนนี้พอทำอะไรเสร็จหมดแล้วก็อยากจะเขียน checklist เผื่อในวันข้างหน้าอาจจะต้องจัดการ server ให้ลูกค้า หรือจะย้ายไปเครื่องใหม่จะได้ไม่ต้องเสียเวลานั่งเข้าลิงค์นั่นนี่เพื่อหาว่าลืมทำอะไรไปบ้าง โดยในบทความนี้จะครอบคลุมตั้งแต่การสร้าง droplet ใหม่เลยโดยใช้ Ubuntu TLS 14.04 เป็น OS stack แล้วก็จะใช้ NGINX ที่ติดตั้ง MySQL, phpMyAdmin, PHP processer และ Git ให้ครบครันสำหรับการนำไปใช้สำหรับเว็บไซต์

สร้าง Droplet ใหม่

login เข้าไปเปลี่ยนรหัสผ่านก่อนเลย จากนั้น exit ออกมา ssh-copy-id จะได้ไม่ต้องใส่รหัสทุกครั้งเวลา ssh เข้าไป

ssh-copy-id root@server-ip

เพิ่ม user ใหม่เข้าไปเพื่อใช้แทน root

adduser johndoe

จัดการ permission โดยให้สิทธิ์ user ใหม่เทียบเท่า root acesss ไปเลย

visudo

ติดตั้ง NGINX

ผมใช้ NGINX เป็น web sever โดยเพิ่ม stable source เข้าไปแทน

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:nginx/stable
apt-get update
apt-get install nginx

เช็ค status กับ version ของ NGINX เพื่อตรวจสอบความถูกต้อง

nginx -V

MySQL, PHP processer

ทีนี้เราก็ได้ web server พร้อมใช้งานซึ่งขับเคลื่อนโดย NGINX เวอร์ชั่นล่าสุดจากผู้พัฒนา ตรงนี้ถ้าลองนำ ip ของ droplet ที่ได้ไปใส่ในช่อง address bar ก็จะขึ้น welcome message จาก NGINX ถัดไปเป็นการเพิ่ม MySQL, PHP สำหรับใช้กับเว็บไซต์ภาษา PHP ซึ่งเป็นภาษายอดนิยมสำหรับ CMS ทั่วไปอย่าง WordPress, Joomla! ฯลฯ ตามลิงค์ด้านล่าง

https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14-04

ติดตั้ง phpMyAdmin เป็นลำดับถัดไป ซึ่งในลิงค์ด้านล่างจะบอกวิธีการสร้างความปลอดภัยเบื้องต้นให้กับ phpMyAdmin ที่ใช้งานบน NGINX ด้วย

https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-with-nginx-on-an-ubuntu-14-04-server

อัพโหลดไฟล์เก่า, ฐานข้อมูลเก่าขึ้นไป

server block

เมื่อทุกอย่างพร้อมใช้งานแล้วก็อัพโหลดไฟล์เก่าที่ดึงลงมาจาก droplet ลูกเดิมขึ้นไปสู่ droplet ลูกใหม่ผ่านทาง FTP client อย่าง FileZilla ก็ได้(เลือกการเชื่อมต่อเป็นแบบ sFTP) ซึ่งตรงนี้เองให้ดู directory ที่ใช้ upload ด้วยว่าตรงกับ server block ที่เขียนกำกับไว้ในไฟล์ config ของ NGINX หรือเปล่า

ขั้นสุดท้ายเป็นการ import ฐานข้อมูลเก่าเข้าไปในฐานข้อมูลลูกใหม่ที่สร้างผ่าน phpMyAdmin ที่เพิ่งติดตั้งไปเมื่อสักครู่ หากพบข้อความประมาณว่า “Nginx 413 Request Entity Too Large” ซึ่งจะเกิดกับฐานข้อมูลที่ dump ขึ้นไปมีขนาดใหญ่พอสมควร ให้เราใส่ข้อความด้านล่างลงไปในไฟล์ nginx.conf ของ NginX ให้เรียบร้อย จากนั้นก็ reload แล้ว import ฐานข้อมูลขึ้นไปใหม่

client_max_body_size 2M;

แก้ไฟล์ wp-config.php เหมือนเวลาที่เราย้าย host โดยส่วนมากที่ต้องแก้ไขก็คือ host, database_name, username และ password พร้อมกับตรวจสอบ root_path ในส่วนของ server block ของ NGINX ด้วยเช่นกัน

Hostname บน DigitalOcean

อันดับสุดท้ายเป็นการ set up hostname ซึ่งก็มีให้อ่านแบบละเอียดที่ลิงค์ด้านล่าง

https://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-digitalocean

ที่เหลือก็แค่เป็นส่วนเล็กๆ น้อยๆที่จะทำก็ได้หรือไม่ทำก็ได้เช่นติดตั้ง Git, URL mod rewrite ของ NGINX ให้ใช้งานกับ WordPress ได้ แล้วก็เพิ่มความปลอดภัยให้กับ wp-config.php เท่านี้ก็เป็นอันเรียบร้อยสำหรับการย้าย server ใหม่ ซึ่งผมเองก็ใช้วิธีเดียวกันกับเว็บไซต์ Jir4yu.me นี้ครับ อาจจะอธิบายได้ไม่ครอบคลุม ไม่ละเอียด หรืออาจจะผิดๆถูกๆ ก็ขออภัย สำหรับอย่างผมแล้วคนที่ไม่ได้มาทางด้าน back-end หรือ server side ได้แค่นี้ก็ดีแล้วล่ะครับ

คลิกที่นี่ หากสนใจใช้ DigitalOcean

use DigitalOcean

Jirayu Limjinda

ถ้าไม่รู้จักกัน บางทีคุณอาจจะไม่เข้าใจกับสิ่งที่ผมทำ.. กลับกัน ถ้าคุณรู้จักผมดี คุณจะไม่ต้องเอ่ยปากถามเลยว่าทำไม

แสดงความคิดเห็นของคุณที่นี่

loading, please wait..

loading, please wait..