Gentoo Linux-da LEMP (Linux, Nginx, MySQL/MariaDB, PHP/PHP-FPM we PhpMyAdmin) gurmak


Gentoo, çeşmeleriň ugrundan gurulmagy we programma üpjünçiligini dolandyrmak programmasy - Portage tarapyndan üpjün edilmegi sebäpli iň çalt Linux paýlanyşynyň biridir - örän çalt hereket edýän we işleýän doly web dörediji platforma gurmak üçin zerur gurallar we, şeýle hem, özleşdirmegiň ýokary derejesine eýe.

Bu mowzuk, LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin) bilen doly Web gurşaw platformasyny gurmak üçin ädimme-ädim gurlar we Toplama paket dolandyryşy tarapyndan üpjün edilen baýdaklary ulanyň , düzmek prosesinde bir topar paket funksiýasyny hödürleýär - web platformasy üçin zerur modullar ýa-da sazlamalar, serwer konfigurasiýalaryny ýokary derejede üýtgeder.

  1. Internete seredýän serwer üçin gatylaşdyrylan profil bilen Gentoo gurnama - Gentoo gurmak boýunça gollanma.
  2. Tor statiki IP adresi bilen düzüldi.

1-nji ädim: Nginx web serwerini guruň

1. Nginx gurnamaga başlamazdan ozal, NIC-iňiziň Statik IP adresi bilen sazlanandygyna göz ýetiriň we Portage çeşmeleriniň we ulgamyňyzyň täzelenendigine göz ýetiriň.

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

2. Täzelenme prosesi gutarandan soň, make.conf faýlyna Nginx USE baýdaklaryny gaýtalap, islenýän sazlamalary we modullary saýlap, Nginx gurnamasyny dowam etdiriň. Ilki bilen aşakdaky buýrugy işledip Nginx deslapky gurnama modullaryny sanaň.

# emerge -pv nginx

Jikme-jik modul maglumatlary üçin (paketler üçin baýdaklary ulanyň) deňleme buýrugyny ulanyň.

# equery uses nginx

Soňra Nginx-i aşakdaky buýruk bilen guruň.

# emerge --ask nginx

Dymmaklyklardan başga-da goşmaça modullar (WebDAV, fancyindex, GeoIP we ş.m.) gerek bolsa, Nginx-iň düzjekleri, hemmesini NGINX_MODULES_HTTP make.conf faýlynda bir setirde goşar./b> direktiwany, soňra Nginx-i täze modullar bilen täzeden düzüň.

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

3. Portage täze dörän Nginx gutarandan soň, http daemony başlaň we brauzeriňizi http:// localhost ugrukdyryp barlaň.

2-nji ädim: PHP guruň

4. Nginx serweri bilen PHP dinamiki web programmirleme dilini ulanmak üçin, fpm we beýleki möhüm PHP goşmak bilen PHP-FastCGI Prosess Manager ( FPM ) guruň. Portage USE baýdaklaryndaky giňeltmeler we Apache giňeltmesini aýyrýandygyňyza göz ýetiriň.

# 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. PHP-FPM başlamazdan ozal hyzmat konfigurasiýa faýlynda käbir üýtgeşmeler ulanylmaly. php-fpm konfigurasiýa faýly açyň we aşakdaky üýtgeşmeleri giriziň.

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

Şuňa meňzeş aşakdaky görkezmeleri tapyň we ulanmaň.

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. PHP-FPM konfigurasiýa faýly redaktirlenenden soň, PHP-FPM gündelik faýl rugsatlaryny üýtgediň we hyzmaty başlaň.

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

PHP-FPM hyzmaty başlasa-da, Nginx PHP şlýuzasy bilen aragatnaşyk gurup bilmeýär, şonuň üçin Nginx konfigurasiýa faýllarynda käbir üýtgeşmeler edilmeli.

3-nji ädim: Nginx konfigurasiýalaryny redaktirläň

7. Nginx deslapky şablon konfigurasiýa faýly diňe ýerlihost üçin esasy HTTP rozetkasyny üpjün edýär. Bu häsiýeti üýtgetmek we Wirtual Hostlary işletmek üçin /etc/nginx/ ýolunda ýerleşýän nginx.conf faýly açyň we aşakdaky konfigurasiýalary düzüň.

# nano /etc/nginx/nginx.conf

Localerlihost-a gabat gelýän we 127.0.0.1 IP adresini diňleýän ilkinji serwer blokuny tapyň we ähli sözlerini aşakdaky skrinshotdaky ýaly öwüň.

Faýly entek ýapmaň we iň aşaky tarapa geçmäň we iň soňky egrilen ýaýlary ýapmazdan ozal aşakdaky jümläni goşuň \}\.

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

8. Ondan soň saýtlar bilen işleýän we saýtlar elýeterli dörediň (ulanylmaýan wirtual hostlar üçin) Nginx kataloglaryny we HTTP we HTTPS protokollarynda ýerlihost üçin konfigurasiýa faýllaryny dörediň.

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

“Localhost” üçin aşakdaky faýl konfigurasiýasyny dörediň.

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

Aşakdaky faýl mazmunyny goşuň.

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

SSL bilen ýerlihost üçin aşakdaky konfigurasiýa faýly dörediň.

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

Aşakdaky faýl mazmunyny goşuň.

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. Indi Nginx Wirtual Hostlary işjeňleşdirmek ýa-da öçürmek üçin buýruk hökmünde işleýän ulgam ýerine ýetirip boljak ýolda (PATH gabyk üýtgeýjisi) iki skript döretmegiň wagty geldi.

n2ensite atly ilkinji Baş skriptini dörediň, bu wirtual Hostlar konfigurasiýa faýllaryny saýtlar elýeterli dan saýtlar bilen işleýän .

# nano /usr/local/bin/n2eniste

Aşakdaky faýl mazmunyny goşuň.

#!/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. Soňra n2dissite atly ikinji skript dörediň, bu aşakdaky mazmun bilen saýtlar bilen işleýän Nginx ýolundan görkezilen işjeň Wirtual Hostlary ýok eder.

# nano /usr/local/bin/n2dissite

Aşakdaky mazmuny goşuň.

#!/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. Baş skriptleri redaktirläniňizden soň, ýerine ýetiriş rugsatlaryny goşuň we ýerlihost Wirtual Hostlary işjeňleşdiriň - .conf giňeltmesiz Wirtual Host konfigurasiýa faýlyň adyny ulanyň, soňra üýtgeşmeler girizmek üçin Nginx we PHP-FPM hyzmatlaryny täzeden açyň.

# 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. Konfigurasiýalary barlamak üçin web faýllary (/var/www/localhost/htdocs ) üçin ýerlihost başlangyç kök ýolunda PHP maglumat faýly dörediň we brauzeriňizi https:/localhost/info .php ýa-da http://localhost/info.php .

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

“Localhost Wirtual Hosts” konfigurasiýa faýllaryny şablon we Nginx n2enmod we n2dismod ulanyp, indi islän web sahypaňyzy aňsatlyk bilen goşup bilersiňiz, emma internet üçin DNS görkezijileriniň bardygyna göz ýetiriň - web serweri bilen baglanyşyk ýa-da ulgam host faýlynda ýerli ýazgylary ulanyň.

4-nji ädim: MySQL/MariaDB + PhpMyAdmin guruň

MySQL üçin MySQL maglumat bazasyny we PhpMyAdmin web interfeýsini gurmak üçin, Gentoo-da LAMP gurmakda görkezilen prosedurany ulanyň.

13. Munuň öwezine MySQL-iň ýerine çalyşýan MariaDB-ni ulanmak isleseňiz, baýdaklary ulanyň almak we gurmak üçin aşakdaky buýruklary ulanyň.

# emerge -pv mariadb
# emerge --ask mariadb

MySQL bilen paket gapma-garşylygy ýüze çykan halatynda Portage package.accept.keywords -a aşakdaky setirleri goşuň.

# 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.

# service mysql start
# mysql_secure_installation

15. Onuň işleýşini barlamak we çykyş buýrugy bilen goýmak üçin mysql -u root -p buýrugyny ulanyp, MySQL maglumat bazasyna giriň.

# mysql -u root -p

MariaDB > show databases;
MariaDB > exit;

16. MySQL buýruk setiri bilen gaty gowy däl bolsaňyz. Aşakdaky buýruklary ýerine ýetirip, PhpMyAdmin Web frontendini guruň.

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

17. PhpMyAdmin gurnamagy tamamlandan soň, nusga konfigurasiýa faýly esasynda konfigurasiýa faýly dörediň, tötänleýin setir bilen blowfish_secret parol sözüni üýtgediň, soňra /usr/share/webapps/phpmyadmin/-den simwoliki baglanyşyk dörediň. phpmyadmin_version_number/htdocs/ PhpMyAdmin web interfeýsine girmek isleýän wirtual hostlaryň resminama kök ýoluna.

# 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. PhpMyAdmin web interfeýsi arkaly MySQL maglumat bazasyna girmek üçin brauzer açyň we aşakdaky URL adresini ulanyň https:/localhost/phpmyadmin .

19. Iň soňky ädim, bütin ulgam boýunça hyzmatlary işjeňleşdirmek, gaýtadan açylandan soň awtomatiki başlamak.

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

Indi web hosting üçin iň az gurşaw gurnaýarys, diňe HTML, JavaScript we PHP dinamiki döredilen sahypalary ulanýan bolsaňyz we SSL web sahypalary gerek däl bolsa, ýokardaky konfigurasiýa siziň üçin kanagatlanarly bolmaly.