Kif Tinstalla PHP 7 b'Apache u MariaDB fuq CentOS 7/Debian 8


Il-ġimgħa li għaddiet (b'mod aktar preċiż fil-21 ta' Awwissu 2015), it-tim tal-iżvilupp tal-PHP ħabbar id-disponibbiltà tal-aħħar rilaxx ta 'PHP 7 u ħeġġeġ lill-utenti u lill-iżviluppaturi madwar id-dinja biex jittestjawha.

Madankollu, irridu ninnotaw li peress li din hija verżjoni RC (Release Candidate), huwa mistenni li jista’ jkollha bugs jew inkompatibilitajiet ma’ setups eżistenti sabiex l-utenti qed jintalbu jirrappurtawhom billi jużaw is-sistema ta’ traċċar tal-bugs u ma jużawx PHP 7 f’ produzzjoni filwaqt li tibqa’ f’dik il-fażi.

In-naħa tajba hija li din il-verżjoni tinkludi diversi soluzzjonijiet (tista' tkun trid tirreferi għal din il-paġna fir-repożitorju GitHub tal-proġett għal lista dettaljata tal-karatteristiċi u t-titjib il-ġodda), bl-aktar karatteristika distintiva tkun żieda notevoli fil-prestazzjoni meta mqabbla ma 'qabel. verżjonijiet.

Dan l-artikolu ser jimxik permezz tal-proċess ta 'installazzjoni u kumpilazzjoni ta' PHP 7 RC1 mis-sors tarball flimkien ma 'Apache u MariaDB fuq CentOS 7 u Debian 8 Jessie. L-istess istruzzjonijiet jaħdmu wkoll fuq distribuzzjonijiet ibbażati fuq CentOS bħal RHEL, Fedora, Scientific Linux u Debian ibbażati bħal Ubuntu/Mint.

Installazzjoni ta' PHP 7 f'CentOS 7 u Debian 8

Kif intqal fl-introduzzjoni, peress li din il-verżjoni hija RC minflok rilaxx stabbli, ma nistgħux nistennew b'mod raġonevoli li nsibuha fir-repożitorji. Għal dik ir-raġuni, ikollna tniżżel il-kodiċi tas-sors u niġbru l-programm mill-bidu.

Qabel ma nagħmlu dan, madankollu, irridu niftakru li sabiex nieħdu vantaġġ aħjar minn PHP 7 u forsi l-aħjar mod biex nippruvaw huwa li nistallawha flimkien ma 'Apache u MariaDB - li NISTGĦU nsibu fir-repożitorji:

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

Fi kwalunkwe każ, it-tarball bil-kodiċi tas-sors tal-PHP jista 'jitniżżel u jiġi estratt kif ġej:

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

Ladarba tlesti, ejja ngħaddu għal /opt/php-7.0.0RC1 u tesegwixxi l-iskrittura tal-buildconf bl-iswiċċ –force sabiex iġiegħel il-bini ta’ verżjoni RC:

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

Issa wasal iż-żmien li tesegwixxi l-kmand tal-konfigurazzjoni magħruf tagħna. Filwaqt li l-għażliet t'hawn taħt se jiżguraw installazzjoni standard PHP 7, tista' tirreferi għal-lista sħiħa tal-għażliet fil-manwal tal-PHP sabiex tippersonalizza aħjar l-installazzjoni skont il-bżonnijiet tiegħek:

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

Jekk tiffaċċja l-iżball li ġej:

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

Sempliċement installa gcc u dipendenzi bil-kmand li ġej u erġa ħaddem il-kmand tal-konfigurazzjoni ta 'hawn fuq.

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

Int tkun fi triqtek biex tikkumpila PHP 7, li jista 'jieħu ftit żmien. Jekk ikun hemm libreriji jew riżorsi oħra neqsin, dan il-proċess se jfalli iżda dejjem tista 'tinstallahom u tħaddem mill-ġdid kkonfigurat.

Pereżempju, kelli ninstalla libxml2-devel wara li rċivejt il-messaġġ ta 'żball li ġej:

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

Sfortunatament, ma nistgħux possibbilment ikopru x-xenarji tal-każi kollha peress li s-softwer installat jista 'jvarja minn sistema għal oħra. Waqt l-installazzjoni, tista 'tkun trid tirreferi għal din il-paġna li tiddeskrivi diversi żbalji li tista' tiffaċċja waqt li tinstalla PHP mis-sors, flimkien mas-soluzzjonijiet rispettivi tagħhom.

Hawnhekk hawn lista kompluta tal-pakketti li kelli ninstalla fil-kaxxa tiegħi CentOS 7 qabel ma nista' nlesti l-proċess tal-konfigurazzjoni:

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

Tista 'tinstalla l-pakketti kollha meħtieġa hawn fuq b'kmand wieħed yum kif muri.

# 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

Il-messaġġ li ġej jindika li l-konfigurazzjoni spiċċat b'suċċess:

Imbagħad ġiri,

# make
# make install

Meta l-installazzjoni tkun kompluta tista 'tiċċekkja l-verżjoni billi tuża l-linja tal-kmand:

F'Debian, kelli ninstalla l-pakketti li ġejjin biex il-proċess tal-konfigurazzjoni jitlesta b'suċċess:

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

Tista 'tinstalla l-pakketti kollha meħtieġa ta' hawn fuq bil-kmand apt-get fuq 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

Imbagħad żid, –with-libdir=/lib/x86_64-linux-gnu mal-għażliet tal-konfigurazzjoni, u oħloq is-simbollink li ġej għall-fajl header gmp.h:

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

Imbagħad dam make and make install bħal fil-każ preċedenti. Fi żmien 10-15-il minuta l-kumpilazzjoni kellha tkun lesta u nistgħu nivverifikaw il-verżjoni PHP installata bħal qabel:

# make
# make install

Twaqqif ta' php.ini u Ittestjar ta' Installazzjoni ta' PHP 7

Meta tinstalla PHP mis-sors, jiġu pprovduti żewġ kampjuni php.ini. F'dan il-każ, jinsabu ġewwa /opt/php-7.0.0RC1:

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

Issa trid tikkopja waħda minnhom għal /usr/local/lib, li hija indikata bħala l-post default għal tali fajl skont in-noti ta’ Installazzjoni:

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

U tinsiex iżżid din id-direttiva ta 'konfigurazzjoni mal-fajls ta' konfigurazzjoni prinċipali ta '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>

F'Debian 8 tista' tħalli barra l-linja LoadModule u wkoll trid tneħħi u toħloq il-links simboliċi li ġejjin għall-moduli Apache indikati:

# 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

Imbagħad, ibda mill-ġdid is-server tal-web:

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

Jekk il-bidu ta 'Apache f'CentOS 7 jirritorna messaġġ ta' żball li jgħid li ma jistax isib il-modulu libphp7.so, sempliċement ikkopja lejn il-mogħdija indikata minn /opt/php-7.0.0RC1/.libs/libphp7.so.

Il-mod klassiku biex tittestja installazzjoni PHP/Apache qed tuża fajl phpinfo(). Oħloq fajl bl-isem test.php bil-kontenut li ġej fl-għerq tad-dokument tas-server tal-web (/var/www/html fiż-żewġ distribuzzjonijiet):

<?php
phpinfo();
?>

U tniedi browser f'klijent fin-netwerk tiegħek biex tittestja:

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

Sommarju

F'dan l-artikolu spjegajna kif tinstalla PHP 7 mill-kodiċi tas-sors, l-aktar RC ġdid ta 'din il-lingwa ta' scripting popolari fuq is-server li timmira li ttejjeb il-prestazzjoni b'valuri bla preċedent. Sakemm jilħaq l-istabbli f'Novembru ta 'din is-sena 2015, inti avżat bil-qawwi biex MA tużax din ir-rilaxx f'ambjent ta' produzzjoni.

Jekk għandek xi mistoqsijiet/kummenti/suġġerimenti dwar dan l-artikolu, tħossok liberu li tgħarrafna billi tuża l-formola hawn taħt.