Jinsi ya Kufunga Nginx, MariaDB na PHP (FEMP) Stack kwenye FreeBSD


Mafunzo haya yatakuongoza jinsi ya kusakinisha na kusanidi FBEMP katika toleo jipya zaidi la FreeBSD 11.x. FBEMP ni kifupi kinachoelezea mkusanyiko ufuatao wa programu:

FreeBSD 11.1 Usambazaji unaofanana na Unix, seva ya wavuti ya Nginx, mfumo wa usimamizi wa hifadhidata wa uhusiano wa MariaDB (uma wa jumuiya ya MySQL) na lugha ya programu inayobadilika ya PHP ambayo inaendeshwa kwenye upande wa seva.

  1. Usakinishaji wa FreeBSD 11.x
  2. Mambo 10 ya Kufanya Baada ya Usakinishaji wa FreeBSD

Hatua ya 1: Sakinisha Seva ya Wavuti ya Nginx kwenye FreeBSD

1. Huduma ya kwanza tutakayosakinisha kwa rafu yetu ya FBEMP katika FreeBSD ni seva ya wavuti, inayowakilishwa na programu ya Nginx.

Seva ya wavuti ya Nginx ina vifurushi zaidi vilivyotimizwa mapema vinavyopatikana katika FreeBSD 11.x PORTS. Ili kupata orodha ya jozi za Nginx kutoka hazina za Bandari, toa amri zifuatazo kwenye terminal yako ya seva.

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

2. Katika usanidi huu, tutasakinisha toleo kuu la kifurushi cha Nginx kwa kutoa amri iliyo hapa chini. Usimamizi wa kifurushi cha pkg utakuuliza ikiwa unataka kuendelea na kusakinisha kifurushi cha nginx. Jibu kwa ndiyo (y katika mstari wa amri) ili kuanza mchakato wa usakinishaji.

# pkg install nginx

3. Baada ya kifurushi cha seva ya wavuti ya Nginx kusakinishwa kwenye mfumo wako, tekeleza amri zifuatazo ili kuwezesha mfumo mzima wa daemon na uanzishe huduma katika mfumo wako.

# sysrc nginx_enable="yes"
# service nginx start

4. Ifuatayo, ukitumia amri ya sockstat, thibitisha soketi za mtandao wa huduma ya Nginx, ikiwa zinafunga kwenye bandari ya 80/TCP, kwa kutoa amri iliyo chini. Matokeo ya amri ya sockstat yatatumwa kupitia matumizi ya grep ili kupunguza matokeo yaliyorejeshwa kwa kamba ya nginx.

# sockstat -4 | grep nginx

5. Hatimaye, fungua kivinjari kwenye kompyuta ya mezani katika mtandao wako na utembelee ukurasa wa wavuti wa Nginx kupitia itifaki ya HTTP. Andika FQDN ya mashine yako au jina la kikoa chako au anwani ya IP ya seva yako katika URL ya kivinjari iliyowasilishwa ili kuomba ukurasa chaguomsingi wa seva ya wavuti ya Nginx. Ujumbe \Karibu kwenye nginx! inapaswa kuonyeshwa kwenye kivinjari chako, kama inavyoonyeshwa kwenye picha ya skrini iliyo hapa chini.

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

6. Saraka chaguo-msingi ya mfumo wa uendeshaji wa mtandao wa maudhui ya wavuti ya Nginx katika /usr/local/www/nginx/ njia ya mfumo kabisa. Katika eneo hili unapaswa kuunda, kunakili au kusakinisha faili za maudhui ya wavuti, kama vile .html au .php faili, za tovuti yako.

Ili kubadilisha eneo hili, hariri faili kuu ya usanidi ya nginx na ubadilishe maagizo ya mizizi ili kuonyesha njia yako mpya ya webroot.

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

Hapa, tafuta na usasishe laini ifuatayo ili kuonyesha njia yako mpya ya webroot:

root	/path/to/new/webroot;

Hatua ya 2: Sakinisha PHP kwenye FreeBSD

7. Tofauti na seva ya Apache HTTP, Nginx haina uwezo wa kuchakata msimbo wa PHP kwa asili. Kwa kurejea, seva ya wavuti ya Nginx hupitisha maombi ya PHP kwa mkalimani wa PHP, kama vile php-fpm FastCGI daemon, ambayo hukagua na kutekeleza msimbo. Nambari iliyopatikana hurejeshwa kwa Nginx, ambayo hukusanya tena msimbo kwa umbizo la html iliyoombwa na kutuma msimbo zaidi kwa kivinjari cha wavuti cha mgeni.

Hazina za Bandari za FreeBSD 11.x hutoa matoleo mengi ya binary kwa lugha ya programu ya PHP, kama vile matoleo ya PHP 5.6, PHP 7.0 na PHP 7.1. Ili kuonyesha matoleo yote ya PHP yaliyokusanywa awali katika FreeBSD 11.x, endesha amri zilizo hapa chini .

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

8. Unaweza kuchagua kusakinisha toleo lolote la PHP unaloona linafaa zaidi kwa programu ya wavuti unayoendesha kwenye mfumo wako. Walakini, katika mwongozo huu tutasakinisha toleo la hivi karibuni la PHP.

Ili kusakinisha toleo la PHP 7.1 na baadhi ya moduli muhimu za PHP zinazohitajika kwa programu mbalimbali za wavuti, endesha amri ifuatayo.

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

9. Baada ya kusakinisha vifurushi vya PHP katika mfumo wako, fungua faili ya usanidi ya PHP-FPM kwa Nginx na urekebishe thamani za mtumiaji na kikundi ili zilingane na thamani ya mtumiaji wa wakati wa kutekelezwa wa Nginx, ambayo ni www. Kwanza, fanya nakala ya faili na amri iliyo hapa chini.

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

Kisha, fungua faili na usasishe mistari ifuatayo kama inavyowasilishwa kwenye sampuli iliyo hapa chini.

user = www
group = www

10. Pia, unda faili ya usanidi wa PHP inayotumiwa kwa uzalishaji kwa kutoa amri iliyo hapa chini. Kwenye faili hii unaweza kufanya mabadiliko maalum ambayo yatatumika kwa mkalimani wa PHP wakati wa utekelezaji.

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

Kwa mfano, badilisha mpangilio wa date.timezone wa mkalimani wa PHP ili kusasisha eneo halisi la mashine yako kama inavyoonyeshwa katika mfano ulio hapa chini. Orodha ya saa za eneo la PHP inaweza kupatikana hapa: http://php.net/manual/en/timezones.php.

# vi /usr/local/etc/php.ini

Ongeza saa za eneo lifuatalo (weka saa za eneo kulingana na nchi yako).

date.timezone = Europe/London

Unaweza pia kurekebisha vigezo vingine vya PHP, kama vile ukubwa wa juu zaidi wa faili iliyopakiwa, ambayo inaweza kuongezwa kwa kurekebisha thamani zilizo hapa chini:

upload_max_filesize = 10M
post_max_size = 10M

11. Baada ya hapo, umetengeneza mipangilio maalum ya PHP, wezesha na uanzishe daemoni ya PHP-FPM ili kutekeleza usanidi mpya kwa kutoa amri zilizo hapa chini.

# sysrc php_fpm_enable=yes
# service php-fpm start

12. Kwa chaguo-msingi, daemoni ya PHP-FPM katika FreeBSD hufunga kwenye soketi ya mtandao wa ndani kwenye bandari 9000/TCP. Ili kuonyesha soketi za mtandao za PHP-FPM tekeleza amri ifuatayo.

# sockstat -4 -6| grep php-fpm

13. Ili seva ya wavuti ya Nginx kupitisha hati za PHP kwa seva ya lango la FastCGI, ambayo inasikiza kwenye tundu la 127.0.0.1:9000, fungua faili kuu ya usanidi ya Nginx na uongeze kizuizi kifuatacho cha msimbo kama inavyoonyeshwa. katika sampuli hapa chini.

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

Kizuizi cha nambari ya FastCGI kwa 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. Ili kutazama maelezo ya sasa ya PHP kwa seva yako, tengeneza faili ya info.php katika njia ya weboot ya Nginx kwa kutoa amri ifuatayo.

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

15. Kisha, jaribu na uanzishe upya daemon ya Nginx ili kutumia mipangilio ya PHP FastCGI na utembelee ukurasa wa info.php katika kivinjari.

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

Badilisha anwani ya IP au jina la kikoa katika viungo vilivyo hapa chini ipasavyo. Ukurasa wa habari wa PHP unapaswa kuonyesha habari kama inavyoonyeshwa kwenye picha ya skrini iliyo hapa chini.

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

Hatua ya 3: Sakinisha MariaDB kwenye FreeBSD

16. Kipengele cha mwisho kinakosekana kwenye mrundikano wako wa FEMP kwenye hifadhidata. MariaDB/MySQL ni mojawapo ya programu huria ya RDBMS inayohusishwa zaidi na seva ya wavuti ya Nginx inayotumika kupeleka tovuti zinazobadilika.

Kwa kweli, MariaDB/MySQL ni mojawapo ya hifadhidata za uhusiano zinazotumiwa zaidi ulimwenguni. Kutafuta kupitia Bandari za FreeBSD, unaweza kupata matoleo mengi ya MariaDB/MySQL.

Katika mwongozo huu tutasakinisha hifadhidata ya MariaDB, ambayo ni uma ya jamii ya hifadhidata ya MySQL. Ili kutafuta matoleo yanayopatikana ya MariaDB, toa amri zifuatazo kwenye terminal.

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

17. Kusakinisha toleo jipya zaidi la seva ya hifadhidata ya MariaDB tekeleza amri ifuatayo. Unapaswa pia kusakinisha moduli ya kiendesha hifadhidata ya uhusiano ya PHP inayotumiwa na hati za PHP kuunganishwa na MySQL.

# pkg install mariadb102-server php71-mysqli

18. Baada ya hifadhidata kusakinishwa, washa daemoni ya MySQL na anza huduma ya hifadhidata kwa kuendesha amri zifuatazo.

# sysrc mysql_enable="YES" 
# service mysql-server start

19. Pia, hakikisha umeanzisha upya daemoni ya PHP-FPM ili kupakia kiendelezi cha kiendeshi cha 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. Ili kujaribu muunganisho wa hifadhidata ya MariaDB kutoka kwa kiweko, tekeleza amri iliyo hapa chini.

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

22. Ili kulinda zaidi MariaDB, ambayo kwa chaguo-msingi husikiliza miunganisho ya mtandao inayoingia kwenye tundu la 0.0.0.0:3306/TCP, toa amri iliyo hapa chini ili kulazimisha huduma kufunga kiolesura cha loopback na kukataa kabisa ufikiaji wa mbali. Baadaye, anzisha upya huduma ya MySQL ili kutumia usanidi mpya.

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

Thibitisha ikiwa ufungaji wa mwenyeji wa ndani ulitekelezwa kwa ufanisi kwa kutekeleza amri ya netstat kama inavyoonyeshwa kwenye mfano hapa chini.

# netstat -an -p tcp

Ni hayo tu! Umesakinisha seva ya wavuti ya Nginx, hifadhidata ya uhusiano ya MariaDB na lugha ya programu ya upande wa seva ya PHP katika FreeBSD. Sasa unaweza kuanza kuunda kurasa za wavuti zinazobadilika ili kutoa maudhui ya wavuti kwa wageni wako.