Vyhledávání na webu

Instalace LEMP (Linux, Nginx, MySQL/MariaDB, PHP/PHP-FPM a PhpMyAdmin) v Gentoo Linuxu


Gentoo je jednou z nejrychlejších linuxových distribucí díky své orientaci na zdroje a poskytuje svým programem pro správu softwaru – Portage – určité nástroje potřebné k vybudování kompletní webové vývojářské platformy, která působí a funguje velmi rychle a má také vysoký stupeň přizpůsobení.

Toto téma vás provede krok za krokem instalačním procesem pro vytvoření kompletní platformy webového prostředí s LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin) as pomocí na Příznaky USE poskytované Portage Package Management, který nabízí sadu funkcí balíčků v procesu kompilace – moduly nebo nastavení potřebná pro webovou platformu, značně vyladí konfiguraci serveru.

Požadavky

  1. Instalace Gentoo se zesíleným profilem pro server připojený k Internetu – Průvodce instalací Gentoo.
  2. Síť nakonfigurovaná se statickou IP adresou.

Krok 1: Nainstalujte webový server Nginx

1. Než se pokusíte pokračovat v instalaci Nginx, ujistěte se, že vaše NIC byla nakonfigurována se statickou IP adresou a ujistěte se, že zdroje Portage a váš systém jsou aktuální.

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

2. Po dokončení procesu aktualizace pokračujte v instalaci Nginx výběrem preferovaných nastavení a modulů ozvěnou příznaků Nginx USE do souboru Portage make.conf . Nejprve vypište výchozí instalační moduly Nginx spuštěním následujícího příkazu.

emerge -pv nginx

Pro podrobné informace o modulech (USE příznaky pro balíčky) použijte příkaz equery.

equery uses nginx

Poté nainstalujte Nginx pomocí následujícího příkazu.

emerge --ask nginx

Pokud potřebujete další moduly (WebDAV, fancyindex, GeoIP atd.) kromě výchozích modulů, se kterými bude Nginx kompilovat, připojte je všechny na jeden řádek v souboru Portage make.conf s NGINX_MODULES_HTTP a poté znovu zkompilujte Nginx s novými moduly.

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

3. Poté, co Portage dokončí vznikající Nginx, spusťte http démona a ověřte jej přesměrováním vašeho prohlížeče na http://localhost.

Krok 2: Nainstalujte PHP

4. Chcete-li používat dynamický webový programovací jazyk PHP se serverem Nginx, nainstalujte PHP-FastCGI Process Manager (FPM) přidáním fpm a další důležitá rozšíření PHP na USE příznaky Portage a ujistěte se, že jste odstranili rozšíření 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. Před spuštěním PHP-FPM je třeba provést některé změny v konfiguračním souboru služby. Otevřete konfigurační soubor php-fpm a proveďte následující změny.

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

Najděte a odkomentujte následující direktivy, aby vypadaly takto.

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. Po úpravě konfiguračního souboru PHP-FPM změňte oprávnění souboru protokolu PHP-FPM a spusťte službu.

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

I když je služba PHP-FPM spuštěna, Nginx nemůže komunikovat s bránou PHP, takže je třeba provést některé změny v konfiguračních souborech Nginx.

Krok 3: Upravte konfigurace Nginx

7. Výchozí konfigurační soubor šablony Nginx poskytuje pouze základní HTTP socket pouze pro localhost. Chcete-li toto chování změnit a povolit virtuální hostitele, otevřete soubor nginx.conf umístěný na cestě /etc/nginx/ a proveďte následující konfigurace.

nano /etc/nginx/nginx.conf

Najděte první blok serveru, který odpovídá localhost a naslouchá na IP adrese 127.0.0.1 a doporučte, aby všechna jeho prohlášení vypadala jako na obrázku níže.

Soubor zatím nezavírejte a přejděte úplně dolů a před posledním uzavřením složených závorek přidejte následující příkaz “ } “.

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

8. Dále vytvořte sites-enabled a sites-available (pro nepoužívané virtuální hostitele) Nginx adresáře a konfigurační soubory pro localhost na protokolech HTTP a HTTPS .

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

Vytvořte následující konfiguraci souboru pro localhost.

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

Přidejte následující obsah souboru.

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

Pro localhost s SSL vytvořte následující konfigurační soubor.

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

Přidejte následující obsah souboru.

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. Nyní je čas vytvořit dva skripty na cestě spustitelného systému (proměnná shellu ` PATH), které fungují jako příkazy pro aktivaci nebo deaktivaci virtuálních hostitelů Nginx.

Vytvořte první Bash skript s názvem n2ensite, který povolí konfigurační soubory virtuálních hostitelů vytvořením symbolického propojení mezi určenými hostiteli z sites-available na sites-enabled.

nano /usr/local/bin/n2eniste

Přidejte následující obsah souboru.

#!/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. Poté vytvořte druhý skript s názvem n2dissite, který odstraní zadané aktivní virtuální hostitele z cesty Nginx s povolenými weby s následujícím obsahem.

nano /usr/local/bin/n2dissite

Přidejte následující obsah.

#!/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. Po dokončení úprav skriptů Bash přidejte oprávnění ke spuštění a aktivujte virtuální hostitele localhost – použijte název konfiguračního souboru virtuálního hostitele bez přípony .conf, poté restartujte služby Nginx a PHP-FPM aplikovat změny.

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. Chcete-li otestovat konfigurace, vytvořte informační soubor PHP na výchozí kořenové cestě pro webové soubory na localhost (/var/www/localhost/htdocs) a přesměrujte svůj prohlížeč na https://localhost/info.php nebo http://localhost/info.php.

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

Pomocí konfiguračních souborů localhost Virtual Hosts jako šablon a Nginx n2enmod a n2dismod můžete nyní snadno přidat libovolný počet webových stránek, ale ujistěte se, že máte platné DNS ukazatele pro internet -facing web server nebo použít položky lokálně v souboru hostitelů systému.

Krok 4: Nainstalujte MySQL/MariaDB + PhpMyAdmin

Pro instalaci databáze MySQL a webového rozhraní PhpMyAdmin pro MySQL použijte stejný postup, jaký je uveden v části Instalace LAMP na Gentoo.

13. Na oplátku, pokud chcete používat MariaDB, náhradní náhradu za MySQL, použijte následující příkazy k získání příznaků USE a instalaci.

emerge -pv mariadb
emerge --ask mariadb

V případě, že dojde ke konfliktu balíčku s MySQL, přidejte následující řádky do 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. Po instalaci databáze MySQL spusťte službu a zabezpečte ji pomocí mysql_secure_installation (změňte heslo uživatele root, zakažte přihlášení uživatele root mimo localhost, odstraňte anonymního uživatele/testovací databázi).

service mysql start
mysql_secure_installation

15. Vstupte do databáze MySQL pomocí příkazu mysql -u root -p pro otestování její funkčnosti a opusťte ji příkazem exit.

mysql -u root -p

MariaDB > show databases;
MariaDB > exit;

16. Pokud nejste příliš dobří s příkazovým řádkem MySQL. nainstalujte webové rozhraní PhpMyAdmin spuštěním následujících příkazů.

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

17. Po dokončení instalace PhpMyAdmin vytvořte konfigurační soubor založený na ukázkovém konfiguračním souboru, změňte heslo blowfish_secret náhodným řetězcem a poté vytvořte symbolický odkaz z /usr /share/webapps/phpmyadmin/phpmyadmin_version_number/htdocs/ ke kořenové cestě dokumentu virtuálních hostitelů, ke kterému chcete přistupovat k webovému rozhraní 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. Pro přístup k databázi MySQL přes webové rozhraní PhpMyAdmin otevřete prohlížeč a použijte následující URL adresu https://localhost/phpmyadmin.

19. Posledním krokem je povolit služby v celém systému, aby se automaticky spouštěly po restartu.

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

Nyní máme minimální nastavení prostředí pro webhosting, a pokud používáte pouze dynamicky generované stránky HTML, JavaScript a PHP a nepotřebujete weby SSL, výše uvedená konfigurace by pro vás měla být uspokojivá.