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


Gentoo er en af de hurtigste Linux-distributioner på grund af dens opbygning fra kilderorientering og leveres af sit softwarestyringsprogram - Portage - visse værktøjer, der er nødvendige for at opbygge en komplet webudviklerplatform, der fungerer og fungerer meget hurtigt, og har også en høj grad af tilpasning.

Dette emne fører dig gennem en trinvis installationsproces til opbygning af en komplet webmiljøplatform med LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin) og med hjælp på BRUG flag leveret af Portage Package Management, der tilbyder et sæt pakkefunktionalitet ved kompileringsprocessen - moduler eller indstillinger, der er nødvendige for en webplatform, vil meget finjustere serverkonfigurationerne.

  1. Gentoo-installation med en hærdet profil til en internetadvendt server - Gentoo-installationsvejledning.
  2. Netværk konfigureret med en statisk IP-adresse.

Trin 1: Installer Nginx Web Server

1. Før du forsøger at fortsætte med Nginx-installationen, skal du sikre dig, at dit NIC er konfigureret med en statisk IP-adresse, og sørg for, at Portage-kilder og dit system er opdateret.

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

2. Når opdateringsprocessen er afsluttet, skal du fortsætte med Nginx-installationen ved at vælge de foretrukne indstillinger og moduler ved at ekko Nginx USE-flag til Portage make.conf -filen. Første liste Nginx standardinstallationsmoduler ved at køre følgende kommando.

# emerge -pv nginx

For detaljerede moduloplysninger (BRUG flag for pakker) skal du bruge kommandoen equery .

# equery uses nginx

Installer derefter Nginx med følgende kommando.

# emerge --ask nginx

Hvis du har brug for ekstra moduler (WebDAV, fancyindex, GeoIP osv.) Udover standardmoduler, som Nginx vil kompilere med, tilføj dem alle på en enkelt linje i Portage make.conf -fil med NGINX_MODULES_HTTP direktivet, kompiler derefter Nginx med nye moduler.

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

3. Når Portage er færdig med at komme frem til Nginx, skal du starte http-dæmonen og kontrollere den ved at dirigere din browser til http:/localhost .

Trin 2: Installer PHP

4. For at bruge PHP dynamisk webprogrammeringssprog med Nginx-serveren skal du installere PHP-FastCGI Process Manager ( FPM ) ved at tilføje fpm og andre vigtige PHP Udvidelser på Portage USE-flag og sørg for at fjerne Apache-udvidelsen.

# 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, skal der foretages nogle ændringer i servicekonfigurationsfilen. Åbn konfigurationsfilen php-fpm , og foretag følgende ændringer.

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

Find og fjern kommentar til følgende direktiver for at se sådan ud.

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. Efter PHP-FPM-konfigurationsfil er den redigeret, skal du ændre PHP-FPM-logfiltilladelser og starte tjenesten.

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

Selvom PHP-FPM-tjenesten startes, kan Nginx ikke kommunikere med PHP gateway, så der skal foretages nogle ændringer på Nginx-konfigurationsfiler.

Trin 3: Rediger Nginx-konfigurationer

7. Nginx-standardskabelonkonfigurationsfil giver kun et grundlæggende HTTP-stik til kun localhost. For at ændre denne adfærd og aktivere virtuelle værter skal du åbne filen nginx.conf placeret på /etc/nginx/ stien og foretage følgende konfigurationer.

# nano /etc/nginx/nginx.conf

Find den første server -blok, der svarer til localhost og lytter til 127.0.0.1 IP-adresse, og beordrer alle dens udsagn til at se ud i nedenstående skærmbillede.

Luk ikke filen endnu, og flyt helt til bunden, og tilføj følgende udsagn inden sidste lukning af krøllede seler “}“ .

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

8. Opret derefter webstedsaktiverede og websteds-tilgængelige (til ubrugte virtuelle værter) Nginx-mapper og konfigurationsfiler til localhost på HTTP- og HTTPS-protokoller.

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

Opret følgende filkonfiguration til localhost.

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

Tilføj følgende filindhold.

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

Opret følgende konfigurationsfil til localhost med SSL.

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

Tilføj følgende filindhold.

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 er det tid til at oprette to scripts på en systemkørbar sti ($ PATH shell-variabel), der fungerer som kommandoer til at aktivere eller deaktivere Nginx Virtual Hosts.

Opret det første Bash-script med navnet n2ensite , der aktiverer Virtual Hosts-konfigurationsfiler ved at oprette et symbolsk link mellem specificerede værter fra sites-tilgængelige til sites-enabled .

# nano /usr/local/bin/n2eniste

Tilføj følgende filindhold.

#!/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. Opret derefter det andet script kaldet n2dissite , der sletter specificerede aktive virtuelle værter fra webstedsaktiverede Nginx-sti med følgende indhold.

# nano /usr/local/bin/n2dissite

Tilføj følgende indhold.

#!/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. Når du er færdig med at redigere Bash-scripts, tilføj udførelsestilladelser og aktiver localhost Virtual Hosts - brug Virtual Host-konfigurationsfilnavnet uden .conf udvidelse, genstart derefter Nginx og PHP-FPM-tjenester for at anvende ændringer.

# 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 at teste konfigurationer skal du oprette en PHP-infofil på localhosts standardsti til webfiler (/var/www/localhost/htdocs ) og omdirigere din browser til https:/localhost/info .php eller http: //localhost/info.php .

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

Ved hjælp af localhost Virtual Hosts-konfigurationsfiler som skabeloner og Nginx n2enmod og n2dismod kan du nemt nu tilføje så mange websteder, som du vil, men sørg for at du har gyldige DNS-markører til et internet -overfladen af webserveren eller brug poster lokalt på systemværtsfilen.

Trin 4: Installer MySQL/MariaDB + PhpMyAdmin

For at installere MySQL-databasen og PhpMyAdmin-webgrænsefladen til MySQL skal du bruge den samme procedure, der er beskrevet under Installation af LAMP på Gentoo.

13. Til gengæld, hvis du vil bruge MariaDB, drop-in erstatning for MySQL, skal du bruge følgende kommandoer til at få USE-flag og installere det.

# emerge -pv mariadb
# emerge --ask mariadb

Hvis du får en pakkekonflikt med MySQL, skal du tilføje følgende linjer til 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. Efter MySQL-database er installeret, start service og sikre den ved hjælp af mysql_secure_installation (skift rodadgangskode, deaktiver rodlogin uden for localhost, fjern anonym bruger/testdatabase).

# service mysql start
# mysql_secure_installation

15. Indtast MySQL-database ved hjælp af kommandoen mysql -u root -p for at teste dens funktionalitet og lade den være 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 frontend ved at udfø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. Når installationen af PhpMyAdmin er færdig, skal du oprette en konfigurationsfil baseret på en eksempelkonfigurationsfil, ændre blowfish_secret adgangssætning med en tilfældig streng og derefter oprette et symbolsk link fra /usr/share/webapps/phpmyadmin/phpmyadmin_version_number/htdocs/ til Virtual Hosts-dokumentets rodsti, du vil have adgang til PhpMyAdmin-webgrænsefladen.

# 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 at få adgang til MySQL-databasen via PhpMyAdmin-webgrænsefladen skal du åbne en browser og bruge følgende URL-adresse https:/localhost/phpmyadmin .

19. Det sidste trin er at aktivere tjenester i hele systemet til automatisk at starte efter genstart.

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

Nu har vi et minimalt miljøopsætning til webhosting, og hvis du kun bruger HTML, JavaScript og PHP dynamisk genererede sider, og du ikke har brug for SSL-websteder, skal konfigurationen ovenfor være tilfredsstillende for dig.