Instaliranje LEMP-a (Linux, Nginx, MySQL/MariaDB, PHP/PHP-FPM i PhpMyAdmin) u Gentoo Linux


Gentoo je jedna od najbržih distribucija Linuxa zbog svoje orijentacije na izvoru i svojim programom za upravljanje softverom – Portage – pruža određene alate potrebne za izgradnju kompletne platforme za web programere koja deluje i radi veoma brzo i takođe ima visok stepen prilagođavanja.

Ova tema će vas provesti kroz proces instalacije korak po korak za izgradnju kompletne platforme Web okruženja sa LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin) i uz pomoć na USE zastavice koje obezbeđuje Portage Package Management, koji nudi skup funkcionalnosti paketa u procesu kompilacije – moduli ili postavke potrebne za web platformu, u velikoj meri će podesiti konfiguracije servera.

Zahtjevi

  1. Gentoo instalacija sa ojačanim profilom za server okrenut prema Internetu – Gentoo vodič za instalaciju.
  2. Mreža konfigurirana sa statičkom IP adresom.

Korak 1: Instalirajte Nginx web server

1. Prije nego što pokušate nastaviti s instalacijom Nginxa, provjerite je li vaša NIC konfigurirana sa statičkom IP adresom i provjerite jesu li Portage izvori i vaš sistem ažurirani.

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

2. Nakon završetka procesa ažuriranja, nastavite sa instalacijom Nginxa odabirom željenih postavki i modula tako što ćete odjeknuti Nginx USE zastavice u Portage make.conf fajl . Prvo navedite Nginx zadane instalacione module tako što ćete pokrenuti sljedeću naredbu.

emerge -pv nginx

Za detaljne informacije o modulima (USE zastavice za pakete) koristite naredbu equery.

equery uses nginx

Zatim instalirajte Nginx sa sljedećom naredbom.

emerge --ask nginx

Ako su vam potrebni dodatni moduli (WebDAV, fancyindex, GeoIP, itd.) osim onih zadanih, sa kojima će Nginx kompajlirati, dodajte ih sve u jednu liniju na Portage make.conf fajl sa NGINX_MODULES_HTTP direktivu, a zatim ponovo kompajlirajte Nginx sa novim modulima.

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

3. Nakon što Portage završi sa razvojem Nginxa, pokrenite http demon i potvrdite ga usmjeravanjem vašeg pretraživača na http://localhost.

Korak 2: Instalirajte PHP

4. Da biste koristili PHP dinamički web programski jezik sa Nginx serverom, instalirajte PHP-FastCGI Process Manager (FPM) dodavanjem fpm i druge važne PHP ekstenzije na Portageu KORISTITE zastavice i pobrinite se da uklonite Apache ekstenziju.

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. Prije pokretanja PHP-FPM-a potrebno je primijeniti neke promjene na konfiguracijski fajl usluge. Otvorite php-fpm konfiguracionu datoteku i napravite sljedeće promjene.

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

Pronađite i dekomentirajte sljedeće direktive da izgledaju ovako.

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. Nakon što je PHP-FPM konfiguracijski fajl uređen, promijenite dozvole PHP-FPM datoteke dnevnika i pokrenite uslugu.

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

Čak i ako je PHP-FPM servis pokrenut, Nginx ne može komunicirati sa PHP gateway-om, tako da je potrebno izvršiti neke promjene na Nginx konfiguracijskim datotekama.

Korak 3: Uredite Nginx konfiguracije

7. Nginx zadani predložak konfiguracijski fajl samo pruža osnovni HTTP socket samo za localhost. Da promijenite ovo ponašanje i omogućite virtuelne hostove, otvorite datoteku nginx.conf koja se nalazi na /etc/nginx/ putanji i napravite sljedeće konfiguracije.

nano /etc/nginx/nginx.conf

Pronađite prvi blok server koji odgovara lokalnom hostu i sluša na IP adresi 127.0.0.1 i preporučite svim njegovim izjavama da izgledaju kao na slici ispod.

Nemojte još zatvarati datoteku i pomaknite se na sam dno i dodajte sljedeću izjavu prije zadnjeg zatvaranja vitičastih zagrada “ } “.

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

8. Zatim kreirajte omogućene web lokacije i dostupne web lokacije (za neiskorištene virtuelne hostove) Nginx direktorije i konfiguracijske datoteke za localhost na HTTP i HTTPS protokolima .

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

Kreirajte sljedeću konfiguraciju datoteke za localhost.

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

Dodajte sadržaj sljedeće datoteke.

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

Za localhost sa SSL kreirajte sljedeću konfiguracijsku datoteku.

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

Dodajte sadržaj sljedeće datoteke.

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. Sada je vrijeme da kreirate dvije skripte na izvršnoj putanji sistema (` PATH shell varijabla), koje djeluju kao naredbe za aktiviranje ili onemogućavanje Nginx virtuelnih hostova.

Kreirajte prvu Bash skriptu pod nazivom n2ensite koja će omogućiti konfiguracijske datoteke virtualnih hostova kreiranjem simboličke veze između specificiranih hostova od dostupnih lokacija do omogućenih web lokacija.

nano /usr/local/bin/n2eniste

Dodajte sadržaj sljedeće datoteke.

#!/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. Zatim kreirajte drugu skriptu pod nazivom n2dissite, koja će obrisati navedene aktivne virtuelne hostove sa omogućene lokacije Nginx putanje sa sljedećim sadržajem.

nano /usr/local/bin/n2dissite

Dodajte sljedeći sadržaj.

#!/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. Nakon završetka uređivanja Bash skripti, dodajte dozvole za izvršavanje i aktivirajte virtualne hostove lokalnog hosta – koristite naziv konfiguracijske datoteke virtualnog hosta bez ekstenzije .conf, a zatim ponovo pokrenite Nginx i PHP-FPM usluge da primenite promene.

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. Da biste testirali konfiguracije, kreirajte PHP info datoteku na defaultnoj root putanji lokalnog hosta za web datoteke (/var/www/localhost/htdocs) i preusmjerite svoj preglednik na https://localhost/info.php ili http://localhost/info.php.

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

Koristeći konfiguracijske datoteke localhost Virtual Hosts kao predloške i Nginx n2enmod i n2dismod, sada možete lako dodati onoliko web lokacija koliko želite, ali uvjerite se da imate važeće DNS pokazivače za internet -okrenuti web server ili koristiti unose lokalno na sistem hosts fajl.

Korak 4: Instalirajte MySQL/MariaDB + PhpMyAdmin

Za instaliranje MySQL baze podataka i PhpMyAdmin Web interfejsa za MySQL koristite istu proceduru prikazanu na Instaliranje LAMP-a na Gentoo.

13. Zauzvrat, ako želite koristiti MariaDB, zamjenu za MySQL, koristite sljedeće komande da dobijete USE zastavice i instalirate ga.

emerge -pv mariadb
emerge --ask mariadb

U slučaju da dobijete konflikt paketa sa MySQL-om, dodajte sljedeće linije u 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. Nakon što je MySQL baza podataka instalirana, pokrenite uslugu i osigurajte je pomoću mysql_secure_installation (promijenite root lozinku, onemogućite root prijavu izvan lokalnog hosta, uklonite anonimnu korisničku/testnu bazu podataka).

service mysql start
mysql_secure_installation

15. Unesite MySQL bazu podataka koristeći komandu mysql -u root -p da testirate njenu funkcionalnost i ostavite je sa exit komandom.

mysql -u root -p

MariaDB > show databases;
MariaDB > exit;

16. Ako niste previše dobri sa MySQL komandnom linijom. instalirajte PhpMyAdmin Web frontend izvršavanjem sljedećih naredbi.

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

17. Nakon što PhpMyAdmin završi instalaciju, kreirajte konfiguracijsku datoteku na osnovu uzorka konfiguracijske datoteke, promijenite blowfish_secret pristupnu frazu nasumičnim nizom, a zatim kreirajte simboličku vezu sa /usr /share/webapps/phpmyadmin/phpmyadmin_version_number/htdocs/ do root putanje dokumenta virtuelnih hostova kojoj želite da pristupite PhpMyAdmin web interfejsu.

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. Da pristupite MySQL bazi podataka preko PhpMyAdmin Web interfejsa, otvorite pretraživač i koristite sljedeću URL adresu https://localhost/phpmyadmin.

19. Posljednji korak je omogućavanje usluga širom sistema, da se automatski počnu nakon ponovnog pokretanja.

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

Sada imamo minimalno podešavanje okruženja za web hosting, a ako koristite samo HTML, JavaScript i PHP dinamički generirane stranice i nisu vam potrebne SSL web stranice, gornja konfiguracija bi trebala biti zadovoljavajuća za vas.