Bii o ṣe le Fi PHP 7 sii pẹlu Apache ati MariaDB lori CentOS 7/Debian 8


Ni ọsẹ ti o kọja (diẹ sii ni deede ni Oṣu Kẹjọ Ọjọ 21, Ọdun 2015), ẹgbẹ idagbasoke PHP kede wiwa idasilẹ tuntun ti PHP 7 ati iwuri fun awọn olumulo ati awọn oludasilẹ ni gbogbo agbaye lati danwo rẹ.

Sibẹsibẹ, a gbọdọ ṣe akiyesi pe nitori eyi jẹ ẹya RC (Oluṣilẹjade Tu silẹ), o nireti pe o le ni awọn idun tabi awọn aiṣedeede pẹlu awọn ipilẹ ti o wa tẹlẹ nitorinaa n beere lọwọ awọn olumulo lati ṣe ijabọ wọn nipa lilo eto titele kokoro ati lati ma lo PHP 7 ni iṣelọpọ lakoko ti o wa ni apakan yẹn.

Ẹgbẹ didan ni pe ẹya yii pẹlu awọn atunṣe pupọ (o le fẹ lati tọka si oju-iwe yii ni ibi ipamọ GitHub ti iṣẹ naa fun atokọ alaye ti awọn ẹya tuntun ati awọn ilọsiwaju), pẹlu ẹya iyasọtọ ti o ṣe iyatọ julọ jẹ ilọsiwaju iṣẹ iyalẹnu nigbati a bawe si iṣaaju awọn ẹya.

Nkan yii yoo rin ọ nipasẹ ilana ti fifi sori ẹrọ ati ikojọpọ PHP 7 RC1 lati ori bọọlu oriṣi pẹlu Apache ati MariaDB lori CentOS 7 ati Debian 8 Jessie. Awọn itọnisọna kanna tun ṣiṣẹ lori awọn ipinpinpin orisun CentOS bi RHEL, Fedora, Linux Scientific ati Debian ti o da bii Ubuntu/Mint.

Fifi PHP 7 sori CentOS 7 ati Debian 8

Gẹgẹbi a ti sọ ninu ifihan, nitori ẹya yii jẹ RC dipo idasilẹ iduroṣinṣin, a ko le ni oye nireti lati wa ni awọn ibi ipamọ. Fun idi eyi, a ni lati gba koodu orisun ati ṣajọ eto naa lati ibere.

Ṣaaju ki a to ṣe eyi, sibẹsibẹ, a nilo lati ranti pe lati le lo anfani ti PHP 7 daradara ati boya ọna ti o dara julọ lati gbiyanju rẹ ni fifi sori ẹrọ pẹlu Apache ati MariaDB - eyiti a LE rii ni awọn ibi ipamọ:

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

Ni eyikeyi idiyele, tarball pẹlu koodu orisun ti PHP le ṣe igbasilẹ ati jade bi atẹle:

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

Lọgan ti a ti ṣe, jẹ ki a lọ sinu /opt/php-7.0.0RC1 ki o ṣe iwe afọwọkọ buildconf pẹlu iyipada-agbara lati le fi ipa mu ikole ẹya RC kan ṣiṣẹ:

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

Bayi o to akoko lati ṣe pipaṣẹ atunto olokiki wa. Lakoko ti awọn aṣayan isalẹ yoo rii daju pe fifi sori PHP 7 boṣewa, o le tọka si atokọ aṣayan pipe ni itọsọna PHP lati le ṣe akanṣe fifi sori ẹrọ dara julọ gẹgẹbi awọn aini rẹ:

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

Ti o ba ṣiṣẹ sinu aṣiṣe wọnyi:

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

Nìkan fi sori ẹrọ gcc ati awọn igbẹkẹle pẹlu aṣẹ atẹle ati ṣiṣe aṣẹ atunto loke lẹẹkansi.

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

Iwọ yoo wa ni ọna rẹ lati ṣajọ PHP 7, eyiti o le gba igba diẹ. Ti awọn ile-ikawe miiran ti o padanu tabi awọn orisun, ilana yii yoo kuna ṣugbọn o le fi wọn sii nigbagbogbo ati ṣiṣe atunto lẹẹkansii.

Fun apẹẹrẹ, Mo ni lati fi sori ẹrọ libxml2-devel lẹhin ti o gba ifiranṣẹ aṣiṣe wọnyi:

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

Laanu, a ko le ṣee ṣe bo gbogbo awọn iṣẹlẹ iṣẹlẹ nitori sọfitiwia ti a fi sori ẹrọ le yato lati eto kan si ekeji. Lakoko fifi sori ẹrọ, o le fẹ tọka si oju-iwe yii eyiti o ṣe apejuwe ọpọlọpọ awọn aṣiṣe ti o le ṣiṣẹ lakoko fifa PHP lati orisun, pẹlu awọn solusan wọn.

Eyi ni atokọ pipe ti awọn idii ti Mo ni lati fi sori ẹrọ ni apoti CentOS 7 mi ṣaaju ki o to ni anfani lati pari ilana atunto:

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

O le fi gbogbo awọn idii ti a beere loke sii pẹlu aṣẹ yum kan ṣoṣo bi o ti han.

# 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

Ifiranṣẹ wọnyi n tọka pe atunto ti pari ni aṣeyọri:

Lẹhinna ṣiṣe,

# make
# make install

Nigbati fifi sori ba pari o le ṣayẹwo ẹya naa nipa lilo laini aṣẹ:

Ni Debian, Mo ni lati fi awọn idii wọnyi sii fun ilana atunto lati pari ni aṣeyọri:

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

O le fi sori ẹrọ gbogbo awọn idii ti a beere loke pẹlu aṣẹ-gba aṣẹ lori 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

Lẹhinna ṣafikun, –with-libdir =/lib/x86_64-linux-gnu si awọn aṣayan atunto, ki o ṣẹda aami atẹle yii si faili akọle gmp.h:

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

Lẹhinna ṣiṣe ṣiṣe ati ṣe fifi sori ẹrọ bi ọran ti tẹlẹ. Laarin awọn iṣẹju 10-15 idapọ yẹ ki o ti pari ati pe a le rii daju ẹya PHP ti a fi sii bi tẹlẹ:

# make
# make install

Ṣiṣeto php.ini ati Idanwo PHP 7 Fifi sori ẹrọ

Nigbati o ba fi PHP sii lati orisun, a ti pese apẹẹrẹ php.ini meji. Ni ọran yii, wọn wa ni inu /opt/php-7.0.0RC1:

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

Nisisiyi o nilo lati daakọ ọkan ninu wọn si/usr/agbegbe/lib, eyiti o ṣe pataki bi ipo aiyipada fun iru faili gẹgẹbi fun awọn akọsilẹ Fi sori ẹrọ:

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

Maṣe gbagbe lati ṣafikun itọsọna iṣeto yii si awọn faili iṣeto akọkọ ti 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>

Ni Debian 8 o le fi silẹ laini LoadModule ati tun o nilo lati yọ ati ṣẹda awọn ọna asopọ aami atẹle si awọn modulu Apache ti a fihan:

# 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

Lẹhinna, tun bẹrẹ olupin wẹẹbu naa:

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

Ti o ba bẹrẹ Apache ni CentOS 7 pada ifiranṣẹ aṣiṣe kan ti o sọ pe ko le rii module libphp7.so, daakọ nìkan si ọna itọkasi lati /opt/php-7.0.0RC1/.libs/libphp7.so.

Ọna ayebaye lati ṣe idanwo fifi sori PHP/Apache ni lilo faili phpinfo() . Ṣẹda faili ti a npè ni test.php pẹlu awọn akoonu wọnyi ni gbongbo iwe-ipamọ ti olupin ayelujara (/ var/www/html ni awọn pinpin mejeeji):

<?php
phpinfo();
?>

Ati ṣe ifilọlẹ aṣawakiri kan ninu alabara kan laarin nẹtiwọọki rẹ lati ṣe idanwo:

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

Akopọ

Ninu nkan yii a ti ṣalaye bawo ni a ṣe le fi PHP 7 sori ẹrọ lati koodu orisun, RC tuntun julọ ti ede afọwọkọ ẹgbẹ-ẹgbẹ olupin olokiki ti o ni ifọkansi ni imudarasi iṣẹ ni awọn iye ti a ko rii tẹlẹ. Titi yoo fi de idurosinsin ni Oṣu kọkanla ti ọdun yii 2015, A gba ọ niyanju ni agbara lati KO lo itusilẹ yii ni agbegbe iṣelọpọ.

Ti o ba ni ibeere eyikeyi/awọn asọye/awọn didaba nipa nkan yii, ni ọfẹ lati jẹ ki a mọ nipa lilo fọọmu ni isalẹ.