Πώς να εγκαταστήσετε την PHP 7 με Apache και MariaDB στο CentOS 7/Debian 8


Την περασμένη εβδομάδα (ακριβέστερα στις 21 Αυγούστου 2015), η ομάδα ανάπτυξης της PHP ανακοίνωσε τη διαθεσιμότητα της τελευταίας έκδοσης του PHP 7 και ενθάρρυνε χρήστες και προγραμματιστές σε όλο τον κόσμο να δοκιμάσουν το.

Ωστόσο, πρέπει να σημειώσουμε ότι επειδή πρόκειται για έκδοση RC (Υποψήφιος έκδοση), αναμένεται ότι ενδέχεται να έχει σφάλματα ή ασυμβατότητες με τις υπάρχουσες ρυθμίσεις, επομένως οι χρήστες καλούνται να αναφέρετέ τους χρησιμοποιώντας το σύστημα παρακολούθησης σφαλμάτων και να μην χρησιμοποιήσετε PHP 7 στην παραγωγή όσο παραμένει σε αυτήν τη φάση.

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

Αυτό το άρθρο θα σας καθοδηγήσει στη διαδικασία εγκατάστασης και μεταγλώττισης του PHP 7 RC1 από το source tarball μαζί με το Apache και το MariaDB στο CentOS 7 και Debian 8 Jessie. Οι ίδιες οδηγίες λειτουργούν επίσης σε διανομές που βασίζονται στο CentOS όπως RHEL, Fedora, Scientific Linux και Debian< με βάση το Ubuntu/Mint.

Εγκατάσταση της PHP 7 σε CentOS 7 και Debian 8

Όπως αναφέρθηκε στην εισαγωγή, καθώς αυτή η έκδοση είναι RC αντί για σταθερή έκδοση, δεν μπορούμε εύλογα να περιμένουμε να τη βρούμε στα αποθετήρια. Για το λόγο αυτό, θα πρέπει να κατεβάσουμε τον πηγαίο κώδικα και να μεταγλωττίσουμε το πρόγραμμα από την αρχή.

Ωστόσο, πριν το κάνουμε αυτό, πρέπει να θυμόμαστε ότι για να εκμεταλλευτούμε καλύτερα το PHP 7 και ίσως ο καλύτερος τρόπος για να το δοκιμάσουμε είναι να το εγκαταστήσουμε μαζί με το Apache και MariaDB – τα οποία ΜΠΟΡΟΥΜΕ να βρούμε στα αποθετήρια:

Στο CentOS 7


yum update && yum install httpd mariadb mariadb-server

Στο Debian 8


aptitude update && aptitude install apache2 mariadb-server mariadb-client mariadb.common

Σε κάθε περίπτωση, το tarball με τον πηγαίο κώδικα της PHP μπορεί να ληφθεί και να εξαχθεί ως εξής:


wget https://downloads.php.net/~ab/php-7.0.0RC1.tar.gz
tar xzf php-7.0.0RC1.tar.gz -C /opt

Μόλις τελειώσετε, ας μεταβούμε στο /opt/php-7.0.0RC1 και ας εκτελέσουμε το σενάριο buildconf με τον διακόπτη –force για να εξαναγκάσουμε το κατασκευή μιας έκδοσης RC:


ls


cd /opt/php-7.0.0RC1.tar.gz
./buildconf --force

Τώρα ήρθε η ώρα να εκτελέσουμε τη γνωστή μας εντολή configure. Ενώ οι παρακάτω επιλογές θα εξασφαλίσουν μια τυπική εγκατάσταση PHP 7, μπορείτε να ανατρέξετε στην πλήρη λίστα επιλογών στο εγχειρίδιο PHP για να προσαρμόσετε καλύτερα την εγκατάσταση σύμφωνα με τις ανάγκες σας:


./configure \
--prefix=$HOME/php7/usr \
--with-config-file-path=$HOME/php7/usr/etc \
--enable-mbstring \
--enable-zip \
--enable-bcmath \
--enable-pcntl \
--enable-ftp \
--enable-exif \
--enable-calendar \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--with-curl \
--with-mcrypt \
--with-iconv \
--with-gmp \
--with-pspell \
--with-gd \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--with-zlib-dir=/usr \
--with-xpm-dir=/usr \
--with-freetype-dir=/usr \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--with-openssl \
--with-pdo-mysql=/usr \
--with-gettext=/usr \
--with-zlib=/usr \
--with-bz2=/usr \
--with-recode=/usr \
--with-mysqli=/usr/bin/mysql_config \
--with-apxs2

Εάν αντιμετωπίσετε το ακόλουθο σφάλμα:


configure: error: no acceptable C compiler found in $PATH
see 'config.log' for more details

Απλώς εγκαταστήστε το gcc και τις εξαρτήσεις με την ακόλουθη εντολή και εκτελέστε ξανά την παραπάνω εντολή configure.


yum install gcc       [On CentOS 7 box]
aptitude install gcc  [On Debian 8 box]

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

Για παράδειγμα, έπρεπε να εγκαταστήσω το libxml2-devel αφού λάβω το ακόλουθο μήνυμα σφάλματος:


configure: error: xml2-config not found. Please check your libxml2 installation.

Δυστυχώς, δεν μπορούμε να καλύψουμε όλα τα σενάρια περιπτώσεων, καθώς το εγκατεστημένο λογισμικό μπορεί να διαφέρει από το ένα σύστημα στο άλλο. Κατά την εγκατάσταση, ίσως θελήσετε να ανατρέξετε σε αυτή τη σελίδα η οποία περιγράφει διάφορα σφάλματα που ενδέχεται να αντιμετωπίσετε κατά την εγκατάσταση της PHP από την πηγή, μαζί με τις αντίστοιχες λύσεις τους.

Στο CentOS 7

Ακολουθεί μια πλήρης λίστα με τα πακέτα που έπρεπε να εγκαταστήσω στο πλαίσιο CentOS 7 πριν μπορέσω να ολοκληρώσω τη διαδικασία διαμόρφωσης:


gcc
libxml2-devel
pkgconfig
openssl-devel
bzip2-devel
curl-devel
libpng-devel
libpng-devel
libjpeg-devel
libXpm-devel
freetype-devel
gmp-devel
libmcrypt-devel
mariadb-devel
aspell-devel
recode-devel
httpd-devel

Μπορείτε να εγκαταστήσετε όλα τα παραπάνω απαιτούμενα πακέτα με μία μόνο εντολή yum όπως φαίνεται.


yum install gcc libxml2-devel pkgconfig openssl-devel bzip2-devel libpng-devel libpng-devel libjpeg-devel libXpm-devel freetype-devel gmp-devel libmcrypt-devel mariadb-devel aspell-devel recode-devel httpd-devel

Το ακόλουθο μήνυμα υποδεικνύει ότι η διαμόρφωση ολοκληρώθηκε με επιτυχία:

Τότε τρέξε,


make
make install

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

Στο Debian 8

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


make
libxml2-dev
libcurl4-openssl-dev
libjpeg-dev
libpng-dev
libxpm-dev
libmysqlclient-dev
libicu-dev
libfreetype6-dev
libxslt-dev
libssl-dev
libbz2-dev
libgmp-dev
libmcrypt-dev
libpspell-dev 
librecode-dev
apache2-dev

Μπορείτε να εγκαταστήσετε όλα τα παραπάνω απαιτούμενα πακέτα με την εντολή apt-get στο Debian 8.


apt-get install make libxml2-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libxpm-dev libmysqlclient-dev libicu-dev libfreetype6-dev libxslt-dev libssl-dev libbz2-dev libgmp-dev libmcrypt-dev libpspell-dev librecode-dev apache2-dev

Στη συνέχεια, προσθέστε το –with-libdir=/lib/x86_64-linux-gnu στις επιλογές διαμόρφωσης και δημιουργήστε τον ακόλουθο συμβολικό σύνδεσμο στο αρχείο κεφαλίδας gmp.h:


ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h

Στη συνέχεια, εκτελέστηκαν τα make και make install όπως στην προηγούμενη περίπτωση. Μέσα σε 10-15 λεπτά η μεταγλώττιση θα πρέπει να έχει ολοκληρωθεί και μπορούμε να επαληθεύσουμε την εγκατεστημένη έκδοση PHP όπως πριν:


make
make install

Ρύθμιση php.ini και δοκιμή εγκατάστασης PHP 7

Όταν εγκαθιστάτε την PHP από την πηγή, παρέχονται δύο δείγματα php.ini. Σε αυτήν την περίπτωση, βρίσκονται μέσα στο /opt/php-7.0.0RC1:


ls -l /opt/php-7.0.0RC1 | grep php.ini

Τώρα πρέπει να αντιγράψετε ένα από αυτά στο /usr/local/lib, το οποίο ορίζεται ως η προεπιλεγμένη θέση για τέτοιο αρχείο σύμφωνα με τις σημειώσεις εγκατάστασης:


cp /opt/php-7.0.0RC1/php.ini-development /usr/local/lib

Και μην ξεχάσετε να προσθέσετε αυτήν την οδηγία ρύθμισης παραμέτρων στα κύρια αρχεία διαμόρφωσης του Apache.


/etc/httpd/conf/httpd.conf    [On CentOS 7 box]
/etc/apache2/apache2.conf in  [On Debian 8 box] 

LoadModule php7_module        /usr/lib64/httpd/modules/libphp7.so
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>

Στο Debian 8 μπορείτε να παραλείψετε τη γραμμή LoadModule και επίσης πρέπει να αφαιρέσετε και να δημιουργήσετε τους ακόλουθους συμβολικούς συνδέσμους προς τις υποδεικνυόμενες μονάδες Apache:


cd /etc/apache2
rm mods-enabled/mpm_event.conf
rm mods-enabled/mpm_event.load
ln -s mods-available/mpm_prefork.conf mpm_prefork.conf
ln -s mods-available/mpm_prefork.load mpm_prefork.load

Στη συνέχεια, επανεκκινήστε τον διακομιστή ιστού:


systemctl restart httpd     [On CentOS 7 box]
systemctl restart apache2   [On Debian 8 box]

Εάν η εκκίνηση του Apache στο CentOS 7 εμφανίσει ένα μήνυμα σφάλματος που λέει ότι δεν μπορεί να βρει τη λειτουργική μονάδα libphp7.so, απλώς αντιγράψτε στην υποδεικνυόμενη διαδρομή από /opt/php-7.0.0RC1/.libs/libphp7.so.

Ο κλασικός τρόπος δοκιμής μιας εγκατάστασης PHP/Apache είναι η χρήση ενός αρχείου phpinfo(). Δημιουργήστε ένα αρχείο με το όνομα test.php με τα ακόλουθα περιεχόμενα στη ρίζα εγγράφων του διακομιστή ιστού (/var/www/html και στις δύο διανομές):


<?php
phpinfo();
?>

Και εκκινήστε ένα πρόγραμμα περιήγησης σε έναν πελάτη εντός του δικτύου σας για δοκιμή:


http://localhost/test.php
OR
http://IP-address/test.php

Περίληψη

Σε αυτό το άρθρο εξηγήσαμε πώς να εγκαταστήσετε την PHP 7 από τον πηγαίο κώδικα, το νεότερο RC αυτής της δημοφιλούς γλώσσας δέσμης ενεργειών από την πλευρά του διακομιστή που στοχεύει στη βελτίωση της απόδοσης σε πρωτόγνωρες τιμές. Μέχρι να φτάσει στο σταθερό τον Νοέμβριο του τρέχοντος έτους 2015, σας συμβουλεύουμε ΔΥΝΑΤΑ να ΔΕΝ χρησιμοποιήστε αυτήν την έκδοση σε περιβάλλον παραγωγής.

Εάν έχετε οποιεσδήποτε ερωτήσεις/σχόλια/προτάσεις σχετικά με αυτό το άρθρο, μη διστάσετε να μας ενημερώσετε χρησιμοποιώντας την παρακάτω φόρμα.