Sådan installeres Nginx, MariaDB og PHP (FEMP) Stack på FreeBSD


Denne vejledning vil guide dig om, hvordan du installerer og konfigurerer FBEMP i FreeBSD 11.x seneste udgivelse. FBEMP er et akronym, der beskriver følgende samling af software:

FreeBSD 11.1 Unix-lignende distribution, Nginx webserver, MariaDB relationsdatabasesystem (en community fork af MySQL) og PHP dynamisk programmeringssprog, der kører på serversiden.

  1. Installation af FreeBSD 11.x
  2. 10 ting at gøre efter FreeBSD-installation

Trin 1: Installer Nginx Web Server på FreeBSD

1. Den første service, vi installerer til vores FBEMP-stack i FreeBSD, er webserveren, der er repræsenteret af Nginx-software.

Nginx webserver har flere forud opfyldte pakker tilgængelige i FreeBSD 11.x PORTS. For at få en liste over Nginx-binære filer fra Ports-arkiver skal du udstede følgende kommandoer i din serverterminal.

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

2. I denne særlige konfiguration installerer vi hovedpakkeversionen af Nginx ved at udstede nedenstående kommando. Pkg-pakkehåndteringen spørger dig, om du vil fortsætte med installationen af nginx-pakken. Svar med ja ( y på kommandolinjen) for at starte installationsprocessen.

# pkg install nginx

3. Når Nginx-webserverpakken blev installeret i dit system, skal du udføre følgende kommandoer for at aktivere dæmonen i hele systemet og starte tjenesten i dit system.

# sysrc nginx_enable="yes"
# service nginx start

4. Brug derefter sockstat-kommandoen til at kontrollere Nginx-servicenetværksstik, hvis de er bindende for 80/TCP-porten, ved at udstede nedenstående kommando. Outputtet fra sockstat-kommandoen sendes gennem grep-værktøjet for kun at reducere de returnerede resultater til nginx-streng.

# sockstat -4 | grep nginx

5. Endelig skal du åbne en browser på en stationær computer i dit netværk og besøge Nginx standardwebside via HTTP-protokol. Skriv FQDN på din maskine eller dit domænenavn eller IP-adressen på din server i browserens URL, der er arkiveret for at anmode om Nginx-webserverens standardwebside. Meddelelsen "Velkommen til nginx!" skal vises i din browser som illustreret i nedenstående skærmbillede.

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

6. Standardweboot-kataloget for Nginx-webindhold er placeret i/usr/local/www/nginx/absolut systemsti. På denne placering skal du oprette, kopiere eller installere webindholdsfiler, såsom .html eller .php filer, til dit websted.

For at ændre denne placering skal du redigere nginx-hovedkonfigurationsfil og ændre roddirektivet for at afspejle din nye webroot-sti.

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

Her skal du søge og opdatere følgende linje for at afspejle din nye webroot-sti:

root	/path/to/new/webroot;

Trin 2: Installer PHP på FreeBSD

7. I modsætning til Apache HTTP-server har Nginx ikke mulighed for naturligt at behandle PHP-kode. Til gengæld videregiver Nginx-webserveren PHP-anmodninger til en PHP-tolk, såsom php-fpm FastCGI-dæmon, som inspicerer og udfører koden. Den resulterede kode returneres derefter tilbage til Nginx, som samler koden tilbage til det ønskede html-format og sender koden videre til den besøgende webbrowser.

FreeBSD 11.x Ports repositories tilbyder flere binære versioner til PHP programmeringssprog, såsom PHP 5.6, PHP 7.0 og PHP 7.1 udgivelser. For at få vist alle tilgængelige præ-kompilerede PHP-versioner i FreeBSD 11.x skal du køre nedenstående kommandoer.

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

8. Du kan vælge at installere den version af PHP, du finder bedst egnet til den webapplikation, du kører i dit system. I denne vejledning installerer vi dog den nyeste version af PHP.

For at installere PHP 7.1 release og nogle vigtige PHP-moduler, der kræves til forskellige webapplikationer, skal du køre følgende kommando.

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

9. Når du har installeret PHP-pakker i dit system, skal du åbne PHP-FPM-konfigurationsfilen for Nginx og justere bruger- og gruppeværdierne, så de svarer til værdien på Nginx-runtime-brugeren, som er www. Lav først en sikkerhedskopi af filen med nedenstående kommando.

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

Åbn derefter filen og opdater følgende linjer som vist i nedenstående prøve.

user = www
group = www

10. Opret også en PHP-konfigurationsfil, der bruges til produktion, ved at udstede kommandoen nedenfor. På denne fil kan du foretage brugerdefinerede ændringer, der vil blive anvendt på PHP-tolk ved kørsel.

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

For eksempel skal du ændre indstillingen for dato.tidszone for PHP-tolk for at opdatere din maskins fysiske placering som vist i nedenstående eksempel. PHP-tidszoneliste kan findes her: http://php.net/manual/en/timezones.php.

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

Tilføj følgende tidszone (indstil tidszone efter dit land).

date.timezone = Europe/London

Du kan også justere andre PHP-variabler, såsom den maksimale filstørrelse for den uploadede fil, som kan øges ved at ændre nedenstående værdier:

upload_max_filesize = 10M
post_max_size = 10M

11. Derefter har du foretaget de brugerdefinerede indstillinger for PHP, aktiver og start PHP-FPM-dæmonen for at anvende de nye konfigurationer ved at udstede nedenstående kommandoer.

# sysrc php_fpm_enable=yes
# service php-fpm start

12. Som standard binder PHP-FPM-dæmon i FreeBSD på et lokalt netværksstik på port 9000/TCP. For at få vist PHP-FPM-netværksstik udføres følgende kommando.

# sockstat -4 -6| grep php-fpm

13. For at Nginx-webserveren skal overføre PHP-scripts til FastCGI gateway-serveren, som lytter til 127.0.0.1:9000 -stikket, skal du åbne Nginx-hovedkonfigurationsfil og tilføje følgende kodeblok som vist i nedenstående prøve.

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

FastCGI-kodeblok til 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 at se de aktuelle PHP-oplysninger for din server skal du oprette en info.php -fil i Nginx weboot-stien ved at udstede følgende kommando.

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

15. Test og genstart Nginx-dæmonen for at anvende PHP FastCGI-indstillingerne og besøg siden info.php i en browser.

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

Udskift IP-adressen eller domænenavnet i nedenstående links i overensstemmelse hermed. PHP-infosiden skal vise oplysninger som illustreret i nedenstående skærmbillede.

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

Trin 3: Installer MariaDB på FreeBSD

16. Den sidste komponent mangler i din FEMP-stak i databasen. MariaDB/MySQL er en af de mest tilknyttede open source RDBMS-software med Nginx-webserver, der bruges til at implementere dynamiske websteder.

Faktisk er MariaDB/MySQL en af de mest anvendte relationsdatabaser i verden. Ved at søge gennem FreeBSD-porte kan du finde flere udgivelser af MariaDB/MySQL.

I denne vejledning installerer vi MariaDB-databasen, som er en community fork af MySQL-database. For at søge efter tilgængelige versioner af MariaDB skal du udstede følgende kommandoer i terminalen.

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

17. For at installere den nyeste version af MariaDB-databaseserver skal du udføre følgende kommando. Du skal også installere PHP-relationsdatabasedrivermodulet, der bruges af PHP-scripts til at oprette forbindelse til MySQL.

# pkg install mariadb102-server php71-mysqli

18. Når databasen er installeret, skal du aktivere MySQL-dæmonen og starte databasetjenesten ved at køre følgende kommandoer.

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

19. Sørg også for at genstarte PHP-FPM-dæmonen for at indlæse MySQL-driverudvidelsen.

# 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. Udfør nedenstående kommando for at teste MariaDB-databaseforbindelse fra konsol.

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

22. For yderligere at sikre MariaDB, som som standard lytter til indgående netværksforbindelser på 0.0.0.0:3306/TCP-stikket, skal du udstede kommandoen nedenfor for at tvinge tjenesten til at binde på loopback-grænsefladen og helt afvise fjernadgang. Genstart derefter MySQL-tjenesten for at anvende den nye konfiguration.

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

Kontroller, om localhost-bindingen blev anvendt med succes ved at køre netstat-kommandoen som vist i nedenstående eksempel.

# netstat -an -p tcp

Det er alt! Du har installeret Nginx-webserver, MariaDB-relationsdatabase og PHP-programmeringssprog på serversiden i FreeBSD. Du kan nu begynde at opbygge dynamiske websider til at tjene webindhold til dine besøgende.