Saturday, 27 April 2024

ใช้ GCP f1-micro รันเว็บไซต์ส่วนตัวฟรีๆ – ตอนที่ 5 ติดตั้ง xAMP Stack + ปรับแต่ง

หลังจากเราได้เครื่องที่รันงานได้ พร้อมกำหนดค่า IP Address และเชื่อมโดเมนตามที่เราทำในตอนที่แล้ว มาตอนนี้เราจะมาสู่ตอนที่ 5 ซึ่งก็คือการติดตั้ง xAMP Stack และปรับแต่งประสิทธิภาพเพื่อให้เหมาะกับเครื่อง f1-micro กันครับ

ติดตั้ง xAMP Stack

ในขั้นตอนนี้ เราจะมาติดตั้ง xAMP Stack กัน เพื่อประกอบร่างให้กลายเป็น LAMP Stack ที่สมบูรณ์ครับ

xAMP Stack ก็คือโซลูชันที่ใช้เพื่อสร้าง Web Server ซึ่งประกอบด้วยซอฟต์แวร์ชุดหนึ่งครับ ครอบคลุมไปตั้งแต่ระบบปฎิบัติการมาจนถึง Framework ซึ่งที่นิยมกันก็มักจะเป็น LAMP Stack ที่ประกอบไปด้วย

  • Linux คือระบบปฎิบัติการลินิกซ์ ซึ่งในที่นี้เราใช้เป็น Ubuntu 18.04 LTS ครับ (ถ้าเป็น Windows ก็เปลี่ยนเป็น W นั่นแหละครับ)
  • Apache เป็นซอฟต์แวร์สำหรับ Web Server ตัวอื่นๆ ที่มีใช้ในตลาดเช่น Tomcat หรือ Nginx
  • Maria DB/MySQL เป็นซอฟต์แวร์ด้านฐานข้อมูล ที่ได้ชื่อว่า M เพราะชื่อนั่นเอง แต่เดิมมี MySQL ทว่าพอ Oracle ซื้อกิจการของ Sun Microsystems ที่เป็นเจ้าของ MySQL ไป ชุมชนนักพัฒนาเลยแยก (fork) ออกมาเป็น Maria DB ครับ คำสั่งมีความแตกต่างกันบ้างนิดหน่อย แต่รวมๆ แล้วใช้ได้แทนกันแทบจะทันที
  • PHP เป็นภาษาทางคอมพิวเตอร์และซอฟต์แวร์รันไทม์ชุดหนึ่งสำหรับรันเว็บแอพพลิเคชันตัวหนึ่ง สำหรับเว็บที่ต้องมีเนื้อหาแบบ Dynamic หรือมีการเปลี่ยนแปลงบ่อยโดยเชื่อมเข้ากับฐานข้อมูล (คร่าวๆ ประมาณนี้)

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

ในส่วนของ Linux ผมคงไม่พูดถึง เพราะเราเริ่มต้นมากับตัวระบบปฎิบัติการนี้อยู่แล้ว (ใครอยากลองตัวอื่นอย่าง CentOS, SUSE Linux Enterprise หรือถ้าข้ามสายก็ไปอย่าง FreeBSD อันนี้ก็คงต้องไปดัดแปลงวิธีเอาเอง) แต่คราวนี้เราจะมาเริ่มติดตั้งองค์ประกอบไปทีละส่วนกันครับ

เตรียมความพร้อมก่อนติดตั้ง

เพื่อให้เราพร้อมติดตั้งทุกอย่างที่เป็นรุ่นล่าสุด เริ่มต้นเราต้องไปเปิด SSH บน Google Cloud Console ก่อนแบบขั้นตอนที่แล้ว หรือไม่ก็เชื่อมต่อกับเครื่องเราผ่าน SSH จากเครื่องเราโดยตรง (ขออนุญาตข้ามในขั้นตอนส่วนนี้ไป เนื่องจากไม่เกี่ยวข้องโดยตรงครับ)

จากนั้นพิมพ์คำสั่ง sudo apt-get update เพื่อทำการอัพเดตคลังซอฟต์แวร์ (Software Repository) ของเราให้เป็นรุ่นใหม่ล่าสุดก่อน เคาะปุ่ม Enter เพื่อส่งคำสั่งครับ

หลังจากพิมพ์ ระบบจะแสดงค่ามาชุดหนึ่ง โดยระบุว่าระบบกำลังอัพเดต Software Repository ของเราครับ นี่คือการเตรียมพร้อม จากนี้ก็ลุยเลยครับ

ติดตั้ง Apache

จริงๆ เรามีขั้นตอนที่จะติดตั้งซอฟต์แวร์หลายๆ ตัวได้ในครั้งเดียว แต่เนื่องจากซอฟต์แวร์ที่เรากำลังลงมีความสำคัญ ดังนั้นผมจะทยอยติดไปทีละตัวนะครับ

หลังจากเราเตรียมระบบพร้อม ก็พิมพ์คำสั่งว่า sudo apt-get install apache2 ที่เป็นคำสั่งติดตั้ง Apache ระบบซอฟต์แวร์ที่ทำหน้าที่เป็น Web Server พื้นฐานให้เราครับ

ระบบจะแสดง Dependencies Packages หรือซอฟต์แวร์ประกอบที่จำเป็นกับการติดตั้งและรัน Apache ครับ และถามว่าเราต้องการติดตั้งต่อหรือไม่ ซึ่งเราก็จำเป็นที่จะต้องติดตั้งต่อแน่นอน พิมพ์ Y ไปเลยแล้วกด Enter จากนั้นก็รอครับ เป็นอันเสร็จสิ้นการติดตั้ง

จบแล้วจ้า (จบจริงๆ นะจ๊ะ)

เพื่อพิสูจน์ว่า Apache ที่เราติดตั้งไปใช้งานได้จริงๆ เราทดลองเข้าหน้าเว็บเรา (ในที่นี้คือ patranun.tk) แล้วดูผลลัพธ์ครับ ซึ่งก็เข้าได้จริงๆ

แต่ก่อนที่จะลุยกันต่อ เราต้องไปตั้งค่า ServerName ให้กับ Apache เสียก่อนครับ เพราะถึงแม้ว่าจะไม่มีผลอะไรในการใช้งานจริง เวลาเราทดสอบการตั้งค่าด้วยคำสั่ง sudo apache2ctl configtest เราก็จะตรวจพบข้อผิดพลาดเจอได้

นอกจากนั้นแล้ว เราเพิ่งเชื่อมกับโดเมนไปหมาดๆ ดังนั้นการระบุจะทำให้เวลาเราขอ SSL Certificate ผ่าน Let’s Encrypt ทำได้ง่ายดีขึ้นด้วยนะครับ 🙂

ตั้งค่า ServerName และรายละเอียดอื่นให้กับ Apache

พิมพ์คำสั่ง sudo nano /etc/apache2/sites-enabled/000-default.conf ลงหน้าจอ SSH ของเรา จากนั้นกด Enter จะเจอหน้าจอนี้

เราจะพบกับ #ServerName www.example.com ให้เราไปลบ # หน้า ServerName ออก จากนั้นให้แก้ตรง www.example.com เป็นโดเมนของเรา (เช่น patranun.tk) ครับ ส่วน ServerAdmin เราก็แก้จาก webmaster@localhost เป็นอีเมลของเราครับ (ถ้าต้องการแก้นะ)

นอกจากนั้นแล้ว เรายังต้องแก้เพื่อให้เปิดใช้ .htaccess ซึ่งเป็นไฟล์สำหรับควบคุมระบบของเว็บไซต์ในบางจุดด้วย ซึ่งจะเพิ่มความยืดหยุ่นให้เราบริหารและจัดการกับเว็บไซต์ได้ดียิ่งขึ้นเช่นกัน

วิธีการคือใส่คำสั่งด้านล่างนี้ ลงไปในส่วน <VirtualHost>...</VirtualHost> กล่าวคือ ใส่คำสั่งนี้ ก่อน </VirtualHost> ครับ

<Directory /var/www/html/>
    AllowOverride All
</Directory>

Directory หรือไฟล์ที่ว่า จะเป็นการบังคับว่าให้ .htaccess ที่เราไปวางไว้ มีผลบังคับใช้เฉพาะโฟลเดอร์ (directory) ไหนเท่านั้น ซึ่งอันนี้เรากำหนดให้ทั้งเว็บอยู่ในการควบคุมของคำสั่งนี้ เลยพิมพ์แบบนี้ได้เลย

จากนั้นทำตามเดิมคือ กดปุ่ม Ctrl + X เพื่อออกจากโปรแกรม บันทึกการเปลี่ยนแปลง เท่านี้ก็เสร็จเรียบร้อยในส่วนแรก

ในส่วนที่สอง เนื่องจากตอนเราติดตั้ง WordPress เรามีความจำเป็นที่จะต้องบีบอัดเว็บไซต์ระหว่างเปิด เพื่อให้เปิดได้เร็ว (รวมถึงได้คะแนนจาก Google Ranking สูง) และเราต้องมีการเรียกใช้คำสั่ง rewrite ในหลายจุด (ตอนหลังๆ จะเห็น) ดังนั้นเราจะต้องเปิดโมดูล rewrite ก่อนครับ

ให้เราพิมพ์คำสั่ง sudo a2enmod rewrite ก่อน จากนั้นระบบจะแจ้งมาดังนี้ครับ

เป็นอันว่าเราเปิดใช้โมดูล rewrite แล้ว คราวนี้ถ้าเราก็ทำแบบเดียวกันกับโมดูลอื่นๆ เช่น http2 หรือ ssl ก็ได้ ซึ่งเราจะเปิดใช้โมดูล SSL ด้วย ก็พิมพ์ว่า sudo a2enmod ssl ไปเลยอีกครั้ง จากนั้นระบบจะแจ้งให้เราเริ่มต้น Apache ใหม่

ก่อนที่จะเริ่มต้นใหม่ ให้พิมพ์ sudo apache2ctl configtest ถ้าระบบคืนค่าว่า Syntax OK ก็พิมพ์ sudo systemctl restart apache2 เพื่อสั่งให้ Apache ของเราทำงานใหม่ได้ทันทีครับ

ป้องกันคนมาทำ Directory Listing

อีกอันที่ต้องทำก่อนจะไปขั้นตอนต่อไป คือการป้องกันการทำ Directory Listing หรือการเข้ามาดูว่าในแฟ้มหรือเครื่อง server เรามีไฟล์อะไรบ้าง ซึ่งถือเป็นจุดอ่อนที่สำคัญในเรื่องความปลอดภัยเลยทีเดียว

การแก้ไขมี 2 แบบ คือแก้กันที่ apache2.conf ซึ่งเป็นไฟล์ในการควบคุมระบบ Apache ทั้งหมด ไม่ก็สร้าง .htaccess เอาไว้เพื่อแก้ไขครับ

แก้ด้วย apache2.conf

วิธีนี้คือการแก้ที่ตัวไฟล์ตั้งค่าโดยตรง ให้พิมพ์คำสั่งต่อไปนี้ลง Terminal/SSH ของท่าน

sudo nano /etc/apache2/apache2.conf

หน้าจอสีดำพร้อมข้อความจะขึ้นมา ให้หากลุ่มบรรทัดนี้ให้เจอในไฟล์

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

เมื่อเจอ สิ่งที่ต้องทำคือนำคำว่า Indexes ออกครับ ก็จะได้หน้าตาประมาณนี้

<Directory /var/www/>
        Options FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

บันทึกโดยการกดออก (Ctrl+X) แล้วสั่ง sudo systemctl restart apache2 เท่านี้ก็เป็นอันว่าเรียบร้อย

แก้ไขโดยเพิ่มไฟล์ .htaccess

อีกวิธีที่คนชอบใช้กัน (เพราะค่อนข้างยืดหยุ่นกว่า) คือการสร้างไฟล์ที่ชื่อ .htaccess ขึ้นมาครับ วิธีนี้จะซับซ้อนหน่อย เพรราะต้องสร้างไฟล์บน Directory หรือตำแหน่งที่เราเก็บไฟล์ไว้บนเครื่องสำหรับทำเว็บไซต์ครับ

ค่าโดยปกติ หากตั้งค่าตามนี้คือ /var/www/html ดังนั้นเราต้องเอา .htaccess ไปไว้ในโฟลเดอร์นั้นครับ (ถ้าเปลี่ยนค่าตามขั้นสูง ก็ต้องเปลี่ยนด้วย) ดังนี้

ไปที่ Terminal/SSH ของท่าน จากนั้นพิมพ์ว่า

sudo touch /var/www/html/.htaccess

คำสั่งนี้เป็นการสร้างไฟล์ .htaccess ซึ่งจะมีประโยชน์มากในอนาคต โดยเฉพาะเมื่อต้องใช้ WordPress ครับ หลังจากสร้างไฟล์แล้วก็แก้ไขผ่าน nano ครับ

sudo nano /var/www/html/.htaccess

ไฟล์ที่ได้จะเป็นไฟล์เปล่าๆ พิมพ์คำนี้ลงไปครับ

Options -Indexes

ออกจากโปรแกรม บันทึก แล้วปิดให้เรียบร้อย แล้วสั่ง sudo systemctl restart apache2 เท่านี้ก็เป็นอันว่าเสร็จสิ้น

ติดตั้ง MariaDB/MySQL

ขั้นตอนต่อไป เราจะมาติดตั้ง MariaDB หรือ MySQL กันครับ ทั้งนี้เราต้องเลือกอย่างใดอย่างหนึ่งครับ ติดตั้งทั้งสองตัวไม่ได้ (แค่แรมก็ไม่พอใช้แล้ว)

ทั้งนี้แนะนำให้ทำการติดตั้งแล้วตั้งค่าทันที เพราะจะมีโอกาสและแนวโน้มเรื่องของความปลอดภัยได้ ถ้าจัดการได้ไม่ดีพอ

ชั้นแรก พิมพ์คำสั่งด้านล่าง เพื่อติดตั้ง MariaDB และเครื่องมือที่เกี่ยวข้อง

sudo apt install mariadb-server mariadb-client

จากนั้น ให้ตรวจสอบว่าระบบกำลังรันหรือไม่ ซึ่งปกติแล้วฐานข้อมูลจะทำงานโดยทันที ด้วยคำสั่งดังนี้

sudo systemctl status mariadb

เมื่อพิมพ์คำสั่งนี้ ผลที่ได้จะออกมาดังนี้

● mariadb.service - MariaDB 10.1.40 database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset:enabled)
Active: active (running) since Mon 2019-06-24 08:27:03 UTC; 50s ago
Docs: man:mysqld(8)
https://mariadb.com/kb/en/library/systemd/
Main PID: 31855 (mysqld)
Status: "Taking your SQL requests now…"
Tasks: 27 (limit: 690)
CGroup: /system.slice/mariadb.service
        └─31855 /usr/sbin/mysqld

หลังจาก MariaDB ทำงานแล้ว เราต้องจัดการแจ้งค่าให้ระบบว่า ทุกครั้งที่เริ่มต้นระบบใหม่ ให้ระบบฐานข้อมูลของเราทำงานทันที โดยพิมพ์คำสั่งด้านล่างแล้วกด Enter

sudo systemctl enable mariadb

หลังจากนั้นให้พิมพ์คำสั่งนี้ เพื่อตั้งค่า MariaDB เป็นครั้งแรก

sudo mysql_secure_installation

คำสั่งดังกล่าวมีขึ้นเพื่อช่วยตั้งค่า MariaDB/MySQL ที่ใช้งานเป็นครั้งแรก เนื่องจากเรายังไม่มีรหัสผ่านสำหรับ root เราจึงต้องตั้งค่าให้ (และต้องรีบทำ) โดยครั้งแรกเมื่อเจอประโยคว่า Enter current password for root (enter for none): ให้กด Enter เพื่อข้ามไปเลย จากนั้นกด Y เพื่อตั้งรหัสผ่าน

หลังจากตั้งรหัสผ่านแล้ว ระบบจะถามดังต่อไปนี้ ให้ตอบ Y ในทุกอัน

  1. ลบ Anonymous Users ป้องกันไม่ให้ใครเข้ามาใช้ก็ได้ โดยไม่ต้องแสดงตัว
  2. ไม่อนุญาตให้ root เข้าระบบจากทางไกล ป้องกันการเข้าถึงจากทางไกล (ไม่ผ่าน SSH) ทำให้ระบบไม่ปลอดภัย
  3. ลบตารางและฐานข้อมูลทดสอบ เพื่อความปลอดภัย
  4. โหลดตารางฐานข้อมูลผู้ใช้ใหม่ เพื่อให้การตั้งค่าเรามีผลทันที

ถึงจุดนี้ เราติดตั้ง MariaDB เสร็จแล้ว สำหรับ MySQL ขั้นตอนจะคล้ายกัน ลองอ่านคู่มือจากทาง DigitalOcean ได้ครับ

ปรับแต่งประสิทธิภาพของ MariaDB

หลายคนพอถึงจุดนี้ เราเชื่อว่าคงจะคิดว่าการติดตั้งจบแล้ว เปล่าครับ มันยังไม่จบสิ้น เพราะเรายังไม่ได้ตั้งค่าประสิทธิภาพครับ

ในการทำงานจริง ประสิทธิภาพของ MariaDB/MySQL ถ้าเราไม่มีการควบคุม ผลที่เกิดขึ้นคือระบบฐานข้อมูลจะกินแรมไปเรื่อยๆ จนในที่สุดระบบก็ล่มนั่นเอง

ดังนั้นเราควรปรับแต่งประสิทธิภาพฐานข้อมูล ทำให้เราใช้หน่วยความจำน้อยที่สุดครับ ซึ่งเราสามารถใช้เครื่องมืออย่าง MySQL Memory Calculator ของ XTraffic หรือ MySQL Calculator คำนวณได้ และแน่นอนว่าเราต้องการแบบที่ต่ำสุดเท่าที่เป็นไปได้ครับ (ผมได้คำนวณมาให้แล้ว ลองดูด้านล่างครับ)

ทั้งนี้ ค่าปกติจะใช้หน่วยความจำสูงสุด 576.2 MB (!) ซึ่งแน่นอนว่าเกิน f1-micro เราไปเยอะมาก ต้องปรับแต่งครับ ซึ่งถ้ายึดสูตรผม หน่วยความจำจะกดลงไปได้เหลือเพียง 29.6 MB เพียงพอสำหรับเว็บไซต์ส่วนตัวเล็กๆ แน่นอน

กลับไปที่หน้าจอ SSH ของเราครับ จากนั้นพิมพ์คำสั่งด้านล่างนี้เพื่อเข้าไปแก้ไขไฟล์ตั้งค่าของ MariaDB

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

จากนั้น ให้แก้ในส่วนที่เขียนว่า # * Fine Tuning ใต้ [mysqld] เพื่อกำหนดค่าการใช้หน่วยความจำครับ ดังต่อไปนี้

key_buffer_size         = 512K
query_cache_size        = 4M
tmp_table_size          = 4M
innodb_buffer_pool_size = 4M
max_connections         = 25
sort_buffer_size        = 16K
table_open_cache        = 32
read_buffer_size        = 8K
net_buffer_length       = 1K
max_allowed_packet      = 16M
thread_stack            = 192K
thread_cache_size       = 8

หน้าตาก็จะประมาณนี้ สั่งเซฟได้เลย

เพื่อยืนยัน หลังจากออกมาหน้าจอปกติแล้ว ก็สั่ง sudo systemctl restart mariadb เพื่อเริ่มระบบฐานข้อมูลใหม่ ก็เป็นอันเสร็จสิ้นครับ

คำเตือน… อย่าลืมทำ Security Baseline Check

แม้จะเป็นระบบฐานข้อมูลที่ยืดหยุ่นและใช้งานได้ดี แต่ระบบ MariaDB/MySQL ก็ขึ้นชื่อกับการถูกแฮกและโจมตีบ่อยที่สุดเช่นกัน สิ่งที่ควรทำและผมแนะนำมากๆ ก็คือ

  1. หมั่นตรวจสอบและอัพเดต รวมถึงปรับปรุงระบบฐานข้อมูล ไม่ว่าจะเป็น MariaDB หรือ MySQL ให้ทันสมัยอยู่เสมอ
  2. อ่านคู่มือการทำ Security Best Practice อยู่เสมอ ผมพบว่าคู่มือของ DigitalOcean อันนี้ก็ถือว่าทำได้ดี

ในบางกรณีที่เราต้องการแยกระบบการเข้าถึงฐานข้อมูล ออกจากระบบการล็อคอินของเครื่อง (auth_socket) ใน DigitalOcean ก็มีคู่มือแนะนำอยู่ด้วยเช่นกันครับ ข้อดีคือเราใส่การปกป้องอีกชั้นหนึ่งเอาไว้ แต่ข้อเสียก็คือถ้าเรามี phpMyAdmin แล้วคนรู้ ก็จะล็อคอินเข้าไปจัดการฐานข้อมูลเราได้ทันทีเช่นกัน ตรงนี้ก็ต้องระวังกันหน่อยครับ

ติดตั้ง PHP

เราเดินทางมาถึงขั้นตอนสุดท้ายแล้วนะครับ (เฮ) นั่นคือการติดตั้ง PHP ซึ่งเป็นซอฟต์แวร์และเอ็นจินในการแสดงผลสำหรับภาษา PHP นั่นเอง (WordPress ใช้อยู่ และถือเป็นของจำเป็น)

กลับไปที่หน้าจอ Terminal/SSH ของเรา จากนั้นพิมพ์คำสั่งดังนี้ลงไป

sudo apt-get install php libapache2-mod-php php-mysql

คำสั่งดังกล่าวนี้ เป็นการติดตั้ง PHP ลงไปในระบบ พร้อมๆ กับตัวโมดูล (mod) อื่นๆ ที่ต้องใช้ เช่นการเชื่อมต่อกับ MariaDB/MySQL เมื่อตอบตกลง (Y) กับระบบด้านล่างแล้วก็จะทำการติดตั้งคำสั่งทุกอย่างที่เกี่ยวข้อง

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed: libapache2-mod-php7.2 libmagic-mgc libmagic1 libsodium23 php-common php7.2 php7.2-cli php7.2-common php7.2-json php7.2-mysql php7.2-opcache php7.2-readline tzdata
Suggested packages: php-pear file
The following NEW packages will be installed: libapache2-mod-php libapache2-mod-php7.2 libmagic-mgc libmagic1 libsodium23 php php-common php-mysql php7.2 php7.2-cli php7.2-common php7.2-json php7.2-mysql php7.2-opcache php7.2-readline tzdata
0 upgraded, 16 newly installed, 0 to remove and 0 not upgraded.
Need to get 4570 kB of archives.
After this operation, 26.3 MB of additional disk space will be used.
Do you want to continue? [Y/n]

ในส่วนที่เกี่ยวกับ tzdata (Time Zone Data) จะมีหน้าจอมาช่วยติดตั้งให้ ซึ่งในกรณีของประเทศไทยเราก็ตอบคำถามไป ดังนี้ (ที่ตอบไปจะเน้นตัวหนา และ ขีดเส้นใต้)

Configuring tzdata
----------------------------
Please select the geographic area in which you live. Subsequent configuration questions will narrow this down by presenting a list of cities, representing the time zones in which they are located.
1. Africa      4. Australia  7. Atlantic  10. Pacific  13. Etc
2. America     5. Arctic     8. Europe    11. SystemV
3. Antarctica  6. Asia       9. Indian    12. US
Geographic area: 6 

Please select the city or region corresponding to your time zone.

1. Aden         24. Dubai         47. Kuching       70. Shanghai
2. Almaty       25. Dushanbe      48. Kuwait        71. Singapore
3. Amman        26. Famagusta     49. Macau         72. Srednekolymsk
4. Anadyr       27. Gaza          50. Magadan       73. Taipei
5. Aqtau        28. Harbin        51. Makassar      74. Tashkent
6. Aqtobe       29. Hebron        52. Manila        75. Tbilisi
7. Ashgabat     30. Ho_Chi_Minh   53. Muscat        76. Tehran
8. Atyrau       31. Hong_Kong     54. Nicosia       77. Tel_Aviv
9. Baghdad      32. Hovd          55. Novokuznetsk  78. Thimphu
10. Bahrain     33. Irkutsk       56. Novosibirsk   79. Tokyo
11. Baku        34. Istanbul      57. Omsk          80. Tomsk
12. Bangkok     35. Jakarta       58. Oral          81. Ujung_Pandang
13. Barnaul     36. Jayapura      59. Phnom_Penh    82. Ulaanbaatar
14. Beirut      37. Jerusalem     60. Pontianak     83. Urumqi
15. Bishkek     38. Kabul         61. Pyongyang     84. Ust-Nera
16. Brunei      39. Kamchatka     62. Qatar         85. Vientiane
17. Chita       40. Karachi       63. Qostanay      86. Vladivostok
18. Choibalsan  41. Kashgar       64. Qyzylorda     87. Yakutsk
19. Chongqing   42. Kathmandu     65. Rangoon       88. Yangon
[More]

20. Colombo     43. Khandyga      66. Riyadh        89. Yekaterinburg
21. Damascus    44. Kolkata       67. Sakhalin      90. Yerevan
22. Dhaka       45. Krasnoyarsk   68. Samarkand
23. Dili        46. Kuala_Lumpur  69. Seoul
Time zone: 12 

จากนั้น ระบบจะดำเนินการต่อจนเสร็จสิ้น ทั้งนี้ในบางกรณีที่เราติดตั้ง PHP รุ่นล่าสุดที่มีในระบบ (ในขณะที่เขียนมีถึง 7.2) และระบบเราจำเป็นต้องใช้โมดูล mcrypt เราก็ต้องติดตั้งเพิ่มเติมด้วย ผ่าน PECL ซึ่งเป็นชุดคำสั่งของ PHP ส่วนวิธีการติดตั้งนั้น ดูได้ที่นี่เลย

เชื่อม PHP ให้เจอกับ Apache

ขั้นต่อมาคือการเชื่อม PHP และ Apache ให้มาเจอกัน ซึ่งตอนที่ลง PHP นั่นแหละ ก็เจอกันแล้ว! (เฮๆ)

ไม่ได้ล้อเล่นนะ มันเจอกันแล้วจริงๆ แต่ว่า… การเจอกันของ PHP และ Apache ยังไม่สมบูรณ์ เพราะเรายังไม่ได้เปลี่ยนแปลงค่าไฟล์ที่ Apache จะเรียกใช้เมื่อเวลาผู้ใช้เปิดเว็บแล้วร้องขอนั่นเองครับ ดังนั้นเราต้องแก้ เริ่มต้นด้วยการเปิดไฟล์ dir.conf ของ Apache มาแก้ไขด้วยคำสั่งนี้

sudo nano /etc/apache2/mods-enabled/dir.conf

หลังจากเปิด ก็จะเจอหน้าจอดำมืดสนิทเช่นนี้

สิ่งที่จะต้องแก้ก็คือ โยก index.php มาไว้ด้านหน้าสุดหลัง DirectoryIndex ครับ… เท่านี้จริงๆ ก็คือทำตามแบบคำสั่งด้านล่างครับ

<IfModule mod_dir.c>
        DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

พอบันทึกไฟล์เสร็จ ด้วยวิธีการเดิมคือกดออก แล้วบันทึก พอกลับเข้าหน้าจอ Terminal/SSH ของเรา ก็สั่งให้เริ่ม Apache ใหม่ด้วยคำสั่งเจ้าประจำ

sudo systemctl restart apache2

เพียงเท่านี้ เราก็ได้ xAMP Stack ติดตั้งเรียบร้อย ประกอบร่างเป็น LAMP Stack ที่เราตั้งใจไว้ตั้งแต่แรกแล้ว

ตอนหน้าเราจะมาขอ SSL Certificate กับ Let’s Encrypt กันครับ เว็บไซต์ของท่านจะได้ใบรับรองความปลอดภัย ซึ่งจะมีผลกับอะไรหลายๆ อย่างในอนาคตแน่นอนครับ

ไว้เจอกันตอนหน้าครับ

Photo by Pixabay from Pexels

เรื่องแนะนำ

ใช้ GCP f1-micro รันเว็บไซต์ส่วนตัวฟรีๆ – ตอนที่ 4 เปิด swap + ล็อค IP Address

หลังจากเราเปิดบัญชี GCP และ เริ่มรัน Virtual Machine บน Compute Engine ตามขั้นตอนในตอนที่แล้ว มาในตอนนี้เราจะเริ่มต้นเปิด swap และล็อค IP Address กันครับ

LEAVE A REPLY

Please enter your comment!
Please enter your name here