NGINX
Ένα γρήγορο μάθημα vim
PHP-FPM
MariaDB
Αυτός ο οδηγός θα σας δείξει πώς να εγκαταστήσετε και να ρυθμίσετε σωστά μια "εναλλακτική" στοίβα LAMP στο Debian 8 χρησιμοποιώντας NGINX, PHP Fast Process Manager και MariaDB.
NGINX
Το NGINX είναι "πρώτα αντίστροφος διακομιστής μεσολάβησης, δεύτερος διακομιστής ιστού". Είναι μια δημοφιλής και αναπτυσσόμενη εναλλακτική λύση του Apache, προσφέροντας μεγαλύτερη ευελιξία και καλύτερη απόδοση σε πολλές περιπτώσεις. Σε αυτό το σεμινάριο, θα το χρησιμοποιήσουμε ως διακομιστή ιστού μας.
Ενεργοποιήστε τον αγαπημένο σας πελάτη SSH και συνδεθείτε στον διακομιστή σας. Για χρήστες Windows, το "PuTTY" είναι ένας δωρεάν και ελαφρύς πελάτης SSH. Οι χρήστες Linux και Mac μπορούν να χρησιμοποιήσουν το τερματικό που περιλαμβάνεται από προεπιλογή στο λειτουργικό τους σύστημα. Για αυτό το σεμινάριο, θα υποθέσουμε ότι έχετε συνδεθεί στον διακομιστή σας ως χρήστης "root".
Για αρχή, ας βεβαιωθούμε ότι όλα είναι ενημερωμένα. Πληκτρολογήστε τα παρακάτω για έλεγχο και, στη συνέχεια, εγκατάσταση ενημερώσεων.
apt-get update && apt-get upgrade
Θα επεξεργαζόμαστε τα αρχεία διαμόρφωσης στο vim. Το Vim δεν είναι εγκατεστημένο από προεπιλογή, οπότε ας το εγκαταστήσουμε!
apt-get install vim
Τώρα ήρθε η ώρα να εγκαταστήσετε το NGINX. Θα θελήσουμε να εγκαταστήσουμε την πιο πρόσφατη έκδοση του NGINX από το επίσημο αποθετήριο NGINX Debian.
wget http://nginx.org/keys/nginx_signing.key
apt-key add nginx_signing.key
echo 'deb http://nginx.org/packages/debian/ jessie nginx' >> /etc/apt/sources.list
echo 'deb-src http://nginx.org/packages/debian/ jessie nginx' >> /etc/apt/sources.list
apt-get update && apt-get install nginx
Τώρα πρέπει να τροποποιήσουμε λίγο τη διαμόρφωση του NGINX. Μεταβείτε στον κατάλογο διαμόρφωσης.
cd /etc/nginx
Ένα γρήγορο μάθημα vim
Χρησιμοποιήστε τα πλήκτρα βέλους για να πλοηγηθείτε στο έγγραφο κειμένου. Για να ξεκινήσετε να κάνετε επεξεργασίες, πατήστε το κουμπί "εισαγωγή" στο πληκτρολόγιό σας. Εάν το πληκτρολόγιό σας δεν έχει κουμπί εισαγωγής, πατήστε το πλήκτρο "i". Προς το κάτω μέρος του vim θα παρατηρήσετε ότι τώρα λέει "INSERT". Η λειτουργία εισαγωγής θα σας επιτρέψει να διαγράψετε μέσω του backspace ή να εισαγάγετε νέους χαρακτήρες πληκτρολογώντας τους.
Ας τα ανοίξουμε nginx.conf
και ας χαζέψουμε:
vi nginx.conf
Ας αλλάξουμε τον προεπιλεγμένο χρήστη, ας ελέγξουμε τον αριθμό των διεργασιών εργασίας και ας απενεργοποιήσουμε το αρχείο καταγραφής πρόσβασης.
Οι οδηγίες "user" και "worker_processes" βρίσκονται κοντά στην κορυφή. Δοκιμάστε τις παρακάτω τιμές:
Note that you'll want to set "worker_processes" to the number of CPU cores available on your server. In this example, we have 1, which is the NGINX default.
user www-data;
worker_processes 1;
Θα θέλαμε επίσης να απενεργοποιήσουμε το αρχείο καταγραφής πρόσβασης, για λόγους βελτίωσης της απόδοσης I/O. Πλοηγηθείτε προς τα κάτω με τα πλήκτρα βέλους μέχρι να βρείτε το "access_log". Τροποποιήστε το ως εξής:
access_log off;
Και τέλος, θα ρυθμίσουμε το "client_max_body_size" να αντιστοιχεί με κάποιες αλλαγές που έγιναν στην PHP αργότερα. Ας σώσουμε τον κόπο και ας το κάνουμε τώρα. Προσθέστε ακριβώς κάτω από το "access_log":
client_max_body_size 12m;
Όταν ολοκληρώσετε την επεξεργασία, πατήστε "Esc" στο πληκτρολόγιό σας. Το Vim δεν θα λέει πλέον "INSERT" προς το κάτω μέρος του αρχείου.
Για να αποθηκεύσετε τις αλλαγές μας και να κλείσετε το vim, πατήστε την ακόλουθη σειρά πλήκτρων:
SHIFT :(colon)
wq
Press "Enter"
Το παραπάνω vim kung fu θα γράψει τις αλλαγές σας στο δίσκο και θα βγει από το vim, αφήνοντάς σας ξανά στο bash shell.
Τώρα, πρέπει να κάνουμε μια διαμόρφωση συγκεκριμένης τοποθεσίας για το παράδειγμά μας! Θα διαγράψουμε επίσης τα άλλα παραδείγματα διαμορφώσεων. Δοκιμάστε τα εξής:
cd conf.d
rm example_ssl.conf default.conf
vi my_site.conf
Θα κάνουμε μια σύντομη και απλή www.conf
βασισμένη χαλαρά στην προεπιλεγμένη διαμόρφωση NGINX, αλλά με μερικές τροποποιήσεις. Πατήστε το insert και μπορείτε να αντιγράψετε/επικολλήσετε το παρακάτω παράδειγμα.
Don't forget to edit the "root" directive to point to the root directory of your website, and "server_name" to correspond to your domain.
server {
listen 80;
root /path/to/your/website;
index index.php index.html index.htm;
server_name mydomainname.com www.mydomainname.com;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
}
Τώρα τελειώσαμε με την ενότητα διαμόρφωσης NGINX αυτού του σεμιναρίου. Θα επανεκκινήσουμε το NGINX σε λίγο, αμέσως μετά την εγκατάσταση της PHP.
PHP-FPM
Το PHP-FPM είναι το PHP Fast Process Manager. Απαιτείται όταν χρησιμοποιείτε NGINX, επειδή σε αντίθεση με τον Apache, το NGINX δεν εκτελεί την PHP ως λειτουργική μονάδα. Αυτό έγινε για να μειωθεί το αποτύπωμα μνήμης του NGINX. Θυμάστε αυτό το μέρος σχετικά με το ότι το NGINX είναι ένα αντίστροφο διακομιστή μεσολάβησης πρώτα και κύρια; Εδώ είναι όπου αυτό μπαίνει στο παιχνίδι? Τα αιτήματα PHP που αποστέλλονται στο NGINX τροφοδοτούνται στο PHP-FPM για να κάνουν τη βαριά ανύψωση.
Ας εγκαταστήσουμε το PHP-FPM.
apt-get install php5-fpm php5-mysqlnd
Note that depending on what your PHP scripts require, you may have to install other PHP modules not included by default. Popular ones are php5-gd
and php5-mcrypt
. You can install these with the following command.
apt-get install php5-module_name_here
Τώρα που έχουμε εγκαταστήσει το PHP-FPM, θα θέλουμε να κάνουμε μερικές γρήγορες αλλαγές για να βελτιώσουμε την ασφάλεια και τη λειτουργικότητα.
cd /etc/php5/fpm
vi php.ini
Ώρα για άλλο ένα γρήγορο μάθημα vim! Το php.ini
αρχείο είναι απολύτως τεράστιο. Η αναζήτηση για μερικές βασικές τιμές θα διαρκέσει όλη την ημέρα. Αφού λοιπόν ξέρουμε τι ψάχνουμε, θα ψάξουμε. Πληκτρολογήστε τα εξής:
/upload_max_filesize
Αυτό, από προεπιλογή, έχει οριστεί στα 2 megabyte. Εάν θέλετε να επιτρέψετε στους χρήστες να ανεβάζουν αρχεία στις εφαρμογές σας PHP μεγαλύτερα από 2 megabyte, θα πρέπει να το αλλάξετε. Τα 10 εκατομμύρια είναι πιθανώς ένα ασφαλές στοίχημα προς το παρόν, αλλά και υψηλότερες τιμές είναι επίσης αποδεκτές. Αυτή η ρύθμιση θα διαφέρει μεταξύ των διαμορφώσεων. Για λόγους εκμάθησης:
upload_max_filesize = 10M
Ένα ακόμη κραυγαλέο ελάττωμα ασφαλείας. Κάντε κύλιση προς τα κάτω ή ψάξτε. Πρέπει να ενεργοποιήσουμε το "allow_url_fopen" σε "Off". Αυτό θα εμποδίσει την PHP να εκτελεί αρχεία PHP που φιλοξενούνται ΑΠΟΣΤΑΘΜΙΣΕΙΣ, αλλιώς γνωστή ως RFI (Remote File Inclusion). Πολλοί διακομιστές παραβιάζονται με αυτόν τον τρόπο.
allow_url_fopen = Off
Και επειδή αλλάξαμε το "upload_max_filesize", τώρα πρέπει να αλλάξουμε το "post_max_size". Αυτή η τιμή θα πρέπει να είναι λίγο μεγαλύτερη από το "upload_max_filesize", γιατί πρέπει να λάβουμε υπόψη τα γενικά έξοδα που σχετίζονται με τα αιτήματά μας που υποβάλλονται σε επεξεργασία από την PHP.
Ας ψάξουμε άλλη μια φορά με το "/post_max_size".
post_max_size = 12M
Note that you'll have to go back to your NGINX configuration and edit "client_max_body_size" if you decide to go with larger values than these examples for your PHP file sizes.
Αυτά είναι προς το παρόν. Βεβαιωθείτε ότι δεν είστε σε λειτουργία επεξεργασίας πατώντας "Esc". Αποθήκευση και έξοδος από το vim.
SHIFT :(colon)
wq
Press 'Enter'
Η ρύθμιση PHP-FPM έχει ολοκληρωθεί.
MariaDB
Ακόμη και σε έναν κόσμο που κινείται συνεχώς προς το NoSQL ή το MongoDB, μερικοί από εμάς εξακολουθούν να το βρίσκουν πιο εύκολο να παραμείνουν απλώς στη MySQL. Αυτό ισχύει ιδιαίτερα για πολλές εφαρμογές web. Ευτυχώς, υπάρχει τώρα μια σειρά από "drop-in" αντικαταστάσεις για την Oracle MySQL. Το Debian 8 περιλαμβάνει πλέον το δημοφιλές MariaDB. Το MariaDB είναι ένα fork της Oracle MySQL που βασίζεται στην έκδοση 5.5. Η MariaDB, για όλες τις προθέσεις και σκοπούς, αποκαλεί αυτό το MariaDB 10. Θεωρείται ΠΛΗΡΗΣ αντικατάσταση της Oracle MySQL. Σκεφτείτε το ως MySQL στην καρδιά, χωρίς την επωνυμία Oracle και ορισμένες νέες δυνατότητες.
apt-get install mariadb-server
ΣΗΜΑΝΤΙΚΟ: Πρέπει οπωσδήποτε, θετικά, να επιλέξετε έναν ισχυρό κωδικό πρόσβασης root για το MariaDB. Αποθηκεύστε το κάπου ασφαλές. Θα χρειαστεί να το εισαγάγετε δύο φορές κατά την εγκατάσταση του MariaDB.
Ας τροποποιήσουμε ελαφρώς τη διαμόρφωση του MariaDB. Θα απενεργοποιήσουμε την ακρόαση MariaDB μέσω της διεπαφής δικτύου. Αντίθετα, όπως και με το PHP-FPM νωρίτερα, θα παραμείνουμε μόνο σε μια υποδοχή UNIX. Οι περισσότερες εφαρμογές PHP θα πρέπει να υποστηρίζουν τη σύνδεση με τον διακομιστή βάσης δεδομένων μέσω υποδοχής UNIX αντί της διεπαφής τοπικής επαναφοράς.
cd /etc/mysql
vi my.cnf
Αναζητήστε "bind-address = 127.0.0.1". Σχολιάστε αυτή τη γραμμή. Πάνω ή κάτω προσθέστε "παράβλεψη-δικτύωση".
#bind-address = 127.0.0.1
skip-networking
Τελειώσαμε με το MariaDB! Τελικά, μπορεί να θέλετε να τροποποιήσετε τη διαμόρφωση του MariaDB ανάλογα με το εάν θα χρησιμοποιείτε κυρίως τις μηχανές αποθήκευσης MyISAM ή InnoDB, αλλά και για τον αριθμό των πυρήνων CPU και της μνήμης RAM που είναι διαθέσιμες στον διακομιστή σας. Οι προεπιλογές θα μας βάλουν σε λειτουργία εν τω μεταξύ.
Ας επανεκκινήσουμε καθεμία από τις υπηρεσίες για τις οποίες τροποποιήθηκαν τα αρχεία διαμόρφωσης σε αυτό το σεμινάριο.
systemctl restart nginx.service
systemctl restart php5-fpm.service
systemctl restart mysql.service
Αυτό είναι - τελειώσαμε όλοι. Σε αυτό το σημείο, έχετε έναν πλήρως λειτουργικό διακομιστή LNMP ( LEMP ) online!
Αυτός ο οδηγός επρόκειτο να χρησιμεύσει ως γενικός εμπειρικός κανόνας για να ξεκινήσετε με τις παραπάνω υπηρεσίες με ελάχιστες τροποποιήσεις. Για περισσότερες πληροφορίες, διαβάστε την τεκμηρίωση για τα παραπάνω πακέτα. Αν και αυτό το παράδειγμα εγκατάστασης θα πρέπει να λειτουργεί καλά "εκτός από το κουτί", οι προσαρμογές μπορούν και πιθανότατα θα χρειαστεί να γίνουν για να ανταποκρίνονται καλύτερα στις ανάγκες σας.
Προτεινόμενοι τομείς για έρευνα:
- Χρήση και τροποποίηση του ελέγχου cache του NGINX.
- Ρυθμίσεις διαχείρισης εργασιών PHP-FPM "στατικές", "δυναμικές" ή "κατ' απαίτηση".
- Συντονισμός απόδοσης MariaDB για να αξιοποιήσετε στο έπακρο τον διακομιστή της βάσης δεδομένων σας.