Pag-instalar sa LEMP (Linux, Nginx, MySQL/MariaDB, PHP/PHP-FPM ug PhpMyAdmin) sa Gentoo Linux


Ang Gentoo usa sa labing paspas nga pag-apod-apod sa Linux tungod sa pagtukod niini gikan sa oryentasyon sa mga gigikanan ug gihatag pinaagi sa programa sa pagdumala sa software niini - Portage - pipila nga mga himan nga gikinahanglan aron makahimo usa ka kompleto nga platform sa web developer nga molihok ug molihok nga paspas ug, usab, adunay taas nga lebel sa pag-customize.

Kini nga hilisgutan magdala kanimo sa usa ka lakang sa proseso sa pag-instalar alang sa pagtukod sa usa ka kompleto nga plataporma sa Web environment nga adunay LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin), ug uban sa tabang sa GAMIT ang mga banderanga gihatag sa Portage Package Management, nga nagtanyag sa usa ka set sa package functionality sa proseso sa pag-compile - mga module o mga setting nga gikinahanglan alang sa usa ka web platform, makaayo pag-ayo sa mga configuration sa server.

  1. Pag-install sa Gentoo nga adunay Gigahi nga Profile para sa server nga nag-atubang sa Internet – Giya sa Pag-install sa Gentoo.
  2. Network nga gi-configure gamit ang static nga IP address.

Lakang 1: I-install ang Nginx Web Server

1. Sa dili pa mosulay sa pagpadayon sa pag-instalar sa Nginx siguroa nga ang imong NIC na-configure sa usa ka Static IP Address ug siguroha nga ang mga tinubdan sa Portage ug ang imong sistema mao ang pinakabag-o.

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

2. Pagkahuman sa proseso sa pag-update, ipadayon ang pag-install sa Nginx pinaagi sa pagpili sa gusto nga mga setting ug module pinaagi sa pag-echo sa Nginx USE flags sa Portage make.conf file. Una nga ilista ang Nginx default installation modules pinaagi sa pagpadagan sa mosunod nga command.

# emerge -pv nginx

Para sa detalyadong impormasyon sa modules (USE flags for packages) gamita ang equery command.

# equery uses nginx

Dayon i-install ang Nginx gamit ang mosunod nga sugo.

# emerge --ask nginx

Kung kinahanglan nimo ang dugang nga mga module (WebDAV, fancyindex, GeoIP, etc) gawas sa mga default, nga i-compile ni Nginx, idugang silang tanan sa usa ka linya sa Portage make.conf file nga adunay NGINX_MODULES_HTTP direktiba, unya i-recompile ang Nginx gamit ang bag-ong mga module.

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

3. Human mahuman sa Portage ang emerging Nginx, sugdi ang http daemon ug i-verify kini pinaagi sa pagdirekta sa imong browser sa http://localhost.

Lakang 2: I-install ang PHP

4. Aron magamit ang PHP dynamic nga web programming language uban sa Nginx server, i-install ang PHP-FastCGI Process Manager (FPM) pinaagi sa pagdugang fpm ug uban pang importanteng PHP Mga extension sa Portage USE nga mga bandila ug siguroha nga imong tangtangon ang Apache extension.

# 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. Sa dili pa magsugod ang PHP-FPM pipila ka mga kausaban ang kinahanglang i-apply sa service configuration file. Ablihi ang php-fpm configuration file ug himoa ang mosunod nga mga kausaban.

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

Pangitaa ug i-uncomment ang mosunod nga mga direktiba aron ingon niini ang hitsura.

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. Human sa PHP-FPM configuration file kini ma-edit, usba ang PHP-FPM log file permissions ug sugdi ang serbisyo.

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

Bisan kung gisugdan ang serbisyo sa PHP-FPM, ang Nginx dili makakomunikar sa gateway sa PHP, busa, kinahanglan nga buhaton ang pipila nga mga pagbag-o sa mga file sa pag-configure sa Nginx.

Lakang 3: I-edit ang Nginx Configurations

7. Nginx default template configuration file naghatag lang ug basic HTTP socket para sa localhost lang. Aron mausab kini nga kinaiya ug makapahimo sa Virtual Hosts, ablihi ang nginx.conf file nga nahimutang sa /etc/nginx/ nga dalan ug himoa ang mosunod nga mga configuration.

# nano /etc/nginx/nginx.conf

Pangitaa ang unang server block nga katumbas sa localhost ug paminaw sa 127.0.0.1 IP address ug dayega ang tanan nga mga pahayag niini nga tan-awon sama sa screenshot sa ubos.

Ayaw pa isira ang file ug balhin sa pinakaubos ug idugang ang mosunod nga pahayag sa dili pa ang katapusan nga pagsira sa mga curly braces \ } \.

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

8. Sunod paghimo sites-enabled ug sites-available ( alang sa wala magamit nga Virtual Hosts) Nginx nga mga direktoryo ug mga configuration file alang sa localhost sa HTTP ug HTTPS nga mga protocol.

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

Paghimo sa mosunod nga file configuration alang sa localhost.

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

Idugang ang mosunod nga sulod sa file.

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

Alang sa localhost nga adunay SSL paghimo sa mosunod nga configuration file.

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

Idugang ang mosunod nga sulod sa file.

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. Karon na ang panahon sa paghimo og duha ka mga script sa usa ka sistema nga executable nga agianan (PATH shell variable), nga naglihok isip mga sugo sa pagpaaktibo o pag-disable sa Nginx Virtual Hosts.

Paghimo sa unang Bash script nga ginganlan og n2ensite nga makapahimo sa Virtual Hosts configuration files pinaagi sa paghimo og simbolikong sumpay tali sa gipiho nga mga host gikan sa sites-available ngadto sa sites-enabled.

# nano /usr/local/bin/n2eniste

Idugang ang mosunod nga sulod sa file.

#!/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. Dayon paghimo sa ikaduhang script nga gitawag og n2dissite, nga magtangtang sa espesipikong aktibo nga Virtual Hosts gikan sa sites-enabled Nginx path nga adunay mosunod nga sulod.

# nano /usr/local/bin/n2dissite

Idugang ang mosunod nga sulod.

#!/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. Human mahuman ang pag-edit sa mga script sa Bash, idugang ang mga permiso sa pagpatuman ug i-aktibo ang localhost Virtual Hosts - gamita ang ngalan sa file sa configuration sa Virtual Host nga walay .conf extension, unya i-restart ang Nginx ug PHP-FPM nga mga serbisyo aron magamit ang mga pagbag-o.

# 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. Para sulayan ang mga configuration paghimo ug PHP info file sa localhost default root path para sa mga web files (/var/www/localhost/htdocs) ug i-redirect ang imong browser sa https://localhost/info .php o http://localhost/info.php.

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

Pinaagi sa paggamit sa localhost Virtual Hosts configuration files isip templates ug Nginx n2enmod ug n2dismod dali ka na makadugang sa daghang mga website nga gusto nimo, apan siguroha nga ikaw adunay balido nga DNS pointers alang sa usa ka Internet -pag-atubang sa web server o paggamit sa mga entri sa lokal nga sistema sa mga host file.

Lakang 4: I-install ang MySQL/MariaDB + PhpMyAdmin

Aron ma-install ang MySQL database ug PhpMyAdmin Web interface para sa MySQL gamita ang parehas nga pamaagi nga gipresentar sa Pag-install sa LAMP sa Gentoo.

13. Agig balos kon gusto nimong gamiton ang MariaDB, drop-in nga puli sa MySQL, gamita ang mosunod nga mga sugo aron makakuha og USE flags ug i-install kini.

# emerge -pv mariadb
# emerge --ask mariadb

Sa higayon nga makakuha ka og package nga panagsumpaki sa MySQL idugang ang mosunod nga mga linya sa 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. Human ma-install ang MySQL database sugdi ang serbisyo ug i-secure kini gamit ang mysql_secure_installation (ilisan ang root password, i-disable ang root login sa gawas sa localhost, kuhaa ang anonymous user/test database).

# service mysql start
# mysql_secure_installation

15. Isulod ang MySQL database gamit ang, mysql -u root -p nga sugo aron sulayan ang gamit niini ug ibilin kini sa exit nga sugo.

# mysql -u root -p

MariaDB > show databases;
MariaDB > exit;

16. Kung dili ka kaayo maayo sa MySQL command line. i-install ang PhpMyAdmin Web frontend pinaagi sa pagpatuman sa mosunod nga mga sugo.

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

17. Human ma-install ang PhpMyAdmin, paghimo ug configuration file base sa sample config file, usba ang blowfish_secret passphrase gamit ang random string, dayon paghimo ug simbolikong link gikan sa /usr/share/webapps/phpmyadmin/ phpmyadmin_version_number/htdocs/ sa Virtual Hosts document root path nga gusto nimong ma-access ang 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. Aron ma-access ang MySQL database pinaagi sa PhpMyAdmin Web interface, ablihi ang browser ug gamita ang mosunod nga URL address https://localhost/phpmyadmin.

19. Ang katapusang lakang mao ang pagpagana sa mga serbisyo sa tibuok sistema, nga awtomatikong magsugod human sa reboot.

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

Karon kami adunay gamay nga pag-setup sa palibot alang sa Web hosting, ug kung mogamit ka lamang sa HTML, JavaScript ug PHP nga dinamikong namugna nga mga panid ug wala nimo kinahanglana ang mga website sa SSL, ang configuration sa ibabaw kinahanglan nga makatagbaw alang kanimo.