วิธีทำให้เข้าสู่ระบบ WordPress ใน Domain และ SubDomain ในครั้งเดียว

เกริ่นปัญหา

ปัญหาของเรื่องนี้มาจากโพสนี้ครับ สรุปคือเค้าอยากได้ WordPress 2 ตัวที่ใช้ฐานข้อมูลผู้ใช้อันเดียวกัน และเข้าสู่ระบบที่นึง อีกที่จะเข้าสู่ระบบด้วย โดยหลังจากผมลองค้นหาดู พบว่าสามารถทำได้ แต่ทำได้ในระดับแค่ Sub Domain หรือ Sub Directory เท่านั้นนะครับ และ Database ต้องใช้ Database เดียวกัน (ผมเข้าใจว่าสามารถทำได้ถึงระดับที่อยู่คนละ Database แต่ต้องเป็นที่เดียวกันและใช้ Username/Password เหมือนกัน)

วิธีทำ

  1. ก่อนอื่นให้ลง WordPress ทั้ง 2 ที่แบบปกติให้เรียบร้อยก่อน (ถ้ามีแล้ว ข้ามไปครับ)
  2. ลง Plugins “WP-Orphanage Extended” ให้ WordPress ทั้ง 2 ตัว แล้วไปตั้งค่าใส่ prefix ให้เรียบร้อยครับ
  3. ทำการแก้ไข wp-config.php ของ WordPress ทุกตัวดังนี้ครับ
  4. ทดสอบได้เลยครับ

ความเห็นส่วนตัว

จริงๆคิดว่าถ้าจะทำแบบนี้น่าจะทำเว็บเดียวแล้วแยก Category ของบทความน่าจะดีกว่า แล้วปรับ Theme เอา โดยใช้ Template Hierarchy หรือ Condition Tags ช่วยก็จะได้ 2 ส่วนที่หน้าตาไม่เหมือนกัน แต่ข้อมูลเหมือนกันแล้ว (ช่วยได้ระดับนึงนะ) หรือไม่ก็แยก Post Type ไเลยก็ได้ครับ

ติดตั้ง/ปรับแต่ง DirectAdmin เพื่อให้รองรับจำนวนคนจำนวนมาก

อันนี้เป็นประสบการณ์กากๆของผมที่ทำต้องจัดการให้เซิฟเวอร์ที่ใช้ DirectAdmin อยู่ สามารถรองรับจำนวนคนได้เยอะๆครับ วิธีการง่ายๆดังนี้ครับ

  1. ปรับ Web Server ให้ใช้ Nginx เป็น Reverse Proxy (อ้างอิงวิธีการจาก ลิงค์นี้)
    1. ก่อนอื่นสำหรับ คนที่ติดตั้ง DirectAdmin ไปแล้วต้องมั่นใจว่า CustomBuild ต้องมากกว่าเวอร์ชั่น 2 สามารถตรวจสอบได้โดย SSH เข้าไป แล้วใช้คำสั่งดังนี้

      ดูว่าเลขหน้าสุดเป็นเลข 2 ไหมครับ ถ้าไม่ ให้ทำการปรับ CustomBuild เป็นเวอร์ชั่น 2 ครับ โดยสามารถทำได้ตามลิงค์นี้ครับ หรือสั่งคำสั่งด้านล่างนี้ครับ (คำเตือน Backup ทุกอย่างก่อน Update ทุกครั้ง)
    2. ติดตั้ง Nginx เป็น Reversed Proxy ซึ่งตรงนี้ทาง DirectAdmin เริ่ม Support การติดตั้งอัตโนมัติแล้ว สามารถทำได้ตามคำสั่งด้านล่างนี้ครับ
    3. เมื่อติดตั้งเสร็จแล้ว มันยังมีปัญหานิดหน่อยครับ คือตัว Apache ทีให้บริการ Web App นั้นมอง IP ของเซิฟเวอร์เองเป็น Client เนื่องจากวิ่งผ่าน Nginx จึงต้องลง mod เพิ่ม ดังนี้ครับ

      จากนั้นไปที่ /etc/httpd/conf/extra/httpd-includes.conf  แล้วเพิ่มข้อความต่อไปนี้ลงล่างสุดครับ
  2. ปรับแต่งเซิฟเวอร์เพื่อให้รองรับคนจำนวนมากได้ (จำเป็นค่อนข้างมาก ไม่งั้นอาจจะเจอ Bad Gateway หรือ Gateway Timeout บ่อย)
    1. ปรับแต่ง Kernel Queue เพื่อให้รับการเชื่อมต่อจำนวนมากๆได้ โดยใช้คำสั่งต่อไปนี้

      และเพิ่มบรรทัดต่อไปนี้ลงในไฟล์ /etc/sysctl.conf
    2. ปรับแต่ง Port ที่ระบบใช้ได้ให้มากกว่าเดิม โดยใช้คำสั่งต่อไปนี้

      และเพิ่มบรรทัดต่อไปนี้ลงในไฟล์ /etc/sysctl.conf
    3. ปรับแต่งให้ปิดการเชื่อมต่อได้เร็วขึ้น เพื่อเอาไปใช้รับการเชื่อมต่อใหม่ โดยใช้คำสั่งต่อไปนี้

      และเพิ่มบรรทัดต่อไปนี้ลงในไฟล์ /etc/sysctl.conf
    4. อันนี้ผมจำไม่ได้ว่ามันทำอะไรครับ แต่เห็นเซิฟเวอร์ปัจจุบันมี และคิดว่าค่อนข้างสำคัญ

      และเพิ่มบรรทัดต่อไปนี้ลงในไฟล์ /etc/sysctl.conf
    5. ปรับแต่งเพิ่มจำนวนไฟล์สูงสุดที่ 1 โปรเซสเปิดได้ให้มากที่สุด โดยใช้คำสั่งต่อไปนี้

      และเพิ่มบรรทัดต่อไปนี้ลงในไฟล์ /etc/security/limits.conf
  3. ปรับแต่งให้ Nginx ให้บริการ Static File (ไฟล์ที่ไม่ประมวลผลเช่นภาพเป็นต้น) โดยไม่ผ่าน Apache เพราะ Nginx สามารถทำงานด้านนี้ได้ดีกว่า Apache มาก (คำเตือน วิธีนี้จะทำให้ส่วนที่ถูกซ่อนไว้ โดย Password Protected Directories ของ DirectAdmin อาจจะทำให้ข้อมูลที่ถูกซ่อนบางส่วนหลุดไปได้โดยไม่ถามรหัสผ่าน แต่ผมว่าในเคสทั่วไปไม่ค่อยมีคนใช้) โดยสั่งคำสั่งดังต่อไปนี้

    เพียงเท่านี้ Nginx ก็จะให้บริการ Static File ส่วนมากให้ทันที (ผมอาจจะ list ไม่หมดเพราะผมก็ไปคัดลอกจากที่อื่นมาครับ)

เพียงเท่านี้ก็คิดว่าเซิฟเวอร์ปัจจุบันของท่านก็น่าจะรับโหลดเพิ่มขึ้นได้อีกเยอะครับ หากยังไม่สามารถรองรับได้อีก อาจจะต้องปรับ nginx ให้ cache หน้าที่ประมวลผลไว้สักหน้าละ 10 – 60 วิ แล้วแต่กรณีไป แต่พอดีที่ๆผมทำงาน Implement ระบบ Cache ด้านในไว้ เลยไม่มีปัญหามากครับ

XAMPP เข้า phpMyAdmin ไม่ได้ ติด Error 403 Access forbidden!

อันนี้ผมไม่รู้ว่าเป็นเฉพาะ Ubuntu รึเปล่านะครับ แต่ถ้าหากใครประสบปัญหาเข้า phpMyAdmin ของ XAMPP แล้วเจอหน้า Error 403 Access forbidden! เรามีวิธีแก้ดังนี้ครับ

ตกลงกันก่อน

ถ้าผมพูดถึงโฟลเดอร์ config จะหมายถึง

  • ใน linux จะหมายถึง /opt/lampp/etc/
  • ใน windows จะหมายถึง xampp/apache/conf

ตามแบบฉบับทั่วๆไปที่หาเจอ

  1. ให้ใช้โปรแกรม text editor เช่น notepad,notepad++,geany เปิดไฟล์ extra/httpd-xampp.conf ที่อยู่ในโฟลเดอร์ config
    ประมาณว่า /opt/lampp/etc/extra/httpd-xampp.conf
    หรือ C:\XAMPP\apache\conf\extra\httpd-xampp.conf
  2. เลื่อนไปล่างสุดเราจะเจอ

    ให้เราแก้เป็น

    (ใส่ # ไปข้างหน้าของทุกบรรทัด)
  3. Save แล้ว restart apache ใหม่ แล้วลองเข้าดู

อธิบายเพิ่มเติมที่แก้ httpd-xampp.conf

ส่วนที่ให้แก้คือส่วน ที่บอกว่าหากเข้า folder ที่ชื่อว่า xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info ( | หมายถึงหรือ) ให้ทำการปิดกั้นการเข้าถึงทั้งหมด อนุญาติเฉพาะ IP ที่เป็นเครื่องตัวเอง (127.0.0.1,::1) หรือเครื่องที่เป็นภายในเครือข่ายเดียวกันเท่านั้น (โดยทั่วไปคือน้ำหน้าด้วย 10.0.*,172.16.*,169.254.* และ 192.168.*)

แล้วถ้าไม่ได้ผล ผมแนะนำวิธีนี้แทนครับ

  1. ให้ใช้โปรแกรม text editor เช่น notepad,notepad++,geany เปิดไฟล์ extra/httpd-xampp.conf ที่อยู่ในโฟลเดอร์ config
  2. ให้แก้ส่วนล่างสุดจากวิธีด้านบนกลับให้เป็นเหมือนเดิม(คือเอา # หน้าบรรทัดออก)
  3. ก่อนบรรทัด

    ให้เพิ่มบรรนี้ลงไปครับ

    จะได้เป็นแบบนี้ครับ
  4. Save Restart Apache แล้วลองเข้าใหม่ดูครับ