Installazzjoni ta' LEMP (Linux, Nginx, MySQL/MariaDB, PHP/PHP-FPM u PhpMyAdmin) f'Gentoo Linux


Gentoo huwa wieħed mill-aktar distribuzzjoni mgħaġġla tal-Linux minħabba l-orjentazzjoni tal-bini minn sorsi u jipprovdi permezz tal-programm ta’ ġestjoni tas-softwer tiegħu – Portage – ċerti għodod meħtieġa biex tinbena pjattaforma kompluta tal-iżviluppatur tal-web li taġixxi u taħdem malajr ħafna u, wkoll, għandu grad għoli ta 'adattament.

Dan is-suġġett se jmexxik permezz ta' proċess ta' installazzjoni pass pass għall-bini ta' pjattaforma ta' ambjent Web kompluta b'LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin), u bl-għajnuna fuq UŻA l-bnadar ipprovduti minn Portage Package Management, li joffri sett ta 'funzjonalità ta' pakkett fuq proċess ta 'kumpilazzjoni - moduli jew settings meħtieġa għal pjattaforma tal-web, se jtejbu ħafna l-konfigurazzjonijiet tas-server.

  1. Installazzjoni ta' Gentoo bi profil imwebbes għal server li jiffaċċja l-Internet – Gwida għall-Installazzjoni ta' Gentoo.
  2. Netwerk ikkonfigurat b'indirizz IP statiku.

Pass 1: Installa Nginx Web Server

1. Qabel ma tipprova tipproċedi bl-installazzjoni ta 'Nginx kun żgur li l-NIC tiegħek ġie kkonfigurat b'Indirizz IP Statiku u kun żgur li s-sorsi Portage u s-sistema tiegħek huma aġġornati.

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

2. Wara li jintemm il-proċess ta 'aġġornament, ipproċedi bl-installazzjoni ta' Nginx billi tagħżel is-settings u l-moduli preferuti billi tirrepeti Bnadar USE Nginx għall-fajl Portage make.conf. L-ewwel elenka l-moduli ta 'installazzjoni default Nginx billi tħaddem il-kmand li ġej.

# emerge -pv nginx

Għal informazzjoni dettaljata dwar il-moduli (USE flags for packages) uża l-kmand equery.

# equery uses nginx

Imbagħad installa Nginx bil-kmand li ġej.

# emerge --ask nginx

Jekk għandek bżonn moduli żejda (WebDAV, fancyindex, GeoIP, eċċ) minbarra dawk default, li Nginx se jikkompila magħhom, waħħalhom kollha fuq linja waħda fuq il-fajl Portage make.conf b'NGINX_MODULES_HTTP direttiva, imbagħad ikkompila mill-ġdid Nginx b'moduli ġodda.

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

3. Wara li Portage jispiċċa Nginx emerġenti, ibda http daemon u vverifikah billi tidderieġi l-browser tiegħek lejn http://localhost.

Pass 2: Installa PHP

4. Biex tuża lingwa ta 'programmar tal-web dinamika PHP mas-server Nginx, installa PHP-FastCGI Process Manager (FPM) billi tehmeż fpm u PHP importanti ieħor Estensjonijiet fuq Portage USE bnadar u kun żgur li tneħħi l-estensjoni ta '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. Qabel ma tibda PHP-FPM xi bidliet jeħtieġ li jiġu applikati għall-fajl tal-konfigurazzjoni tas-servizz. Iftaħ il-fajl tal-konfigurazzjoni php-fpm u agħmel il-bidliet li ġejjin.

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

Sib u neħħi l-kumment tad-direttivi li ġejjin biex tidher bħal din.

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. Wara li l-fajl tal-konfigurazzjoni PHP-FPM jiġi editjat, ibdel il-permessi tal-fajl log PHP-FPM u ibda s-servizz.

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

Anke jekk jinbeda s-servizz PHP-FPM, Nginx ma jistax jikkomunika mal-gateway PHP, għalhekk, jeħtieġ li jsiru xi bidliet fuq il-fajls tal-konfigurazzjoni Nginx.

Pass 3: Editja Konfigurazzjonijiet Nginx

7. Il-fajl tal-konfigurazzjoni tal-mudell default Nginx jipprovdi biss socket HTTP bażiku għal localhost biss. Biex tibdel din l-imġiba u tippermetti l-Ospiti Virtwali, iftaħ il-fajl nginx.conf li jinsab fit-triq /etc/nginx/ u agħmel il-konfigurazzjonijiet li ġejjin.

# nano /etc/nginx/nginx.conf

Sib l-ewwel blokk server li jikkorrispondi għal localhost u jisma' fuq l-indirizz IP 127.0.0.1 u faħħar id-dikjarazzjonijiet kollha tiegħu biex jidhru bħal fil-screenshot hawn taħt.

Tagħlaqx il-fajl s'issa u mur fil-qiegħ nett u żid id-dikjarazzjoni li ġejja qabel ma tagħlaq l-aħħar ċineg kaboċċi \ } \.

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

8. Imbagħad oħloq siti-enabled u siti-disponibbli (għal Hosts Virtwali mhux użati) direttorji Nginx u fajls ta 'konfigurazzjoni għal localhost fuq protokolli HTTP u HTTPS.

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

Oħloq il-konfigurazzjoni tal-fajl li ġejja għal localhost.

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

Żid il-kontenut tal-fajl li ġej.

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

Għal localhost b'SSL oħloq il-fajl ta 'konfigurazzjoni li ġej.

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

Żid il-kontenut tal-fajl li ġej.

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. Issa wasal iż-żmien li toħloq żewġ skripts fuq mogħdija eżekutibbli tas-sistema (varjabbli tal-qoxra PATH), li taġixxi bħala kmandi biex tattiva jew tiddiżattiva Nginx Virtual Hosts.

Oħloq l-ewwel skript Bash bl-isem n2ensite li se jippermetti fajls ta’ konfigurazzjoni ta’ Virtual Hosts billi toħloq rabta simbolika bejn hosts speċifikati minn siti-disponibbli għal siti-enabled.

# nano /usr/local/bin/n2eniste

Żid il-kontenut tal-fajl li ġej.

#!/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. Imbagħad oħloq it-tieni skript imsejjaħ n2dissite, li se jħassar l-Ospiti Virtwali attivi speċifikati minn siti-enabled passaġġ Nginx bil-kontenut li ġej.

# nano /usr/local/bin/n2dissite

Żid il-kontenut li ġej.

#!/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. Wara li tispiċċa l-editjar ta 'skripts Bash, ehmeż il-permessi ta' eżekuzzjoni u attiva l-Ospiti Virtwali tal-localhost - uża l-isem tal-fajl tal-konfigurazzjoni tal-Ospiti Virtwali mingħajr estensjoni .conf, imbagħad terġa 'tibda s-servizzi Nginx u PHP-FPM biex tapplika l-bidliet.

# 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. Biex tittestja l-konfigurazzjonijiet oħloq fajl ta' informazzjoni PHP fuq il-mogħdija ta' l-għeruq default ta' localhost għall-fajls tal-web (/var/www/localhost/htdocs) u tidderieġi mill-ġdid il-browser tiegħek fuq https://localhost/info .php jew http://localhost/info.php.

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

Bl-użu ta' fajls ta' konfigurazzjoni ta' localhost Virtual Hosts bħala mudelli u Nginx n2enmod u n2dismod, issa tista' faċilment iżżid websajts kemm trid, imma tiżgura li għandek indikaturi validi tad-DNS għal Internet -jiffaċċjaw web server jew uża entrati lokalment fuq il-fajl hosts tas-sistema.

Pass 4: Installa MySQL/MariaDB + PhpMyAdmin

Biex tinstalla database MySQL u PhpMyAdmin Web interface għal MySQL uża l-istess proċedura ppreżentata fuq Installing LAMP fuq Gentoo.

13. Bi tpattija jekk trid tuża MariaDB, drop-in replacement għal MySQL, uża l-kmandi li ġejjin biex tikseb USE flags u tinstallah.

# emerge -pv mariadb
# emerge --ask mariadb

F'każ li jkollok kunflitt ta' pakkett ma' MySQL żid il-linji li ġejjin ma' 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. Wara li d-database MySQL tkun installata, ibda s-servizz u assigurah billi tuża mysql_secure_installation (biddlu l-password tal-għeruq, iddiżattiva l-login tal-għeruq barra l-localhost, neħħi utent anonimu/database tat-test).

# service mysql start
# mysql_secure_installation

15. Daħħal id-database MySQL billi tuża, mysql -u root -p kmand biex tittestja l-funzjonalità tagħha u ħalliha bi kmand ħruġ.

# mysql -u root -p

MariaDB > show databases;
MariaDB > exit;

16. Jekk m'intix tajjeb wisq bil-linja tal-kmand MySQL. installa PhpMyAdmin Web frontend billi tesegwixxi l-kmandi li ġejjin.

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

17. Wara li PhpMyAdmin jispiċċa l-installazzjoni, oħloq fajl ta' konfigurazzjoni bbażat fuq kampjun ta' fajl ta' konfigurazzjoni, ibdel il-passphrase blowfish_secret b'sekwenza każwali, imbagħad oħloq link simboliku minn /usr/share/webapps/phpmyadmin/ phpmyadmin_version_number/htdocs/ għal Virtual Hosts dokument root path li trid taċċessa l-interface web 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. Biex taċċessa d-database MySQL permezz tal-interface tal-Web PhpMyAdmin, iftaħ browser u uża l-indirizz URL li ġej https://localhost/phpmyadmin.

19. L-aħħar pass huwa li s-servizzi tas-sistema kollha jkunu jistgħu jibdew awtomatikament wara l-istartjar mill-ġdid.

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

Issa għandna setup ta 'ambjent minimu għall-Web hosting, u jekk tuża biss paġni ġenerati dinamiċi HTML, JavaScript u PHP u m'għandekx bżonn websajts SSL, il-konfigurazzjoni ta' hawn fuq għandha tkun sodisfaċenti għalik.