ค้นหาเว็บไซต์

วิธีติดตั้ง Apache, MariaDB และ PHP (FAMP) Stack บน FreeBSD


คู่มือนี้จะอธิบายวิธีการติดตั้งและกำหนดค่า FBAMP ในระบบปฏิบัติการ FreeBSD ซึ่งคล้ายกับสแต็ก LAMP บน Linux FBAMP เป็นตัวย่อที่ย่อมาจากชุดของซอฟต์แวร์ที่ใช้ FreeBSD OS, เซิร์ฟเวอร์ Apache HTTP ซึ่งเป็นเว็บเซิร์ฟเวอร์โอเพ่นซอร์สที่ได้รับความนิยมมากที่สุดในอินเทอร์เน็ต MariaDB< ระบบการจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS) ทางแยกของกลไกฐานข้อมูล MySQL และฝั่งเซิร์ฟเวอร์ PHP

ความต้องการ

  1. การติดตั้ง FreeBSD ใหม่
  2. การกำหนดค่าเริ่มต้นของ FreeBSD
  3. การเข้าถึงคอนโซลโดยตรงหรือ SSH ในกรณีที่มีการเชื่อมต่อระยะไกลกับ FreeBSD
  4. ที่อยู่ IP แบบคงที่ที่กำหนดค่าบนอินเทอร์เฟซเครือข่าย

ขั้นตอนที่ 1: ติดตั้ง Apache บน FreeBSD

1. บริการแรกที่เราจะติดตั้งคือเซิร์ฟเวอร์ Apache HTTP ตามค่าเริ่มต้น FreeBSD เสนอหลายเวอร์ชันพร้อมโมดูลการทำงานรันไทม์ที่แตกต่างกันสำหรับเว็บเซิร์ฟเวอร์ Apache

เวอร์ชันต่างๆ ได้รับการคอมไพล์ล่วงหน้าเป็นแพ็คเกจไบนารีและจัดเตรียมโดยที่เก็บ FreeBSD PORTS หากต้องการแสดงไบนารีแพ็คเกจ Apache ทั้งหมดที่จัดทำโดย PORTS ให้ใช้คำสั่งต่อไปนี้

ls /usr/ports/www/ | grep apache

คุณยังสามารถค้นหาแพ็คเกจ Apache ที่คอมไพล์ไว้ล่วงหน้าบน FreeBSD ได้ด้วยการใช้คำสั่งด้านล่าง

pkg search apache2

2. ถัดไป ติดตั้งเซิร์ฟเวอร์ Apache HTTP เวอร์ชันล่าสุดพร้อมโมดูลที่จำเป็นทั้งหมดโดยใช้คำสั่งต่อไปนี้

pkg install apache24

3. หลังจากติดตั้งเว็บเซิร์ฟเวอร์ Apache บนระบบแล้ว ให้ออกคำสั่งต่อไปนี้เพื่อเปิดใช้งาน daemon ทั่วทั้งระบบใน FreeBSD

sysrc apache24_enable="yes"

อีกวิธีหนึ่งในการเปิดใช้งาน Apache daemon คือการแก้ไขและต่อท้ายบรรทัด apache24_enable="yes" ด้วยตนเองในไฟล์ /etc/rc.conf ดังที่แสดงในภาพหน้าจอด้านล่าง

4. สุดท้าย เพื่อทดสอบว่าเว็บเซิร์ฟเวอร์ทำงานอย่างถูกต้องหรือไม่ ให้เริ่ม Apache daemon โดยออกคำสั่งด้านล่างและไปที่หน้าเว็บเริ่มต้นโดยชี้เบราว์เซอร์ไปยังที่อยู่ IP ของเซิร์ฟเวอร์ของคุณที่ FQDN ( http://IP-orFQDN) ดังที่แสดงในภาพหน้าจอด้านล่าง

service apache24 start

ไดเรกทอรี webroot เริ่มต้นของเว็บเซิร์ฟเวอร์ Apache ใน FreeBSD 11.x อยู่ในเส้นทางระบบ /usr/local/www/apache24/data/ คุณจะพบไฟล์ index.html ขนาดเล็กที่คุณสามารถแก้ไขได้ตามต้องการ

ขั้นตอนที่ 2: ติดตั้ง PHP บน FreeBSD

5. FreeBSD 11.x นำเสนอ PHP ภาษาฝั่งเซิร์ฟเวอร์ที่ตีความหลายเวอร์ชัน รวมอยู่ในแพ็คเกจไบนารีที่ปฏิบัติตามข้อกำหนดล่วงหน้า หากต้องการรับรายการแพ็คเกจเวอร์ชัน PHP ที่มีอยู่ทั้งหมดที่จัดทำโดยที่เก็บ FreeBSD Ports ให้ออกคำสั่งต่อไปนี้

ls /usr/ports/lang/ | grep php

อีกวิธีหนึ่งในการค้นหาเวอร์ชันแพ็คเกจ FreeBSD PHP ที่มีอยู่ทั้งหมดคือการเรียกใช้คำสั่งด้านล่างนี้

pkg search -o php

6. หากต้องการค้นหาไบนารีที่มีอยู่ทั้งหมดที่ FreeBSD มอบให้สำหรับเวอร์ชัน PHP เฉพาะ (เวอร์ชัน 5 หรือ 7 ในปัจจุบัน) ให้รันคำสั่งด้านล่าง ใช้คำสั่งน้อยลงเพื่อจำกัดขอบเขตและนำทางผ่านเอาต์พุต

pkg search php5 |less
pkg search php7

7. หากต้องการเจาะจงมากขึ้นว่าโมดูลใดบ้างที่เวอร์ชัน PHP แบบกำหนดเองมีให้ ให้รันคำสั่งต่อไปนี้ตามที่อธิบายไว้ด้านล่าง ซึ่งจะแสดงโมดูลที่มีอยู่ทั้งหมดสำหรับเวอร์ชัน PHP 7.1

pkg search php71

8. ในคู่มือนี้ เราจะติดตั้ง PHP 7.1 รุ่นสำหรับสแต็ก FBAMP ของเรา ออกคำสั่งต่อไปนี้เพื่อติดตั้ง PHP ด้วยโมดูลที่สำคัญที่สุดที่จำเป็นสำหรับการติดตั้ง CMS ทั่วไป

pkg install php71 mod_php71 php71-mbstring php71-mcrypt php71-zlib php71-curl php71-gd php71-json 

9. ต่อไป เราต้องสร้างไฟล์การกำหนดค่า php.conf สำหรับเว็บเซิร์ฟเวอร์ Apache ใน /usr/local/etc/apache24/Includes/ เส้นทางระบบที่มีเนื้อหาดังต่อไปนี้

nano /usr/local/etc/apache24/Includes/php.conf

เพิ่มบรรทัดต่อไปนี้ในไฟล์ php.conf

<IfModule dir_module>
    DirectoryIndex index.php index.html
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch "\.phps$">
        SetHandler application/x-httpd-php-source
    </FilesMatch>
</IfModule>

10. เพื่อทดสอบว่าเกตเวย์ PHP ทำงานตามที่คาดไว้กับเว็บเซิร์ฟเวอร์ Apache หรือไม่ ให้สร้างไฟล์ PHP info.php ใน /usr/local/www/ เส้นทาง apache24/data/system ซึ่งเป็นเส้นทางรูทเอกสารเว็บเริ่มต้นของเว็บเซิร์ฟเวอร์ Apache

echo '<?php phpinfo();  ?>' | tee -a /usr/local/www/apache24/data/info.php

รีสตาร์ท Apache daemon เพื่อใช้การเปลี่ยนแปลง

service apache24 restart

จากนั้น ไปที่ URI ต่อไปนี้ในเบราว์เซอร์เพื่อดูสรุป PHP

http://IP-or-FQDN/info.php 

11. เพื่อเปิดใช้งานไฟล์การกำหนดค่า PHP ini สำหรับปัญหาการใช้งานจริง ให้ใช้คำสั่งด้านล่าง คุณสามารถแก้ไขไฟล์การผลิต php.ini เพื่อเปลี่ยนการตั้งค่า PHP ที่หลากหลายในสแต็ก FBAMP ของคุณ

cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini-production.bakup
ln -s /usr/local/etc/php.ini-production /usr/local/etc/php.ini

ขั้นตอนที่ 3: ติดตั้ง MariaDB บน FreeBSD

12. องค์ประกอบสุดท้ายที่ขาดหายไปสำหรับสแต็ก FBAMP ของเราคือเซิร์ฟเวอร์ฐานข้อมูล MySQL FreeBSD 11.x มีแพ็คเกจมากกว่า 1000 สำหรับฐานข้อมูลที่หลากหลาย

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

ls -al /usr/ports/databases/ | grep mariadb
pkg search -o mariadb
ls -al /usr/ports/databases/ | grep mysql
pkg search -o mysql5

13. ในคู่มือนี้ เราจะติดตั้งเซิร์ฟเวอร์ฐานข้อมูล MariaDB เวอร์ชันล่าสุดใน FreeBSD ซึ่งในปัจจุบันแสดงโดยการเปิดตัวแพ็คเกจไบนารี mariadb102

เรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้งเซิร์ฟเวอร์และไคลเอ็นต์ MariaDB และโมดูล PHP 7.1 ที่จำเป็นซึ่งจำเป็นในการเข้าถึงฐานข้อมูลผ่านเกตเวย์เซิร์ฟเวอร์ Apache

pkg install mariadb102-server mariadb102-client php71-mysqli

14. จากนั้น เปิดใช้งานเซิร์ฟเวอร์ MariaDB ทั้งระบบ และเริ่มต้น daemon ฐานข้อมูลโดยการรันคำสั่งต่อไปนี้

sysrc mysql_enable="yes" 
service mysql-server start

15. เพื่อรักษาความปลอดภัยฐานข้อมูล ให้เรียกใช้สคริปต์ mysql_secure_installation ใช้ข้อความที่ตัดตอนมาจากสคริปต์ด้านล่างเพื่อทำให้ MariaDB แข็งแกร่งขึ้น

/usr/local/bin/mysql_secure_installation
ผลลัพธ์ตัวอย่าง

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
 
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
 
Enter current password for root (enter for none):
OK, successfully used password, moving on...
 
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
 ... Success!
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
 ... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
 ... Success!
Cleaning up...
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!

16. ตามค่าเริ่มต้น MariaDB daemon จะรับฟังการเชื่อมต่อเครือข่ายภายนอกโฮสต์ท้องถิ่นบนพอร์ต 3306/TCP เรียกใช้คำสั่ง netstat, lsof หรือ sockstat เพื่อรับสถานะซ็อกเก็ต MariaDB การกำหนดค่านี้เป็นอันตรายและทำให้บริการถูกโจมตีเครือข่ายภายนอก

lsof -i4 -i6
sockstat -4 -6

17. หากคุณไม่ต้องการการเข้าถึง MariaDB จากระยะไกล ตรวจสอบให้แน่ใจว่า MariaDB daemon ฟังเฉพาะ localhost เท่านั้น โดยใช้คำสั่งด้านล่าง จากนั้นรีสตาร์ทบริการ MariaDB เพื่อใช้การเปลี่ยนแปลง

sysrc mysql_args="--bind-address=127.0.0.1"
service mysql-server restart
or
/usr/local/etc/rc.d/mysql-server restart

18. อีกครั้ง ให้เรียกใช้คำสั่ง netstat, lsof หรือ sockstat เพื่อแสดงรายการซ็อกเก็ตเครือข่าย MariaDB ซ็อกเก็ตควรผูกและฟังบน localhost ทันที ดังที่แสดงในภาพด้านล่าง

lsof -i4 | grep mysql
netstat -an | grep 3306
sockstat -4 | grep 3306

19. หากต้องการทดสอบการเชื่อมต่อฐานข้อมูล MariaDB จากคอนโซล ให้ออกคำสั่งต่อไปนี้ ป้อนรหัสผ่านรูท MySQL ในพรอมต์ และรายการฐานข้อมูลเริ่มต้นควรแสดงในหน้าจอคอนโซลของคุณดังที่แสดงในภาพด้านล่าง

mysql -u root -p -e "show databases"

นั่นคือทั้งหมด! คุณติดตั้งเว็บเซิร์ฟเวอร์ Apache สำเร็จด้วยฐานข้อมูล MariaDB และล่าม PHP ใน FreeBSD ตอนนี้คุณสามารถเริ่มปรับใช้เว็บไซต์ WordPress ได้ทันที

ในบทช่วยสอนถัดไป เราจะพูดถึงหัวข้อ FPBAMP ขั้นสูงบางหัวข้อ เช่น วิธีเปิดใช้งานและสร้างโฮสต์เสมือนของ Apache เปิดใช้งานโมดูลการเขียนซ้ำที่ไฟล์ .htaccess ต้องการเพื่อให้ทำงานได้อย่างถูกต้อง และวิธีการรักษาความปลอดภัยการเชื่อมต่อ Apache โดยใช้ ใบรับรองที่ลงนามด้วยตนเองหรือใบรับรองฟรีที่นำเสนอโดยเอนทิตี Let's Encrypt