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.
- Installation af FreeBSD 11.x
- 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.