Gentoo is een van de snelste Linux distributies vanwege zijn opbouw van bronnen oriëntatie en biedt door zijn softwarebeheerprogramma – Portage – bepaalde tools die nodig zijn om een compleet webontwikkelaarsplatform te bouwen dat zeer snel werkt en ook een hoge mate van aanpassing heeft.

Dit onderwerp leidt je stap voor stap door het installatieproces voor het bouwen van een compleet webomgevingsplatform met LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin), en met behulp van USE-vlaggen die worden geleverd door Portage Package Management, dat een set pakketfunctionaliteit biedt in het compilatieproces – modules of instellingen die nodig zijn voor een webplatform, zullen de serverconfiguraties aanzienlijk aanpassen.
Vereisten
- Gentoo-installatie met een Hardened Profiel voor een server die aan het internet is blootgesteld – Gentoo Installatiehandleiding.
- Netwerk geconfigureerd met een statisch IP-adres.
Stap 1: Installeer Nginx Web Server
1. Voordat u doorgaat met de installatie van Nginx, zorg ervoor dat uw NIC is geconfigureerd met een statisch IP-adres en zorg ervoor dat Portage-bronnen en uw systeem up-to-date zijn.
$ sudo su - # emerge --sync # emerge --update --deep --with-bdeps=y @world

2. Na voltooiing van het updateproces, ga verder met de installatie van Nginx door de gewenste instellingen en modules te kiezen door Nginx USE-vlaggen naar het make.conf-bestand van Portage te echoën. Lijst eerst de standaard installatiemodules van Nginx op door het volgende commando uit te voeren.
# emerge -pv nginx
Voor gedetailleerde module-informatie (USE-vlaggen voor pakketten) gebruik de equery-opdracht.
# equery uses nginx

Installeer vervolgens Nginx met de volgende opdracht.
# emerge --ask nginx

Als je extra modules nodig hebt (WebDAV, fancyindex, GeoIP, etc) naast de standaardmodules waar Nginx mee zal compileren, voeg ze allemaal op één regel toe in het Portage make.conf-bestand met de NGINX_MODULES_HTTP-richtlijn, compileer Nginx vervolgens opnieuw met nieuwe modules.
# echo 'NGINX_MODULES_HTTP="dav auth_pam fancyindex geoip fastcgi uwsgi gzip rewrite"' >> /etc/portage/make.conf # emerge --ask nginx

3. Nadat Portage klaar is met het opkomende Nginx, start de http-daemon en verifieer dit door je browser te richten op http://localhost.

Stap 2: Installeer PHP
4. Om de PHP-dynamische webprogrammeertaal te gebruiken met de Nginx-server, installeer PHP-FastCGI Process Manager (FPM) door fpm en andere belangrijke PHP-extensies toe te voegen aan de Portage USE-vlaggen en zorg ervoor dat je de Apache-extensie verwijdert.
# emerge -pv php

# equery uses php

# echo " dev-lang/php fpm cgi curl gd imap mysql mysqli pdo zip json xcache apc zlib zip truetype -apache2 " >> /etc/portage/package.use # emerge --ask php
5. Voordat PHP-FPM wordt gestart, moeten enkele wijzigingen worden toegepast op het serviceconfiguratiebestand. Open het php-fpm-configuratiebestand en breng de volgende wijzigingen aan.
# nano /etc/php/fpm-php5.5/php-fpm.conf
Zoek en haal de volgende richtlijnen uit commentaar zodat ze er zo uitzien.
error_log = /var/log/php-fpm.log listen = 127.0.0.1:9000 ## Here you can use any HTTP socket (IP-PORT combination ) you want ## pm.start_servers = 20
6. Nadat het PHP-FPM-configuratiebestand is bewerkt, wijzig je de rechten van het PHP-FPM-logbestand en start je de service.
# chmod 755 /var/log/php-fpm.log # /etc/init.d/php-fpm start
Zelfs als de PHP-FPM-service is gestart, kan Nginx niet communiceren met de PHP-gateway, dus moeten enkele wijzigingen worden aangebracht in de Nginx-configuratiebestanden.
Stap 3: Nginx-configuraties bewerken
7. Het standaard sjabloon configuratiebestand van Nginx biedt alleen een basis-HTTP-socket voor localhost. Om dit gedrag te wijzigen en Virtual Hosts in te schakelen, opent u het bestand nginx.conf dat zich bevindt op het pad /etc/nginx/ en maakt u de volgende configuraties.
# nano /etc/nginx/nginx.conf
Zoek het eerste server blok dat overeenkomt met localhost en luistert op het IP-adres 127.0.0.1 en commentarieer al zijn instructies uit zodat het eruitziet zoals in de onderstaande schermafbeelding.

Sluit het bestand nog niet af en ga naar de zeer onderkant en voeg de volgende instructie toe voor de laatste sluitende accolade “ } “.
Include /etc/nginx/sites-enabled/*.conf;

8. Maak vervolgens de sites-enabled en sites-available (voor ongebruikte virtuele hosts) Nginx-mappen en configuratiebestanden aan voor localhost op HTTP en HTTPS-protocollen.
# mkdir /etc/nginx/sites-available # mkdir /etc/nginx/sites-enabled
Maak de volgende bestandsconfiguratie voor localhost aan.
# nano /etc/nginx/sites-available/localhost.conf
Voeg de volgende bestandsinhoud toe.
server { listen 80; server_name localhost; access_log /var/log/nginx/localhost_access_log main; error_log /var/log/nginx/localhost_error_log info; root /var/www/localhost/htdocs; location / { index index.html index.htm index.php; autoindex on; autoindex_exact_size off; autoindex_localtime on; } location ~ \.php$ { # Test for non-existent scripts or throw a 404 error # Without this line, nginx will blindly send any request ending in .php to php-fpm try_files $uri =404; include /etc/nginx/fastcgi.conf; fastcgi_pass 127.0.0.1:9000; ## Make sure the socket corresponds with PHP-FPM conf file } }

Voor localhost met SSL maak het volgende configuratiebestand aan.
# nano /etc/nginx/sites-available/localhost-ssl.conf
Voeg de volgende bestandsinhoud toe.
server { listen 443 ssl; server_name localhost; ssl on; ssl_certificate /etc/ssl/nginx/nginx.pem; ssl_certificate_key /etc/ssl/nginx/nginx.key; access_log /var/log/nginx/localhost.ssl_access_log main; error_log /var/log/nginx/localhost.ssl_error_log info; root /var/www/localhost/htdocs; location / { index index.html index.htm index.php; autoindex on; autoindex_exact_size off; autoindex_localtime on; } location ~ \.php$ { # Test for non-existent scripts or throw a 404 error # Without this line, nginx will blindly send any request ending in .php to php-fpm try_files $uri =404; include /etc/nginx/fastcgi.conf; fastcgi_pass 127.0.0.1:9000; } }

9. Het is nu tijd om twee scripts te maken op een uitvoerbaar systeempad ($PATH shellvariabele), die fungeren als commando’s om Nginx Virtual Hosts te activeren of te deactiveren.
Maak het eerste Bash-script met de naam n2ensite dat de configuratiebestanden voor virtuele hosts activeert door een symbolische koppeling te maken tussen de gespecificeerde hosts vanuit sites-available naar sites-enabled.
# nano /usr/local/bin/n2eniste
#!/bin/bash if test -d /etc/nginx/sites-available && test -d /etc/nginx/sites-enabled ; then echo "-----------------------------------------------" else mkdir /etc/nginx/sites-available mkdir /etc/nginx/sites-enabled fi avail=/etc/nginx/sites-available/$1.conf enabled=/etc/nginx/sites-enabled/ site=`ls /etc/nginx/sites-available/` if [ "$#" != "1" ]; then echo "Use script: n2ensite virtual_site" echo -e "\nAvailable virtual hosts:\n$site" exit 0 else if test -e $avail; then sudo ln -s $avail $enabled else echo -e "$avail virtual host does not exist! Please create one!\n$site" exit 0 fi if test -e $enabled/$1.conf; then echo "Success!! Now restart nginx server: sudo /etc/init.d/ nginx restart" else echo -e "Virtual host $avail does not exist!\nPlease see available virtual hosts:\n$site" exit 0 fi fi

10. Maak vervolgens het tweede script genaamd n2dissite aan, dat gespecificeerde actieve virtuele hosts zal verwijderen van het sites-enabled Nginx-pad met de volgende inhoud.
# nano /usr/local/bin/n2dissite
Voeg de volgende inhoud toe.
#!/bin/bash avail=/etc/nginx/sites-enabled/$1.conf enabled=/etc/nginx/sites-enabled site=`ls /etc/nginx/sites-available/` if [ "$#" != "1" ]; then echo "Use script: n2dissite virtual_site" echo -e "\nAvailable virtual hosts: \n$site" exit 0 else if test -e $avail; then sudo rm $avail else echo -e "$avail virtual host does not exist! Exiting!" exit 0 fi if test -e $enabled/$1.conf; then echo "Error!! Could not remove $avail virtual host!" else echo -e "Success! $avail has been removed!\nPlease restart Nginx: sudo /etc/init.d/nginx restart" exit 0 fi fi

11. Nadat het bewerken van de Bash-scripts is voltooid, voeg uitvoeringsrechten toe en activeer lokale virtuele hosts – gebruik de naam van het virtuele host-configuratiebestand zonder de .conf-extensie, start vervolgens Nginx en PHP-FPM-services opnieuw op om wijzigingen toe te passen.
# chmod +x /usr/local/bin/n2dissite # chmod +x /usr/local/bin/n2ensite # n2ensite localhost # n2ensite localhost-ssl # service nginx restart # service php-fpm restart

12. Om configuraties te testen, maak een PHP-info-bestand op het standaard-rootpad voor webbestanden op localhost (/var/www/localhost/htdocs) en leid je browser om naar https://localhost/info.php of http://localhost/info.php.
echo "<?php phpinfo(); ?>" /var/www/localhost/htdocs/info.php

Met behulp van virtuele host-configuratiebestanden op localhost als sjablonen en Nginx n2enmod en n2dismod, kun je nu eenvoudig zoveel websites toevoegen als je wilt, maar zorg ervoor dat je geldige DNS-verwijzingen hebt voor een op het internet gerichte webserver of gebruik lokaal systeemhostsbestandvermeldingen.
Stap 4: Installeer MySQL/MariaDB + PhpMyAdmin
Gebruik dezelfde procedure om de MySQL-database en de PhpMyAdmin-webinterface voor MySQL te installeren zoals gepresenteerd in Installeren van LAMP op Gentoo.
13. Als je daarentegen MariaDB wilt gebruiken, een drop-in vervanging voor MySQL, gebruik dan de volgende commando’s om USE-vlaggen te verkrijgen en het te installeren.
# emerge -pv mariadb # emerge --ask mariadb

Als je een pakketconflict krijgt met MySQL, voeg dan de volgende regels toe aan Portage package.accept.keywords.
# echo “=dev-db/mariadb-5.5.37-r1 ~amd64” >> /etc/portage/package.accept.keywords # echo “=virtual/mysql-5.5 ~amd64” >> /etc/portage/package.accept.keywords # emerge --ask mariadb
14. Nadat de MySQL-database is geïnstalleerd, start u de service en beveiligt u deze met behulp van mysql_secure_installation (wijzig het rootwachtwoord, schakel rootinloggen buiten localhost uit, verwijder de anonieme gebruiker/testdatabase).
# service mysql start # mysql_secure_installation
15. Ga naar de MySQL-database met het commando mysql -u root -p om de functionaliteit te testen en verlaat deze met het commando exit.
# mysql -u root -p MariaDB > show databases; MariaDB > exit;

16. Als u niet zo handig bent met MySQL-opdrachtregel, installeer dan de PhpMyAdmin-webinterface door de volgende opdrachten uit te voeren.
# emerge -pv dev-db/phpmyadmin # echo “dev-db/phpmyadmin setup vhosts” >> /etc/portage/package.use # emerge --ask dev-db/phpmyadmin

17. Nadat PhpMyAdmin is geïnstalleerd, maakt u een configuratiebestand op basis van het voorbeeldconfiguratiebestand, wijzigt u het blowfish_secret-wachtwoord met een willekeurige tekenreeks en maakt u vervolgens een symbolische koppeling van /usr/share/webapps/phpmyadmin/phpmyadmin_versienummer/htdocs/ naar het pad van het documentroot van de virtuele hosts waar u toegang wilt krijgen tot de webinterface van PhpMyAdmin.
# cd /usr/share/webapps/phpmyadmin/4.2.2/htdocs/ # cp config.sample.inc.php config.inc.php # nano config.inc.php

# ln -s /usr/share/webapps/phpmyadmin/4.2.2/htdocs/ /var/www/localhost/htdocs/phpmyadmin

18. Om toegang te krijgen tot de MySQL-database via de webinterface van PhpMyAdmin, opent u een browser en gebruikt u het volgende URL-adres https://localhost/phpmyadmin.

19. De laatste stap is om de services systeembreed in te schakelen, zodat ze na een herstart automatisch worden gestart.
# rc-update add nginx default # rc-update add php-fpm default # rc-update add mysql default

Nu hebben we een minimale omgeving opgezet voor webhosting, en als u alleen HTML, JavaScript en dynamisch gegenereerde PHP-pagina’s gebruikt en u geen SSL-websites nodig heeft, zou de bovenstaande configuratie voldoende moeten zijn voor u.
Source:
https://www.tecmint.com/install-lemp-in-gentoo-linux/