PHP 7:n asentaminen Apachella ja MariaDB:llä CentOS 7/Debian 8 -käyttöjärjestelmään


Viime viikolla (tarkemmin 21. elokuuta 2015) PHP-kehitystiimi ilmoitti uusimman PHP 7 -julkaisun saatavuudesta ja rohkaisi käyttäjiä ja kehittäjiä maailmanlaajuisesti testaamaan se.

Meidän on kuitenkin huomattava, että koska tämä on RC (Release Candidate) -versio, siinä saattaa olla virheitä tai yhteensopimattomuutta olemassa olevien asetusten kanssa, joten käyttäjiä pyydetään ilmoita niistä virheenseurantajärjestelmän avulla ja älä käytä PHP 7:ää tuotannossa, kun se on siinä vaiheessa.

Valoisa puoli on, että tämä versio sisältää useita korjauksia (saatat haluta katsoa tältä sivulta projektin GitHub-tietovarastossa yksityiskohtaisen luettelon uusista ominaisuuksista ja parannuksista), joista erottuvin ominaisuus on huomattava suorituskyvyn kasvu verrattuna aikaisempiin versioihin.

Tämä artikkeli opastaa sinut PHP 7 RC1:n asennuksen ja kääntämisen läpi lähdetarballista sekä Apache ja MariaDB CentOS 7:ssä. ja Debian 8 Jessie. Samat ohjeet toimivat myös CentOS-pohjaisissa jakeluissa, kuten RHEL, Fedora, Scientific Linux ja Debian<.-pohjainen, kuten Ubuntu/Mint.

PHP 7:n asentaminen CentOS 7:ään ja Debian 8:aan

Kuten johdannossa todettiin, koska tämä versio on RC vakaan julkaisun sijaan, emme voi kohtuudella odottaa löytävämme sitä arkistoista. Tästä syystä meidän on ladattava lähdekoodi ja käännettävä ohjelma tyhjästä.

Ennen kuin teemme sen, meidän on kuitenkin muistettava, että PHP 7:n hyödyntäminen ja ehkä paras tapa kokeilla sitä on asentaa se Apachen kanssa. ja MariaDB – jotka voimme löytää arkistoista:

CentOS 7:ssä


yum update && yum install httpd mariadb mariadb-server

Debian 8:ssa


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

Kummassakin tapauksessa PHP-lähdekoodin sisältävä tarball voidaan ladata ja purkaa seuraavasti:


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

Kun olet valmis, siirrytään tiedostoon /opt/php-7.0.0RC1 ja suoritetaan buildconf-skripti –force-kytkimellä pakottaaksesi RC-version rakentaminen:


ls


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

Nyt on aika suorittaa tunnettu configure-komentomme. Vaikka alla olevat vaihtoehdot varmistavat normaalin PHP 7 -asennuksen, voit katsoa PHP-oppaan täydellisen vaihtoehtoluettelon mukauttaaksesi asennuksen paremmin tarpeidesi mukaan:


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

Jos kohtaat seuraavan virheen:


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

Asenna vain gcc ja riippuvuudet seuraavalla komennolla ja suorita yllä oleva configure-komento uudelleen.


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

Olet matkalla kääntämään PHP 7:ää, mikä voi kestää hetken. Jos puuttuu muita kirjastoja tai resursseja, tämä prosessi epäonnistuu, mutta voit aina asentaa ne ja suorittaa konfiguroinnin uudelleen.

Minun piti esimerkiksi asentaa libxml2-devel, kun sain seuraavan virheilmoituksen:


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

Valitettavasti emme voi kattaa kaikkia tapausskenaarioita, koska asennetut ohjelmistot voivat vaihdella järjestelmästä toiseen. Asennuksen aikana saatat haluta viitata tälle sivulle, joka sisältää useita virheitä, joihin saatat törmätä asentaessasi PHP:tä lähdekoodista, sekä niiden ratkaisut.

CentOS 7:ssä

Tässä on täydellinen luettelo paketeista, jotka minun oli asennettava CentOS 7 -laatikkooni ennen kuin pystyin suorittamaan määritysprosessin loppuun:


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

Voit asentaa kaikki yllä mainitut pakolliset paketit yhdellä yum-komennolla kuvan osoittamalla tavalla.


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

Seuraava viesti osoittaa, että konfigurointi on valmis:

Sitten juokse,


make
make install

Kun asennus on valmis, voit tarkistaa version komentoriviltä:

Debian 8:ssa

Debianissa minun piti asentaa seuraavat paketit, jotta määritysprosessi päättyi onnistuneesti:


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

Voit asentaa kaikki yllä mainitut pakolliset paketit apt-get-komennolla Debian 8:ssa.


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

Lisää sitten –with-libdir=/lib/x86_64-linux-gnu määritysasetuksiin ja luo seuraava symbolilinkki gmp.h-otsikkotiedostoon:


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

Suorita sitten make ja make install kuten edellisessä tapauksessa. Käännöksen pitäisi olla valmis 10–15 minuutin kuluessa, ja voimme tarkistaa asennetun PHP-version kuten ennenkin:


make
make install

php.inin määrittäminen ja PHP 7:n asennuksen testaus

Kun asennat PHP:n lähdekoodista, mukana tulee kaksi esimerkkiä php.ini. Tässä tapauksessa ne sijaitsevat sisällä /opt/php-7.0.0RC1:


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

Sinun on nyt kopioitava yksi niistä hakemistoon /usr/local/lib, joka on määritetty tällaisen tiedoston oletussijaintiksi asennusohjeiden mukaan:


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

Älä myöskään unohda lisätä tätä määritysohjetta Apachen päämääritystiedostoihin.


/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:ssa voit jättää pois rivin LoadModule ja sinun on myös poistettava ja luotava seuraavat symboliset linkit ilmoitettuihin Apache-moduuleihin:


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

Käynnistä sitten verkkopalvelin uudelleen:


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

Jos Apachen käynnistäminen CentOS 7:ssä palauttaa virheilmoituksen, jonka mukaan se ei löydä libphp7.so-moduulia, kopioi vain osoitettuun polkuun. osoitteesta /opt/php-7.0.0RC1/.libs/libphp7.so.

Klassinen tapa testata PHP/Apache-asennusta on käyttää phpinfo()-tiedostoa. Luo tiedosto nimeltä test.php, jossa on seuraava sisältö verkkopalvelimen asiakirjan juureen (/var/www/html molemmissa jakeluissa):


<?php
phpinfo();
?>

Ja käynnistä selain verkkosi asiakasohjelmassa testataksesi:


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

Yhteenveto

Tässä artikkelissa olemme selittäneet, kuinka PHP 7 asennetaan lähdekoodista, tämän suositun palvelinpuolen komentosarjakielen uusin RC, jonka tavoitteena on parantaa suorituskykyä ennennäkemättömillä arvoilla. Ennen kuin se saavuttaa tallin marraskuussa tämän vuoden 2015, sinun VAHVASTI kehotetaan ÄLÄ käytä tätä julkaisua tuotantoympäristössä.

Jos sinulla on kysyttävää/kommentteja/ehdotuksia tästä artikkelista, ota meihin yhteyttä alla olevalla lomakkeella.