Otu esi etinye Nginx, MariaDB na PHP (FEMP) Stack na FreeBSD


Nkuzi a ga-eduzi gị otu esi etinye na hazie FBEMP na ntọhapụ ọhụrụ FreeBSD 11.x. FBEMP bụ mkpịrịokwu nke na-akọwa mkpokọta ngwanrọ ndị a:

FreeBSD 11.1 Unix-dị ka nkesa, Nginx sava weebụ, MariaDB mmekọrịta nchekwa data management usoro (a obodo ndụdụ nke MySQL) na PHP ike mmemme asụsụ nke na-agba ọsọ n'akụkụ nkesa.

  1. Nwụnye FreeBSD 11.x
  2. Ihe iri a ga-eme ka nwụnye FreeBSD

Kwụpụ 1: Wụnye Nginx Web Server na FreeBSD

1. Ọrụ mbụ anyị ga-etinye maka nchịkọta FBEMP anyị na FreeBSD bụ sava weebụ, nke Nginx na-anọchi anya ya.

Sava webụ Nginx nwere ọtụtụ ngwungwu emejuputara dị na FreeBSD 11.x PORTS. Iji nweta ndepụta nke ọnụọgụ abụọ Nginx sitere na ebe nchekwa ọdụ ụgbọ mmiri, nye iwu ndị a na njedebe sava gị.

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

2. Na nhazi a kapịrị ọnụ, anyị ga-etinye isi ngwugwu Nginx site n'inye iwu dị n'okpuru. Njikwa ngwugwu pkg ga-ajụ gị ma ịchọrọ ịga n'ihu na ịwụnye nginx ngwugwu. Zaa ee (y n'ahịrị iwu) iji malite usoro nrụnye.

# pkg install nginx

3. Mgbe etinyere ngwungwu sava weebụ Nginx na sistemụ gị, mebie iwu ndị a iji mee ka sistemụ daemon wee malite ọrụ na sistemụ gị.

# sysrc nginx_enable="yes"
# service nginx start

4. Na-esote, na-eji iwu sockstat, nyochaa oghere netwọk ọrụ Nginx, ma ọ bụrụ na ha na-ejikọta na ọdụ ụgbọ mmiri 80/TCP, site n'inye iwu dị n'okpuru. A ga-agbanye mmepụta nke sockstat iwu site na grep utility iji belata nsonaazụ eweghachiri naanị na eriri nginx.

# sockstat -4 | grep nginx

5. N'ikpeazụ, mepee ihe nchọgharị na kọmputa desktọọpụ na netwọk gị wee gaa na ibe weebụ Nginx site na protocol HTTP. Dee FQDN nke igwe gị ma ọ bụ aha ngalaba gị ma ọ bụ adreesị IP nke ihe nkesa gị n'ime URL ihe nchọgharị etinyere iji rịọ ibe weebụ ndabara Nginx. Ozi ahụ \Nnọọ nginx! kwesịrị igosi na ihe nchọgharị gị, dị ka e gosiri na nseta ihuenyo dị n'okpuru.

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

6. Akwụkwọ ndekọ weboot nke ndabara maka ọdịnaya weebụ Nginx dị na/usr/local/www/nginx/usoro usoro zuru oke. N'ebe a ị ga-emepụta, detuo ma ọ bụ wụnye faịlụ ọdịnaya webụ, dị ka faịlụ .html ma ọ bụ .php faịlụ, maka weebụsaịtị gị.

Ka ịgbanwee ọnọdụ a, dezie faịlụ nhazi nginx ma gbanwee ntụzịaka mgbọrọgwụ iji gosipụta ụzọ webroot ọhụrụ gị.

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

N'ebe a, chọọ ma melite ahịrị ndị a iji gosipụta ụzọ webroot ọhụrụ gị:

root	/path/to/new/webroot;

Kwụpụ 2: Wụnye PHP na FreeBSD

7. N'adịghị ka Apache HTTP nkesa, Nginx enweghị ike hazie PHP koodu. Na nloghachi, sava weebụ Nginx na-enyefe arịrịọ PHP na onye ntụgharị PHP, dị ka php-fpm FastCGI daemon, nke na-enyocha ma na-eme koodu ahụ. A na-eweghachite koodu a rụpụtara na Nginx, nke na-achịkọta koodu ahụ n'ụdị html achọrọ wee ziga koodu ahụ gaa n'ihu na ihe nchọgharị weebụ onye ọbịa.

Ebe nchekwa ọdụ ụgbọ mmiri FreeBSD 11.x na-enye ọtụtụ ụdị ọnụọgụ abụọ maka asụsụ mmemme PHP, dịka PHP 5.6, PHP 7.0 na PHP 7.1. Iji gosi ụdịdị PHP niile ekpokọtara tupu oge eruo na FreeBSD 11.x, mee iwu ndị dị n'okpuru.

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

8. Ị nwere ike ịhọrọ ịwụnye ụdị PHP ọ bụla ịchọtara nke kacha mma maka ngwa weebụ ị na-agba na sistemụ gị. Agbanyeghị, na ntuziaka a, anyị ga-etinye ụdị PHP kacha ọhụrụ.

Iji tinye ntọhapụ PHP 7.1 na ụfọdụ modul PHP dị mkpa achọrọ maka ngwa webụ dị iche iche, mee iwu na-esonụ.

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

. Mbụ, mee nkwado ndabere na mpaghara faịlụ site na iwu dị n'okpuru.

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

Mgbe ahụ, mepee faịlụ ma melite ahịrị ndị a dị ka egosiri na nlele n'okpuru.

user = www
group = www

10. Ọzọkwa, mepụta faịlụ nhazi PHP ejiri maka mmepụta site na ịnye iwu dị n'okpuru. Na faịlụ a ị nwere ike ịme mgbanwe omenala nke a ga-etinye na onye ntụgharị PHP n'oge ọ na-agba ọsọ.

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

Dịka ọmụmaatụ, gbanwee ntọala date.timezone maka onye ntụgharị PHP iji melite ọnọdụ igwe gị dị ka egosiri na atụ n'okpuru. Enwere ike ịchọta ndepụta oge mpaghara PHP ebe a: http://php.net/manual/en/timezones.php.

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

Tinye mpaghara oge (tọọ mpaghara oge dịka obodo gị).

date.timezone = Europe/London

Ịnwekwara ike ịhazigharị mgbanwe PHP ndị ọzọ, dị ka oke faịlụ nke faịlụ ebugoro, nke enwere ike ịbawanye site na ịmegharị ụkpụrụ ndị a:

upload_max_filesize = 10M
post_max_size = 10M

11. Mgbe nke ahụ gasịrị, i meela ntọala omenala maka PHP, mee ka ma malite PHP-FPM daemon iji tinye nhazi ọhụrụ site n'inye iwu ndị dị n'okpuru.

# sysrc php_fpm_enable=yes
# service php-fpm start

12. Site na ndabara, PHP-FPM daemon na FreeBSD na-ejikọta na oghere netwọk mpaghara na ọdụ ụgbọ mmiri 9000/TCP. Iji gosi oghere netwọk PHP-FPM mebie iwu a.

# sockstat -4 -6| grep php-fpm

13. Ka Nginx webụsaịtị wee nyefee script PHP gaa na ihe nkesa ọnụ ụzọ FastCGI, nke na-ege ntị na 127.0.0.1: 9000 oghere, mepee Nginx isi nhazi faịlụ wee gbakwunye ngọngọ nke koodu na-esonụ dị ka e gosipụtara. na n'okpuru sample.

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

Ihe ngọngọ koodu FastCGI maka 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. Iji lelee ozi PHP dị ugbu a maka ihe nkesa gị, mepụta faịlụ info.php na Nginx weboot ụzọ site n'inye iwu a.

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

15. Mgbe ahụ, nwalee ma malitegharịa Nginx daemon iji tinye ntọala PHP FastCGI wee gaa na info.php ibe na ihe nchọgharị.

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

Dochie adreesị IP ma ọ bụ ngalaba aha na njikọ dị n'okpuru ebe a. Ibe ozi PHP kwesịrị igosipụta ozi dị ka egosiri na nseta ihuenyo dị n'okpuru.

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

Kwụpụ 3: Wụnye MariaDB na FreeBSD

16. Akụkụ ikpeazụ na-efu site na nchịkọta FEMP gị na nchekwa data. MariaDB/MySQL bụ otu n'ime sọftụwia RDBMS mepere emepe nke nwere sava weebụ Nginx ejiri maka ibuga webụsaịtị siri ike.

N'ezie, MariaDB/MySQL bụ otu n'ime ọdụ data ejikọtara ọnụ na ụwa. Na-achọ site na FreeBSD Ports, ị nwere ike ịhụ ọtụtụ ntọhapụ nke MariaDB/MySQL.

N'ime ntuziaka a, anyị ga-etinye nchekwa data MariaDB, nke bụ ndụdụ obodo nke MySQL nchekwa data. Iji chọọ ụdị MariaDB dị, nye iwu ndị a na njedebe.

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

17. Iji wụnye ihe nkesa nchekwa data MariaDB kacha ọhụrụ mee iwu a. Ịkwesịrị ịwụnye modul ọkwọ ụgbọ ala nchekwa data PHP nke ederede PHP ji jikọọ na MySQL.

# pkg install mariadb102-server php71-mysqli

18. Mgbe etinyere nchekwa data, mee ka MySQL daemon malite ọrụ nchekwa data site na ịme iwu ndị a.

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

19. Ọzọkwa, jide n'aka na ị Malitegharịa ekwentị PHP-FPM daemon ka ibu MySQL ọkwọ ụgbọala ndọtị.

# 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. Iji nwalee MariaDB nchekwa data njikọ si console, mebie iwu n'okpuru.

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

22. Iji nwetakwuo nchekwa MariaDB, nke na ndabara na-ege ntị maka njikọ netwọk na-abata na 0.0.0.0:3306/TCP soket, nye iwu dị n'okpuru ebe a iji manye ọrụ ahụ iji jikọta na interface loopback ma kwe ka ohere ịnweta ohere kpamkpam. Emechaa, malitegharịa ọrụ MySQL ka itinye nhazi ọhụrụ ahụ.

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

Nyochaa ma ọ bụrụ na etinyere njide localhost nke ọma site n'ịgba iwu netstat dị ka egosiri na ọmụmaatụ n'okpuru.

# netstat -an -p tcp

Ọ gwụla! Ị tinyela sava weebụ Nginx nke ọma, nchekwa data mmekọrịta MariaDB na asụsụ mmemme nke sava PHP na FreeBSD. Ị nwere ike ịmalite ịmepụta ibe weebụ dị ike iji nyere ndị ọbịa gị ozi ọdịnaya weebụ.