Kako instalirati Nginx, MariaDB i PHP (FEMP) stack na FreeBSD


Ovaj vodič će vas uputiti kako da instalirate i konfigurišete FBEMP u najnovijem izdanju FreeBSD 11.x. FBEMP je akronim koji opisuje sljedeću kolekciju softvera:

FreeBSD 11.1 Unix-slična distribucija, Nginx web server, sistem za upravljanje relacionim bazama podataka MariaDB (zajednička fork MySQL) i PHP dinamički programski jezik koji radi na strani servera.

Zahtjevi

  1. Instalacija FreeBSD 11.x
  2. 10 stvari koje treba uraditi nakon instalacije FreeBSD-a

Korak 1: Instalirajte Nginx Web Server na FreeBSD

1. Prva usluga koju ćemo instalirati za naš FBEMP stog u FreeBSD je web server, kojeg predstavlja Nginx > softver.

Nginx web server ima više unaprijed usklađenih paketa dostupnih u FreeBSD 11.x PORTovima. Da biste dobili listu Nginx binarnih datoteka iz Portova spremišta, izdajte sljedeće komande na vašem serverskom terminalu.

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

2. U ovoj konkretnoj konfiguraciji, instalirat ćemo glavnu verziju paketa Nginxa izdavanjem donje naredbe. Upravljanje paketom pkg će vas pitati da li želite da nastavite sa instalacijom nginx paketa. Odgovorite sa da (y u komandnoj liniji) kako biste započeli proces instalacije.

pkg install nginx

3. Nakon što je paket Nginx web servera instaliran u vaš sistem, izvršite sljedeće naredbe kako biste omogućili demona na cijelom sistemu i pokrenuli uslugu u vašem sistemu.

sysrc nginx_enable="yes"
service nginx start

4. Zatim, koristeći naredbu sockstat, provjerite mrežne utičnice Nginx servisa, da li su oni vezani na 80/TCP port, izdavanjem dolje komanda. Izlaz naredbe sockstat će biti proslijeđen kroz uslužni program grep kako bi se vraćeni rezultati sveli samo na nginx string.

sockstat -4 | grep nginx

5. Konačno, otvorite pretraživač na desktop računaru u vašoj mreži i posjetite Nginx zadanu web stranicu putem HTTP protokola. Upišite FQDN svoje mašine ili ime svoje domene ili IP adresu vašeg servera u URL pretraživaču koji je podnošen da biste zatražili zadanu web stranicu Nginx web servera. Poruka “Dobrodošli u nginx! ” bi trebala biti prikazana u vašem pretraživaču, kao što je ilustrovano na snimku ekrana ispod.

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

6. Zadani weboot direktorij za Nginx web sadržaj se nalazi na /usr/local/www/nginx/ apsolutnoj sistemskoj putanji. Na ovoj lokaciji trebate kreirati, kopirati ili instalirati datoteke web sadržaja, kao što su datoteke .html ili .php, za vašu web stranicu.

Da biste promijenili ovu lokaciju, uredite nginx glavnu konfiguracijsku datoteku i promijenite root direktivu da odražava vašu novu webroot putanju.

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

Ovdje pretražite i ažurirajte sljedeći red kako bi odražavao vašu novu webroot putanju:

root	/path/to/new/webroot;

Korak 2: Instalirajte PHP na FreeBSD

7. Za razliku od Apache HTTP servera, Nginx nema mogućnost izvorne obrade PHP koda. Zauzvrat, Nginx web server prosljeđuje PHP zahtjeve PHP interpreteru, kao što je php-fpm FastCGI demon, koji pregledava i izvršava kod. Dobijeni kod se zatim vraća nazad u Nginx, koji ponovo sastavlja kod u traženi html format i šalje kod dalje u web pretraživač posjetitelja.

FreeBSD 11.x Spremišta portova nude višestruke binarne verzije za PHP programski jezik, kao što su PHP 5.6, PHP 7.0 i PHP 7.1< izdanja. Da biste prikazali sve dostupne unapred kompajlirane verzije PHP-a u FreeBSD 11.x, pokrenite naredbe ispod.

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

8. Možete odabrati da instalirate bilo koju verziju PHP-a za koju smatrate da je najprikladnija za web aplikaciju koju pokrećete u svom sistemu. Međutim, u ovom vodiču ćemo instalirati najnoviju verziju PHP-a.

Da biste instalirali PHP 7.1 izdanje i neke PHP važne module potrebne za različite web aplikacije, pokrenite sljedeću naredbu.

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

9. Nakon što instalirate PHP pakete u svoj sistem, otvorite PHP-FPM konfiguracijsku datoteku za Nginx i prilagodite vrijednosti korisnika i grupe tako da odgovaraju vrijednosti u Nginx runtime-u korisnik, a to je www. Prvo napravite sigurnosnu kopiju datoteke pomoću donje naredbe.

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

Zatim otvorite datoteku i ažurirajte sljedeće redove kao što je prikazano u primjeru ispod.

user = www
group = www

10. Također, kreirajte PHP konfiguracijsku datoteku koja se koristi za proizvodnju izdavanjem donje naredbe. Na ovoj datoteci možete napraviti prilagođene promjene koje će biti primijenjene na PHP interpreter za vrijeme izvršavanja.

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

Na primjer, promijenite postavku date.timezone za PHP interpreter kako biste ažurirali fizičku lokaciju vašeg stroja kao što je prikazano u primjeru ispod. PHP spisak vremenskih zona možete pronaći ovdje: http://php.net/manual/en/timezones.php.

vi /usr/local/etc/php.ini

Dodajte sljedeću vremensku zonu (podesite vremensku zonu prema vašoj zemlji).

date.timezone = Europe/London

Također možete podesiti druge PHP varijable, kao što je maksimalna veličina datoteke učitane datoteke, koja se može povećati modifikacijom dolje navedenih vrijednosti:

upload_max_filesize = 10M
post_max_size = 10M

11. Nakon što ste napravili prilagođena podešavanja za PHP, omogućili i pokrenuli PHP-FPM demon kako biste primijenili nove konfiguracije izdavanjem donjih naredbi.

sysrc php_fpm_enable=yes
service php-fpm start

12. Podrazumevano, PHP-FPM demon u FreeBSD-u se vezuje za soket lokalne mreže na portu 9000/TCP. Za prikaz PHP-FPM mrežnih utičnica izvedite sljedeću naredbu.

sockstat -4 -6| grep php-fpm

13. Da bi Nginx web server proslijedio PHP skripte FastCGI gateway serveru, koji sluša na 127.0.0.1:9000 socketu, otvorite Nginx glavnu konfiguracijsku datoteku i dodajte sljedeći blok koda kao što je prikazano u primjeru ispod.

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

FastCGI blok koda za 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. Da biste vidjeli trenutne PHP informacije za vaš server, kreirajte datoteku info.php u Nginx weboot putanji izdavanjem sljedeće naredbe.

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

15. Zatim testirajte i ponovo pokrenite Nginx demon da biste primijenili postavke PHP FastCGI i posjetite stranicu info.php u pretraživaču.

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

Zamijenite IP adresu ili naziv domene na linkovima ispod. PHP stranica sa informacijama treba da prikazuje informacije kao što je ilustrovano na slici ispod.

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

Korak 3: Instalirajte MariaDB na FreeBSD

16. Posljednja komponenta koja nedostaje u vašem FEMP stogu u bazi podataka. MariaDB/MySQL je jedan od najpovezanijih RDBMS softvera otvorenog koda sa Nginx web serverom koji se koristi za postavljanje dinamičkih web stranica.

Zapravo, MariaDB/MySQL je jedna od najčešće korištenih relacijskih baza podataka na svijetu. Pretražujući FreeBSD portove, možete pronaći više izdanja MariaDB/MySQL.

U ovom vodiču ćemo instalirati MariaDB bazu podataka, koja je fork zajednice MySQL baze podataka. Za traženje dostupnih verzija MariaDB, izdajte sljedeće naredbe u terminalu.

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

17. Da biste instalirali najnoviju verziju MariaDB servera baze podataka, izvršite sljedeću naredbu. Takođe bi trebalo da instalirate PHP modul drajvera za relacione baze podataka koji koriste PHP skripte za povezivanje sa MySQL.

pkg install mariadb102-server php71-mysqli

18. Nakon što je baza podataka instalirana, omogućite MySQL demon i pokrenite uslugu baze podataka pokretanjem sljedećih naredbi.

sysrc mysql_enable="YES" 
service mysql-server start

19. Također, provjerite jeste li ponovo pokrenuli PHP-FPM demon da biste učitali MySQL ekstenziju drajvera.

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. Da testirate MariaDB vezu sa bazom podataka sa konzole, izvršite naredbu ispod.

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

22. Da biste dodatno osigurali MariaDB, koji prema zadanim postavkama osluškuje dolazne mrežne veze na 0.0.0.0:3306/TCP socketu, izdajte donju naredbu da prisilite uslugu da se povežete sa loopback interfejsom i potpuno zabranite daljinski pristup. Nakon toga, ponovo pokrenite MySQL servis da biste primijenili novu konfiguraciju.

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

Provjerite da li je povezivanje localhost uspješno primijenjeno pokretanjem naredbe netstat kao što je prikazano u primjeru ispod.

netstat -an -p tcp

To je sve! Uspješno ste instalirali Nginx web server, MariaDB relacionu bazu podataka i PHP programski jezik na strani servera u FreeBSD-u. Sada možete početi graditi dinamičke web stranice za posluživanje web sadržaja vašim posjetiteljima.