FreeBSD-de Nginx, MariaDB we PHP (FEMP) stackini nädip gurmaly


Bu gollanma, FreeBSD 11.x iň soňky goýberilişinde FBEMP-ni nädip gurmalydygyny we sazlamalydygyny görkezer. FBEMP aşakdaky programma üpjünçiligini beýan edýän gysgaça söz:

FreeBSD 11.1 Unix ýaly paýlama, Nginx web serweri, MariaDB baglanyşyk bazasyny dolandyrmak ulgamy (MySQL-iň jemgyýetçilik çatrygy) we serwer tarapynda işleýän PHP dinamiki programmirleme dili.

  1. FreeBSD 11.x gurmak
  2. FreeBSD gurlandan soň etmeli 10 zat

1-nji ädim: FreeBSD-de Nginx web serwerini guruň

1. FreeBSD-de FBEMP bukjamyz üçin gurjak ilkinji hyzmatymyz, Nginx programma üpjünçiligi tarapyndan görkezilen web serweri.

Nginx web serwerinde FreeBSD 11.x PORTS-da has öňünden berlen paketler bar. Port ammarlaryndan Nginx ikilikleriniň sanawyny almak üçin serwer terminalynda aşakdaky buýruklary çykaryň.

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

2. Bu aýratyn konfigurasiýada, aşakdaky buýrugy bermek bilen Nginx-iň esasy paket wersiýasyny gurarys. Pkg paket dolandyryşy, nginx paketini gurnamagy dowam etdirmek isleýärsiňizmi diýip soraýar. Gurmak işine başlamak üçin hawa ( y buýruk setirinde) bilen jogap beriň.

# pkg install nginx

3. Nginx web serwer bukjasy ulgamyňyzda gurlansoň, daemon ulgamyny giňeltmek we ulgamyňyzda hyzmaty başlamak üçin aşakdaky buýruklary ýerine ýetiriň.

# sysrc nginx_enable="yes"
# service nginx start

4. Ondan soň, sokstat buýrugyny ulanyp, aşakdaky buýrugy bermek bilen, 80/TCP portunda hökmany bolsa, Nginx hyzmat tor rozetkalaryny barlaň. Sockstat buýrugynyň çykyşy, yzyna gaýtarylan netijeleri diňe nginx setirine çenli azaltmak üçin grep kömekçi enjamy arkaly geçiriler.

# sockstat -4 | grep nginx

5. Netijede, toruňyzdaky iş stoly kompýuterinde brauzer açyň we HTTP protokoly arkaly Nginx deslapky web sahypasyna giriň. Nginx web serweriniň deslapky web sahypasyny talap etmek üçin berlen brauzeriň URL-sinde enjamyňyzyň FQDN-sini ýa-da domen adyňyzy ýa-da serweriňiziň IP adresini ýazyň.\Nginx-e hoş geldiňiz! Habary aşakdaky skrinshotda görkezilişi ýaly brauzeriňizde görkezilmelidir.

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

6./usr/ýerli/www/nginx/mutlak ulgam ýolunda ýerleşýän Nginx web mazmuny üçin deslapky weboot katalogy. Bu ýerde web sahypaňyz üçin .html ýa-da .php faýllary ýaly web mazmun faýllaryny döretmeli, göçürmeli ýa-da gurmaly.

Bu ýeri üýtgetmek üçin, nginx esasy konfigurasiýa faýlyny redaktirläň we täze web ýoluňyzy görkezmek üçin kök görkezmesini üýtgediň.

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

Bu ýerde, täze web ýoluňyzy görkezmek üçin aşakdaky setiri gözläň we täzeläň:

root	/path/to/new/webroot;

2-nji ädim: FreeBSD-de PHP guruň

7. Apache HTTP serwerinden tapawutlylykda, Nginx-iň PHP koduny ýerli işlemek mümkinçiligi ýok. Munuň öwezine, Nginx web serweri, PHP haýyşlaryny PHP terjimeçisine, kod barlaýan we ýerine ýetirýän php-fpm FastCGI daemon ýaly PHP terjimeçisine geçirýär. Netijede kody talap edilýän html formatyna gaýtadan ýygnaýan we kody web brauzerine iberýän Nginx-a yzyna gaýtarylýar.

FreeBSD 11.x Portlar ammarlary, PHP 5.6, PHP 7.0 we PHP 7.1 goýberişleri ýaly PHP programma dili üçin birnäçe ikili wersiýany hödürleýär. FreeBSD 11.x-de öňünden düzülen PHP wersiýalarynyň hemmesini görkezmek üçin aşakdaky buýruklary işlediň.

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

8. Ulgamyňyzda işleýän web programmasy üçin iň amatly PHP wersiýasyny gurnamagy saýlap bilersiňiz. Şeýle-de bolsa, bu gollanmada PHP-iň iň soňky wersiýasyny gurarys.

PHP 7.1 goýberilişini we dürli web programmalary üçin zerur käbir PHP möhüm modullary gurmak üçin aşakdaky buýrugy işlediň.

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

9. Ulgamyňyza PHP paketlerini guranyňyzdan soň, Nginx üçin PHP-FPM konfigurasiýa faýly açyň we ulanyjy we topar bahalaryny Nginx iş wagtyndaky ulanyjynyň bahasyna laýyk gelýän www. Ilki bilen aşakdaky buýruk bilen faýlyň ätiýaçlyk nusgasyny düzüň.

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

Soňra faýly açyň we aşakdaky nusgada görkezilişi ýaly aşakdaky setirleri täzeläň.

user = www
group = www

10. Şeýle hem, aşakdaky buýrugy bermek bilen önümçilik üçin ulanylýan PHP konfigurasiýa faýly dörediň. Bu faýlda, iş wagtynda PHP terjimeçisine ulanyljak aýratyn üýtgeşmeler girizip bilersiňiz.

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

Mysal üçin, aşakdaky mysalda görkezilişi ýaly enjamyňyzyň fiziki ýerleşişini täzelemek üçin PHP terjimeçisi üçin date.timezone sazlamasyny üýtgediň. PHP wagt guşagynyň sanawyny şu ýerden tapyp bilersiňiz: http://php.net/manual/en/timezones.php.

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

Aşakdaky wagt guşagyny goşuň (ýurduňyza görä wagt guşagyny düzüň).

date.timezone = Europe/London

Aşakdaky bahalary üýtgedip köpeldip boljak ýüklenen faýlyň iň uly faýl ölçegi ýaly beýleki PHP üýtgeýjilerini hem sazlap bilersiňiz:

upload_max_filesize = 10M
post_max_size = 10M

11. Ondan soň, aşakdaky buýruklary bermek bilen täze konfigurasiýalary ulanmak üçin PHP-iň ýörite sazlamalaryny düzdüňiz, PHP-FPM daemonyny işlediň we işe giriziň.

# sysrc php_fpm_enable=yes
# service php-fpm start

12. Düzgüne görä, FreeBSD-de PHP-FPM daemon 9000/TCP portundaky ýerli set rozetkasyna baglanýar. PHP-FPM tor rozetkalaryny görkezmek üçin aşakdaky buýrugy ýerine ýetiriň.

# sockstat -4 -6| grep php-fpm

13. Nginx web serweriniň, PHP skriptlerini 127.0.0.1:9000 rozetkasynda diňleýän FastCGI şlýuz serwerine geçirmegi üçin Nginx esasy konfigurasiýa faýlyny açyň we görkezilişi ýaly aşakdaky kod blokyny goşuň. aşakdaky nusgada.

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

Nginx üçin FastCGI kod bloky:

 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. Serweriňiz üçin häzirki PHP maglumatyny görmek üçin, aşakdaky buýrugy berip, Nginx weboot ýolunda info.php faýly dörediň.

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

15. Soňra, PHP FastCGI sazlamalaryny ulanmak üçin Nginx daemonyny täzeden açyň we brauzerdäki info.php sahypasyna giriň.

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

Aşakdaky baglanyşyklarda IP adresi ýa-da domen adyny çalyşyň. PHP maglumat sahypasy aşakdaky skrinshotda görkezilişi ýaly maglumatlary görkezmeli.

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

3-nji ädim: FreeBSD-de MariaDB guruň

16. Maglumat bazasyndaky FEMP bukjasyndan iň soňky komponent. MariaDB/MySQL dinamiki web sahypalaryny ýerleşdirmek üçin ulanylýan Nginx web serweri bilen iň baglanyşykly açyk çeşme RDBMS programma üpjünçiligidir.

Aslynda, MariaDB/MySQL dünýäde iň köp ulanylýan baglanyşyk bazalarynyň biridir. FreeBSD portlaryndan gözläp, MariaDB/MySQL-iň birnäçe goýberilişini tapyp bilersiňiz.

Bu gollanmada MySQL maglumat bazasynyň jemgyýetçilik çatrygy bolan MariaDB maglumat bazasyny gurarys. MariaDB-iň elýeterli wersiýalaryny gözlemek üçin terminalda aşakdaky buýruklary çykaryň.

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

17. MariaDB maglumat bazasynyň serweriniň iň soňky wersiýasyny gurmak üçin aşakdaky buýrugy ýerine ýetiriň. Şeýle hem, MySQL-e birikmek üçin PHP skriptleri tarapyndan ulanylýan PHP baglanyşyk bazasynyň draýwer modulyny gurmaly.

# pkg install mariadb102-server php71-mysqli

18. Maglumat bazasy gurlansoň, MySQL daemonyny işlediň we aşakdaky buýruklary işledip maglumat bazasynyň hyzmatyny başlaň.

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

19. Şeýle hem, MySQL draýwer giňeltmesini ýüklemek üçin PHP-FPM daemonyny täzeden açýandygyňyza göz ýetiriň.

# 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 maglumat bazasynyň birikmesini konsoldan barlamak üçin aşakdaky buýrugy ýerine ýetiriň.

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

22. 0.0.0.0:3306/TCP rozetkasynda gelýän set birikmelerini diňleýän MariaDB-ni has ygtybarly üpjün etmek üçin hyzmaty aýlaw interfeýsine baglamaga we uzakdan girmegi düýbünden gadagan etmäge aşakdaky buýrugy beriň. Ondan soň, täze konfigurasiýany ulanmak üçin MySQL hyzmatyny täzeden açyň.

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

Aşakdaky mysalda görkezilişi ýaly netstat buýrugy bilen ýerlihost baglanyşygynyň üstünlikli ulanylandygyny barlaň.

# netstat -an -p tcp

Bu hemmesi! FreeBSD-de Nginx web serwerini, MariaDB baglanyşyk bazasyny we PHP serwer tarapy programma dilini üstünlikli gurnadyňyz. Indi girýänleriňize web mazmunyny hödürlemek üçin dinamiki web sahypalaryny gurup bilersiňiz.