Hvordan installere Nginx, MariaDB og PHP (FEMP) Stack på FreeBSD


Denne opplæringen vil veilede deg om hvordan du installerer og konfigurerer FBEMP i den nyeste versjonen av FreeBSD 11.x. FBEMP er et akronym som beskriver følgende samling av programvare:

FreeBSD 11.1 Unix-lignende distribusjon, Nginx webserver, MariaDB relasjonsdatabaseadministrasjonssystem (en fellesskapsgaffel av MySQL) og PHP dynamisk programmeringsspråk som kjører på serversiden.

  1. Installasjon av FreeBSD 11.x
  2. 10 ting å gjøre etter FreeBSD-installasjon

Trinn 1: Installer Nginx Web Server på FreeBSD

1. Den første tjenesten vi installerer for vår FBEMP-stabel i FreeBSD er webserveren, representert av Nginx-programvare.

Nginx webserver har flere forhåndskompatible pakker tilgjengelig i FreeBSD 11.x PORTS. For å få en liste over Nginx-binærfiler fra Ports-repositories, utfør følgende kommandoer i serverterminalen din.

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

2. I denne spesielle konfigurasjonen installerer vi hovedpakkeversjonen av Nginx ved å gi kommandoen nedenfor. Pkg-pakkeadministrasjonen vil spørre deg om du vil fortsette med å installere nginx-pakken. Svar med ja (y på kommandolinjen) for å starte installasjonsprosessen.

# pkg install nginx

3. Etter at Nginx-nettserverpakken ble installert i systemet ditt, utfør følgende kommandoer for å aktivere demonen for hele systemet og starte tjenesten i systemet ditt.

# sysrc nginx_enable="yes"
# service nginx start

4. Deretter, bruk sockstat-kommandoen, verifiser Nginx-tjenestenettverkskontakter, hvis de er bindende for 80/TCP-porten, ved å gi kommandoen nedenfor. Utdataene fra sockstat-kommandoen vil bli ledet gjennom grep-verktøyet for å redusere de returnerte resultatene kun til nginx-streng.

# sockstat -4 | grep nginx

5. Åpne til slutt en nettleser på en stasjonær datamaskin i nettverket ditt og besøk Nginx standardwebside via HTTP-protokoll. Skriv FQDN til maskinen din eller domenenavnet ditt eller IP-adressen til serveren din i nettleserens URL arkivert for å be om Nginx-nettserverens standardwebside. Meldingen «Velkommen til nginx!» skal vises i nettleseren din, som illustrert i skjermbildet nedenfor.

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

6. Standard weboot-katalogen for Nginx-nettinnhold ligger i /usr/local/www/nginx/ absolutt systembane. På denne plasseringen bør du opprette, kopiere eller installere nettinnholdsfiler, for eksempel .html- eller .php-filer, for nettstedet ditt.

For å endre denne plasseringen, rediger nginx hovedkonfigurasjonsfil og endre rotdirektivet for å gjenspeile din nye webroot-bane.

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

Her, søk og oppdater følgende linje for å gjenspeile din nye webroot-bane:

root	/path/to/new/webroot;

Trinn 2: Installer PHP på FreeBSD

7. I motsetning til Apache HTTP-server, har ikke Nginx muligheten til å behandle PHP-kode. Til gjengjeld sender Nginx webserver PHP-forespørsler til en PHP-tolk, for eksempel php-fpm FastCGI daemon, som inspiserer og kjører koden. Den resulterende koden blir deretter returnert tilbake til Nginx, som setter sammen koden tilbake til det forespurte html-formatet og sender koden videre til besøkendes nettleser.

FreeBSD 11.x Ports repositories tilbyr flere binære versjoner for PHP programmeringsspråk, for eksempel PHP 5.6, PHP 7.0 og PHP 7.1 utgivelser. For å vise alle tilgjengelige forhåndskompilerte PHP-versjoner i FreeBSD 11.x, kjør kommandoene nedenfor.

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

8. Du kan velge å installere den versjonen av PHP du finner best egnet for nettapplikasjonen du kjører i systemet ditt. I denne veiledningen vil vi imidlertid installere den nyeste versjonen av PHP.

For å installere PHP 7.1-utgivelsen og noen viktige PHP-moduler som kreves for forskjellige nettapplikasjoner, kjør følgende kommando.

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

9. Etter at du har installert PHP-pakker i systemet ditt, åpner du PHP-FPM-konfigurasjonsfilen for Nginx og justerer bruker- og gruppeverdiene for å matche verdien på Nginx runtime-brukeren, som er www. Lag først en sikkerhetskopi av filen med kommandoen nedenfor.

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

Deretter åpner du filen og oppdaterer følgende linjer som presentert i eksemplet nedenfor.

user = www
group = www

10. Lag også en PHP-konfigurasjonsfil som brukes til produksjon ved å gi kommandoen nedenfor. På denne filen kan du gjøre tilpassede endringer som vil bli brukt på PHP-tolken under kjøring.

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

Endre for eksempel date.timezone-innstillingen for PHP-tolk for å oppdatere maskinens fysiske plassering som vist i eksemplet nedenfor. PHP-tidssoneliste finner du her: http://php.net/manual/en/timezones.php.

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

Legg til følgende tidssone (angi tidssone i henhold til ditt land).

date.timezone = Europe/London

Du kan også justere andre PHP-variabler, for eksempel maksimal filstørrelse på opplastet fil, som kan økes ved å endre verdiene nedenfor:

upload_max_filesize = 10M
post_max_size = 10M

11. Etter, du har gjort de egendefinerte innstillingene for PHP, aktiver og start PHP-FPM daemon for å bruke de nye konfigurasjonene ved å utstede kommandoene nedenfor.

# sysrc php_fpm_enable=yes
# service php-fpm start

12. Som standard binder PHP-FPM daemon i FreeBSD til en lokal nettverkssocket på port 9000/TCP. For å vise PHP-FPM-nettverkskontakter, utfør følgende kommando.

# sockstat -4 -6| grep php-fpm

13. For at Nginx-nettserveren skal sende PHP-skriptene til FastCGI-gatewayserveren, som lytter på 127.0.0.1:9000-kontakten, åpner du Nginx hovedkonfigurasjonsfil og legger til følgende kodeblokk som illustrert i eksemplet nedenfor.

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

FastCGI-kodeblokk for 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. For å se gjeldende PHP-informasjon for serveren din, lag en info.php-fil i Nginx weboppstartsbane ved å utstede følgende kommando.

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

15. Test deretter og start Nginx daemon på nytt for å bruke PHP FastCGI-innstillingene og besøk info.php-siden i en nettleser.

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

Erstatt IP-adressen eller domenenavnet i koblingene nedenfor. PHP-infosiden skal vise informasjon som illustrert i skjermbildet nedenfor.

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

Trinn 3: Installer MariaDB på FreeBSD

16. Den siste komponenten mangler fra FEMP-stakken i databasen. MariaDB/MySQL er en av de mest assosierte RDBMS-programvarene med åpen kildekode med Nginx-webserver som brukes til å distribuere dynamiske nettsteder.

Faktisk er MariaDB/MySQL en av de mest brukte relasjonsdatabasene i verden. Når du søker gjennom FreeBSD-porter, kan du finne flere utgivelser av MariaDB/MySQL.

I denne guiden installerer vi MariaDB-databasen, som er en fellesskapsgaffel av MySQL-databasen. For å søke etter tilgjengelige versjoner av MariaDB, utfør følgende kommandoer i terminal.

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

17. For å installere den nyeste versjonen av MariaDB databaseserver, kjør følgende kommando. Du bør også installere PHP relasjonsdatabasedrivermodulen som brukes av PHP-skript for å koble til MySQL.

# pkg install mariadb102-server php71-mysqli

18. Etter at databasen er installert, aktiver MySQL daemon og start databasetjenesten ved å kjøre følgende kommandoer.

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

19. Pass også på at du starter PHP-FPM-demonen på nytt for å laste MySQL-driverutvidelsen.

# 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. For å teste MariaDB-databasetilkoblingen fra konsollen, utfør kommandoen nedenfor.

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

22. For ytterligere å sikre MariaDB, som som standard lytter etter innkommende nettverkstilkoblinger på 0.0.0.0:3306/TCP-socket, utsted kommandoen nedenfor for å tvinge tjenesten til å binde seg til loopback-grensesnitt og fullstendig forby ekstern tilgang. Etterpå starter du MySQL-tjenesten på nytt for å bruke den nye konfigurasjonen.

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

Bekreft om localhost-bindingen ble brukt ved å kjøre netstat-kommandoen som vist i eksemplet nedenfor.

# netstat -an -p tcp

Det er alt! Du har installert Nginx webserver, MariaDB relasjonsdatabase og PHP server-side programmeringsspråk i FreeBSD. Du kan nå begynne å bygge dynamiske nettsider for å vise nettinnhold til de besøkende.