หลังจากเราได้เครื่องที่รันงานได้ พร้อมกำหนดค่า 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 ในทุกอัน
- ลบ Anonymous Users ป้องกันไม่ให้ใครเข้ามาใช้ก็ได้ โดยไม่ต้องแสดงตัว
- ไม่อนุญาตให้ root เข้าระบบจากทางไกล ป้องกันการเข้าถึงจากทางไกล (ไม่ผ่าน SSH) ทำให้ระบบไม่ปลอดภัย
- ลบตารางและฐานข้อมูลทดสอบ เพื่อความปลอดภัย
- โหลดตารางฐานข้อมูลผู้ใช้ใหม่ เพื่อให้การตั้งค่าเรามีผลทันที
ถึงจุดนี้ เราติดตั้ง 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 ก็ขึ้นชื่อกับการถูกแฮกและโจมตีบ่อยที่สุดเช่นกัน สิ่งที่ควรทำและผมแนะนำมากๆ ก็คือ
- หมั่นตรวจสอบและอัพเดต รวมถึงปรับปรุงระบบฐานข้อมูล ไม่ว่าจะเป็น MariaDB หรือ MySQL ให้ทันสมัยอยู่เสมอ
- อ่านคู่มือการทำ 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 กันครับ เว็บไซต์ของท่านจะได้ใบรับรองความปลอดภัย ซึ่งจะมีผลกับอะไรหลายๆ อย่างในอนาคตแน่นอนครับ
ไว้เจอกันตอนหน้าครับ