Wéi installéiere ech Nginx, MariaDB a PHP (FEMP) Stack op FreeBSD


Dësen Tutorial wäert Iech guidéieren wéi Dir FBEMP an FreeBSD 11.x lescht Verëffentlechung installéiere an konfiguréieren. FBEMP ass en Akronym deen déi folgend Sammlung vu Software beschreift:

FreeBSD 11.1 Unix-ähnlech Verdeelung, Nginx Webserver, MariaDB relational Datebank Management System (eng Gemeinschaftsgabel vu MySQL) a PHP dynamesch Programméierungssprooch déi op Serversäit leeft.

  1. Installatioun vu FreeBSD 11.x
  2. 10 Saachen no der FreeBSD Installatioun ze maachen

Schrëtt 1: Installéiert Nginx Web Server op FreeBSD

1. Den éischte Service dee mir fir eise FBEMP-Stack an FreeBSD installéieren ass de Webserver, representéiert duerch Nginx Software.

Nginx Webserver huet méi pre-kompatibel Packagen verfügbar an FreeBSD 11.x PORTS. Fir eng Lëscht vun Nginx Binären aus Ports Repositories ze kréien, gitt déi folgend Kommandoen an Ärem Serverterminal aus.

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

2. An dëser spezieller Konfiguratioun installéiere mir d'Haaptpaketversioun vun Nginx andeems Dir de Kommando ënnen ausgitt. D'pkg Package Management wäert Iech froen ob Dir weiderfuere wëllt mat der Installatioun vum nginx Package. Äntwert mat Jo (y an der Kommandozeil) fir den Installatiounsprozess unzefänken.

# pkg install nginx

3. Nodeems de Nginx Webserver Package an Ärem System installéiert ass, fuert déi folgend Kommandoen aus fir den Daemon systemwäit z'aktivéieren an de Service an Ärem System unzefänken.

# sysrc nginx_enable="yes"
# service nginx start

4. Nächst, benotzt de sockstat Kommando, iwwerpréift Nginx Service Netzwierk Sockets, wa se op 80/TCP Hafen verbindlech sinn, andeems Dir de Kommando hei drënner ausgëtt. D'Output vum Sockstat Kommando gëtt duerch d'grep Utility gepäift fir déi zréckginn Resultater nëmmen op nginx String ze reduzéieren.

# sockstat -4 | grep nginx

5. Endlech, öffnen e Browser op engem Desktop Computer an Ärem Netz a besicht Nginx Standard Websäit iwwer HTTP Protokoll. Schreift de FQDN vun Ärer Maschinn oder Ärem Domain Numm oder d'IP Adress vun Ärem Server an der URL vum Browser, dee fir den Nginx Webserver Standard Websäit ufroen. De Message Wëllkomm op nginx! soll an Ärem Browser ugewisen ginn, wéi am Screenshot hei ënnen illustréiert.

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

6. De Standard weboot Verzeechnes fir Nginx Webinhalt am /usr/local/www/nginx/ absolute Systemwee. Op dëser Plaz sollt Dir Webinhaltsdateien erstellen, kopéieren oder installéieren, wéi .html oder .php Dateien, fir Är Websäit.

Fir dës Plaz z'änneren, ännert d'nginx Haaptkonfiguratiounsdatei an ännert d'Root Direktiv fir Ären neie Webroot Wee ze reflektéieren.

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

Hei, sicht an update déi folgend Linn fir Ären neie Webroot Wee ze reflektéieren:

root	/path/to/new/webroot;

Schrëtt 2: Installéiere PHP op FreeBSD

7. Am Géigesaz zum Apache HTTP-Server huet Nginx net d'Fäegkeet fir nativ PHP-Code ze veraarbechten. Am Géigenzuch passt den Nginx Webserver PHP-Ufroen un e PHP-Interpreter, sou wéi php-fpm FastCGI Daemon, deen de Code kontrolléiert an ausféiert. De resultéierte Code gëtt dann zréck op Nginx, deen de Code erëm an dat ugefrote HTML-Format zesummesetzt an de Code weider an de Besucher Webbrowser schéckt.

FreeBSD 11.x Ports Repositories bitt verschidde binär Versioune fir PHP Programméiersprooch, wéi PHP 5.6, PHP 7.0 a PHP 7.1 Verëffentlechungen. Fir all verfügbare pre-kompiléiert PHP Versiounen am FreeBSD 11.x ze weisen, fuert déi folgend Kommandoen.

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

8. Dir kënnt wielen fir eng Versioun vu PHP z'installéieren déi Dir am Beschten passt fir d'Webapplikatioun déi Dir an Ärem System leeft. Wéi och ëmmer, an dësem Guide installéiere mir déi lescht PHP Versioun.

Fir PHP 7.1 Verëffentlechung an e puer PHP wichteg Moduler ze installéieren, déi fir verschidde Webapplikatiounen erfuerderlech sinn, fuert de folgende Kommando.

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

9. Nodeems Dir PHP-Paketen an Ärem System installéiert hutt, öffnen d'PHP-FPM Konfiguratiounsdatei fir Nginx a passen d'Benotzer- a Gruppewäerter un fir de Wäert op den Nginx Runtime Benotzer ze passen, dat ass www. Als éischt, maacht e Backup vun der Datei mam Kommando ënnen.

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

Dann, öffnen d'Datei an aktualiséieren déi folgend Zeilen wéi an der ënnen Prouf presentéiert.

user = www
group = www

10. Erstellt och eng PHP-Konfiguratiounsdatei, déi fir d'Produktioun benotzt gëtt, andeems Dir de Kommando hei ënnen ausgitt. Op dëser Datei kënnt Dir personaliséiert Ännerungen maachen, déi op den PHP Dolmetscher bei der Runtime applizéiert ginn.

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

Zum Beispill, änneren date.timezone Astellung fir PHP Dolmetscher fir Är Maschinn kierperlech Location ze aktualiséieren wéi am Beispill hei ënnen. PHP Zäitzone Lëscht kann hei fonnt ginn: http://php.net/manual/en/timezones.php.

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

Füügt folgend Zäitzone derbäi (set Zäitzon no Ärem Land).

date.timezone = Europe/London

Dir kënnt och aner PHP Variablen upassen, sou wéi maximal Dateigréisst vun der eropgelueden Datei, déi erhéicht ka ginn andeems Dir déi folgend Wäerter ännert:

upload_max_filesize = 10M
post_max_size = 10M

11. Duerno hutt Dir déi personaliséiert Astellunge fir PHP gemaach, aktivéiert a start PHP-FPM Daemon fir déi nei Konfiguratiounen z'applizéieren andeems Dir déi folgend Kommandoen ausginn.

# sysrc php_fpm_enable=yes
# service php-fpm start

12. Par défaut bindt PHP-FPM Daemon an FreeBSD op engem lokalen Netzwierk Socket op Hafen 9000/TCP. Fir PHP-FPM Netzwierk Sockets ze weisen, fuert de folgende Kommando aus.

# sockstat -4 -6| grep php-fpm

13. Fir den Nginx Webserver d'PHP Scripten op de FastCGI Gateway Server ze passéieren, deen op 127.0.0.1:9000 Socket lauschtert, öffnen d'Nginx Haaptkonfiguratiounsdatei a füügt de folgende Block vum Code wéi illustréiert. an der ënnen Prouf.

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

FastCGI Code Block fir 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. Fir déi aktuell PHP-Informatioun fir Äre Server ze gesinn, erstellt eng info.php Datei am Nginx weboot Wee andeems Dir de folgende Kommando ausgitt.

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

15. Dann, testt a restart den Nginx Daemon fir d'PHP FastCGI Astellungen anzesetzen an d'info.php Säit an engem Browser ze besichen.

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

Ersetzt d'IP Adress oder den Domain Numm an de Linken hei ënnen entspriechend. PHP Info Säit soll Informatioun weisen wéi am Screenshot hei ënnen illustréiert.

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

Schrëtt 3: Installéiert MariaDB op FreeBSD

16. Déi lescht Komponent vermësst vun Ärem FEMP Stack an der Datebank. MariaDB/MySQL ass eng vun de meescht assoziéierten Open Source RDBMS Software mat Nginx Webserver benotzt fir dynamesch Websäiten z'installéieren.

Eigentlech ass MariaDB/MySQL eng vun de meescht benotzte relational Datenbanken op der Welt. Sicht duerch FreeBSD Ports, kënnt Dir verschidde Verëffentlechunge vu MariaDB/MySQL fannen.

An dësem Guide installéiere mir d'MariaDB Datebank, déi eng Gemeinschaftsgabel vun der MySQL Datebank ass. Fir no verfügbare Versioune vu MariaDB ze sichen, gitt déi folgend Kommandoen am Terminal.

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

17. Fir déi lescht Versioun vum MariaDB Datebankserver z'installéieren, fuert de folgende Kommando aus. Dir sollt och de PHP relational Datebank Driver Modul installéieren, dee vu PHP Scripte benotzt gëtt fir mat MySQL ze verbannen.

# pkg install mariadb102-server php71-mysqli

18. Nodeems d'Datebank installéiert ass, aktivéiert MySQL Daemon an start den Datebankservice andeems Dir déi folgend Kommandoen ausféiert.

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

19. Vergewëssert Iech och datt Dir PHP-FPM Daemon nei starten fir MySQL Treiberverlängerung ze lueden.

# 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. Fir d'MariaDB-Datebankverbindung vun der Konsol ze testen, fuert de Kommando ënnen.

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

22. Fir d'MariaDB weider ze sécheren, déi als Standard fir opkommend Netzwierkverbindungen op 0.0.0.0: 3306/TCP Socket lauschtert, gitt de Kommando ënnen fir de Service ze zwéngen fir op Loopback-Interface ze binden an de Fernzougang komplett z'erlaben. Duerno starten de MySQL Service nei fir déi nei Konfiguratioun z'applizéieren.

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

Vergewëssert Iech ob d'localhost Bindung erfollegräich applizéiert gouf andeems Dir netstat Kommando leeft wéi am Beispill hei ënnen.

# netstat -an -p tcp

Dat ass alles! Dir hutt erfollegräich Nginx Webserver, MariaDB relational Datebank a PHP Server-Säit Programméierungssprooch am FreeBSD installéiert. Dir kënnt elo ufänken dynamesch Websäiten ze bauen fir Webinhalt fir Är Besucher ze déngen.