Πώς να ρυθμίσετε ξεχωριστές ομάδες PHP-FPM στο NGINX
Δημοσιεύθηκε: 15 Φεβρουαρίου 2025 στις 11:49:27 π.μ. UTC
Σε αυτό το άρθρο, εξετάζω τα βήματα διαμόρφωσης που απαιτούνται για την εκτέλεση πολλών ομάδων PHP-FPM και τη σύνδεση του NGINX σε αυτά μέσω του FastCGI, επιτρέποντας τον διαχωρισμό διεργασιών και την απομόνωση μεταξύ εικονικών κεντρικών υπολογιστών.
How to Set Up Separate PHP-FPM Pools in NGINX
Οι πληροφορίες σε αυτήν την ανάρτηση βασίζονται στο NGINX 1.4.6 και το PHP-FPM 5.5.9 που εκτελείται σε Ubuntu Server 14.04 x64. Μπορεί να ισχύει ή να μην ισχύει για άλλες εκδόσεις. (Ενημέρωση: Μπορώ να επιβεβαιώσω ότι από τον Ubuntu Server 24.04, PHP-FPM 8.3 και NGINX 1.24.0, όλες οι οδηγίες σε αυτήν την ανάρτηση εξακολουθούν να λειτουργούν)
Υπάρχουν πολλά πλεονεκτήματα στη ρύθμιση πολλαπλών ομάδων θυγατρικών διεργασιών PHP-FPM αντί να εκτελούνται τα πάντα στην ίδια ομάδα. Η ασφάλεια, ο διαχωρισμός/απομόνωση και η διαχείριση πόρων έρχονται στο μυαλό ως μερικά σημαντικά.
Ανεξάρτητα από το κίνητρό σας, αυτή η ανάρτηση θα σας βοηθήσει να το κάνετε :-)
Μέρος 1 – Ρυθμίστε μια νέα πισίνα PHP-FPM
Αρχικά, πρέπει να εντοπίσετε τον κατάλογο όπου το PHP-FPM αποθηκεύει τις διαμορφώσεις του pool του. Στο Ubuntu 14.04, αυτό είναι /etc/php5/fpm/pool.d από προεπιλογή. Πιθανότατα υπάρχει ήδη ένα αρχείο που ονομάζεται www.conf , το οποίο περιέχει τη διαμόρφωση για την προεπιλεγμένη ομάδα. Εάν δεν έχετε κοιτάξει αυτό το αρχείο προηγουμένως, το πιθανότερο είναι ότι θα πρέπει να το διαβάσετε και να τροποποιήσετε τις ρυθμίσεις σε αυτό για την εγκατάστασή σας, καθώς οι προεπιλογές είναι για έναν διακομιστή αρκετά χαμηλής ισχύος, αλλά προς το παρόν απλώς δημιουργήστε ένα αντίγραφό του, ώστε να μην χρειάζεται να ξεκινήσουμε από την αρχή:
Φυσικά, αντικαταστήστε το "mypool" με ό,τι θέλετε να ονομάζεται η πισίνα σας.
Τώρα ανοίξτε το νέο αρχείο χρησιμοποιώντας το nano ή όποιον επεξεργαστή κειμένου προτιμάτε και προσαρμόστε το ώστε να ταιριάζει στον σκοπό σας. Πιθανότατα θα θέλετε να τροποποιήσετε τους αριθμούς της θυγατρικής διαδικασίας και πιθανώς τον χρήστη και την ομάδα κάτω από τον οποίο εκτελείται η πισίνα, αλλά οι δύο ρυθμίσεις που πρέπει οπωσδήποτε να αλλάξετε είναι το όνομα της πισίνας και η υποδοχή που ακούει, διαφορετικά θα έρθει σε διένεξη με την υπάρχουσα πισίνα και τα πράγματα θα σταματήσουν να λειτουργούν.
Το όνομα της πισίνας βρίσκεται κοντά στην κορυφή του αρχείου, μέσα σε αγκύλες. Από προεπιλογή είναι [www] . Αλλάξτε αυτό σε ό,τι θέλετε. Προτείνω το ίδιο όπως ονομάσατε το αρχείο διαμόρφωσης, οπότε για χάρη αυτού του παραδείγματος αλλάξτε το σε [mypool] . Εάν δεν το αλλάξετε, φαίνεται ότι το PHP-FPM θα φορτώσει μόνο το πρώτο αρχείο διαμόρφωσης με αυτό το όνομα, το οποίο είναι πιθανό να χαλάσει τα πράγματα.
Στη συνέχεια, πρέπει να αλλάξετε την υποδοχή ή τη διεύθυνση που ακούτε, η οποία ορίζεται από την οδηγία ακρόασης . Από προεπιλογή, το PHP-FPM χρησιμοποιεί υποδοχές Unix, επομένως η οδηγία ακρόασης πιθανότατα θα μοιάζει με αυτό:
Μπορείτε να το αλλάξετε σε όποιο έγκυρο όνομα θέλετε, αλλά και πάλι, προτείνω να κολλήσετε με κάτι παρόμοιο με το όνομα του αρχείου διαμόρφωσης, ώστε να μπορείτε για παράδειγμα να το ορίσετε σε:
Εντάξει, αποθηκεύστε το αρχείο και βγείτε από το πρόγραμμα επεξεργασίας κειμένου.
Μέρος 2 – Ενημερώστε τη διαμόρφωση εικονικού κεντρικού υπολογιστή NGINX
Τώρα πρέπει να ανοίξετε το αρχείο εικονικού κεντρικού υπολογιστή NGINX με τη διαμόρφωση FastCGI που θέλετε να αλλάξετε σε μια νέα πισίνα – ή μάλλον, συνδεθείτε στη νέα υποδοχή.
Από προεπιλογή στο Ubuntu 14.04, αυτά αποθηκεύονται στο /etc/nginx/sites-available, αλλά μπορούν επίσης να οριστούν αλλού. Πιθανώς γνωρίζετε καλύτερα πού βρίσκονται οι διαμορφώσεις εικονικού κεντρικού υπολογιστή σας ;-)
Ανοίξτε το σχετικό αρχείο διαμόρφωσης στον αγαπημένο σας επεξεργαστή κειμένου και αναζητήστε την οδηγία fastcgi_pass (η οποία πρέπει να βρίσκεται σε ένα πλαίσιο τοποθεσίας) που ορίζει την υποδοχή PHP-FPM. Πρέπει να αλλάξετε αυτήν την τιμή ώστε να ταιριάζει με τη νέα διαμόρφωση χώρου συγκέντρωσης PHP-FPM που κάνατε στο πρώτο βήμα, επομένως συνεχίζοντας το παράδειγμά μας θα το αλλάξετε σε:
fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;
Στη συνέχεια αποθηκεύστε και κλείστε και αυτό το αρχείο. Έχεις σχεδόν τελειώσει τώρα.
Μέρος 3 – Επανεκκινήστε τα PHP-FPM και NGINX
Για να εφαρμόσετε τις αλλαγές διαμόρφωσης που έχετε κάνει, επανεκκινήστε τόσο το PHP-FPM όσο και το NGINX. Μπορεί να είναι αρκετή η επαναφόρτωση αντί για την επανεκκίνηση , αλλά θεωρώ ότι είναι λίγο τυχαίο, ανάλογα με τις ρυθμίσεις που αλλάζουν. Στη συγκεκριμένη περίπτωση, ήθελα οι παλιές θυγατρικές διεργασίες PHP-FPM να πεθάνουν αμέσως, επομένως χρειαζόταν επανεκκίνηση του PHP-FPM, αλλά για το NGINX μια επαναφόρτωση μπορεί να είναι αρκετή. Δοκιμάστε το μόνοι σας.
sudo service nginx restart
Και voila, τελείωσες. Εάν τα κάνατε όλα σωστά, ο εικονικός κεντρικός υπολογιστής που τροποποιήσατε θα πρέπει τώρα να χρησιμοποιεί το νέο χώρο συγκέντρωσης PHP-FPM και να μην μοιράζεται θυγατρικές διεργασίες με άλλους εικονικούς κεντρικούς υπολογιστές.