Εγκατάσταση LEMP (Nginx, PHP, MySQL με μηχανή MariaDB και PhpMyAdmin) στο Arch Linux


Λόγω του μοντέλου Rolling Release που περιλαμβάνει το λογισμικό αιχμής, το Arch Linux δεν σχεδιάστηκε και αναπτύχθηκε για να λειτουργεί ως διακομιστής για να παρέχει αξιόπιστες υπηρεσίες δικτύου, επειδή απαιτεί επιπλέον χρόνο για συντήρηση, σταθερές αναβαθμίσεις και λογικές διαμορφώσεις αρχείων.

Ωστόσο, επειδή το Arch Linux συνοδεύεται από εγκατάσταση πυρήνα CD με ελάχιστο προεγκατεστημένο λογισμικό, μπορεί να αποτελέσει μια σταθερή βάση εκκίνησης για την εγκατάσταση των περισσότερων από τις δημοφιλείς υπηρεσίες δικτύου σήμερα, συμπεριλαμβανομένων των < b>LEMP ή LAMP, διακομιστής Web Apache, βάσεις δεδομένων Nginx, PHP, SQL, Samba, διακομιστές FTP, BIND και άλλοι, πολλοί από αυτούς παρέχονται από το Arch Επίσημα αποθετήρια Linux και άλλα από το AUR.

Αυτό το σεμινάριο θα καθοδηγήσει στην εγκατάσταση και τη διαμόρφωση της στοίβας LEMP (Nginx, PHP , MySQL με μηχανή MariaDB και PhpMyAdmin) από ένα SSH που χρησιμοποιεί εξ αποστάσεως, το οποίο μπορεί να προσφέρει μια ισχυρή βάση για τη δημιουργία Εφαρμογών Διακομιστή Ιστού.

Απαιτήσεις

Προηγούμενος οδηγός εγκατάστασης του Arch Linux, εκτός από το τελευταίο μέρος για τη δικτύωση με DHCP.

Βήμα 1: Εκχώρηση στατικής IP στη διεπαφή δικτύου

1. Μετά την ελάχιστη εγκατάσταση του βασικού Arch Linux, επανεκκινήστε τον διακομιστή σας, συνδεθείτε με λογαριασμό root ή ισοδύναμο λογαριασμό διαχειριστή sudo και προσδιορίστε τα ονόματα συσκευών NIC του συστήματός σας χρησιμοποιώντας ip link< εντολή.

# ip link

2. Για να εκχωρήσουμε στατικές διαμορφώσεις δικτύου, θα χρησιμοποιήσουμε το πακέτο Netctl για τη διαχείριση των συνδέσεων δικτύου. Αφού αναγνωρίσετε επιτυχώς τα ονόματα Διεπαφές δικτύου αντιγράψτε το πρότυπο αρχείου ethernet-static στη διαδρομή συστήματος netctl και αλλάξτε το όνομά του σε ένα περιγραφικό σχήμα ονοματοδοσίας ( δοκιμάστε να χρησιμοποιήσετε τη συμβολοσειρά static σε συνδυασμό με το όνομα του NIC), εκδίδοντας την ακόλουθη εντολή.

# cp /etc/netctl/examples/ethenet-static  /etc/netctl/static.ens33

3. Το επόμενο βήμα είναι να επεξεργαστείτε αυτό το νέο αρχείο προτύπου αλλάζοντας τις οδηγίες του αρχείου και παρέχοντας τις πραγματικές σας ρυθμίσεις δικτύου (Διασύνδεση, IP/μάσκα δικτύου, πύλη, Broadcast, DNS) όπως στο παρακάτω απόσπασμα.

# nano  /etc/netctl/static.ens33
Description='A basic static ethernet connection for ens33'
Interface=ens33
Connection=ethernet
IP=static
Address=('192.168.1.33/24')
Gateway='192.168.1.1'
Brodcast='192.168.1.255'
DNS=('192.168.1.1' '8.8.8.8')

4. Το επόμενο βήμα είναι να ξεκινήσετε τη σύνδεση δικτύου σας μέσω του εργαλείου συστήματος netctl και να επαληθεύσετε τη συνδεσιμότητα του συστήματός σας εκδίδοντας τις ακόλουθες εντολές.

# netctl start static.ens33
# netctl status static.ens33

5. Εάν έχετε μια ενεργή πράσινη κατάσταση εξόδου, έχετε διαμορφώσει με επιτυχία τη Διεπαφή δικτύου σας και ήρθε η ώρα να την ενεργοποιήσετε αυτόματα σε υπηρεσίες σε όλο το σύστημα. Επίσης, δοκιμάστε το δίκτυό σας εκτελώντας μια εντολή ping σε ένα όνομα τομέα και επίσης, εγκαταστήστε το πακέτο net-tools (το πιο γνωστό χαρακτηριστικό αυτού του πακέτου είναι η εντολή ifconfig που το Arch προγραμματιστές θεωρήθηκαν κάπως καταργημένοι και το αντικατέστησαν με iproute2).

# netctl enable static.ens33
# pacman -S net-tools

6. Τώρα μπορείτε να εκτελέσετε την εντολή ifconfig για να επαληθεύσετε τις ρυθμίσεις Διεπαφές δικτύου και να ελέγξετε εάν όλα εμφανίζονται σωστά και, στη συνέχεια, να κάνετε επανεκκίνηση b> το σύστημά σας για να βεβαιωθείτε ότι όλα είναι στη θέση τους και έχουν ρυθμιστεί σωστά.

# ping linux-console.net

Βήμα 2: Εγκαταστήστε το λογισμικό LEMP

Όπως επισημαίνεται σε αυτό το άρθρο, η εισαγωγή LEMP σημαίνει Linux+Nginx+PHP/PhpMyAdmin+MySQL/MariaDB, η οποία είναι μία από τις πιο ευρέως διαδεδομένες πλατφόρμες εφαρμογών ιστού σήμερα μετά την LAMP (το ίδια στοίβα με τον Apache στην εξίσωση).

7. Προτού εγκαταστήσουμε πραγματικά τη στοίβα LEMP, πρέπει να ενημερώσουμε το σύστημα και, στη συνέχεια, να αποκτήσουμε τον απομακρυσμένο έλεγχο στον διακομιστή Arch Linux. Όπως πιθανότατα γνωρίζετε το OpenSSH είναι ο κύριος υποψήφιος για αυτήν την εργασία, οπότε προχωρήστε και εγκαταστήστε την, ξεκινήστε τον δαίμονα SSH και ενεργοποιήστε τον σε όλο το σύστημα.

$ sudo pacman -Syu
$ sudo pacman –S openssh
$ sudo systemctl start sshd
$ sudo systemctl status sshd
$ sudo systemctl enable sshd

Τώρα είναι ώρα να προχωρήσετε στην εγκατάσταση LEMP. Επειδή αυτό το σεμινάριο προορίζεται να είναι ένας περιεκτικός οδηγός, θα χωρίσω την εγκατάσταση στοίβας LEMP σε μικρά κομμάτια, βήμα προς βήμα.

8. Πρώτα εγκαταστήστε τον Nginx Web Server, μετά ξεκινήστε τον και επαληθεύστε την κατάστασή του εκδίδοντας τις ακόλουθες εντολές.

$ sudo pacman -S nginx
$ sudo systemctl start nginx
$ sudo systemctl status nginx

9. Η επόμενη υπηρεσία που θα εγκατασταθεί είναι η βάση δεδομένων MySQL. Εκδώστε την ακόλουθη εντολή για να εγκαταστήσετε το διακομιστή βάσης δεδομένων MySQL και επιλέξτε τη μηχανή MariaDB και, στη συνέχεια, ξεκινήστε και επαληθεύστε την κατάσταση του δαίμονα.

$ sudo pacman -S mysql
$ sudo systemctl start mysqld
$ sudo systemctl status mysqld

10. Το επόμενο βήμα είναι να παρέχετε ένα εξαιρετικά ασφαλές περιβάλλον για βάσεις δεδομένων MySQL παρέχοντας έναν κωδικό πρόσβασης για τον ριζικό λογαριασμό MySQL, την κατάργηση ανώνυμου λογαριασμού χρήστη, την κατάργηση της δοκιμαστικής βάσης δεδομένων και των λογαριασμών ρίζας που είναι προσβάσιμοι εκτός του localhost. Εκτελέστε την ακόλουθη εντολή για να βελτιώσετε την ασφάλεια MySQL, πατήστε [Enter] για τον τρέχοντα κωδικό πρόσβασης του λογαριασμού root και, στη συνέχεια, απαντήστε Ναι σε όλες τις ερωτήσεις (ρυθμίστε επίσης τον κωδικό πρόσβασης του λογαριασμού root).

$ sudo mysql_secure_installation

Σημείωση: Σε καμία περίπτωση μην συγχέετε τον ριζικό λογαριασμό MySQL με τον ριζικό λογαριασμό συστήματος Linux – είναι δύο διαφορετικά πράγματα – όχι τόσο διαφορετικά, αλλά εκτελούνται σε διαφορετικά επίπεδα.

Για να επαληθεύσετε τη σύνδεση ασφαλείας MySQL στη βάση δεδομένων χρησιμοποιώντας τη σύνταξη της εντολής mysql -u root -p, δώστε τον κωδικό πρόσβασης root και, στη συνέχεια, αφήστε τη βάση δεδομένων με την εντολή exit;.

# mysql -u root -p

11. Τώρα ήρθε η ώρα να εγκαταστήσετε τη γλώσσα δέσμης ενεργειών στην πλευρά του διακομιστή PHP για να μπορέσετε να αναπτύξετε και να εκτελέσετε πολύπλοκες δυναμικές εφαρμογές ιστού, όχι απλώς να εξυπηρετήσετε HTML/CSS κωδικός.

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

Εκδώστε την ακόλουθη γραμμή εντολών για να εγκαταστήσετε την υπηρεσία PHP-FPM και, στη συνέχεια, ξεκινήστε τον δαίμονα και επαληθεύστε την κατάσταση.

$ sudo pacman –S php php-fpm
$ sudo systemctl start php-fpm
$ sudo systemctl status php-fpm

Για να παραθέσετε όλες τις διαθέσιμες μονάδα PHP εκδώστε τις ακόλουθες εντολές.

$ sudo pacman –S php[TAB]
$ sudo pacman –Ss | grep php

12. Ένα από τα τελευταία βήματα είναι η εγκατάσταση του PhpMyAdmin Web Interface για τη βάση δεδομένων MySQL. Εκδώστε την ακόλουθη εντολή για να εγκαταστήσετε το PhpMyAdmin μαζί με την ενότητα που χρειάζεται για την PHP και, στη συνέχεια, δημιουργήστε έναν συμβολικό σύνδεσμο για τη διαδρομή συστήματος PhpMyaAdmin προς την προεπιλεγμένη ριζική διαδρομή Nginx.

$ pacman -S phpmyadmin php-mcrypt
$ sudo ln -s /usr/share/webapps/phpMyAdmin   /usr/share/nginx/html

13. Στη συνέχεια, διαμορφώστε το αρχείο php.ini ώστε να περιλαμβάνει τις απαραίτητες επεκτάσεις που απαιτούνται από την εφαρμογή PhpMyAdmin.

$ sudo nano /etc/php/php.ini

Εντοπίστε με τα πλήκτρα [CTRL+W] και αφαιρέστε το σχόλιο (αφαιρέστε ; στην αρχή της γραμμής) τις ακόλουθες γραμμές.

extension=mysqli.so
extension=mysql.so
extension=mcrypt.so
mysqli.allow_local_infile = On

Στο ίδιο αρχείο εντοπίστε και επεξεργαστείτε την οδηγία open_basedir ώστε να μοιάζει με τους παρακάτω καταλόγους που περιλαμβάνονται.

open_basedir= /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/

14. Το επόμενο βήμα είναι να ενεργοποιήσετε το PHP-FPM FastCGI στην οδηγία Nginx του localhost. Εκδώστε την επόμενη εντολή για τη δημιουργία αντιγράφων ασφαλείας της διαμόρφωσης αρχείου διακομιστή ιστού nginx.conf και, στη συνέχεια, αντικαταστήστε την με το ακόλουθο περιεχόμενο.

$ sudo mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
$ sudo nano /etc/nginx/nginx.conf

Προσθέστε ολόκληρο το παρακάτω περιεχόμενο στο nginx.conf.

#user html;
worker_processes  2;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    gzip  on;

    server {
        listen       80;
        server_name  localhost;
            root   /usr/share/nginx/html;
        charset koi8-r;
        location / {
        index  index.php index.html index.htm;
                                autoindex on;
                                autoindex_exact_size off;
                                autoindex_localtime on;
        }

                                location /phpmyadmin {
        rewrite ^/* /phpMyAdmin last;
    }

 error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }

    location ~ \.php$ {
        #fastcgi_pass 127.0.0.1:9000; (depending on your php-fpm socket configuration)
        fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        include fastcgi.conf;
    }

        location ~ /\.ht {
            deny  all;
        }
    }         
}

15. Αφού ολοκληρωθούν όλες οι διαμορφώσεις αρχείων, το μόνο που χρειάζεται να κάνετε είναι να επανεκκινήσετε τις υπηρεσίες Nginx και PHP-FPM και να υποδείξετε το πρόγραμμα περιήγησής σας σε URL http://localhost/phpmyadmin από τοπικό κόμβο ή http://arch_IP/phpmyadmin από άλλον υπολογιστή.

$ sudo systemctl restart php-fpm
$ sudo systemctl restart nginx

16. Εάν όλα εκτελούνται όπως προβλέπεται, το τελευταίο βήμα είναι να ενεργοποιήσετε το σύστημα LEMP σε όλο το σύστημα με τις ακόλουθες εντολές.

$ sudo systemctl enable php-fpm
$ sudo systemctl enable nginx
$ sudo systemctl enable mysqld

Συγχαρητήρια! Έχετε εγκαταστήσει και διαμορφώσει το LEMP στο Arch Linux και, τώρα, έχετε μια πλήρη δυναμική διεπαφή για να ξεκινήσετε και να αναπτύξετε εφαρμογές ιστού.

Αν και το Arch Linux δεν είναι το καταλληλότερο σύστημα για εκτέλεση σε διακομιστές παραγωγής λόγω του μοντέλου κυλιόμενης κυκλοφορίας προσανατολισμένο στην κοινότητα, μπορεί να είναι μια πολύ γρήγορη και αξιόπιστη πηγή για μικρά μη κρίσιμα περιβάλλοντα παραγωγής.