Zoeken op website

LEMP (Linux, Nginx, MySQL/MariaDB, PHP/PHP-FPM en PhpMyAdmin) installeren in Gentoo Linux


Gentoo is een van de snelste Linux-distributies vanwege de oriëntatie op basis van bronnen en biedt via zijn softwarebeheerprogramma – Portage – bepaalde tools die nodig zijn om een compleet webontwikkelaarsplatform te bouwen dat handelt en werkt zeer snel en kent bovendien een hoge mate van maatwerk.

In dit onderwerp wordt u stapsgewijs door een installatieproces geleid voor het bouwen van een compleet webomgevingsplatform met LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin), en met de hulp op GEBRUIK vlaggen geleverd door Portage Package Management, dat een reeks pakketfunctionaliteiten biedt tijdens het compilatieproces – modules of instellingen die nodig zijn voor een webplatform, zullen de serverconfiguraties sterk aanpassen.

Vereisten

  1. Gentoo Installatie met een verhard profiel voor een internetgerichte server – Gentoo Installatiehandleiding.
  2. Netwerk geconfigureerd met een statisch IP-adres.

Stap 1: Installeer Nginx-webserver

1. Voordat u probeert door te gaan met de Nginx-installatie, 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. Nadat het updateproces is voltooid, gaat u verder met de Nginx-installatie door de voorkeursinstellingen en modules te kiezen door Nginx USE-vlaggen te echoën naar het Portage make.conf-bestand . Maak eerst een lijst van de standaardinstallatiemodules van Nginx door de volgende opdracht uit te voeren.

emerge -pv nginx

Voor gedetailleerde module-informatie (USE-vlaggen voor pakketten) gebruikt u de opdracht equery.

equery uses nginx

Installeer vervolgens Nginx met de volgende opdracht.

emerge --ask nginx

Als je extra modules (WebDAV, fancyindex, GeoIP, enz.) nodig hebt naast de standaard modules waarmee Nginx zal compileren, voeg ze dan allemaal toe op een enkele regel in het Portage make.conf bestand met NGINX_MODULES_HTTP richtlijn en compileer vervolgens Nginx 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 ontwikkelen van Nginx, start u de http-daemon en verifieert u deze door uw browser naar http://localhost te leiden.

Stap 2: Installeer PHP

4. Om de dynamische webprogrammeertaal PHP te gebruiken met de Nginx-server, installeert u PHP-FastCGI Process Manager (FPM) door fpm< toe te voegen en andere belangrijke PHP-extensies op Portage USE-vlaggen en zorg ervoor dat u 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 er enkele wijzigingen worden toegepast in het serviceconfiguratiebestand. Open het php-fpm configuratiebestand en breng de volgende wijzigingen aan.

nano /etc/php/fpm-php5.5/php-fpm.conf

Zoek en verwijder de commentaar van de volgende richtlijnen om er zo uit te zien.

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, wijzigt u de rechten van het PHP-FPM-logbestand en start u 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 er moeten enkele wijzigingen worden aangebracht in de Nginx-configuratiebestanden.

Stap 3: Nginx-configuraties bewerken

7. Het standaardsjabloonconfiguratiebestand van Nginx biedt alleen een eenvoudige HTTP-socket voor localhost. Om dit gedrag te veranderen en virtuele hosts in te schakelen, opent u het bestand nginx.conf op het pad /etc/nginx/ en voert u de volgende configuraties uit.

nano /etc/nginx/nginx.conf

Lokaliseer het eerste server-blok dat overeenkomt met localhost en luistert naar het 127.0.0.1 IP-adres en beveel al zijn verklaringen aan, zodat ze er uitzien zoals in de onderstaande schermafbeelding.

Sluit het bestand nog niet en ga helemaal naar beneden en voeg de volgende verklaring toe voordat u de accolades voor het laatst sluit “ } “.

Include /etc/nginx/sites-enabled/*.conf;

8. Maak vervolgens sites-enabled en sites-available (voor ongebruikte virtuele hosts) Nginx-mappen en configuratiebestanden voor localhost op HTTP- en HTTPS-protocollen .

mkdir /etc/nginx/sites-available
mkdir /etc/nginx/sites-enabled

Maak de volgende bestandsconfiguratie voor localhost.

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 maakt u het volgende configuratiebestand.

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. Nu is het tijd om twee scripts te maken op een uitvoerbaar systeempad (` PATH shell-variabele), dat fungeert als opdrachten om Nginx Virtual Hosts te activeren of uit te schakelen.

Maak het eerste Bash-script met de naam n2ensite dat configuratiebestanden voor virtuele hosts inschakelt door een symbolische link te maken tussen gespecificeerde hosts van sites-available naar sites-enabled >.

nano /usr/local/bin/n2eniste

Voeg de volgende bestandsinhoud toe.

#!/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 met de naam n2dissite, dat gespecificeerde actieve virtuele hosts verwijdert uit 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 u klaar bent met het bewerken van Bash-scripts, voegt u uitvoeringsrechten toe en activeert u localhost Virtual Hosts - gebruik de naam van het Virtual Host-configuratiebestand zonder de extensie .conf en start vervolgens de Nginx- en PHP-FPM-services opnieuw op 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, maakt u een PHP-infobestand op localhost, het standaard hoofdpad voor webbestanden (/var/www/localhost/htdocs) en stuurt u uw browser om op https://localhost/info.php of http://localhost/info.php.

echo "<?php phpinfo(); ?>" /var/www/localhost/htdocs/info.php

Met behulp van localhost Virtual Hosts-configuratiebestanden als sjablonen en Nginx n2enmod en n2dismod kunt u nu eenvoudig zoveel websites toevoegen als u wilt, maar zorg ervoor dat u over geldige DNS-aanwijzers voor een internet beschikt -gerichte webserver of gebruik de vermeldingen lokaal in het systeemhostbestand.

Stap 4: Installeer MySQL/MariaDB + PhpMyAdmin

Om de MySQL-database en de PhpMyAdmin-webinterface voor MySQL te installeren, gebruikt u dezelfde procedure als beschreven in LAMP installeren op Gentoo.

13. Als u MariaDB, een drop-in vervanging voor MySQL, wilt gebruiken, gebruikt u de volgende opdrachten om USE-vlaggen op te halen en te installeren.

emerge -pv mariadb
emerge --ask mariadb

Als u een pakketconflict met MySQL krijgt, voegt u 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 mysql_secure_installation (wijzig het root-wachtwoord, schakel root-login 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 ervan te testen en verlaat het met het commando exit.

mysql -u root -p

MariaDB > show databases;
MariaDB > exit;

16. Als u niet zo goed bent met de MySQL-opdrachtregel. installeer PhpMyAdmin Web frontend 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 de installatie heeft voltooid, maakt u een configuratiebestand aan op basis van het voorbeeldconfiguratiebestand, wijzigt u de wachtwoordzin van blowfish_secret met een willekeurige reeks en maakt u vervolgens een symbolische link van /usr /share/webapps/phpmyadmin/phpmyadmin_version_number/htdocs/ naar het hoofdpad van het Virtual Hosts-document waartoe u toegang wilt krijgen tot de PhpMyAdmin-webinterface.

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 PhpMyAdmin-webinterface, opent u een browser en gebruikt u het volgende URL-adres https://localhost/phpmyadmin.

19. De laatste stap is het inschakelen van services voor het hele systeem, zodat deze automatisch starten na het opnieuw opstarten.

rc-update add nginx default
rc-update add php-fpm default
rc-update add mysql default

Nu hebben we een minimale omgevingsconfiguratie voor webhosting, en als u alleen dynamisch gegenereerde HTML-, JavaScript- en PHP-pagina's gebruikt en geen SSL-websites nodig heeft, zou de bovenstaande configuratie voor u bevredigend moeten zijn.