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 izrade prema izvorima i pruža svojim programom za upravljanje softverom – Portage – određene alate potrebne za izgradnju potpune platforme za web programere koja djeluje i radi vrlo brzo i, također, ima visok stupanj prilagodbe.

Ova tema će vas provesti kroz postupak instalacije korak po korak za izgradnju cjelovite platforme web okruženja s LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin) i uz pomoć na USE oznake koje pruža Portage Package Management, koji nudi skup funkcionalnosti paketa u procesu kompilacije – moduli ili postavke potrebne za web platformu, uvelike će prilagoditi konfiguracije poslužitelja.

Zahtjevi

  1. Gentoo instalacija s pojačanim profilom za poslužitelj okrenut prema internetu – Vodič za instalaciju Gentooa.
  2. Mreža konfigurirana sa statičkom IP adresom.

Korak 1: Instalirajte Nginx web poslužitelj

1. Prije nego što pokušate nastaviti s instalacijom Nginxa, provjerite je li vaš NIC konfiguriran sa statičkom IP adresom i provjerite jesu li izvori Portagea i vaš sustav ažurni.

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

2. Nakon završetka procesa ažuriranja, nastavite s instalacijom Nginxa odabirom željenih postavki i modula ponavljanjem Nginx USE zastavica u datoteku Portage make.conf . Prvo popišite zadane instalacijske module Nginxa pokretanjem sljedeće naredbe.

emerge -pv nginx

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

equery uses nginx

Zatim instalirajte Nginx sljedećom naredbom.

emerge --ask nginx

Ako trebate dodatne module (WebDAV, fancyindex, GeoIP, itd.) osim zadanih, s kojima će Nginx kompajlirati, dodajte ih sve u jednom retku u Portage make.conf datoteku s NGINX_MODULES_HTTP, zatim ponovno kompajlirajte Nginx s 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 s nastajanjem Nginxa, pokrenite http daemon i potvrdite ga usmjeravanjem svog preglednika na http://localhost.

Korak 2: Instalirajte PHP

4. Za korištenje PHP dinamičkog web programskog jezika s Nginx poslužiteljem, instalirajte PHP-FastCGI Process Manager (FPM) dodavanjem fpm i druge važne PHP ekstenzije na Portage USE oznakama i svakako 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 konfiguracijsku datoteku usluge. Otvorite konfiguracijsku datoteku php-fpm i napravite sljedeće promjene.

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

Pronađite i odkomentirajte 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 konfiguracijska datoteka uređena, promijenite dopuštenja PHP-FPM datoteke zapisnika i pokrenite uslugu.

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

Čak i ako se pokrene PHP-FPM usluga, Nginx ne može komunicirati s PHP pristupnikom, pa je potrebno napraviti neke promjene na Nginx konfiguracijskim datotekama.

Korak 3: Uredite Nginx konfiguracije

7. Konfiguracijska datoteka Nginx zadanog predloška samo pruža osnovnu HTTP utičnicu samo za lokalni host. Da biste promijenili ovo ponašanje i omogućili virtualne hostove, otvorite datoteku nginx.conf koja se nalazi na stazi /etc/nginx/ i izvršite sljedeće konfiguracije.

nano /etc/nginx/nginx.conf

Pronađite prvi blok poslužitelja koji odgovara lokalnom hostu i sluša IP adresu 127.0.0.1 i pohvalite sve njegove izjave da izgledaju kao na snimci zaslona u nastavku.

Nemojte još zatvoriti datoteku i pomaknite se na samo dno i dodajte sljedeću izjavu ispred zadnje zatvorske vitičaste zagrade “ } “.

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

8. Zatim stvorite sites-enabled i sites-available (za nekorištene virtualne hostove) Nginx direktorije i konfiguracijske datoteke za localhost na HTTP i HTTPS protokolima .

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

Napravite sljedeću konfiguraciju datoteke za localhost.

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

Dodajte sljedeći sadržaj 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 lokalni host sa SSL-om stvorite sljedeću konfiguracijsku datoteku.

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

Dodajte sljedeći sadržaj 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 stvorite dvije skripte na izvršnoj stazi sustava (` PATH shell varijabla), koje djeluju kao naredbe za aktiviranje ili onemogućavanje Nginx virtualnih hostova.

Napravite prvu Bash skriptu pod nazivom n2ensite koja će omogućiti konfiguracijske datoteke virtualnih hostova stvaranjem simboličke veze između navedenih hostova od sites-available do sites-enabled.

nano /usr/local/bin/n2eniste

Dodajte sljedeći sadržaj 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 stvorite drugu skriptu pod nazivom n2dissite, koja će izbrisati navedene aktivne virtualne hostove s sites-enabled Nginx staze 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, zatim ponovno pokrenite usluge Nginx i PHP-FPM primijeniti promjene.

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. Za testiranje konfiguracija kreirajte PHP info datoteku na zadanoj korijenskoj stazi 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

Korištenjem konfiguracijskih datoteka localhost Virtual Hosts kao predložaka i Nginx n2enmod i n2dismod sada možete jednostavno dodati onoliko web stranica koliko želite, ali budite sigurni da imate važeće DNS pokazivače za internet -suočen s web poslužiteljem ili koristite unose lokalno u datoteci domaćina sustava.

Korak 4: Instalirajte MySQL/MariaDB + PhpMyAdmin

Za instalaciju MySQL baze podataka i PhpMyAdmin web sučelja za MySQL koristite isti postupak prikazan u Instaliranju LAMP-a na Gentoo.

13. Zauzvrat, ako želite koristiti MariaDB, zamjenu za MySQL, upotrijebite sljedeće naredbe za dobivanje USE oznaka i instalirajte ga.

emerge -pv mariadb
emerge --ask mariadb

U slučaju da dobijete sukob paketa s MySQL-om dodajte sljedeće retke 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 instaliranja MySQL baze podataka pokrenite uslugu i osigurajte je pomoću mysql_secure_installation (promijenite root lozinku, onemogućite root prijavu izvan lokalnog hosta, uklonite anonimnog korisnika/testirajte bazu podataka).

service mysql start
mysql_secure_installation

15. Uđite u MySQL bazu podataka pomoću naredbe mysql -u root -p da testirate njezinu funkcionalnost i napustite je naredbom exit.

mysql -u root -p

MariaDB > show databases;
MariaDB > exit;

16. Ako niste baš dobri s MySQL naredbenim redkom. instalirajte PhpMyAdmin web sučelje 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, stvorite konfiguracijsku datoteku na temelju uzorka konfiguracijske datoteke, promijenite zaporku blowfish_secret nasumičnim nizom, zatim kreirajte simboličku vezu iz /usr /share/webapps/phpmyadmin/phpmyadmin_version_number/htdocs/ do korijenske staze dokumenta Virtual Hosts kojoj želite pristupiti PhpMyAdmin web sučelju.

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. Za pristup MySQL bazi podataka preko PhpMyAdmin web sučelja, otvorite preglednik i koristite sljedeću URL adresu https://localhost/phpmyadmin.

19. Posljednji korak je omogućiti usluge za cijeli sustav, da se automatski pokreću nakon ponovnog pokretanja.

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

Sada imamo minimalnu postavku okruženja za web hosting, a ako koristite samo HTML, JavaScript i PHP dinamički generirane stranice i ne trebate SSL web stranice, gornja konfiguracija bi trebala biti zadovoljavajuća za vas.