Installéiere LEMP (Linux, Nginx, MySQL/MariaDB, PHP/PHP-FPM a PhpMyAdmin) an Gentoo Linux


Gentoo ass eng vun de schnellsten Linux Verdeelung wéinst senger Build aus Quellen Orientéierung a bitt duerch säi Software Management Programm - Portage - gewësse Tools déi néideg sinn fir eng komplett Webentwéckler Plattform ze bauen déi ganz séier handelt a funktionnéiert an, och, huet en héije Grad vun Personnalisatioun.

Dëst Thema wäert Iech duerch e Schrëtt fir Schrëtt Installatiounsprozess huelen fir eng komplett Webëmfeldplattform ze bauen mat LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin), a mat der Hëllef op USE Fändelen vun Portage Package Management zur Verfügung gestallt, déi e Set vu Package-Funktionalitéit am Kompiléierungsprozess ubitt - Moduler oder Astellunge fir eng Webplattform néideg, wäerten d'Serverkonfiguratiounen héich tweaken.

  1. Gentoo Installation with a Hardened Profile for an Internet-faced Server – Gentoo Installation Guide.
  2. Netzwierk konfiguréiert mat enger statescher IP Adress.

Schrëtt 1: Installéieren Nginx Web Server

1. Ier Dir probéiert mat der Nginx-Installatioun weiderzemaachen, vergewëssert Iech datt Ären NIC mat enger statescher IP Adress konfiguréiert ass a gitt sécher datt Portage Quellen an Äre System aktuell sinn.

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

2. Nodeems den Update-Prozess fäerdeg ass, fuert weider mat der Nginx-Installatioun andeems Dir déi gewënschte Astellungen a Moduler auswielt andeems Dir Nginx USE Fändelen op Portage make.conf Datei echo. Éischt Lëscht Nginx Standardinstallatiounsmoduler andeems Dir de folgende Kommando ausféiert.

# emerge -pv nginx

Fir detailléiert Modulinformatioun (BENOTZT Fändelen fir Packagen) benotzt Equery Kommando.

# equery uses nginx

Installéiert dann Nginx mam folgendem Kommando.

# emerge --ask nginx

Wann Dir extra Moduler braucht (WebDAV, Fancyindex, GeoIP, etc) nieft Standarden, mat deenen Nginx kompiléiert, fügen se all op enger eenzeger Zeil op Portage make.conf Datei mat NGINX_MODULES_HTTP Direktiv, da kompiléiert Nginx mat neie Moduler.

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

3. Nodeems Portage fäerdeg ass mat Nginx opzekommen, start http Daemon a verifizéiert et andeems Dir Äre Browser op http://localhost dirigéiert.

Schrëtt 2: PHP installéieren

4. Fir PHP dynamesch Webprogramméierungssprooch mat Nginx Server ze benotzen, installéiere PHP-FastCGI Process Manager (FPM) andeems Dir fpm an aner wichteg PHP bäidréit Extensiounen op Portage BENOTZEN Fändelen a vergewëssert Iech datt Dir Apache Extensioun läscht.

# 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. Ier Dir PHP-FPM starten, mussen e puer Ännerungen op d'Konfiguratiounsdatei vum Service applizéiert ginn. Öffnen php-fpm Konfiguratiounsdatei a maacht déi folgend Ännerungen.

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

Fannt an decommentéiert déi folgend Direktiven fir esou ze kucken.

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. No der PHP-FPM Konfiguratiounsdatei ass et geännert, ännert d'PHP-FPM Log Datei Permissiounen a start de Service.

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

Och wann de PHP-FPM Service gestart ass, kann Nginx net mat PHP Gateway kommunizéieren, also musse e puer Ännerungen op Nginx Konfiguratiounsdateien gemaach ginn.

Schrëtt 3: Nginx Konfiguratiounen änneren

7. Nginx Standard Schabloun Konfiguratiounsdatei bitt just eng Basis HTTP Socket fir localhost nëmmen. Fir dëst Verhalen z'änneren an Virtual Hosts z'aktivéieren, öffnen nginx.conf Datei op /etc/nginx/ Wee a maacht déi folgend Konfiguratiounen.

# nano /etc/nginx/nginx.conf

Situéiert den éischte Server Block deen dem localhost entsprécht a lauschtert op 127.0.0.1 IP Adress a luewen all seng Aussoen aus wéi am Screenshot hei drënner.

Schéckt d'Datei nach net zou a réckelt bis ganz ënnen a füügt déi folgend Ausso vir, ier d'lescht Curly Klameren zoumaachen \ } \.

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

8. Als nächst erstellt Site-aktivéiert an Site-verfügbar (fir onbenotzt Virtuelle Hosts) Nginx Verzeichnungen a Konfiguratiounsdateien fir localhost op HTTP an HTTPS Protokoller.

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

Erstellt déi folgend Dateikonfiguratioun fir localhost.

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

Füügt de folgenden Dateiinhalt.

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

Fir localhost mat SSL erstellt déi folgend Konfiguratiounsdatei.

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

Füügt de folgenden Dateiinhalt.

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. Elo ass et Zäit fir zwee Scripten op engem System ausführbare Wee (PATH Shell Variabel) ze kreéieren, déi als Kommandoe wierkt fir Nginx Virtual Hosts z'aktivéieren oder auszeschalten.

Erstellt den éischte Bash Skript mam Numm n2ensite deen Virtual Hosts Konfiguratiounsdateien aktivéiert andeems en e symbolesche Link tëscht spezifizéierte Hosten vun Site-available op Site-enabled erstellt. >.

# nano /usr/local/bin/n2eniste

Füügt de folgenden Dateiinhalt.

#!/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. Erstellt dann den zweeten Skript mam Numm n2dissite, deen spezifizéiert aktive Virtuelle Hosten aus Site-aktivéiert Nginx Wee mat dem folgenden Inhalt läschen.

# nano /usr/local/bin/n2dissite

Füügt de folgenden Inhalt.

#!/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. Nodeems Dir d'Editioun vu Bash Scripten ofgeschloss hutt, d'Ausféierungsrechter anzeginn an d'localhost Virtual Hosts aktivéieren - benotzt den Virtual Host Konfiguratiounsdatei Numm ouni .conf Extensioun, da restart Nginx a PHP-FPM Servicer fir Ännerungen z'applizéieren.

# 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. Fir Konfiguratiounen ze testen erstellt eng PHP Infodatei op localhost Standard Root Wee fir Webdateien (/var/www/localhost/htdocs) a redirect Äre Browser op https://localhost/info .php oder http://localhost/info.php.

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

Mat localhost Virtual Hosts Konfiguratiounsdateien als Templates an Nginx n2enmod an n2dismod kënnt Dir einfach esou vill Websäiten addéieren wéi Dir wëllt, awer sécherstellen datt Dir gëlteg DNS Pointer fir en Internet hutt -konfrontéiert Webserver oder benotzt Entréen lokal op Systemhostdatei.

Schrëtt 4: Install MySQL/MariaDB + PhpMyAdmin

Fir MySQL Datebank an PhpMyAdmin Web Interface fir MySQL z'installéieren benotzt déi selwecht Prozedur, déi op Installéiere vun LAMP op Gentoo presentéiert gëtt.

13. Am Géigesaz wann Dir MariaDB benotze wëllt, Drop-in Ersatz fir MySQL, benotzt déi folgend Kommandoen fir USE Fändelen ze kréien an ze installéieren.

# emerge -pv mariadb
# emerge --ask mariadb

Am Fall wou Dir e Package Konflikt mat MySQL kritt, füügt déi folgend Zeilen op 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. Nodeems d'MySQL-Datebank installéiert ass, starten Service a séchert et mat mysql_secure_installation (änneren Root Passwuert, deaktivéiert Root Login ausserhalb lokalhost, läschen anonym Benotzer/Test Datebank).

# service mysql start
# mysql_secure_installation

15. Gitt MySQL Datebank benotzt, mysql -u root -p Kommando fir seng Funktionalitéit ze testen an et mat exit Kommando ze loossen.

# mysql -u root -p

MariaDB > show databases;
MariaDB > exit;

16. Wann Dir net ze gutt mat MySQL Kommando Linn. installéiere PhpMyAdmin Web Frontend andeems Dir déi folgend Kommandoen ausféiert.

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

17. Nodeems de PhpMyAdmin fäerdeg ass mat der Installatioun, erstellt eng Konfiguratiounsdatei op Basis vun der Konfiguratiounsdatei, ännert blowfish_secret Passphrase mat enger zoufälleger String, erstellt dann e symbolesche Link vun /usr/share/webapps/phpmyadmin/ phpmyadmin_version_number/htdocs/ op Virtual Hosts Dokument root Wee Dir wëllt Zougang zu PhpMyAdmin Web Interface.

# 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. Fir Zougang zu MySQL Datebank iwwer PhpMyAdmin Web Interface, öffnen e Browser a benotzt déi folgend URL Adress https://localhost/phpmyadmin.

19. De leschte Schrëtt ass d'Servicer System-breet z'aktivéieren, fir automatesch nom Restart ze starten.

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

Elo hu mir e minimalen Ëmfeld Setup fir Webhosting, a wann Dir nëmmen HTML, JavaScript a PHP dynamesch generéiert Säiten benotzt an Dir braucht keng SSL Websäiten, da sollt d'Konfiguratioun hei uewen zefriddestellend fir Iech sinn.