Shigar da LEMP (Linux, Nginx, MySQL/MariaDB, PHP/PHP-FPM da PhpMyAdmin) a cikin Linux Gentoo


Gentoo yana ɗaya daga cikin mafi sauri rarraba Linux saboda ginawa daga tushen tushen tushe kuma yana samarwa ta tsarin sarrafa software - Portage- wasu kayan aikin da ake buƙata don gina cikakken dandamali mai haɓaka gidan yanar gizo wanda ke aiki da sauri kuma, kuma, yana da babban mataki na gyare-gyare.

Wannan batu zai dauke ku ta hanyar mataki-mataki tsarin shigarwa don gina cikakken dandalin yanar gizon yanar gizo tare da LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin), kuma tare da taimako akan AMFANI da tutociwanda aka bayar ta Gudanar da Kunshin Portage, wanda ke ba da saiti na aikin fakiti akan tsarin tattarawa - kayayyaki ko saitunan da ake buƙata don dandalin yanar gizo, za su tweak da saitunan uwar garke.

  1. Shigarwar Gentoo tare da Taurare Bayanan martaba don uwar garken da ke fuskantar Intanet - Jagoran Shigar Gentoo.
  2. An saita hanyar sadarwa tare da adreshin IP na tsaye.

Mataki 1: Shigar Nginx Web Server

1. Kafin yunƙurin ci gaba da shigarwa na Nginx tabbatar da cewa an saita NIC ɗinku tare da adireshin IP na tsaye kuma tabbatar da tushen Portage da tsarin ku yana da zamani.

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

2. Bayan sabunta tsari ya ƙare, ci gaba tare da shigarwa na Nginx ta zaɓar saitunan da aka fi so da kayayyaki ta hanyar ƙara Nginx USE flags zuwa Fayil na Portage make.conf. Jeri na farko Nginx tsoffin kayan shigarwa ta hanyar gudanar da umarni mai zuwa.

# emerge -pv nginx

Don cikakkun bayanai na samfura (USE tutoci don fakiti) yi amfani da umarnin equery.

# equery uses nginx

Sannan shigar da Nginx tare da umarni mai zuwa.

# emerge --ask nginx

Idan kuna buƙatar ƙarin samfura (WebDAV, fancyindex, GeoIP, da sauransu) ban da waɗanda aka saba, Nginx zai haɗa su, saka su duka akan layi ɗaya akan Fayil make.conf tare da NGINX_MODULES_HTTP umarni, sannan sake tattara Nginx tare da sabbin kayayyaki.

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

3. Bayan Portage ya gama fitowar Nginx, fara http daemon kuma tabbatar da shi ta hanyar jagorantar burauzar ku zuwa http://localhost.

Mataki 2: Sanya PHP

4. Don amfani da harshen shirye-shiryen yanar gizo mai ƙarfi na PHP tare da uwar garken Nginx, shigar da PHP-FastCGI Process Manager (FPM) ta hanyar saka fpm da sauran mahimman PHP Ƙaddamarwa akan Tutocin YI AMFANI da Portage kuma ka tabbata ka cire tsawo na 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. Kafin fara PHP-FPM wasu canje-canje na buƙatar amfani da fayil ɗin daidaitawar sabis. Bude php-fpm fayil ɗin sanyi kuma yi canje-canje masu zuwa.

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

Nemo kuma ba da amsa waɗannan umarni masu zuwa don yin kama da wannan.

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. Bayan fayil ɗin sanyi na PHP-FPM an gyara shi, canza izinin fayil ɗin log na PHP-FPM kuma fara sabis ɗin.

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

Ko da an fara sabis na PHP-FPM, Nginx ba zai iya sadarwa tare da ƙofar PHP ba, don haka, ana buƙatar wasu canje-canje akan fayilolin sanyi na Nginx.

Mataki 3: Shirya Saitunan Nginx

7. Nginx tsoho samfurin sanyi fayil kawai yana samar da asali na HTTP soket don localhost kawai. Don canza wannan ɗabi'a da ba da damar Mai watsa shiri na Virtual, buɗe fayil ɗin nginx.conf da ke kan hanyar /etc/nginx/ sannan a yi saitunan masu zuwa.

# nano /etc/nginx/nginx.conf

Nemo toshe na farko na server wanda yayi daidai da localhost kuma yana saurare akan 127.0.0.1 adireshin IP kuma yaba duk bayanansa suyi kama da hoton da ke ƙasa.

Kar a rufe fayil ɗin tukuna kuma matsa zuwa ƙasa kuma ƙara bayanin da ke gaba kafin rufewar takalmin gyaran kafa na ƙarshe \ } \.

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

8. Na gaba ƙirƙira shafukan-kunna da shafukan-samuwa (don masu watsa shirye-shiryen da ba a amfani da su) Nginx kundayen adireshi da fayilolin daidaitawa don localhost akan ka'idojin HTTP da HTTPS.

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

Ƙirƙiri saitin fayil ɗin mai zuwa don localhost.

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

Ƙara abun cikin fayil mai zuwa.

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

Don localhost tare da SSL ƙirƙirar fayil ɗin sanyi mai zuwa.

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

Ƙara abun cikin fayil mai zuwa.

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. Yanzu lokaci ya yi da za a ƙirƙiri rubutun biyu akan hanyar da za a iya aiwatar da tsarin (PATH shell variable), wanda ke aiki azaman umarni don kunna ko kashe Nginx Virtual Hosts.

Ƙirƙirar rubutun Bash na farko mai suna n2ensite wanda zai ba da damar daidaita fayilolin Mai watsa shiri ta hanyar ƙirƙirar hanyar haɗin kai tsakanin ƙayyadaddun runduna daga shafukan-samuwa zuwa shafukan-kunna >.

# nano /usr/local/bin/n2eniste

Ƙara abun cikin fayil mai zuwa.

#!/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. Sannan ƙirƙirar rubutun na biyu mai suna n2dissite, wanda zai goge takamaiman ma'aikatan Virtual Hosts daga shafukan-enabled hanyar Nginx tare da abun ciki mai zuwa.

# nano /usr/local/bin/n2dissite

Ƙara abun ciki mai zuwa.

#!/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. Bayan kammala gyaran rubutun Bash, ƙara izinin aiwatarwa kuma kunna localhost Virtual Hosts - yi amfani da sunan fayil ɗin sanyi na Mai watsa shiri ba tare da .conf tsawo ba, sannan sake kunna ayyukan Nginx da PHP-FPM don amfani da canje-canje.

# 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. Don gwada saitunan ƙirƙira fayil ɗin bayanin PHP akan hanyar tushen tushen asalin gida don fayilolin gidan yanar gizo (/var/www/localhost/htdocs) kuma sake tura burauzar ku akan https://localhost/info .php ko http://localhost/info.php.

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

Yin amfani da fayilolin sanyi na localhost Virtual Hosts azaman samfuri da Nginx n2enmod da n2dismod zaku iya ƙara yawan gidajen yanar gizo gwargwadon yadda kuke so, amma tabbatar da cewa kuna da ingantattun alamun DNS don Intanet. - fuskantar sabar gidan yanar gizo ko amfani da shigarwar cikin gida akan fayil ɗin rundunan tsarin.

Mataki 4: Shigar MySQL/MariaDB + PhpMyAdmin

Don shigar da bayanan MySQL da PhpMyAdmin Yanar Gizo don MySQL yi amfani da wannan hanyar da aka gabatar akan Sanya LAMP akan Gentoo.

13. A sakamakon idan kuna son amfani da MariaDB, maye gurbin MySQL, yi amfani da umarni masu zuwa don samun Yi amfani da tutoci kuma shigar da shi.

# emerge -pv mariadb
# emerge --ask mariadb

Idan kun sami rikici na kunshin tare da MySQL ƙara waɗannan layin zuwa 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. Bayan an shigar da bayanan MySQL na fara sabis kuma a kiyaye shi ta amfani da mysql_secure_installation (canja kalmar sirri, kashe tushen shiga waje localhost, cire bayanan mai amfani/gwajin mara amfani).

# service mysql start
# mysql_secure_installation

15. Shigar da bayanan MySQL ta amfani da, mysql -u root -p umarni don gwada aikin sa kuma bar shi tare da fita umarni.

# mysql -u root -p

MariaDB > show databases;
MariaDB > exit;

16. Idan ba ku da kyau tare da layin umarni MySQL. shigar PhpMyAdmin Web frontend ta aiwatar da wadannan umarni.

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

17. Bayan PhpMyAdmin ya gama shigarwa, ƙirƙiri fayil ɗin daidaitawa dangane da fayil ɗin saitin samfurin, canza blowfish_asirin kalmar wucewa tare da kirtani bazuwar, sannan ƙirƙirar hanyar haɗi ta alama daga /usr/share/webapps/phpmyadmin/ phpmyadmin_version_number/htdocs/zuwa Rukunin Rukunin Rubutu na tushen tushen hanyar da kake son samun damar haɗin yanar gizo na 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. Don samun damar bayanan MySQL ta hanyar Intanet na PhpMyAdmin, buɗe mashigar bincike kuma yi amfani da adireshin URL mai zuwa https://localhost/phpmyadmin.

19. Mataki na ƙarshe shine don kunna tsarin sabis a faɗin, don farawa ta atomatik bayan sake kunnawa.

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

Yanzu muna da ƙaramin saitin yanayi don ɗaukar hoto, kuma idan kawai kuna amfani da HTML, JavaScript da kuma shafukan yanar gizo masu ƙarfi na PHP kuma ba kwa buƙatar shafukan yanar gizo na SSL, saitin da ke sama ya zama mai gamsarwa a gare ku.