Kako instalirati PHP 7 s Apacheom i MariaDB na CentOS 7/Debian 8


Prošle prošle sedmice (tačnije 21. avgusta 2015.), PHP razvojni tim je najavio dostupnost najnovijeg izdanja PHP 7 i ohrabrio korisnike i programere širom svijeta da testiraju to.

Međutim, moramo napomenuti da, budući da je ovo RC (Release Candidate) verzija, očekuje se da može imati greške ili nekompatibilnosti s postojećim postavkama pa se od korisnika traži da prijavite ih koristeći sistem za praćenje grešaka i da ne koristite PHP 7 u proizvodnji dok je u toj fazi.

Sjajna strana je što ova verzija uključuje nekoliko popravki (možda ćete htjeti pogledati ovu stranicu u GitHub spremištu projekta za detaljnu listu novih funkcija i poboljšanja), a najznačajnija karakteristika je značajno povećanje performansi u poređenju sa prethodnim verzijama.

Ovaj članak će vas provesti kroz proces instaliranja i kompajliranja PHP 7 RC1 iz izvornog tarball-a zajedno sa Apacheom i MariaDB na CentOS 7 i Debian 8 Jessie. Iste upute također rade na CentOS distribucijama kao što su RHEL, Fedora, Scientific Linux i Debian< baziran na Ubuntu/Mint.

Instaliranje PHP 7 u CentOS 7 i Debian 8

Kao što je rečeno u uvodu, pošto je ova verzija RC umjesto stabilnog izdanja, ne možemo razumno očekivati da ćemo je pronaći u spremištima. Iz tog razloga, morat ćemo preuzeti izvorni kod i kompajlirati program od nule.

Prije nego što to učinimo, međutim, moramo imati na umu da kako bismo bolje iskoristili prednosti PHP 7 i možda je najbolji način da ga isprobate instaliranje zajedno sa Apacheom i MariaDB – koje MOŽEMO pronaći u repozitorijumima:

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

U oba slučaja, tarball sa izvornim kodom PHP može se preuzeti i raspakirati na sljedeći način:


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

Kada završimo, pređimo na /opt/php-7.0.0RC1 i izvršimo buildconf skriptu sa prekidačem –force kako bismo prisilili izrada RC verzije:


ls


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

Sada je vrijeme da izvršimo našu dobro poznatu naredbu configure. Dok će donje opcije osigurati standardnu PHP 7 instalaciju, možete pogledati kompletnu listu opcija u PHP priručniku kako biste bolje prilagodili instalaciju prema vašim potrebama:


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

Ako naiđete na sljedeću grešku:


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

Jednostavno instalirajte gcc i zavisnosti sa sljedećom komandom i ponovo pokrenite gornju naredbu configure.


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

Bićete na putu da kompajlirate PHP 7, što može potrajati. Ako nedostaju druge biblioteke ili resursi, ovaj proces neće uspjeti, ali uvijek ih možete instalirati i ponovo pokrenuti configure.

Na primjer, morao sam instalirati libxml2-devel nakon što sam dobio sljedeću poruku o grešci:


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

Nažalost, ne možemo pokriti sve scenarije slučajeva jer se instalirani softver može razlikovati od sistema do sistema. Tokom instalacije, možda ćete želeti da pogledate ovu stranicu koja opisuje nekoliko grešaka na koje možete da naiđete dok instalirate PHP iz izvora, zajedno sa njihovim odgovarajućim rešenjima.

Na CentOS 7

Evo kompletne liste paketa koje sam morao instalirati u svoj CentOS 7 kutiju prije nego što sam mogao dovršiti proces konfiguracije:


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

Možete instalirati sve gore navedene potrebne pakete pomoću jedne naredbe yum kao što 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

Sljedeća poruka pokazuje da je konfiguracija uspješno završena:

onda trči,


make
make install

Kada je instalacija završena, možete provjeriti verziju pomoću komandne linije:

Na Debianu 8

U Debianu, morao sam instalirati sljedeće pakete da bi se proces konfiguracije uspješno završio:


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

Sve gore navedene potrebne pakete možete instalirati naredbom 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

Zatim dodajte –with-libdir=/lib/x86_64-linux-gnu opcijama konfiguracije i kreirajte sljedeću simboličku vezu na datoteku zaglavlja gmp.h:


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

Zatim pokrenite make i make install kao u prethodnom slučaju. U roku od 10-15 minuta kompilacija bi trebala biti završena i možemo provjeriti instaliranu PHP verziju kao i prije:


make
make install

Podešavanje php.ini i testiranje PHP 7 instalacije

Kada instalirate PHP iz izvora, dva uzorka php.ini su obezbeđena. U ovom slučaju, oni se nalaze unutar /opt/php-7.0.0RC1:


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

Sada morate kopirati jednu od njih u /usr/local/lib, koja je određena kao zadana lokacija za takvu datoteku prema napomenama o instalaciji:


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

I ne zaboravite dodati ovu konfiguracijsku direktivu glavnim konfiguracijskim datotekama Apachea.


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

U Debianu 8 možete izostaviti liniju LoadModule, a također morate ukloniti i kreirati sljedeće simboličke veze na naznačene Apache module:


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

Zatim ponovo pokrenite web server:


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

Ako pokretanje Apachea u CentOS 7 vrati poruku o grešci koja kaže da ne može pronaći libphp7.so modul, jednostavno kopirajte na naznačenu putanju sa /opt/php-7.0.0RC1/.libs/libphp7.so.

Klasičan način testiranja PHP/Apache instalacije je korištenje datoteke phpinfo(). Kreirajte datoteku pod nazivom test.php sa sljedećim sadržajem u korijenu dokumenta web servera (/var/www/html u obje distribucije):


<?php
phpinfo();
?>

I pokrenite pretraživač u klijentu unutar vaše mreže da testirate:


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

Sažetak

U ovom članku smo objasnili kako da instalirate PHP 7 iz izvornog koda, najnoviji RC ovog popularnog skriptnog jezika na strani servera koji ima za cilj poboljšanje performansi uz neviđene vrijednosti. Dok ne dostigne stabilnu vrijednost u novembru ove godine 2015, JAKO savjetujemo da NEMOJTE koristiti ovo izdanje u proizvodnom okruženju.

Ako imate bilo kakvih pitanja/komentara/sugestija u vezi sa ovim člankom, slobodno nas obavijestite putem obrasca ispod.