Πώς να εγκαταστήσετε έναν διακομιστή ιστού με Nginx + MySQL + PHP5 + APC + Spawn_FastCGI [4ο μέρος: Nginx + PHP με SpawnFastCGI]

Πριν από λίγο καιρό Σας είπα για αυτήν τη σειρά μαθημάτων, σχετικά με τον τρόπο εγκατάστασης και διαμόρφωσης ενός διακομιστή για φιλοξενία υψηλής ζήτησης. Αυτό το άρθρο θα αφορά την εγκατάσταση και τη διαμόρφωση Nginx + PHP με SpawnFastCGI:

Spawn_FastCGI:

Αυτό μπορεί να ειπωθεί ότι συνδέει το Nginx με την PHP, δηλαδή, ακόμη και αν έχουν εγκαταστήσει το πακέτο PHP5, εάν δεν έχουν εγκαταστήσει και εκτελέσει το Spawn_FastCGI, όταν ανοίγουν έναν ιστότοπο στην PHP, το πρόγραμμα περιήγησης θα κατεβάσει το αρχείο, θα να μην τους δείξει τίποτα ότι το .php έχει προγραμματιστεί επειδή ο διακομιστής δεν ξέρει πώς να επεξεργάζεται αρχεία .php, γι 'αυτό είναι απαραίτητο να εγκαταστήσετε και να ρυθμίσετε το Spawn_FastCGI.

Εάν χρησιμοποιούσαμε το Apache θα ήταν κάτι τόσο απλό όσο η εγκατάσταση του πακέτου libapache2-mod-php5, αλλά επειδή χρησιμοποιούμε το Nginx θα πρέπει να εγκαταστήσουμε το πακέτο spawn-fcgi. Επίσης, στο σεμινάριο θα εξηγήσω πώς να δημιουργήσετε ένα αρχικό σενάριο για αυτό στο /etc/init.d/ έτσι ώστε να μπορείτε να το ελέγχετε πιο άνετα.

1. Εγκατάσταση:

Θα ξεκινήσουμε με το πρώτο πράγμα, θα εγκαταστήσουμε το Spawn-FastCGI και το PHP από τα αποθετήρια μας.

Όλες οι εντολές που θα εκτελεστούν εκτελούνται με δικαιώματα root, είτε τοποθετώντας το sudo στην αρχή κάθε γραμμής είτε με σύνδεση ως root

Εάν στον διακομιστή σας χρησιμοποιείτε μια διανομή όπως το Debian, το Ubuntu ή κάποιο παράγωγο στο τερματικό, πρέπει να βάλετε τα ακόλουθα και να πατήσετε εισάγετε :

aptitude install spawn-fcgi php5-cgi php5-curl

Το aptitude δεν είναι εγκατεστημένο από προεπιλογή στο Ubuntu, ωστόσο σας προτείνω να το εγκαταστήσετε και να το χρησιμοποιήσετε αντί του apt-get, καθώς η ικανότητα κάνει καλύτερη διαχείριση εξαρτήσεων σε ορισμένες περιπτώσεις

Προσωπικά, δεν προτείνω κανένα παράγωγο του Debian, ούτε καν το Ubuntu για διακομιστές, με την πάροδο των ετών οι εμπειρίες μου δεν ήταν απολύτως ικανοποιητικές. Η πρώτη μου επιλογή για λειτουργικά συστήματα διακομιστών είναι το Debian, τότε θα σκεφτόμουν το CentOS, τελικά κάποιο BSD

2. Διαμόρφωση:

Στο προηγούμενο βήμα (όταν εγκαταστήσαμε το Nginx) κατεβάσαμε ένα αρχείο που ονομάζεται nginx-spawn-fastcgi.tar.gz που όταν αποσυμπιέστηκε δημιούργησε το φάκελο nginx-spawn-fastcgi στο σπίτι μας, θα αντιγράψουμε το αρχείο από αυτό spawn-fastcgi στο /etc/init.d/:

cp ~/nginx-spawn-fastcgi/spawn-fastcgi /etc/init.d/

Επίσης, χρειαζόμαστε το php-fastcgi εκτελέσιμο στο / usr / bin /

cp ~/nginx-spawn-fastcgi/php-fastcgi /usr/bin/

Τέλεια, έχουμε ετοιμάσει το αρχείο που θα μας επιτρέψει να ελέγξουμε το spawn-fastcgi και επίσης το php-fastcgi εκτελέσιμο, τώρα πρόκειται να ξεκινήσουμε το spawn-fastcgi:

/etc/init.d/spawn-fastcgi start

Θα μας δείξει κάτι σαν: spawn-fcgi: το παιδί γεννήθηκε με επιτυχία: PID: 3739

Τώρα πρόκειται να αντικαταστήσουμε το αρχείο /etc/nginx/sites-available/mywebsite.net με ~ / nginx-spawn-fastcgi / mywebsite_plus_php.net

cp ~/nginx-spawn-fastcgi/mywebsite_plus_php.net /etc/nginx/sites-available/mywebsite.net

Γιατί; Απλό, επειδή το προηγούμενο αρχείο mywebsite.net δεν έχει υποστήριξη για PHP, δηλαδή, είναι μόνο Nginx, ενώ το αρχείο mywebsite_plus_php.net έχει υποστήριξη για PHP, δηλαδή, Nginx + PHP χρησιμοποιώντας SpawnFastCGI.

Οι διαφορές μεταξύ αυτών των αρχείων είναι πολλές, για παράδειγμα:

  • Στη γραμμή 3 το αρχείο που υποστηρίζει PHP προστίθεται index.php
  • Μια νέα γραμμή στο No.3 που περιέχει: fastcgi_index index.php;
  • Αρκετές άλλες νέες γραμμές που λένε στο Nginx πώς να επεξεργάζεται την PHP.
  • … .. Εν ολίγοις, εδώ είναι μια φωτογραφία που θα σας βοηθήσει να γνωρίζετε τις διαφορές μεταξύ των δύο αρχείων:

nginx_mysql_spawn-fastcgi_compair_mywebsite_confs

Το αρχείο mywebsite_plus_php.net είναι ένα vhost που χρησιμεύει ως παράδειγμα, δηλαδή, και με άλλα λόγια, πρέπει να το τροποποιήσουμε και να δημιουργήσουμε τις διαμορφώσεις μας.

Πρέπει να αλλάξουμε τα εξής:

  • access_log (γραμμή 3): Αυτή θα είναι η διαδρομή του αρχείου καταγραφής πρόσβασης προς αυτόν τον ιστότοπο
  • error_log (γραμμή 4): Αυτή θα είναι η διαδρομή του αρχείου καταγραφής σφαλμάτων προς αυτόν τον ιστότοπο
  • όνομα_διακομιστή (γραμμή 5): Η διεύθυνση URL, ο τομέας που φιλοξενείται σε αυτόν τον φάκελο, για παράδειγμα, αν ήταν το φόρουμ DesdeLinux θα ήταν: forum server_name.desdelinux. Καθαρά
  • root (γραμμή 6): Η διαδρομή προς το φάκελο όπου βρίσκονται τα αρχεία html, ας το αφήσουμε στο / var / www / καθώς θα είναι μόνο μια δοκιμή
Προφανώς, πρέπει να έχουν δείξει στις εγγραφές DNS του παρόχου φιλοξενίας τους (χρησιμοποιώντας CPanel ή άλλο εργαλείο) ότι ο τομέας ή ο υποτομέας που δηλώνεται στο όνομα_ διακομιστή βρίσκεται στην IP αυτού του διακομιστή που διαμορφώνουν. Δηλαδή, στο DNS όπου δημιουργούν υποτομείς για τον τομέα τους, πρέπει να δηλώσουν ότι ο τομέας ή ο υποτομέας που έχουν τοποθετήσει στη γραμμή 5 βρίσκεται σε αυτόν τον διακομιστή (αυτός ο διακομιστής = η διεύθυνση IP του εν λόγω διακομιστή)

Έτοιμοι, τώρα θα επανεκκινήσουμε το Nginx:

/etc/init.d/nginx restart

Για να ελέγξουμε ότι το Nginx επεξεργάζεται σωστά την PHP, ας αντιγράψουμε το αρχείο phptest.php στον φιλοξενούμενο φάκελο, δηλαδή αυτό που αναφέρεται στη γραμμή No.6 του αρχείου mywebsite_plus_php.net (για παράδειγμα, root / var / www /), υποθέτοντας ότι ο ιστότοπος φιλοξενείται απευθείας στο / var / www / θα είναι:

cp ~/nginx-spawn-fastcgi/phptest.php /var/www/

Ας υποθέσουμε ότι στη γραμμή 5 του mywebsite_plus_php.net (δηλαδή, τη γραμμή διακομιστή_name) έχουμε πει ότι ο ιστότοπός μας είναι www.mysite.net, τότε πρέπει να έχουμε πρόσβαση στο www.mysite.net/phptest.php. Με άλλα λόγια, η ιδέα είναι να αποκτήσετε πρόσβαση στο αρχείο phptest.php από το πρόγραμμα περιήγησής μας και αν εμφανιστεί το ακόλουθο, τότε το Nginx μας συνδέεται τέλεια με την PHP:

nginx_mysql_spawn-fastcgi_tersting_nginx_php

Σε περίπτωση που αυτό δεν εμφανίζεται, δηλαδή ότι το πρόγραμμα περιήγησης προσπαθεί να κατεβάσει το αρχείο .php ... αυτό σημαίνει ότι έκαναν κάτι λάθος, ότι δεν αντικατέστησαν το /etc/nginx/sites-available/mywebsite.net με ~ / nginx-spawn-fastcgi / mywebsite_plus_php.net… ότι ξέχασαν να κάνουν επανεκκίνηση του Nginx με την επανεκκίνηση του /etc/init.d/nginx ή ότι ξεχάστηκαν να ξεκινήσουν το Spawn-FastCGI με το /etc/init.d/spawn-fastcgi start

Μέχρι στιγμής το σεμινάριο για τη σύνδεση του Nginx με PHP χρησιμοποιώντας το SpawnFastCGI, χρειαζόμαστε μόνο MySQL και APC 🙂

Ελπίζω να το βρείτε αυτό ενδιαφέρον.


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.

  1.   f3niX dijo

    Εάν είναι ένα τέταρτο, γιατί λέει η εικόνα 3; ξεκίνησα στις 0 υποθέτω; εξαιρετική θέση.

    αφορά

    1.    KZKG ^ Γκάρα dijo

      1η: Παρουσίαση
      2ο: Nginx
      3ο: Nginx + PHP (Spawn_FastCGI)

      ????

      Ευχαριστούμε που διαβάσατε ^ _ ^

      1.    Rodrigo dijo

        τι συνέβη στο μέρος 4 ;;;
        και με το επόμενο ?????

  2.   rpyanm dijo

    Γεια σας:

    Θα ήταν καλύτερη επιλογή αν αντί του mysql, χρησιμοποιούσατε το MariaDB, καθώς θα πρέπει να γνωρίζετε ότι το τελευταίο είναι ένα πιρούνι του πρώτου και υπάρχει ήδη συζήτηση ότι θα είναι το Mysql του μέλλοντος (http://www.genbetadev.com/bases-de-datos/mariadb-sera-el-mysql-del-futuro) καθώς το Mysql είναι δωρεάν, έως ένα σημείο.

    Το SkySQL, μια εταιρεία που παρέχει υπηρεσίες βασισμένες σε δωρεάν βάσεις δεδομένων, υποστήριξε οικονομικά το έργο MariaDB (http://www.genbetadev.com/bases-de-datos/mariadb-y-skysql-unen-fuerzas-para-llevar-a-mariadb-a-lo-mas-alto) και η Google που θέλει να σταματήσει ανάλογα με το Mysql, όπως έκανε η Wikipedia, και θα κάνει τη μετάβαση από το MySQL 5.1 στο MariaDB 10.0 με τη βοήθεια, ακριβώς, του SkySQL, οι οποίοι είναι ήδη ειδικοί σε αυτόν τον τομέα.

    Salu2.

    1.    KZKG ^ Γκάρα dijo

      Γεια σας,

      Ναι, φυσικά, γνωρίζω τη MariaDB και στην πραγματικότητα, έχουμε ήδη μιλήσει για αυτό: https://blog.desdelinux.net/tag/mariadb/

      Ωστόσο, αυτή τη στιγμή χρησιμοποιώ τη MySQL επειδή κάνω αυτά τα σεμινάρια από τη συγκεκριμένη εμπειρία που είχα κατά τη μετανάστευση. DesdeLinux (με όλες τις υπηρεσίες του) σε άλλους server, τότε αλλάξαμε εντελώς την τεχνολογία και οι εργασίες ή οι αλλαγές που είχα να αντιμετωπίσω δεν ήταν λίγες.
      Διαβάστε αυτό το σχόλιο μου από εκείνη τη στιγμή: https://blog.desdelinux.net/el-blog-desdelinux-abandona-hostgator-y-pasa-a-gnutransfer/comment-page-1/#comment-81291

      Η τελική ιδέα είναι ναι, πράγματι, μετανάστευση στο MariaDB, αλλά δεν είχα χρόνο να κάνω τις σχετικές δοκιμές 🙂

      Ευχαριστώ για την ανάγνωση

  3.   eliotime3000 dijo

    Αυτό το σεμινάριο θα με βοηθήσει να εγκαταστήσω το zPanel X με το NGINX, ώστε να μην κορεστεί ο ιστότοπός μου κατά τη μετάβαση στο GNUPanel VPS.

  4.   Ντράγκενελ dijo

    Το χριστουγεννιάτικο δώρο; Ανυπομονώ να συγχαρώ όλους.

    1.    KZKG ^ Γκάρα dijo

      Ευχαριστώ συνεργάτη 😀

  5.   st0rmt4il dijo

    Προστέθηκε στα αγαπημένα!

    Παρεμπιπτόντως, έχω αυτήν την αμφιβολία και την ερώτηση, έχει πραγματικά το Nginx μεγαλύτερη απόδοση από τον Apache;

    Χαιρετισμούς!

    1.    KZKG ^ Γκάρα dijo

      Λοιπόν, το Apache μπορεί να βελτιστοποιηθεί πολύ, αλλά… μέχρι τώρα, το Google και σχεδόν όλοι μας συμφωνούμε ότι το Nginx καταναλώνει πολύ λιγότερη μνήμη RAM, έχει μια ασυναγώνιστη απόδοση, αν και δεν είναι εντελώς τόσο απλό κατά τη διαμόρφωση.

  6.   Λουίς Μοράλες dijo

    Καλή KZKG ^ Gaara εξαιρετικές πληροφορίες για όσους από εμάς ενδιαφέρονται για αυτόν τον κόσμο, μια ερώτηση, για το πότε η 4η θέση 😀