Εγκατάσταση LEMP (Linux, Nginx, MySQL/MariaDB, PHP/PHP-FPM και PhpMyAdmin) στο Gentoo Linux


Το Gentoo είναι μία από τις ταχύτερες διανομές Linux λόγω της κατασκευής του από προσανατολισμό πηγών και παρέχει μέσω του προγράμματος διαχείρισης λογισμικού του – Portage – ορισμένα εργαλεία που απαιτούνται για τη δημιουργία μιας ολοκληρωμένης πλατφόρμας προγραμματιστών ιστού που δρα και λειτουργεί πολύ γρήγορα και, επίσης, έχει υψηλό βαθμό προσαρμογής.

Αυτό το θέμα θα σας οδηγήσει σε μια διαδικασία εγκατάστασης βήμα προς βήμα για τη δημιουργία μιας πλήρους πλατφόρμας περιβάλλοντος Web με LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin) και με τη βοήθεια στο ΧΡΗΣΗ σημαιών που παρέχονται από το Portage Package Management, το οποίο προσφέρει ένα σύνολο λειτουργιών πακέτων στη διαδικασία μεταγλώττισης – μονάδες ή ρυθμίσεις που απαιτούνται για μια πλατφόρμα web, θα τροποποιήσουν πολύ τις διαμορφώσεις του διακομιστή.

Απαιτήσεις

  1. Εγκατάσταση Gentoo με σκληρυμένο προφίλ για διακομιστή που αντιμετωπίζει το Διαδίκτυο – Οδηγός εγκατάστασης Gentoo.
  2. Δίκτυο που έχει διαμορφωθεί με στατική διεύθυνση IP.

Βήμα 1: Εγκαταστήστε τον διακομιστή Web Nginx

1. Πριν επιχειρήσετε να συνεχίσετε με την εγκατάσταση του Nginx, βεβαιωθείτε ότι το NIC σας έχει διαμορφωθεί με Στατική διεύθυνση IP και βεβαιωθείτε ότι οι πηγές Portage και το σύστημά σας είναι ενημερωμένα.

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

2. Μετά την ολοκλήρωση της διαδικασίας ενημέρωσης, προχωρήστε στην εγκατάσταση του Nginx επιλέγοντας τις προτιμώμενες ρυθμίσεις και λειτουργικές μονάδες επαναλαμβάνοντας Σημαίες χρήσης Nginx στο αρχείο Portage make.conf . Πρώτα απαριθμήστε τις προεπιλεγμένες μονάδες εγκατάστασης Nginx εκτελώντας την ακόλουθη εντολή.

emerge -pv nginx

Για λεπτομερείς πληροφορίες λειτουργικών μονάδων (USE flags για πακέτα) χρησιμοποιήστε την εντολή equery.

equery uses nginx

Στη συνέχεια εγκαταστήστε το Nginx με την ακόλουθη εντολή.

emerge --ask nginx

Εάν χρειάζεστε επιπλέον μονάδες (WebDAV, fancyindex, GeoIP, κ.λπ.) εκτός από τις προεπιλεγμένες, με τις οποίες θα μεταγλωττίσει το Nginx, προσθέστε τις όλες σε μία γραμμή στο αρχείο Portage make.conf με NGINX_MODULES_HTTP και στη συνέχεια μεταγλωττίστε ξανά το Nginx με νέες ενότητες.

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

3. Αφού το Portage ολοκληρώσει την εμφάνιση του Nginx, ξεκινήστε το http daemon και επαληθεύστε το κατευθύνοντας το πρόγραμμα περιήγησής σας στο http://localhost.

Βήμα 2: Εγκαταστήστε την PHP

4. Για να χρησιμοποιήσετε τη δυναμική γλώσσα προγραμματισμού PHP με τον διακομιστή Nginx, εγκαταστήστε το PHP-FastCGI Process Manager (FPM) προσθέτοντας fpm και άλλες σημαντικές επεκτάσεις PHP στο Portage ΧΡΗΣΙΜΟΠΟΙΗΣΤΕ σημαίες και βεβαιωθείτε ότι έχετε αφαιρέσει την επέκταση 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. Πριν ξεκινήσετε το PHP-FPM, πρέπει να εφαρμοστούν ορισμένες αλλαγές στο αρχείο διαμόρφωσης της υπηρεσίας. Ανοίξτε το αρχείο διαμόρφωσης php-fpm και κάντε τις ακόλουθες αλλαγές.

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

Βρείτε και αφαιρέστε το σχόλιο των παρακάτω οδηγιών για να φαίνονται έτσι.

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. Μετά την επεξεργασία του αρχείου διαμόρφωσης PHP-FPM, αλλάξτε τα δικαιώματα του αρχείου καταγραφής PHP-FPM και ξεκινήστε την υπηρεσία.

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

Ακόμα κι αν ξεκινήσει η υπηρεσία PHP-FPM, το Nginx δεν μπορεί να επικοινωνήσει με την πύλη PHP, επομένως, πρέπει να γίνουν κάποιες αλλαγές στα αρχεία διαμόρφωσης Nginx.

Βήμα 3: Επεξεργασία διαμορφώσεων Nginx

7. Το προεπιλεγμένο αρχείο διαμόρφωσης προτύπου Nginx παρέχει απλώς μια βασική υποδοχή HTTP μόνο για localhost. Για να αλλάξετε αυτήν τη συμπεριφορά και να ενεργοποιήσετε τους εικονικούς κεντρικούς υπολογιστές, ανοίξτε το αρχείο nginx.conf που βρίσκεται στη διαδρομή /etc/nginx/ και κάντε τις ακόλουθες διαμορφώσεις.

nano /etc/nginx/nginx.conf

Εντοπίστε το πρώτο μπλοκ διακομιστή που αντιστοιχεί στον localhost και ακούει στη διεύθυνση IP 127.0.0.1 και προτείνετε όλες οι δηλώσεις του να μοιάζουν με το παρακάτω στιγμιότυπο οθόνης.

Μην κλείσετε ακόμα το αρχείο και μετακινηθείτε στο κάτω μέρος και προσθέστε την ακόλουθη δήλωση πριν κλείσετε τα τελευταία σγουρά άγκιστρα “ } “.

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

8. Στη συνέχεια δημιουργήστε ιστοτόπους με δυνατότητα ενεργοποίησης και διαθέσιμους ιστότοπους (για μη χρησιμοποιημένους εικονικούς κεντρικούς υπολογιστές) Nginx καταλόγους και αρχεία διαμόρφωσης για τον localhost σε πρωτόκολλα HTTP και HTTPS .

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

Δημιουργήστε την ακόλουθη διαμόρφωση αρχείου για τον localhost.

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

Προσθέστε το ακόλουθο περιεχόμενο αρχείου.

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

Για localhost με SSL δημιουργήστε το ακόλουθο αρχείο ρυθμίσεων.

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

Προσθέστε το ακόλουθο περιεχόμενο αρχείου.

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. Τώρα είναι ώρα να δημιουργήσετε δύο σενάρια σε μια εκτελέσιμη διαδρομή συστήματος (` μεταβλητή κελύφους PATH), η οποία λειτουργεί ως εντολές για την ενεργοποίηση ή απενεργοποίηση των εικονικών κεντρικών υπολογιστών Nginx.

Δημιουργήστε το πρώτο σενάριο Bash με το όνομα n2ensite που θα ενεργοποιήσει τα αρχεία διαμόρφωσης Virtual Hosts δημιουργώντας μια συμβολική σύνδεση μεταξύ καθορισμένων κεντρικών υπολογιστών από sites-available σε sites-enabled.

nano /usr/local/bin/n2eniste

Προσθέστε το ακόλουθο περιεχόμενο αρχείου.

#!/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. Στη συνέχεια, δημιουργήστε το δεύτερο σενάριο που ονομάζεται n2dissite, το οποίο θα διαγράψει καθορισμένους ενεργούς εικονικούς κεντρικούς υπολογιστές από τη ενεργοποιημένη από ιστότοπους διαδρομή Nginx με το ακόλουθο περιεχόμενο.

nano /usr/local/bin/n2dissite

Προσθέστε το ακόλουθο περιεχόμενο.

#!/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. Αφού ολοκληρώσετε την επεξεργασία σεναρίων Bash, προσθέστε δικαιώματα εκτέλεσης και ενεργοποιήστε τους εικονικούς κεντρικούς υπολογιστές localhost – χρησιμοποιήστε το όνομα αρχείου διαμόρφωσης Virtual Host χωρίς επέκταση .conf και, στη συνέχεια, επανεκκινήστε τις υπηρεσίες Nginx και PHP-FPM για την εφαρμογή αλλαγών.

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. Για να δοκιμάσετε διαμορφώσεις, δημιουργήστε ένα αρχείο πληροφοριών PHP στην προεπιλεγμένη διαδρομή ρίζας του localhost για αρχεία ιστού (/var/www/localhost/htdocs) και ανακατευθύνετε το πρόγραμμα περιήγησής σας στο https://localhost/info.php ή http://localhost/info.php.

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

Χρησιμοποιώντας αρχεία διαμόρφωσης localhost Virtual Hosts ως πρότυπα και Nginx n2enmod και n2dismod μπορείτε εύκολα τώρα να προσθέσετε όσους ιστότοπους θέλετε, αλλά βεβαιωθείτε ότι έχετε έγκυρους δείκτες DNS για ένα Διαδίκτυο - αντιμετωπίζει τον διακομιστή ιστού ή χρησιμοποιήστε καταχωρήσεις τοπικά στο αρχείο κεντρικών υπολογιστών συστήματος.

Βήμα 4: Εγκαταστήστε το MySQL/MariaDB + PhpMyAdmin

Για να εγκαταστήσετε τη βάση δεδομένων MySQL και τη διεπαφή Web PhpMyAdmin για MySQL χρησιμοποιήστε την ίδια διαδικασία που παρουσιάζεται στην Εγκατάσταση LAMP στο Gentoo.

13. Σε αντάλλαγμα, εάν θέλετε να χρησιμοποιήσετε το MariaDB, drop-in αντικατάσταση για MySQL, χρησιμοποιήστε τις ακόλουθες εντολές για να λάβετε ΧΡΗΣΗ σημαιών και να το εγκαταστήσετε.

emerge -pv mariadb
emerge --ask mariadb

Σε περίπτωση που λάβετε διένεξη πακέτου με τη MySQL προσθέστε τις ακόλουθες γραμμές στο 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. Αφού εγκατασταθεί η βάση δεδομένων MySQL, ξεκινήστε την υπηρεσία και ασφαλίστε την χρησιμοποιώντας mysql_secure_installation (αλλαγή κωδικού πρόσβασης root, απενεργοποίηση της σύνδεσης root εκτός localhost, κατάργηση ανώνυμου χρήστη/δοκιμαστική βάση δεδομένων).

service mysql start
mysql_secure_installation

15. Εισαγάγετε τη βάση δεδομένων MySQL χρησιμοποιώντας την εντολή mysql -u root -p για να ελέγξετε τη λειτουργικότητά της και αφήστε την με την εντολή exit.

mysql -u root -p

MariaDB > show databases;
MariaDB > exit;

16. Εάν δεν είστε πολύ καλοί με τη γραμμή εντολών MySQL. εγκαταστήστε το PhpMyAdmin Web frontend εκτελώντας τις ακόλουθες εντολές.

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

17. Αφού ολοκληρώσετε την εγκατάσταση του PhpMyAdmin, δημιουργήστε ένα αρχείο διαμόρφωσης με βάση το δείγμα αρχείου διαμόρφωσης, αλλάξτε τη φράση πρόσβασης blowfish_secret με μια τυχαία συμβολοσειρά και, στη συνέχεια, δημιουργήστε έναν συμβολικό σύνδεσμο από το /usr /share/webapps/phpmyadmin/phpmyadmin_version_number/htdocs/ στη ριζική διαδρομή εγγράφου Virtual Hosts στην οποία θέλετε να αποκτήσετε πρόσβαση στη διεπαφή ιστού 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. Για πρόσβαση στη βάση δεδομένων MySQL μέσω της διεπαφής Ιστού PhpMyAdmin, ανοίξτε ένα πρόγραμμα περιήγησης και χρησιμοποιήστε την ακόλουθη διεύθυνση URL https://localhost/phpmyadmin.

19. Το τελευταίο βήμα είναι να ενεργοποιήσετε τις υπηρεσίες σε όλο το σύστημα, ώστε να ξεκινούν αυτόματα μετά την επανεκκίνηση.

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

Τώρα έχουμε μια ελάχιστη ρύθμιση περιβάλλοντος για φιλοξενία Ιστού και εάν χρησιμοποιείτε μόνο σελίδες HTML, JavaScript και PHP που δημιουργούνται δυναμικά και δεν χρειάζεστε ιστότοπους SSL, η παραπάνω διαμόρφωση θα πρέπει να είναι ικανοποιητική για εσάς.