Kufunga LEMP (Linux, Nginx, MySQL/MariaDB, PHP/PHP-FPM na PhpMyAdmin) katika Gentoo Linux


Gentoo ni mojawapo ya usambazaji wa haraka wa Linux kutokana na muundo wake kutoka kwa uelekezi wa vyanzo na hutoa kwa programu yake ya usimamizi wa programu - Portage - zana fulani zinazohitajika ili kuunda jukwaa kamili la wasanidi wavuti ambalo hufanya kazi na kufanya kazi haraka sana na, pia, ina kiwango cha juu cha ubinafsishaji.

Mada hii itakupeleka katika mchakato wa usakinishaji wa hatua kwa hatua wa kujenga jukwaa kamili la mazingira ya Wavuti kwa LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin), na kwa usaidizi kwenye TUMIA benderazinazotolewa na Usimamizi wa Kifurushi cha Portage, ambayo hutoa seti ya utendaji wa kifurushi kwenye mchakato wa utungaji - moduli au mipangilio inayohitajika kwa jukwaa la wavuti, itaboresha sana usanidi wa seva.

  1. Usakinishaji wa Gentoo kwa Wasifu Mgumu kwa seva inayoangalia Mtandao - Mwongozo wa Usakinishaji wa Gentoo.
  2. Mtandao umesanidiwa kwa anwani tuli ya IP.

Hatua ya 1: Sakinisha Seva ya Wavuti ya Nginx

1. Kabla ya kujaribu kuendelea na usakinishaji wa Nginx hakikisha kuwa NIC yako imesanidiwa kwa Anwani Tuli ya IP na uhakikishe kuwa vyanzo vya Portage na mfumo wako vimesasishwa.

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

2. Baada ya mchakato wa kusasisha kukamilika, endelea na usakinishaji wa Nginx kwa kuchagua mipangilio na moduli zinazopendelewa kwa kurudia alama za USE za Nginx kwenye faili ya Kubeba make.conf. Orodha ya kwanza moduli za usakinishaji wa Nginx kwa kuendesha amri ifuatayo.

# emerge -pv nginx

Kwa maelezo ya kina ya moduli (TUMIA alama za vifurushi) tumia amri ya equery.

# equery uses nginx

Kisha usakinishe Nginx na amri ifuatayo.

# emerge --ask nginx

Ikiwa unahitaji moduli za ziada (WebDAV, fancyindex, GeoIP, n.k) kando na zile chaguomsingi, ambazo Nginx itakusanya nazo, ziambatanishe kwenye mstari mmoja kwenye faili ya Portage make.conf yenye NGINX_MODULES_HTTP maagizo, kisha kusanya Nginx na moduli mpya.

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

3. Baada ya Portage kumaliza kuibuka kwa Nginx, anzisha daemon ya http na uithibitishe kwa kuelekeza kivinjari chako kwa http://localhost.

Hatua ya 2: Sakinisha PHP

4. Ili kutumia lugha ya programu ya wavuti inayobadilika ya PHP na seva ya Nginx, sakinisha Kidhibiti Mchakato wa PHP-FastCGI (FPM) kwa kuweka fpm na PHP nyingine muhimu. Viendelezi kwenye bendera za USE na uhakikishe kuwa umeondoa kiendelezi cha 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. Kabla ya kuanza PHP-FPM baadhi ya mabadiliko yanahitaji kutumika kwa faili ya usanidi wa huduma. Fungua php-fpm faili ya usanidi na ufanye mabadiliko yafuatayo.

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

Tafuta na uondoe maoni kwa maagizo yafuatayo ili kuonekana kama hii.

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. Baada ya faili ya usanidi ya PHP-FPM kuhaririwa, badilisha ruhusa za faili ya kumbukumbu ya PHP-FPM na uanze huduma.

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

Hata kama huduma ya PHP-FPM imeanzishwa, Nginx haiwezi kuwasiliana na lango la PHP, kwa hivyo, mabadiliko kadhaa yanahitajika kufanywa kwenye faili za usanidi wa Nginx.

Hatua ya 3: Hariri Usanidi wa Nginx

7. Faili ya usanidi wa kiolezo chaguo-msingi cha Nginx hutoa tu soketi ya msingi ya HTTP kwa localhost pekee. Ili kubadilisha tabia hii na kuwasha Wapangishi Mtandaoni, fungua nginx.conf faili iliyo kwenye /etc/nginx/ njia na ufanye usanidi ufuatao.

# nano /etc/nginx/nginx.conf

Tafuta kizuizi cha kwanza cha seva ambacho kinalingana na mwenyeji wa ndani na usikilize kwenye 127.0.0.1 anwani ya IP na upongeze taarifa zake zote ziwe kama katika picha ya skrini iliyo hapa chini.

Usifunge faili bado na usogee chini kabisa na uongeze kauli ifuatayo kabla ya kufunga brashi zilizopinda \ } \.

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

8. Kisha unda tovuti zilizowezeshwa na tovuti zinazopatikana ( kwa Wapangishi Mtandaoni zisizotumika) saraka za Nginx na faili za usanidi za mwenyeji kwenye itifaki za HTTP na HTTPS.

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

Unda usanidi wa faili ufuatao kwa localhost.

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

Ongeza yaliyomo kwenye faili ifuatayo.

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

Kwa localhost na SSL tengeneza faili ifuatayo ya usanidi.

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

Ongeza yaliyomo kwenye faili ifuatayo.

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. Sasa ni wakati wa kuunda hati mbili kwenye njia inayoweza kutekelezwa ya mfumo (PATH shell variable), ambayo hufanya kama amri za kuwezesha au kuzima Nginx Virtual Hosts.

Unda hati ya kwanza ya Bash inayoitwa n2ensite ambayo itawezesha faili za usanidi za Majeshi Virtual kwa kuunda kiungo cha ishara kati ya wapangishi waliobainishwa kutoka tovuti zinazopatikana hadi tovuti zilizowezeshwa.

# nano /usr/local/bin/n2eniste

Ongeza yaliyomo kwenye faili ifuatayo.

#!/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. Kisha unda hati ya pili iitwayo n2dissite, ambayo itafuta Wapangishi wa Virtual amilifu kutoka kwa njia iliyowezeshwa na tovuti ya Nginx yenye maudhui yafuatayo.

# nano /usr/local/bin/n2dissite

Ongeza maudhui yafuatayo.

#!/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. Baada ya kumaliza kuhariri hati za Bash, ongeza ruhusa za utekelezaji na uwashe Wapangishi wa Virtual wa ndani - tumia jina la faili la usanidi la Mpangishaji Mtandao bila kiendelezi cha .conf, kisha uanzishe upya huduma za Nginx na PHP-FPM ili kutekeleza mabadiliko.

# 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. Ili kujaribu usanidi unda faili ya maelezo ya PHP kwenye njia ya msingi ya mwenyeji wa ndani kwa faili za wavuti (/var/www/localhost/htdocs) na uelekeze upya kivinjari chako kwenye https://localhost/info. .php au http://localhost/info.php.

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

Kwa kutumia localhost Virtual Hosts faili za usanidi kama violezo na Nginx n2enmod na n2dismod sasa unaweza kuongeza tovuti nyingi upendavyo kwa urahisi, lakini hakikisha kwamba una viashiria halali vya DNS kwa Mtandao. -inakabili seva ya wavuti au tumia maingizo ndani ya nchi kwenye faili ya mwenyeji wa mfumo.

Hatua ya 4: Sakinisha MySQL/MariaDB + PhpMyAdmin

Ili kusakinisha hifadhidata ya MySQL na kiolesura cha Wavuti cha PhpMyAdmin kwa MySQL tumia utaratibu ule ule uliowasilishwa kwenye Kusakinisha LAMP kwenye Gentoo.

13. Kwa malipo kama ungependa kutumia MariaDB, kibadilisho cha kunjuzi cha MySQL, tumia amri zifuatazo kupata alama za USE na uisakinishe.

# emerge -pv mariadb
# emerge --ask mariadb

Iwapo utapata mgongano wa kifurushi na MySQL ongeza mistari ifuatayo kwa 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. Baada ya hifadhidata ya MySQL kusakinishwa huduma ya kuanza na kuilinda kwa kutumia mysql_secure_installation (badilisha nenosiri la msingi, zima kuingia kwa mizizi nje ya mwenyeji wa ndani, ondoa hifadhidata isiyojulikana ya mtumiaji/jaribio).

# service mysql start
# mysql_secure_installation

15. Ingiza hifadhidata ya MySQL ukitumia, mysql -u root -p amri ili kupima utendakazi wake na kuiacha na amri ya kutoka.

# mysql -u root -p

MariaDB > show databases;
MariaDB > exit;

16. Ikiwa wewe si mzuri sana na mstari wa amri wa MySQL. sakinisha eneo la mbele la Wavuti la PhpMyAdmin kwa kutekeleza amri zifuatazo.

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

17. Baada ya PhpMyAdmin kumaliza kusakinisha, tengeneza faili ya usanidi kulingana na sampuli ya faili ya usanidi, badilisha neno la siri blowfish_secret kwa mfuatano wa nasibu, kisha unda kiungo cha ishara kutoka /usr/share/webapps/phpmyadmin/ phpmyadmin_version_number/htdocs/ hadi kwenye njia ya msingi ya hati ya Majeshi Unayotaka kufikia kiolesura cha wavuti cha 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. Ili kufikia hifadhidata ya MySQL kupitia kiolesura cha Wavuti cha PhpMyAdmin, fungua kivinjari na utumie anwani ifuatayo ya URL https://localhost/phpmyadmin.

19. Hatua ya mwisho ni kuwezesha huduma kwa mfumo mzima, kuanza kiotomatiki baada ya kuwasha upya.

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

Sasa tuna usanidi mdogo wa mazingira kwa upangishaji wa Wavuti, na ikiwa unatumia tu kurasa zinazobadilika za HTML, JavaScript na PHP na hauitaji tovuti za SSL, usanidi ulio hapo juu unapaswa kukuridhisha.