Namestitev LEMP (Linux, Nginx, MySQL/MariaDB, PHP/PHP-FPM in PhpMyAdmin) v Gentoo Linux


Gentoo je ena najhitrejših distribucij Linuxa zaradi svoje usmerjenosti k gradnji iz virov in s svojim programom za upravljanje programske opreme - Portage - ponuja določena orodja, potrebna za izdelavo celotne platforme spletnega razvijalca, ki deluje in deluje zelo hitro in, ima tudi visoko stopnjo prilagajanja.

Ta tema vas bo vodila skozi postopek namestitve po korakih za izdelavo celotne platforme spletnega okolja z LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin) in s pomočjo na Oznake USE , ki jih ponuja Portage Package Management, ki ponuja nabor funkcionalnosti paketov v procesu prevajanja - moduli ali nastavitve, potrebne za spletno platformo, bodo močno prilagodile konfiguracije strežnika.

  1. Namestitev Gentoo s kaljenim profilom za internetni strežnik - Vodnik za namestitev Gentoo.
  2. Omrežje, konfigurirano s statičnim naslovom IP.

1. korak: Namestite spletni strežnik Nginx

1. Preden poskusite nadaljevati z namestitvijo Nginxa, se prepričajte, da je vaša NIC konfigurirana s statičnim naslovom IP, in preverite, ali so viri Portage in vaš sistem posodobljeni.

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

2. Ko se postopek posodobitve konča, nadaljujte z namestitvijo Nginxa, tako da izberete želene nastavitve in module, tako da v datoteko Portage make.conf odzvanjate zastavice USE Nginx . Prvi seznam privzetih namestitvenih modulov Nginx, tako da zaženete naslednji ukaz.

# emerge -pv nginx

Za podrobne informacije o modulih (zastavice USE za pakete) uporabite ukaz equery .

# equery uses nginx

Nato namestite Nginx z naslednjim ukazom.

# emerge --ask nginx

Če poleg privzetih potrebujete dodatne module (WebDAV, fancyindex, GeoIP itd.), S katerimi se bo Nginx prevedel, jih dodajte v eno vrstico v datoteko Portage make.conf z datoteko NGINX_MODULES_HTTP , nato znova prevedite Nginx z novimi moduli.

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

3. Ko Portage konča nastajajoči Nginx, zaženite daemon http in ga preverite tako, da svoj brskalnik usmerite na http:// localhost .

2. korak: Namestite PHP

4. Če želite uporabljati PHP jezik spletnega programskega jezika s strežnikom Nginx, namestite PHP-FastCGI Process Manager ( FPM ) tako, da dodate fpm in druge pomembne PHP Razširitve na zastavicah Portage USE in odstranite razširitev Apache.

# 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. Pred zagonom PHP-FPM je treba uporabiti nekaj sprememb v konfiguracijski datoteki storitve. Odprite konfiguracijsko datoteko php-fpm in izvedite naslednje spremembe.

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

Poiščite in razkomentirajte naslednje smernice, da bodo videti tako.

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. Ko je konfiguracijska datoteka PHP-FPM urejena, spremenite dovoljenja za dnevniške datoteke PHP-FPM in zaženite storitev.

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

Tudi če se zažene storitev PHP-FPM, Nginx ne more komunicirati s prehodom PHP, zato je treba v konfiguracijskih datotekah Nginx narediti nekaj sprememb.

3. korak: Uredite konfiguracije Nginx

7. Privzeta konfiguracijska datoteka predloge Nginx ponuja samo osnovno vtičnico HTTP samo za localhost. Če želite spremeniti to vedenje in omogočiti navidezne gostitelje, odprite datoteko nginx.conf , ki se nahaja na poti /etc/nginx/, in naredite naslednje konfiguracije.

# nano /etc/nginx/nginx.conf

Poiščite prvi blok strežnika , ki ustreza localhostu, in posluša IP naslov 127.0.0.1 ter pohvalite vse njegove izjave, kot je videti na spodnjem posnetku zaslona.

Datoteke še ne zaprite in se pomaknite na čisto dno ter dodajte naslednji stavek pred zadnjim zapiranjem zavitih oklepajev \"} \" .

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

8. Nato ustvarite spletna mesta omogočena in spletna mesta so na voljo (za neuporabljene navidezne gostitelje) Nginxove imenike in konfiguracijske datoteke za localhost na protokolih HTTP in HTTPS.

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

Ustvarite naslednjo konfiguracijo datoteke za localhost.

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

Dodajte naslednjo vsebino datoteke.

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

Za localhost s SSL ustvarite naslednjo konfiguracijsko datoteko.

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

Dodajte naslednjo vsebino datoteke.

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. Zdaj je čas, da na sistemski izvršljivi poti (spremenljivka lupine $PATH) ustvarite dva skripta, ki delujeta kot ukazi za aktiviranje ali onemogočanje virtualnih gostiteljev Nginx.

Ustvarite prvi Bash-ov skript z imenom n2ensite , ki bo omogočil konfiguracijske datoteke navideznih gostiteljev tako, da bo ustvaril simbolno povezavo med navedenimi gostitelji od spletnih mest, ki so na voljo , do omogočenih spletnih mest .

# nano /usr/local/bin/n2eniste

Dodajte naslednjo vsebino datoteke.

#!/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. Nato ustvarite drugi skript, imenovan n2dissite , ki bo izbrisal določene aktivne navidezne gostitelje s poti Nginx s omogočenimi spletnimi mesti z naslednjo vsebino.

# nano /usr/local/bin/n2dissite

Dodajte naslednjo vsebino.

#!/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. Ko končate z urejanjem skriptov Bash, dodajte dovoljenja za izvajanje in aktivirajte virtualne gostitelje localhost - uporabite ime konfiguracijske datoteke Virtual Host brez razširitve .conf , nato znova zaženite storitve Nginx in PHP-FPM, da uveljavite spremembe.

# 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. Če želite preizkusiti konfiguracije, ustvarite datoteko z informacijami PHP na privzeti korenski poti localhost za spletne datoteke (/var/www/localhost/htdocs ) in preusmerite brskalnik na https:/localhost/info .php ali http://localhost/info.php .

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

Z uporabo konfiguracijskih datotek localhost Virtual Hosts kot predloge in Nginx n2enmod in n2dismod lahko zdaj enostavno dodate poljubno število spletnih mest, vendar zagotovite, da imate veljavne kazalce DNS za internet - obrnite se na spletni strežnik ali lokalno uporabite vnose v datoteki sistemskih gostiteljev.

4. korak: Namestite MySQL/MariaDB + PhpMyAdmin

Če želite namestiti bazo podatkov MySQL in spletni vmesnik PhpMyAdmin za MySQL, uporabite enak postopek, kot je opisan v poglavju Namestitev LAMP na Gentoo.

13. V zameno, če želite uporabiti MariaDB, spustno zamenjavo za MySQL, uporabite naslednje ukaze, da dobite USE zastavice in ga namestite.

# emerge -pv mariadb
# emerge --ask mariadb

Če pride do konflikta paketa z MySQL, dodajte naslednje vrstice v 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. Ko je baza podatkov MySQL nameščena, zaženite storitev in jo zaščitite s mysql_secure_installation (spremenite root geslo, onemogočite prijavo root zunaj localhost, odstranite anonimnega uporabnika/testno bazo podatkov).

# service mysql start
# mysql_secure_installation

15. Vnesite bazo podatkov MySQL z ukazom mysql -u root -p , da preizkusite njeno funkcionalnost in jo pustite z ukazom izhod .

# mysql -u root -p

MariaDB > show databases;
MariaDB > exit;

16. Če z ukazno vrstico MySQL niste preveč dobri. namestite spletni vmesnik PhpMyAdmin z izvajanjem naslednjih ukazov.

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

17. Ko PhpMyAdmin konča z namestitvijo, ustvarite konfiguracijsko datoteko na podlagi vzorčne konfiguracijske datoteke, spremenite geslo blowfish_secret z naključnim nizom, nato ustvarite simbolično povezavo iz /usr/share/webapps/phpmyadmin/phpmyadmin_version_number/htdocs/ do korenske poti dokumenta Virtual Hosts, do katere želite dostopati do spletnega vmesnika 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. Za dostop do zbirke podatkov MySQL prek spletnega vmesnika PhpMyAdmin odprite brskalnik in uporabite naslednji naslov URL https:/localhost/phpmyadmin .

19. Zadnji korak je omogočiti storitve po celotnem sistemu, da se samodejno zaženejo po ponovnem zagonu.

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

Zdaj imamo minimalno nastavitev okolja za spletno gostovanje in če uporabljate samo dinamično generirane strani HTML, JavaScript in PHP in ne potrebujete spletnih mest SSL, mora biti zgornja konfiguracija za vas zadovoljiva.