Installere LEMP (Linux, Nginx, MySQL/MariaDB, PHP/PHP-FPM og PhpMyAdmin) i Gentoo Linux


Gentoo er en av de raskeste Linux-distribusjonene på grunn av sin bygge fra kildeorientering og gir av sitt programvareadministrasjonsprogram – Portage – visse verktøy som trengs for å bygge en komplett nettutviklerplattform som fungerer og fungerer veldig raskt og har også en høy grad av tilpasning.

Dette emnet tar deg gjennom en trinnvis installasjonsprosess for å bygge en komplett nettmiljøplattform med LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin), og med hjelp på BRUK flagg levert av Portage Package Management, som tilbyr et sett med pakkefunksjonalitet på kompileringsprosessen – moduler eller innstillinger som trengs for en nettplattform, vil i stor grad justere serverkonfigurasjonene.

Krav

  1. Gentoo-installasjon med en herdet profil for en Internett-vendt server – Gentoo installasjonsveiledning.
  2. Nettverk konfigurert med en statisk IP-adresse.

Trinn 1: Installer Nginx Web Server

1. Før du prøver å fortsette med Nginx-installasjonen, sørg for at nettverkskortet ditt er konfigurert med en statisk IP-adresse, og sørg for at Portage-kilder og systemet ditt er oppdatert.

sudo su -
emerge --sync
emerge --update --deep --with-bdeps=y @world

2. Etter at oppdateringsprosessen er ferdig, fortsett med Nginx-installasjonen ved å velge de foretrukne innstillingene og modulene ved å ekko Nginx USE-flagg til Portage make.conf-filen . List først Nginx standard installasjonsmoduler ved å kjøre følgende kommando.

emerge -pv nginx

For detaljert modulinformasjon (USE-flagg for pakker) bruk equery-kommandoen.

equery uses nginx

Installer deretter Nginx med følgende kommando.

emerge --ask nginx

Hvis du trenger ekstra moduler (WebDAV, fancyindex, GeoIP, osv.) i tillegg til standardmodulene, som Nginx vil kompilere med, legg til dem alle på en enkelt linje på Portage make.conf-fil med NGINX_MODULES_HTTP-direktivet, og kompiler deretter Nginx på nytt med nye moduler.

echo 'NGINX_MODULES_HTTP="dav auth_pam fancyindex geoip fastcgi uwsgi gzip rewrite"' >> /etc/portage/make.conf
emerge --ask nginx

3. Etter at Portage er ferdig med å utvikle Nginx, start http daemon og verifiser den ved å dirigere nettleseren til http://localhost.

Trinn 2: Installer PHP

4. For å bruke PHP dynamisk webprogrammeringsspråk med Nginx-server, installer PHP-FastCGI Process Manager (FPM) ved å legge til fpm og andre viktige PHP-utvidelser på Portage USE-flagg og sørg for at du fjerner Apache-utvidelsen.

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. Før du starter PHP-FPM, må noen endringer tas i bruk i tjenestekonfigurasjonsfilen. Åpne php-fpm konfigurasjonsfil og gjør følgende endringer.

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

Finn og fjern kommentarene til følgende direktiver for å se slik ut.

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. Etter at PHP-FPM-konfigurasjonsfilen er redigert, endre PHP-FPM-loggfiltillatelser og start tjenesten.

chmod 755 /var/log/php-fpm.log
/etc/init.d/php-fpm start

Selv om PHP-FPM-tjenesten startes, kan ikke Nginx kommunisere med PHP-gateway, så noen endringer må gjøres på Nginx-konfigurasjonsfiler.

Trinn 3: Rediger Nginx-konfigurasjoner

7. Nginx standard mal konfigurasjonsfil gir bare en grunnleggende HTTP-socket kun for lokal vert. For å endre denne virkemåten og aktivere virtuelle verter, åpne nginx.conf-filen som ligger på /etc/nginx/-banen og foreta følgende konfigurasjoner.

nano /etc/nginx/nginx.conf

Finn den første server-blokken som tilsvarer localhost og lytter til 127.0.0.1 IP-adressen, og anbefal at alle setningene ser ut som i skjermbildet nedenfor.

Ikke lukk filen ennå, og flytt helt til bunnen og legg til følgende setning før du sist lukker krøllete klammeparenteser “ } “.

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

8. Opprett deretter nettsteder-aktiverte og nettsteder-tilgjengelige (for ubrukte virtuelle verter) Nginx-kataloger og konfigurasjonsfiler for localhost på HTTP- og HTTPS-protokoller .

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

Opprett følgende filkonfigurasjon for localhost.

nano /etc/nginx/sites-available/localhost.conf

Legg til følgende filinnhold.

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
                        }
                }

Opprett følgende konfigurasjonsfil for localhost med SSL.

nano /etc/nginx/sites-available/localhost-ssl.conf

Legg til følgende filinnhold.

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. Nå er det på tide å lage to skript på en systemkjørbar bane (` PATH shell-variabel), som fungerer som kommandoer for å aktivere eller deaktivere Nginx Virtual Hosts.

Lag det første Bash-skriptet kalt n2ensite som vil aktivere Virtual Hosts-konfigurasjonsfiler ved å opprette en symbolsk kobling mellom spesifiserte verter fra sites-available til sites-enabled.

nano /usr/local/bin/n2eniste

Legg til følgende filinnhold.

#!/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. Lag deretter det andre skriptet kalt n2dissite, som vil slette spesifiserte aktive virtuelle verter fra nettstedaktiverte Nginx-sti med følgende innhold.

nano /usr/local/bin/n2dissite

Legg til følgende innhold.

#!/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. Etter å ha fullført redigeringen av Bash-skript, legg til utførelsestillatelser og aktiver virtuelle vertsverter – bruk konfigurasjonsfilnavnet for Virtual Host uten filtypen .conf, og start deretter Nginx- og PHP-FPM-tjenestene på nytt å bruke endringer.

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. For å teste konfigurasjoner oppretter du en PHP-infofil på localhost standard rotbane for nettfiler (/var/www/localhost/htdocs) og omdiriger nettleseren din på https://localhost/info.php eller http://localhost/info.php.

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

Ved å bruke localhost Virtual Hosts-konfigurasjonsfiler som maler og Nginx n2enmod og n2dismod kan du enkelt nå legge til så mange nettsteder du vil, men forsikre deg om at du har gyldige DNS-pekere for et Internett -vendt webserver eller bruk oppføringer lokalt på systemvertsfilen.

Trinn 4: Installer MySQL/MariaDB + PhpMyAdmin

For å installere MySQL-databasen og PhpMyAdmin-webgrensesnittet for MySQL, bruk samme prosedyre som presentert under Installere LAMP på Gentoo.

13. Til gjengjeld hvis du vil bruke MariaDB, drop-in erstatning for MySQL, bruk følgende kommandoer for å få USE flagg og installere det.

emerge -pv mariadb
emerge --ask mariadb

I tilfelle du får en pakkekonflikt med MySQL, legg til følgende linjer i 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. Etter at MySQL-databasen er installert, start tjenesten og sikre den med mysql_secure_installation (endre root-passord, deaktiver root-pålogging utenfor localhost, fjern anonym bruker-/testdatabase).

service mysql start
mysql_secure_installation

15. Gå inn i MySQL-databasen ved å bruke kommandoen mysql -u root -p for å teste funksjonaliteten og la den stå med kommandoen exit.

mysql -u root -p

MariaDB > show databases;
MariaDB > exit;

16. Hvis du ikke er for god med MySQL-kommandolinjen. installer PhpMyAdmin Web-grensesnitt ved å utføre følgende kommandoer.

emerge -pv dev-db/phpmyadmin
echo “dev-db/phpmyadmin setup vhosts” >> /etc/portage/package.use
emerge  --ask dev-db/phpmyadmin

17. Etter at PhpMyAdmin er ferdig med installeringen, oppretter du en konfigurasjonsfil basert på eksempelkonfigurasjonsfilen, endrer blowfish_secret passordfrase med en tilfeldig streng, og oppretter deretter en symbolsk lenke fra /usr /share/webapps/phpmyadmin/phpmyadmin_version_number/htdocs/ til Virtual Hosts-dokumenter rotbanen du vil ha tilgang til PhpMyAdmin-nettgrensesnittet.

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. For å få tilgang til MySQL-databasen gjennom PhpMyAdmin-nettgrensesnittet, åpne en nettleser og bruk følgende URL-adresse https://localhost/phpmyadmin.

19. Det siste trinnet er å aktivere tjenester for hele systemet, for å starte automatisk etter omstart.

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

Nå har vi et minimalt miljøoppsett for webhotell, og hvis du bare bruker HTML, JavaScript og PHP dynamisk genererte sider og du ikke trenger SSL-nettsteder, bør konfigurasjonen ovenfor være tilfredsstillende for deg.