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

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


บทช่วยสอนนี้จะแนะนำคุณเกี่ยวกับวิธีติดตั้งและกำหนดค่า FBEMP ใน FreeBSD 11.x รีลีสล่าสุด FBEMP เป็นตัวย่อที่อธิบายชุดซอฟต์แวร์ต่อไปนี้:

FreeBSD 11.1 การกระจายแบบ Unix, เว็บเซิร์ฟเวอร์ Nginx, ระบบจัดการฐานข้อมูลเชิงสัมพันธ์ MariaDB (ทางแยกชุมชนของ MySQL) และภาษาการเขียนโปรแกรมแบบไดนามิก PHP ซึ่งทำงานบนฝั่งเซิร์ฟเวอร์

ความต้องการ

  1. การติดตั้ง FreeBSD 11.x
  2. 10 สิ่งที่ต้องทำหลังจากติดตั้ง FreeBSD

ขั้นตอนที่ 1: ติดตั้งเว็บเซิร์ฟเวอร์ Nginx บน FreeBSD

1. บริการแรกที่เราจะติดตั้งสำหรับสแต็ก FBEMP ใน FreeBSD คือเว็บเซิร์ฟเวอร์ ซึ่งแสดงโดย Nginx ซอฟต์แวร์

เว็บเซิร์ฟเวอร์ Nginx มีแพ็คเกจที่ปฏิบัติตามข้อกำหนดล่วงหน้าเพิ่มเติมใน FreeBSD 11.x PORTS หากต้องการรับรายการไบนารี Nginx จากที่เก็บ พอร์ต ให้ออกคำสั่งต่อไปนี้ในเทอร์มินัลเซิร์ฟเวอร์ของคุณ

ls /usr/ports/www/ | grep nginx
pkg search -o nginx

2. ในการกำหนดค่าเฉพาะนี้ เราจะติดตั้งเวอร์ชันแพ็คเกจหลักของ Nginx โดยใช้คำสั่งด้านล่างนี้ การจัดการแพ็คเกจ pkg จะถามคุณว่าต้องการติดตั้งแพ็คเกจ nginx ต่อไปหรือไม่ ตอบด้วยใช่ (y ในบรรทัดคำสั่ง) เพื่อเริ่มกระบวนการติดตั้ง

pkg install nginx

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

sysrc nginx_enable="yes"
service nginx start

4. ถัดไป โดยใช้คำสั่ง sockstat ตรวจสอบซ็อกเก็ตเครือข่ายบริการ Nginx หากเชื่อมต่อเข้ากับพอร์ต 80/TCP โดยออกคำสั่งด้านล่างนี้ สั่งการ. เอาต์พุตของคำสั่ง Socksstat จะถูกไพพ์ผ่านยูทิลิตี้ grep เพื่อลดผลลัพธ์ที่ส่งคืนไปยังสตริง nginx เท่านั้น

sockstat -4 | grep nginx

5. สุดท้าย เปิดเบราว์เซอร์บนคอมพิวเตอร์เดสก์ท็อปในเครือข่ายของคุณและไปที่หน้าเว็บเริ่มต้นของ Nginx ผ่านโปรโตคอล HTTP เขียน FQDN ของเครื่องของคุณหรือชื่อโดเมนของคุณหรือที่อยู่ IP ของเซิร์ฟเวอร์ของคุณใน URL ของเบราว์เซอร์ที่ยื่นเพื่อขอหน้าเว็บเริ่มต้นของเซิร์ฟเวอร์เว็บ Nginx ข้อความ “ยินดีต้อนรับสู่ nginx! ” ควรปรากฏในเบราว์เซอร์ของคุณ ดังที่แสดงในภาพหน้าจอด้านล่าง

http://yourdomain.com
http://your_server_IP
http://your_machine_FQDN

6. ไดเรกทอรี weboot เริ่มต้นสำหรับเนื้อหาเว็บ Nginx ซึ่งอยู่ในเส้นทางของระบบ /usr/local/www/nginx/ ในตำแหน่งนี้ คุณควรสร้าง คัดลอก หรือติดตั้งไฟล์เนื้อหาเว็บ เช่น ไฟล์ .html หรือ .php สำหรับเว็บไซต์ของคุณ

หากต้องการเปลี่ยนตำแหน่งนี้ ให้แก้ไขไฟล์การกำหนดค่าหลักของ nginx และเปลี่ยนคำสั่งรูทเพื่อให้สะท้อนถึงพาธเว็บรูทใหม่ของคุณ

nano /usr/local/etc/nginx/nginx.conf

ที่นี่ ค้นหาและอัปเดตบรรทัดต่อไปนี้เพื่อแสดงพาธ webroot ใหม่ของคุณ:

root	/path/to/new/webroot;

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

7. ต่างจากเซิร์ฟเวอร์ Apache HTTP ตรงที่ Nginx ไม่มีความสามารถในการประมวลผลโค้ด PHP แบบเนทีฟ ในทางกลับกัน เว็บเซิร์ฟเวอร์ Nginx จะส่งคำขอ PHP ไปยังล่าม PHP เช่น php-fpm FastCGI daemon ซึ่งจะตรวจสอบและรันโค้ด จากนั้นโค้ดที่ได้จะถูกส่งกลับไปยัง Nginx ซึ่งจะประกอบโค้ดใหม่กลับเป็นรูปแบบ html ที่ร้องขอ และส่งโค้ดเพิ่มเติมไปยังเว็บเบราว์เซอร์ของผู้เข้าชม

FreeBSD 11.x ที่เก็บพอร์ตมีเวอร์ชันไบนารีหลายเวอร์ชันสำหรับภาษาการเขียนโปรแกรม PHP เช่น PHP 5.6, PHP 7.0 และ PHP 7.1< เผยแพร่ ในการแสดงเวอร์ชัน PHP ที่คอมไพล์ไว้ล่วงหน้าทั้งหมดที่มีใน FreeBSD 11.x ให้รันคำสั่งด้านล่าง

pkg search -o php
ls /usr/ports/lang/ | grep php

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

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

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

9. หลังจากที่คุณติดตั้งแพ็คเกจ PHP ในระบบของคุณแล้ว ให้เปิดไฟล์การกำหนดค่า PHP-FPM สำหรับ Nginx และปรับค่าผู้ใช้และกลุ่มให้ตรงกับค่าบนรันไทม์ Nginx ผู้ใช้ ซึ่งก็คือ www ขั้นแรกให้ทำการสำรองไฟล์ด้วยคำสั่งด้านล่าง

cp /usr/local/etc/php-fpm.d/www.conf{,.backup}

จากนั้น เปิดไฟล์และอัปเดตบรรทัดต่อไปนี้ตามที่แสดงในตัวอย่างด้านล่าง

user = www
group = www

10. นอกจากนี้ ให้สร้างไฟล์การกำหนดค่า PHP ที่ใช้สำหรับการผลิตโดยใช้คำสั่งด้านล่าง ในไฟล์นี้ คุณสามารถทำการเปลี่ยนแปลงแบบกำหนดเองที่จะนำไปใช้กับล่าม PHP ณ รันไทม์

cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

ตัวอย่างเช่น เปลี่ยนการตั้งค่า date.timezone สำหรับล่าม PHP เพื่ออัปเดตตำแหน่งทางกายภาพของเครื่องของคุณดังที่แสดงในตัวอย่างด้านล่าง รายการเขตเวลา PHP สามารถพบได้ที่นี่: http://php.net/manual/en/timezones.php

vi /usr/local/etc/php.ini

เพิ่มเขตเวลาต่อไปนี้ (ตั้งเขตเวลาตามประเทศของคุณ)

date.timezone = Europe/London

คุณยังสามารถปรับตัวแปร PHP อื่นๆ ได้ เช่น ขนาดไฟล์สูงสุดของไฟล์ที่อัพโหลด ซึ่งสามารถเพิ่มได้โดยการแก้ไขค่าด้านล่าง:

upload_max_filesize = 10M
post_max_size = 10M

11. หลังจากนั้น คุณได้ทำการตั้งค่าแบบกำหนดเองสำหรับ PHP แล้ว เปิดใช้งานและเริ่มต้น PHP-FPM daemon เพื่อใช้การกำหนดค่าใหม่โดยออกคำสั่งด้านล่าง

sysrc php_fpm_enable=yes
service php-fpm start

12. ตามค่าเริ่มต้น PHP-FPM daemon ใน FreeBSD จะเชื่อมโยงกับซ็อกเก็ตเครือข่ายท้องถิ่นบนพอร์ต 9000/TCP หากต้องการแสดงซ็อกเก็ตเครือข่าย PHP-FPM ให้รันคำสั่งต่อไปนี้

sockstat -4 -6| grep php-fpm

13. เพื่อให้เว็บเซิร์ฟเวอร์ Nginx ส่งสคริปต์ PHP ไปยังเซิร์ฟเวอร์เกตเวย์ FastCGI ซึ่งกำลังฟังบนซ็อกเก็ต 127.0.0.1:9000 เปิดไฟล์การกำหนดค่าหลักของ Nginx และเพิ่มบล็อกโค้ดต่อไปนี้ดังที่แสดงในตัวอย่างด้านล่าง

vi /usr/local/etc/nginx/nginx.conf

บล็อกโค้ด FastCGI สำหรับ nginx:

 location ~ \.php$ {
        root	/usr/local/www/nginx;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param SCRIPT_FILENAME $request_filename;    
        include        fastcgi_params;
        	}

14. หากต้องการดูข้อมูล PHP ปัจจุบันสำหรับเซิร์ฟเวอร์ของคุณ ให้สร้างไฟล์ info.php ในเส้นทาง Nginx weboot โดยใช้คำสั่งต่อไปนี้

echo "<?php phpinfo(); ?>" | tee /usr/local/www/nginx/info.php

15. จากนั้น ทดสอบและรีสตาร์ท Nginx daemon เพื่อใช้การตั้งค่า PHP FastCGI และไปที่หน้า info.php ในเบราว์เซอร์

nginx -t # Test nginx configuration file for syntax errors
service nginx restart

แทนที่ที่อยู่ IP หรือชื่อโดเมนในลิงค์ด้านล่างตามลำดับ หน้าข้อมูล PHP ควรแสดงข้อมูลตามที่แสดงในภาพหน้าจอด้านล่าง

http://yourdomain.com/info.php
http://server_IP-or-FQDN/info.php

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

16. องค์ประกอบสุดท้ายหายไปจากสแต็ก FEMP ของคุณในฐานข้อมูล MariaDB/MySQL เป็นหนึ่งในซอฟต์แวร์ RDBMS โอเพ่นซอร์สที่มีความเกี่ยวข้องมากที่สุด โดยมีเว็บเซิร์ฟเวอร์ Nginx ที่ใช้สำหรับปรับใช้เว็บไซต์ไดนามิก

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

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

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

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

pkg install mariadb102-server php71-mysqli

18. หลังจากติดตั้งฐานข้อมูลแล้ว ให้เปิดใช้งาน MySQL daemon และเริ่มบริการฐานข้อมูลโดยรันคำสั่งต่อไปนี้

sysrc mysql_enable="YES" 
service mysql-server start

19. นอกจากนี้ ตรวจสอบให้แน่ใจว่าคุณรีสตาร์ท PHP-FPM daemon เพื่อโหลดส่วนขยายไดรเวอร์ MySQL

service php-fpm restart
20. On the next step, secure MariaDB database by launching mysql_secure_installation script. Use the below sample of the installation script in order to answer the questions. Basically, say yes (y) for all asked questions to secure the database and type a strong password for MySQL root user.
/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!

21. หากต้องการทดสอบการเชื่อมต่อฐานข้อมูล MariaDB จากคอนโซล ให้ดำเนินการคำสั่งด้านล่าง

mysql -u root -p -e "show status like ‘Connections’"

22. เพื่อรักษาความปลอดภัยเพิ่มเติมให้กับ MariaDB ซึ่งตามค่าเริ่มต้นจะรับฟังการเชื่อมต่อเครือข่ายขาเข้าบนซ็อกเก็ต 0.0.0.0:3306/TCP ให้ออกคำสั่งด้านล่างเพื่อบังคับใช้บริการ เพื่อผูกกับอินเทอร์เฟซ loopback และไม่อนุญาตให้มีการเข้าถึงระยะไกลโดยสมบูรณ์ หลังจากนั้นให้รีสตาร์ทบริการ MySQL เพื่อใช้การกำหนดค่าใหม่

sysrc mysql_args="--bind-address=127.0.0.1"
service mysql-server restart

ตรวจสอบว่าการเชื่อมโยง localhost ถูกนำมาใช้สำเร็จหรือไม่โดยการรันคำสั่ง netstat ดังที่แสดงในตัวอย่างด้านล่าง

netstat -an -p tcp

นั่นคือทั้งหมด! คุณติดตั้งเว็บเซิร์ฟเวอร์ Nginx, ฐานข้อมูลเชิงสัมพันธ์ MariaDB และภาษาการเขียนโปรแกรมฝั่งเซิร์ฟเวอร์ PHP ใน FreeBSD สำเร็จแล้ว ตอนนี้คุณสามารถเริ่มสร้างเว็บเพจแบบไดนามิกเพื่อแสดงเนื้อหาเว็บแก่ผู้เยี่ยมชมของคุณได้แล้ว