Kaip įdiegti PHP 7 naudojant „Apache“ ir „MariaDB“ „CentOS 7“/„Debian 8“.


Praėjusią praėjusią savaitę (tiksliau 2015 m. rugpjūčio 21 d.) PHP kūrėjų komanda paskelbė apie naujausią PHP 7 leidimą ir paragino vartotojus bei kūrėjus visame pasaulyje išbandyti tai.

Tačiau turime atkreipti dėmesį, kad tai yra RC (Release Candidate) versija, todėl tikimasi, kad joje gali būti klaidų arba nesuderinamumo su esamomis sąrankomis, todėl naudotojų prašoma pranešti apie juos naudodami klaidų sekimo sistemą ir nenaudoti PHP 7 gamyboje, kol ji išlieka toje fazėje.

Geroji pusė yra ta, kad šioje versijoje yra keletas pataisymų (galite peržiūrėti šį puslapį, esantį projekto GitHub saugykloje, kad gautumėte išsamų naujų funkcijų ir patobulinimų sąrašą), kurių išskirtiniausia savybė yra nepaprastas našumo padidėjimas, palyginti su ankstesnėmis versijomis.

Šiame straipsnyje bus paaiškinta, kaip diegti ir kompiliuoti PHP 7 RC1 iš šaltinio tarball kartu su Apache ir MariaDB sistemoje CentOS 7 ir Debian 8 Jessie. Tos pačios instrukcijos taip pat veikia CentOS pagrįstuose platinimuose, pvz., RHEL, Fedora, Scientific Linux ir Debian<. pagrindu, pvz., Ubuntu/Mint.

PHP 7 diegimas CentOS 7 ir Debian 8

Kaip nurodyta įžangoje, kadangi ši versija yra RC, o ne stabili, negalime pagrįstai tikėtis, kad ją rasime saugyklose. Dėl šios priežasties turėsime atsisiųsti šaltinio kodą ir sukompiliuoti programą nuo nulio.

Tačiau prieš tai darydami turime atsiminti, kad norėdami geriau išnaudoti PHP 7 pranašumus ir galbūt geriausias būdas ją išbandyti – įdiegti ją kartu su Apache ir MariaDB – kurias galime rasti saugyklose:

„CentOS 7“.


yum update && yum install httpd mariadb mariadb-server

„Debian 8“ versijoje


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

Bet kuriuo atveju tarbalą su PHP šaltinio kodu galima atsisiųsti ir išskleisti taip:


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

Baigę pereikime prie /opt/php-7.0.0RC1 ir vykdykime scenarijų buildconf naudodami jungiklį –force, kad priverstinai RC versijos kūrimas:


ls


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

Dabar atėjo laikas vykdyti gerai žinomą komandą konfigūruoti. Nors toliau pateiktos parinktys užtikrins standartinį PHP 7 diegimą, galite peržiūrėti visą parinkčių sąrašą PHP vadove, kad geriau pritaikytumėte diegimą pagal savo poreikius:


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

Jei susiduriate su šia klaida:


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

Tiesiog įdiekite gcc ir priklausomybes naudodami šią komandą ir dar kartą paleiskite aukščiau pateiktą komandą configure.


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

Pradėsite kompiliuoti PHP 7, o tai gali šiek tiek užtrukti. Jei trūksta kitų bibliotekų ar išteklių, šis procesas nepavyks, bet visada galite juos įdiegti ir iš naujo paleisti konfigūraciją.

Pavyzdžiui, turėjau įdiegti libxml2-devel, kai gavau šį klaidos pranešimą:


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

Deja, negalime aprėpti visų atvejų, nes įdiegta programinė įranga įvairiose sistemose gali skirtis. Diegimo metu galbūt norėsite peržiūrėti šį puslapį, kuriame aprašomos kelios klaidos, su kuriomis galite susidurti diegdami PHP iš šaltinio, ir atitinkami jų sprendimai.

„CentOS 7“.

Štai visas sąrašas paketų, kuriuos turėjau įdiegti CentOS 7 laukelyje, kad galėčiau užbaigti konfigūravimo procesą:


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

Visus aukščiau nurodytus reikalingus paketus galite įdiegti naudodami vieną komandą yum, kaip parodyta.


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

Šis pranešimas rodo, kad konfigūracija sėkmingai baigta:

Tada bėk,


make
make install

Kai diegimas bus baigtas, versiją galite patikrinti naudodami komandinę eilutę:

„Debian 8“ versijoje

Programoje Debian turėjau įdiegti šiuos paketus, kad konfigūravimo procesas būtų sėkmingai baigtas:


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

Visus aukščiau nurodytus reikalingus paketus galite įdiegti naudodami komandą 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

Tada prie konfigūravimo parinkčių pridėkite –with-libdir=/lib/x86_64-linux-gnu ir sukurkite šią simbolinę nuorodą į gmp.h antraštės failą:


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

Tada paleidote make ir make install, kaip ir ankstesniu atveju. Per 10–15 minučių kompiliavimas turėtų būti baigtas ir mes galime patikrinti įdiegtą PHP versiją kaip anksčiau:


make
make install

php.ini nustatymas ir PHP 7 diegimo testavimas

Kai diegiate PHP iš šaltinio, pateikiami du pavyzdžiai php.ini. Šiuo atveju jie yra /opt/php-7.0.0RC1 viduje:


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

Dabar turite nukopijuoti vieną iš jų į /usr/local/lib, kuri yra nurodyta kaip numatytoji tokio failo vieta, kaip nurodyta diegimo pastabose:


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

Ir nepamirškite įtraukti šios konfigūracijos direktyvos į pagrindinius „Apache“ konfigūracijos failus.


/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 galite praleisti eilutę LoadModule, taip pat turite pašalinti ir sukurti šias simbolines nuorodas į nurodytus Apache modulius:


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

Tada iš naujo paleiskite žiniatinklio serverį:


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

Jei paleidus Apache sistemoje CentOS 7 pateikiamas klaidos pranešimas, kad neranda libphp7.so modulio, tiesiog nukopijuokite į nurodytą kelią iš /opt/php-7.0.0RC1/.libs/libphp7.so.

Klasikinis PHP/Apache diegimo testavimo būdas yra phpinfo() failo naudojimas. Sukurkite failą pavadinimu test.php su tokiu turiniu žiniatinklio serverio dokumento šaknyje (/var/www/html abiejuose platinimuose):


<?php
phpinfo();
?>

Ir paleiskite naršyklę savo tinklo kliente, kad patikrintumėte:


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

Santrauka

Šiame straipsnyje paaiškinome, kaip įdiegti PHP 7 iš šaltinio kodo – naujausios šios populiarios serverio pusės scenarijų kalbos RC, kurios tikslas – pagerinti našumą neregėtomis reikšmėmis. Kol jis nepasieks arklidės 2015 m. lapkritį, 2015, GRIAI patariama NEnaudokite šio leidimo gamybinėje aplinkoje.

Jei turite klausimų/komentarų/pasiūlymų dėl šio straipsnio, nedvejodami praneškite mums naudodami toliau pateiktą formą.