Vyhledávání na webu

Jak nainstalovat PHP 7 s Apache a MariaDB na CentOS 7/Debian 8


Minulý týden (přesněji 21. srpna 2015) vývojový tým PHP oznámil dostupnost nejnovější verze PHP 7 a vyzval uživatele a vývojáře po celém světě k testování to.

Musíme však poznamenat, že jelikož se jedná o verzi RC (Release Candidate), očekává se, že může obsahovat chyby nebo nekompatibilitu se stávajícími nastaveními, takže uživatelé jsou požádáni, aby nahlásit je pomocí systému sledování chyb a nepoužívat PHP 7 ve výrobě, dokud zůstane v této fázi.

Světlou stránkou je, že tato verze obsahuje několik oprav (možná se budete chtít podívat na tuto stránku v úložišti GitHub projektu, kde najdete podrobný seznam nových funkcí a vylepšení), přičemž nejvýraznější funkcí je výrazné zvýšení výkonu ve srovnání s předchozími verzemi.

Tento článek vás provede procesem instalace a kompilace PHP 7 RC1 ze zdrojového tarballu spolu s Apache a MariaDB na CentOS 7 a Debian 8 Jessie. Stejné pokyny fungují také na distribucích založených na CentOS, jako jsou RHEL, Fedora, Scientific Linux a Debian< založené jako Ubuntu/Mint.

Instalace PHP 7 v CentOS 7 a Debian 8

Jak je uvedeno v úvodu, protože tato verze je RC namísto stabilní verze, nemůžeme rozumně očekávat, že ji najdeme v repozitářích. Z toho důvodu si budeme muset stáhnout zdrojový kód a zkompilovat program od začátku.

Než to však uděláme, musíme si pamatovat, že pro lepší využití výhod PHP 7 a možná nejlepší způsob, jak si to vyzkoušet, je nainstalovat jej spolu s Apache a MariaDB – které MŮŽEME najít v úložištích:

Na CentOS 7


yum update && yum install httpd mariadb mariadb-server

Na Debianu 8


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

V obou případech lze tarball se zdrojovým kódem PHP stáhnout a extrahovat následovně:


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

Až budete hotovi, přesuňme se do /opt/php-7.0.0RC1 a spusťte skript buildconf pomocí přepínače –force, abyste vynutili sestavení RC verze:


ls


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

Nyní je čas provést náš známý příkaz configure. Zatímco níže uvedené možnosti zajistí standardní instalaci PHP 7, můžete se podívat na úplný seznam možností v příručce PHP, abyste si instalaci lépe přizpůsobili svým potřebám:


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

Pokud narazíte na následující chybu:


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

Jednoduše nainstalujte gcc a závislosti pomocí následujícího příkazu a znovu spusťte výše uvedený příkaz configure.


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

Budete na cestě ke kompilaci PHP 7, což může chvíli trvat. Pokud chybí další knihovny nebo prostředky, tento proces selže, ale vždy je můžete nainstalovat a znovu spustit konfiguraci.

Po zobrazení následující chybové zprávy jsem například musel nainstalovat libxml2-devel:


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

Bohužel nemůžeme pokrýt všechny scénáře, protože nainstalovaný software se může v jednotlivých systémech lišit. Během instalace se můžete podívat na tuto stránku, která popisuje několik chyb, na které můžete narazit při instalaci PHP ze zdroje, spolu s jejich příslušnými řešeními.

Na CentOS 7

Zde je úplný seznam balíčků, které jsem musel nainstalovat do krabice CentOS 7, než jsem mohl dokončit proces konfigurace:


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

Všechny výše uvedené požadované balíčky můžete nainstalovat jediným příkazem yum, jak je znázorněno na obrázku.


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

Následující zpráva znamená, že konfigurace byla úspěšně dokončena:

pak běž,


make
make install

Po dokončení instalace můžete zkontrolovat verzi pomocí příkazového řádku:

Na Debianu 8

V Debianu jsem musel nainstalovat následující balíčky, aby se proces konfigurace úspěšně dokonč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

Všechny výše uvedené požadované balíčky můžete nainstalovat pomocí příkazu apt-get na 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

Poté přidejte –with-libdir=/lib/x86_64-linux-gnu k možnostem konfigurace a vytvořte následující symbolický odkaz na soubor záhlaví gmp.h:


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

Poté spusťte vytvořit a provést instalaci jako v předchozím případě. Během 10–15 minut by měla být kompilace dokončena a my můžeme ověřit nainstalovanou verzi PHP jako dříve:


make
make install

Nastavení php.ini a testování instalace PHP 7

Při instalaci PHP ze zdroje jsou k dispozici dva ukázkové php.ini. V tomto případě jsou umístěny uvnitř /opt/php-7.0.0RC1:


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

Nyní musíte jeden z nich zkopírovat do /usr/local/lib, které je podle poznámek k instalaci určeno jako výchozí umístění pro takový soubor:


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

A nezapomeňte přidat tuto konfigurační direktivu do hlavních konfiguračních souborů 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>

V Debianu 8 můžete vynechat řádek LoadModule a také musíte odstranit a vytvořit následující symbolické odkazy na uvedené moduly 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

Poté restartujte webový server:


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

Pokud spuštění Apache v CentOS 7 vrátí chybovou zprávu, že nemůže najít modul libphp7.so, jednoduše zkopírujte do uvedené cesty z /opt/php-7.0.0RC1/.libs/libphp7.so.

Klasickým způsobem testování instalace PHP/Apache je použití souboru phpinfo(). Vytvořte soubor s názvem test.php s následujícím obsahem v kořenovém adresáři dokumentu webového serveru (/var/www/html v obou distribucích):


<?php
phpinfo();
?>

A spusťte prohlížeč v klientovi ve vaší síti a otestujte:


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

souhrn

V tomto článku jsme vysvětlili, jak nainstalovat PHP 7 ze zdrojového kódu, nejnovější RC tohoto oblíbeného skriptovacího jazyka na straně serveru, jehož cílem je zlepšit výkon na bezprecedentní hodnoty. Než se dostane do stáje v listopadu tohoto roku 2015, DŮRAZNĚ vám doporučujeme NEPOUŽÍVEJTE toto vydání v produkčním prostředí.

Máte-li jakékoli dotazy/komentáře/návrhy k tomuto článku, neváhejte nás kontaktovat pomocí formuláře níže.