Kako namestiti PHP 7 z Apachejem in MariaDB na CentOS 7/Debian 8


Prejšnji prejšnji teden (natančneje 21. avgusta 2015) je razvojna skupina PHP napovedala, da je na voljo najnovejša izdaja PHP 7, in spodbudila uporabnike in razvijalce po vsem svetu, da jo preizkusijo.

Vendar moramo upoštevati, da je to različica RC (Release Candidate), zato se pričakuje, da ima napake ali nezdružljivosti z obstoječimi nastavitvami, zato se od uporabnikov zahteva, da jih prijavijo s sistemom za sledenje napakam in da ne uporabljajo PHP 7 v proizvodnjo, medtem ko ostaja v tej fazi.

Svetla stran je ta, da ta različica vključuje več popravkov (za podroben seznam novih funkcij in izboljšav boste morda želeli poiskati to stran v skladišču projekta GitHub), pri čemer je najbolj prepoznavna značilnost izjemno povečanje zmogljivosti v primerjavi s prejšnjimi različice.

Ta članek vas bo vodil skozi postopek namestitve in prevajanja PHP 7 RC1 iz izvorne tarball skupaj z Apache in MariaDB na CentOS 7 in Debian 8 Jessie. Ista navodila delujejo tudi na distribucijah na osnovi CentOS, kot so RHEL, Fedora, Scientific Linux in Debian, na primer Ubuntu/Mint.

Namestitev PHP 7 v CentOS 7 in Debian 8

Kot je navedeno v uvodu, ker je ta različica namesto stabilne izdaje RC, ne moremo upravičeno pričakovati, da jo bomo našli v skladiščih. Iz tega razloga bomo morali prenesti izvorno kodo in program sestaviti iz nič.

Preden pa to storimo, si moramo zapomniti, da za boljše izkoriščanje PHP 7 in morda najboljši način, da ga preizkusimo, je njegova namestitev skupaj z Apache in MariaDB - kar LAHKO najdemo v skladiščih:

# yum update && yum install httpd mariadb mariadb-server
# aptitude update && aptitude install apache2 mariadb-server mariadb-client mariadb.common

V obeh primerih lahko tarball z izvorno kodo PHP prenesete in izvlečete na naslednji način:

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

Ko končamo, pojdimo v /opt/php-7.0.0RC1 in izvedimo skript buildconf s stikalom –force, da prisilimo gradnjo različice RC:

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

Zdaj je čas, da izvršimo naš dobro znani ukaz configure. Spodnje možnosti bodo zagotovile standardno namestitev PHP 7, vendar lahko v priročniku PHP poiščete celoten seznam možnosti, da boste namestitev bolje prilagodili svojim potrebam:

# ./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

Če naletite na naslednjo napako:

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

Preprosto namestite gcc in odvisnosti z naslednjim ukazom in znova zaženite zgornji ukaz configure.

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

Boste na poti k prevajanju PHP 7, kar lahko traja nekaj časa. Če manjkajo druge knjižnice ali viri, ta postopek ne bo uspel, vendar jih lahko vedno namestite in znova zaženete configure.

Na primer, po namestitvi naslednjega sporočila o napaki sem moral namestiti libxml2-devel:

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

Na žalost ne moremo zajeti vseh scenarijev primerov, saj se lahko nameščena programska oprema razlikuje od sistema do sistema. Med namestitvijo se boste morda želeli sklicevati na to stran, ki opisuje več napak, na katere lahko naletite med namestitvijo PHP iz vira, skupaj z njihovimi rešitvami.

Tu je popoln seznam paketov, ki sem jih moral namestiti v polje CentOS 7, preden sem lahko dokončal postopek konfiguriranja:

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

Vse zgoraj zahtevane pakete lahko namestite z enim ukazom yum, kot je prikazano.

# 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

Naslednje sporočilo pomeni, da je bila konfiguracija uspešno končana:

Potem teči,

# make
# make install

Ko je namestitev končana, lahko z ukazno vrstico preverite različico:

V Debian sem moral namestiti naslednje pakete, da se je postopek konfiguriranja uspešno zaključil:

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

Vse zgoraj zahtevane pakete lahko z ukazom apt-get namestite v 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

Nato v nastavitvene možnosti dodajte –with-libdir =/lib/x86_64-linux-gnu in ustvarite naslednjo povezavo do glave gmp.h:

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

Nato zaženite make in make install kot v prejšnjem primeru. V 10-15 minutah bi se kompilacija morala končati in nameščeno različico PHP lahko preverimo kot prej:

# make
# make install

Nastavitev php.ini in preizkušanje namestitve PHP 7

Ko namestite PHP iz vira, sta na voljo dva vzorca php.ini. V tem primeru se nahajajo znotraj /opt/php-7.0.0RC1:

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

Zdaj morate enega od njih kopirati v/usr/local/lib, ki je določen kot privzeto mesto za to datoteko v skladu z opombami o namestitvi:

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

In ne pozabite dodati te konfiguracijske direktive v glavne konfiguracijske datoteke Apacheja.

/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>

V Debianu 8 lahko izpustite vrstico LoadModule, prav tako pa morate odstraniti in ustvariti naslednje simbolne povezave do navedenih modulov 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

Nato znova zaženite spletni strežnik:

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

Če se pri zagonu Apache v CentOS 7 prikaže sporočilo o napaki, v katerem piše, da ne more najti modula libphp7.so, preprosto kopirajte na navedeno pot iz /opt/php-7.0.0RC1/.libs/libphp7.so.

Klasičen način preizkušanja namestitve PHP/Apache je uporaba datoteke phpinfo() . Ustvarite datoteko z imenom test.php z naslednjo vsebino v korenu dokumentov spletnega strežnika (/ var/www/html v obeh distribucijah):

<?php
phpinfo();
?>

In zaženite brskalnik v odjemalcu znotraj vašega omrežja, da preizkusite:

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

Povzetek

V tem članku smo razložili, kako namestiti PHP 7 iz izvorne kode, najnovejšega RC tega priljubljenega skriptnega jezika na strani strežnika, katerega cilj je izboljšati zmogljivost na vrednosti brez primere. Dokler ne doseže stabilnosti novembra letos 2015, vam STROGO priporočamo, da te izdaje NE uporabljate v produkcijskem okolju.

Če imate kakršna koli vprašanja/komentarje/predloge glede tega članka, nam to sporočite z uporabo spodnjega obrazca.