Fifi LEMP (Linux, Nginx, MySQL/MariaDB, PHP/PHP-FPM ati PhpMyAdmin) sori Gentoo Linux


Gentoo jẹ ọkan ninu pinpin Lainos ti o yara julọ nitori ikole rẹ lati iṣalaye awọn orisun ati pese nipasẹ eto iṣakoso sọfitiwia rẹ - Portage - awọn irinṣẹ kan nilo lati kọ ipilẹ ẹrọ olukọ wẹẹbu kan ti o ṣiṣẹ ati ṣiṣẹ ni iyara pupọ ati, tun, ni iwọn giga ti isọdi.

Koko yii yoo mu ọ nipasẹ igbesẹ nipasẹ ilana fifi sori ẹrọ igbesẹ fun sisẹ pẹpẹ ayika ayika Wẹẹbu pipe pẹlu LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin), ati pẹlu iranlọwọ lori Awọn asia LILO ti a pese nipasẹ Portage Package Management, eyiti o funni ni ṣeto ti iṣẹ-ṣiṣe package lori ilana akopọ - awọn modulu tabi awọn eto ti o nilo fun pẹpẹ wẹẹbu kan, yoo ṣe atunṣe awọn atunto olupin ni gíga.

  1. Fifi sori ẹrọ Gentoo pẹlu Profaili lile fun olupin ti nkọju si Intanẹẹti - Itọsọna fifi sori ẹrọ Gentoo.
  2. Nẹtiwọọki ti tunto pẹlu adiresi IP aimi kan.

Igbesẹ 1: Fi Nginx Web Server sii

1. Ṣaaju ki o to gbiyanju lati tẹsiwaju pẹlu fifi sori Nginx rii daju pe NIC rẹ ti ni atunto pẹlu Adirẹsi IP Static ati rii daju pe awọn orisun Portage ati eto rẹ ti wa ni imudojuiwọn.

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

2. Lẹhin ti ilana imudojuiwọn ti pari, tẹsiwaju pẹlu fifi sori Nginx nipa yiyan awọn eto ti o fẹran ati awọn modulu nipasẹ iwoyi Nginx USE Flag si Portage make.conf faili. Akọkọ akojọ Awọn modulu fifi sori ẹrọ aiyipada Nginx nipa ṣiṣe pipaṣẹ atẹle.

# emerge -pv nginx

Fun alaye awọn modulu alaye (LILO awọn asia fun awọn idii) lo pipaṣẹ dogba .

# equery uses nginx

Lẹhinna fi Nginx sii pẹlu aṣẹ atẹle.

# emerge --ask nginx

Ti o ba nilo awọn modulu afikun (WebDAV, fancyindex, GeoIP, ati be be lo) pẹlu awọn aiyipada, ti Nginx yoo ṣajọ pẹlu, fi gbogbo wọn kun lori ila kan lori Portage make.conf faili pẹlu NGINX_MODULES_HTTP itọsọna, lẹhinna tun ṣe akojọ Nginx pẹlu awọn modulu tuntun.

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

3. Lẹhin ti Portage pari Nginx ti o nwaye, bẹrẹ http daemon ki o ṣayẹwo rẹ nipa didari aṣawakiri rẹ si http:// localhost .

Igbesẹ 2: Fi PHP sii

4. Lati lo ede siseto wẹẹbu ti o ni agbara PHP pẹlu olupin Nginx, fi sori ẹrọ PHP-FastCGI Oluṣakoso ilana ( FPM ) nipa fifafikun fpm ati PHP pataki miiran Awọn amugbooro lori Awọn asia LILO Portage ati rii daju pe o yọ itẹsiwaju Apache kuro.

# 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. Ṣaaju ki o to bẹrẹ PHP-FPM diẹ ninu awọn ayipada nilo lati lo si faili iṣeto iṣẹ. Ṣii faili php-fpm ki o si ṣe awọn ayipada wọnyi.

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

Wa ati ṣoki awọn itọsọna wọnyi lati dabi eleyi.

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. Lẹhin ti faili iṣeto PHP-FPM o ti ṣatunkọ, yi awọn igbanilaaye faili PHP-FPM wọle ki o bẹrẹ iṣẹ naa.

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

Paapa ti iṣẹ PHP-FPM ti bẹrẹ, Nginx ko le ṣe ibasọrọ pẹlu ẹnu-ọna PHP, nitorinaa, awọn ayipada kan nilo lati ṣee ṣe lori awọn faili iṣeto Nginx.

Igbesẹ 3: Ṣatunkọ Awọn atunto Nginx

7. Faili iṣeto awoṣe awoṣe aiyipada Nginx kan pese iho ipilẹ HTTP fun localhost nikan. Lati yi ihuwasi yii pada ki o jẹki Awọn ọmọ-ogun Foju, ṣii nginx.conf faili ti o wa lori ọna /etc/nginx/ ki o ṣe awọn atunto wọnyi.

# nano /etc/nginx/nginx.conf

Wa ibi-ipamọ akọkọ olupin eyiti o baamu si localhost ati ki o tẹtisi lori 127.0.0.1 adiresi IP ki o yìn gbogbo awọn alaye rẹ lati dabi ni sikirinifoto ni isalẹ.

Maṣe pa faili naa sibẹ ki o gbe si isalẹ pupọ ki o ṣafikun alaye ti o tẹle ṣaaju ṣaaju pipari awọn àmúró amure \"} \" .

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

8. Nigbamii ṣẹda awọn aaye ti o ṣiṣẹ ati awọn aaye wa- (fun awọn alejo gbigba Fojulo ti a ko lo) Awọn ilana Nginx ati awọn faili iṣeto fun agbegbe agbegbe lori awọn ilana HTTP ati HTTPS.

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

Ṣẹda iṣeto faili atẹle fun localhost.

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

Ṣafikun akoonu faili atẹle.

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

Fun localhost pẹlu SSL ṣẹda faili iṣeto atẹle.

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

Ṣafikun akoonu faili atẹle.

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. Nisisiyi o to akoko lati ṣẹda awọn iwe afọwọkọ meji lori ọna ṣiṣe ti eto (oniyipada ikarahun $PATH), ti o ṣe bi awọn aṣẹ lati muu ṣiṣẹ tabi mu Awọn ogun Nginx Virtual ṣiṣẹ.

Ṣẹda iwe afọwọkọ Bash akọkọ ti a npè ni n2ensite eyi ti yoo mu awọn faili iṣeto Awọn ogun foju ṣiṣẹ nipa ṣiṣẹda ọna asopọ aami kan laarin awọn ogun ti o ṣalaye lati awọn aaye wa- si awọn aaye ti o ṣiṣẹ

# nano /usr/local/bin/n2eniste

Ṣafikun akoonu faili atẹle.

#!/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. Lẹhinna ṣẹda iwe afọwọkọ keji ti a pe ni n2dissite , ti yoo paarẹ Awọn ogun ti n ṣalaye ti nṣiṣe lọwọ pato lati awọn aaye ti o ṣiṣẹ Nginx ọna pẹlu akoonu atẹle.

# nano /usr/local/bin/n2dissite

Ṣafikun akoonu atẹle.

#!/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. Lẹhin ti pari ṣiṣatunkọ awọn iwe afọwọkọ Bash, ṣafikun awọn igbanilaaye ipaniyan ki o muu ṣiṣẹ Awọn alejo gbigba agbegbe localhost - lo orukọ faili iṣeto Oluṣakoso Foju laisi itẹsiwaju .conf , lẹhinna tun bẹrẹ Nginx ati awọn iṣẹ PHP-FPM lati lo awọn ayipada.

# 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. Lati ṣe idanwo awọn atunto ṣẹda faili alaye PHP lori ọna root aiyipada localhost fun awọn faili wẹẹbu (/var/www/localhost/htdocs ) ati ṣe atunṣe aṣàwákiri rẹ lori https:/localhost/info .php tabi http://localhost/info.php .

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

Lilo awọn faili iṣeto Awọn alejo ti agbegbe localhost bi awọn awoṣe ati Nginx n2enmod ati n2dismod o le ni rọọrun bayi ṣafikun ọpọlọpọ awọn oju opo wẹẹbu bi o ṣe fẹ, ṣugbọn rii daju pe o ni awọn itọka DNS to wulo fun Intanẹẹti kan -iṣẹju olupin ayelujara tabi lo awọn titẹ sii ni agbegbe lori faili awọn ọmọ-ogun eto.

Igbesẹ 4: Fi MySQL/MariaDB + PhpMyAdmin sori ẹrọ

Lati fi sori ẹrọ ibi ipamọ data MySQL ati oju opo wẹẹbu PhpMyAdmin fun MySQL lo ilana kanna ti a gbekalẹ lori Fifi atupa lori Gentoo.

13. Ni ipadabọ ti o ba fẹ lo MariaDB, rirọpo-silẹ fun MySQL, lo awọn ofin wọnyi lati gba LILO awọn asia ki o fi sii.

# emerge -pv mariadb
# emerge --ask mariadb

Ni ọran ti o ba ni ariyanjiyan package pẹlu MySQL ṣafikun awọn ila wọnyi si 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. Lẹhin ti a ti fi ipilẹ data MySQL sori iṣẹ ibere ati ni aabo rẹ ni lilo mysql_secure_installation (yi ọrọ igbaniwọle pada, mu wiwọle root kuro ni ita localhost, yọ olumulo alailorukọ/ibi ipamọ data).

# service mysql start
# mysql_secure_installation

15. Tẹ ibi ipamọ data MySQL sii nipa lilo, mysql -u root -p pipaṣẹ lati ṣe idanwo iṣẹ rẹ ki o fi silẹ pẹlu pipaṣẹ ijade .

# mysql -u root -p

MariaDB > show databases;
MariaDB > exit;

16. Ti o ko ba dara pupọ pẹlu laini aṣẹ MySQL. fi sori ẹrọ iwaju oju opo wẹẹbu PhpMyAdmin nipa ṣiṣe awọn ofin wọnyi.

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

17. Lẹhin ti PhpMyAdmin ti pari fifi sori ẹrọ, ṣẹda faili iṣeto kan ti o da lori faili atunto apẹẹrẹ, yipada blowfish_secret ọrọ igbaniwọle pẹlu okun alailowaya, lẹhinna ṣẹda ọna asopọ aami lati /usr/share/webapps/phpmyadmin/phpmyadmin_version_number/htdocs/ si Foju ogun awọn ọna iwe root ọna ti o fẹ lati wọle si oju opo wẹẹbu 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. Lati wọle si ibi ipamọ data MySQL nipasẹ oju opo wẹẹbu PhpMyAdmin, ṣii ẹrọ lilọ kiri ayelujara kan ki o lo adirẹsi URL atẹle https:/localhost/phpmyadmin .

19. Igbese ikẹhin ni lati jẹki awọn iṣẹ eto-jakejado, lati bẹrẹ laifọwọyi lẹhin atunbere.

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

Bayi a ni iṣeto ayika ti o kere ju fun gbigbalejo Wẹẹbu, ati pe ti o ba lo HTML, JavaScript ati awọn oju-iwe ti o ṣẹda ti PHP ti o ni agbara nikan ati pe o ko nilo awọn oju opo wẹẹbu SSL, iṣeto ni loke yẹ ki o jẹ itẹlọrun fun ọ.