Bii o ṣe le Fi Nginx, MariaDB ati PHP (FEMP) sori Stack lori FreeBSD


Itọsọna yii yoo tọ ọ lori bi o ṣe le fi sori ẹrọ ati tunto FBEMP ni idasilẹ tuntun tuntun FreeBSD 11.x. FBEMP jẹ adape ti o ṣe apejuwe ikojọpọ ti sọfitiwia wọnyi:

FreeBSD 11.1 Pinpin irufẹ Unix, olupin ayelujara Nginx, eto iṣakoso ibi data ibatan ibatan MariaDB (orita agbegbe ti MySQL) ati ede siseto agbara PHP eyiti o nṣiṣẹ ni ẹgbẹ olupin.

  1. Fifi sori ẹrọ ti FreeBSD 11.x
  2. Awọn nkan 10 lati Ṣe Lẹhin Fifi sori ẹrọ FreeBSD

Igbesẹ 1: Fi Nginx Web Server sori FreeBSD

1. Iṣẹ akọkọ ti a yoo fi sori ẹrọ fun akopọ FBEMP wa ni FreeBSD ni olupin ayelujara, ti o jẹ aṣoju nipasẹ sọfitiwia Nginx.

Olupin wẹẹbu Nginx ni awọn idii ti a ṣajọ tẹlẹ diẹ sii wa ni FreeBSD 11.x PORTS. Lati le gba atokọ ti awọn alakomeji Nginx lati awọn ibi ipamọ Awọn ibudo, fun awọn ofin wọnyi ni ebute olupin rẹ.

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

2. Ninu iṣeto ni pato yii, a yoo fi sori ẹrọ ẹyà package akọkọ ti Nginx nipasẹ ipinfunni aṣẹ isalẹ. Isakoso package pkg yoo beere lọwọ rẹ boya o fẹ tẹsiwaju pẹlu fifi package nginx sii. Dahun pẹlu bẹẹni ( y ni laini aṣẹ) lati bẹrẹ ilana fifi sori ẹrọ.

# pkg install nginx

3. Lẹhin ti a ti fi package olupin wẹẹbu Nginx sori ẹrọ rẹ, ṣe awọn ofin wọnyi lati le jẹ ki eto daemon jakejado ki o bẹrẹ iṣẹ ninu eto rẹ.

# sysrc nginx_enable="yes"
# service nginx start

4. Itele, ni lilo aṣẹ sockstat, ṣayẹwo awọn sockets iṣẹ nẹtiwọki Nginx, ti wọn ba di abuda lori ibudo 80/TCP, nipa ipinfunni aṣẹ isalẹ. Ijade ti aṣẹ sockstat yoo jẹ pipii nipasẹ iwulo ọra lati dinku awọn abajade ti o pada nikan si okun nginx.

# sockstat -4 | grep nginx

5. Lakotan, ṣii ẹrọ aṣawakiri lori kọnputa tabili kan ninu nẹtiwọọki rẹ ki o ṣabẹwo si oju-iwe wẹẹbu aiyipada Nginx nipasẹ ilana HTTP. Kọ FQDN ti ẹrọ rẹ tabi orukọ ibugbe rẹ tabi adiresi IP ti olupin rẹ ni URL ti ẹrọ aṣawakiri ti a fiweranṣẹ lati beere oju-iwe ayelujara aiyipada olupin Nginx. Ifiranṣẹ naa\"Kaabo si nginx!" yẹ ki o han ninu ẹrọ aṣawakiri rẹ, bi a ṣe ṣalaye ninu sikirinifoto ni isalẹ.

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

6. Ilana itọsọna aiyipada fun akoonu wẹẹbu Nginx ti o wa ni/usr/agbegbe/www/nginx/ọna ọna pipe. Ni ipo yii o yẹ ki o ṣẹda, daakọ tabi fi awọn faili akoonu wẹẹbu sii, bii .html tabi .php awọn faili, fun oju opo wẹẹbu rẹ.

Lati yi ipo yii pada, satunkọ faili iṣeto akọkọ ti nginx ki o yi itọsọna root pada lati tan imọlẹ ọna oju-iwe wẹẹbu tuntun rẹ.

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

Nibi, wa ki o ṣe imudojuiwọn laini atẹle lati ṣe afihan ọna tuntun webroot rẹ:

root	/path/to/new/webroot;

Igbesẹ 2: Fi PHP sori FreeBSD

7. Ko dabi olupin HTTP Apache, Nginx ko ni agbara lati ṣe ilana abinibi ilana koodu PHP. Ni ipadabọ, olupin ayelujara Nginx kọja awọn ibeere PHP si onitumọ PHP kan, gẹgẹ bi php-fpm FastCGI daemon, eyiti o ṣe ayẹwo ati ṣiṣe koodu naa. Lẹhinna a ti da koodu ti o pada pada si Nginx, eyiti o tun ṣe apejọ koodu pada si ọna kika html ti o beere ati firanṣẹ koodu siwaju si aṣawakiri wẹẹbu alejo.

Awọn ibi ipamọ FreeBSD 11.x Awọn ibudo nfunni awọn ẹya alakomeji lọpọlọpọ fun ede siseto PHP, gẹgẹ bi awọn idasilẹ PHP 5.6, PHP 7.0 ati PHP 7.1. Lati ṣe afihan gbogbo awọn ẹya ti a ti ṣajọ tẹlẹ ti PHP ni FreeBSD 11.x, ṣiṣe awọn ofin isalẹ.

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

8. O le yan lati fi sori ẹrọ eyikeyi ẹya ti PHP ti o rii ti o baamu julọ fun ohun elo ayelujara ti o ṣiṣẹ ninu eto rẹ. Sibẹsibẹ, ninu itọsọna yii a yoo fi sori ẹrọ ẹya tuntun PHP.

Lati fi ifilọlẹ PHP 7.1 sii ati diẹ ninu awọn modulu pataki PHP ti o nilo fun awọn ohun elo wẹẹbu oriṣiriṣi, ṣiṣe aṣẹ atẹle.

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

9. Lẹhin ti o ti fi awọn idii PHP sori ẹrọ rẹ, ṣii faili iṣeto PHP-FPM fun Nginx ki o ṣatunṣe olumulo ati awọn iye ẹgbẹ lati baamu iye lori olumulo asiko iṣẹ Nginx, eyiti o jẹ www. Ni akọkọ, ṣe afẹyinti faili pẹlu aṣẹ isalẹ.

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

Lẹhinna, ṣii faili ki o mu awọn ila wọnyi wa bi a ti gbekalẹ ninu apẹẹrẹ isalẹ.

user = www
group = www

10. Pẹlupẹlu, ṣẹda faili iṣeto PHP ti a lo fun iṣelọpọ nipasẹ ipinfunni aṣẹ isalẹ. Lori faili yii o le ṣe awọn ayipada aṣa ti yoo loo si onitumọ PHP ni asiko asiko.

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

Fun apeere, yi eto aago.zonezone fun onitumọ PHP lati ṣe imudojuiwọn ipo ti ẹrọ rẹ bi o ti han ninu apẹẹrẹ isalẹ A le rii atokọ agbegbe akoko PHP nibi: http://php.net/manual/en/timezones.php.

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

Ṣafikun agbegbe aago atẹle (ṣeto agbegbe aago bi fun orilẹ-ede rẹ).

date.timezone = Europe/London

O tun le ṣatunṣe awọn oniyipada PHP miiran, gẹgẹbi iwọn faili ti o pọ julọ ti faili ti o gbe, eyiti o le pọ si nipa ṣiṣatunṣe awọn iye isalẹ:

upload_max_filesize = 10M
post_max_size = 10M

11. Lẹhinna, o ti ṣe awọn eto aṣa fun PHP, mu ṣiṣẹ ki o bẹrẹ PHP-FPM daemon lati le lo awọn atunto tuntun nipa fifun awọn ofin isalẹ.

# sysrc php_fpm_enable=yes
# service php-fpm start

12. Nipa aiyipada, daemon PHP-FPM ni FreeBSD sopọ lori iho nẹtiwọọki agbegbe kan lori ibudo 9000/TCP. Lati ṣe afihan awọn iho nẹtiwọọki PHP-FPM ṣe pipaṣẹ wọnyi.

# sockstat -4 -6| grep php-fpm

13. Ni ibere fun olupin ayelujara Nginx lati kọja awọn iwe afọwọkọ PHP si olupin ẹnu-ọna FastCGI, eyiti o ngbọ lori 127.0.0.1:9000 iho, ṣii faili iṣeto akọkọ Nginx ki o ṣafikun koodu atẹle ti koodu bi a ti ṣe apejuwe ninu apẹẹrẹ isalẹ.

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

Àkọsílẹ koodu FastCGI fun 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. Lati le wo alaye PHP lọwọlọwọ fun olupin rẹ, ṣẹda faili info.php ni ọna weboot Nginx nipa gbigbe aṣẹ wọnyi.

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

15. Lẹhinna, ṣe idanwo ati tun bẹrẹ dagin ti Nginx lati lo awọn eto PHP FastCGI ki o ṣabẹwo si oju-iwe info.php ninu ẹrọ lilọ kiri ayelujara kan.

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

Rọpo adirẹsi IP tabi orukọ ìkápá ninu awọn ọna asopọ isalẹ ni ibamu. Oju-iwe alaye PHP yẹ ki o ṣafihan alaye bi a ṣe ṣalaye ninu sikirinifoto ni isalẹ.

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

Igbesẹ 3: Fi MariaDB sori FreeBSD

16. Apakan ti o kẹhin ti o padanu lati akopọ FEMP rẹ ninu ibi ipamọ data. MariaDB/MySQL jẹ ọkan ninu orisun ṣiṣi orisun RDBMS ti o ni nkan ṣe pẹlu sọfitiwia wẹẹbu Nginx ti a lo fun ṣiṣiṣẹ awọn aaye ayelujara ti o ni agbara.

Ni otitọ, MariaDB/MySQL jẹ ọkan ninu awọn apoti isura data ibatan ti a lo julọ ni agbaye. Wiwa nipasẹ Awọn Ibudo FreeBSD, o le wa awọn idasilẹ pupọ ti MariaDB/MySQL.

Ninu itọsọna yii a yoo fi sori ẹrọ ibi ipamọ data MariaDB, eyiti o jẹ orita agbegbe ti ibi ipamọ data MySQL. Lati wa awọn ẹya ti o wa ti MariaDB, fun awọn ofin wọnyi ni ebute.

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

17. Lati fi ẹya tuntun ti olupin data data MariaDB ṣe pipaṣẹ wọnyi. O yẹ ki o tun fi sori ẹrọ module iwakọ ibatan ibatan PHP ti a lo nipasẹ awọn iwe afọwọkọ PHP fun sisopọ si MySQL.

# pkg install mariadb102-server php71-mysqli

18. Lẹhin ti a ti fi ibi ipamọ data sii, mu ki daemon MySQL ṣiṣẹ ki o bẹrẹ iṣẹ ibi ipamọ data nipa ṣiṣe awọn ofin wọnyi.

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

19. Pẹlupẹlu, rii daju pe o tun bẹrẹ daemon PHP-FPM lati le gbe itẹsiwaju iwakọ MySQL sii.

# 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. Lati ṣe idanwo asopọ asopọ data MariaDB lati inu itọnisọna, ṣiṣẹ pipaṣẹ isalẹ.

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

22. Lati le ni aabo siwaju si MariaDB, eyiti nipasẹ aiyipada lati tẹtisi fun awọn isopọ nẹtiwọọki ti nwọle lori iho 0.0.0.0.3306/TCP, gbekalẹ aṣẹ isalẹ lati fi ipa mu iṣẹ naa lati di lori wiwo loopback ati yiyọ wiwọle latọna jijin patapata. Lẹhinna, tun bẹrẹ iṣẹ MySQL lati lo iṣeto tuntun.

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

Daju pe ti a ba lo abuda agbegbe ni aṣeyọri nipasẹ ṣiṣe pipaṣẹ netstat bi o ṣe han ninu apẹẹrẹ isalẹ.

# netstat -an -p tcp

Gbogbo ẹ niyẹn! O ti ni ifijišẹ fi sori ẹrọ olupin Nginx wẹẹbu, ibi ipamọ data ibatan MariaDB ati ede siseto ẹgbẹ olupin PHP ni FreeBSD. O le bẹrẹ bayi kọ awọn oju-iwe wẹẹbu ti o ni agbara lati sin akoonu wẹẹbu si awọn alejo rẹ.