Kako namestiti PHP 7 z Apachejem in MariaDB na CentOS 7/Debian 8
Prejšnji prejšnji teden (natančneje 21. avgusta 2015) je razvojna skupina PHP napovedala, da je na voljo najnovejša izdaja PHP 7, in spodbudila uporabnike in razvijalce po vsem svetu, da jo preizkusijo.
Vendar moramo upoštevati, da je to različica RC (Release Candidate), zato se pričakuje, da ima napake ali nezdružljivosti z obstoječimi nastavitvami, zato se od uporabnikov zahteva, da jih prijavijo s sistemom za sledenje napakam in da ne uporabljajo PHP 7 v proizvodnjo, medtem ko ostaja v tej fazi.
Svetla stran je ta, da ta različica vključuje več popravkov (za podroben seznam novih funkcij in izboljšav boste morda želeli poiskati to stran v skladišču projekta GitHub), pri čemer je najbolj prepoznavna značilnost izjemno povečanje zmogljivosti v primerjavi s prejšnjimi različice.
Ta članek vas bo vodil skozi postopek namestitve in prevajanja PHP 7 RC1 iz izvorne tarball skupaj z Apache in MariaDB na CentOS 7 in Debian 8 Jessie. Ista navodila delujejo tudi na distribucijah na osnovi CentOS, kot so RHEL, Fedora, Scientific Linux in Debian, na primer Ubuntu/Mint.
Namestitev PHP 7 v CentOS 7 in Debian 8
Kot je navedeno v uvodu, ker je ta različica namesto stabilne izdaje RC, ne moremo upravičeno pričakovati, da jo bomo našli v skladiščih. Iz tega razloga bomo morali prenesti izvorno kodo in program sestaviti iz nič.
Preden pa to storimo, si moramo zapomniti, da za boljše izkoriščanje PHP 7 in morda najboljši način, da ga preizkusimo, je njegova namestitev skupaj z Apache in MariaDB - kar LAHKO najdemo v skladiščih:
# yum update && yum install httpd mariadb mariadb-server
# aptitude update && aptitude install apache2 mariadb-server mariadb-client mariadb.common
V obeh primerih lahko tarball z izvorno kodo PHP prenesete in izvlečete na naslednji način:
# wget https://downloads.php.net/~ab/php-7.0.0RC1.tar.gz # tar xzf php-7.0.0RC1.tar.gz -C /opt
Ko končamo, pojdimo v /opt/php-7.0.0RC1 in izvedimo skript buildconf s stikalom –force, da prisilimo gradnjo različice RC:
# ls
# cd /opt/php-7.0.0RC1.tar.gz # ./buildconf --force
Zdaj je čas, da izvršimo naš dobro znani ukaz configure. Spodnje možnosti bodo zagotovile standardno namestitev PHP 7, vendar lahko v priročniku PHP poiščete celoten seznam možnosti, da boste namestitev bolje prilagodili svojim potrebam:
# ./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
Če naletite na naslednjo napako:
configure: error: no acceptable C compiler found in $PATH see 'config.log' for more details
Preprosto namestite gcc in odvisnosti z naslednjim ukazom in znova zaženite zgornji ukaz configure.
# yum install gcc [On CentOS 7 box] # aptitude install gcc [On Debian 8 box]
Boste na poti k prevajanju PHP 7, kar lahko traja nekaj časa. Če manjkajo druge knjižnice ali viri, ta postopek ne bo uspel, vendar jih lahko vedno namestite in znova zaženete configure.
Na primer, po namestitvi naslednjega sporočila o napaki sem moral namestiti libxml2-devel:
configure: error: xml2-config not found. Please check your libxml2 installation.
Na žalost ne moremo zajeti vseh scenarijev primerov, saj se lahko nameščena programska oprema razlikuje od sistema do sistema. Med namestitvijo se boste morda želeli sklicevati na to stran, ki opisuje več napak, na katere lahko naletite med namestitvijo PHP iz vira, skupaj z njihovimi rešitvami.
Tu je popoln seznam paketov, ki sem jih moral namestiti v polje CentOS 7, preden sem lahko dokončal postopek konfiguriranja:
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
Vse zgoraj zahtevane pakete lahko namestite z enim ukazom yum, kot 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
Naslednje sporočilo pomeni, da je bila konfiguracija uspešno končana:
Potem teči,
# make # make install
Ko je namestitev končana, lahko z ukazno vrstico preverite različico:
V Debian sem moral namestiti naslednje pakete, da se je postopek konfiguriranja uspešno zaključil:
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
Vse zgoraj zahtevane pakete lahko z ukazom apt-get namestite v 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
Nato v nastavitvene možnosti dodajte –with-libdir =/lib/x86_64-linux-gnu in ustvarite naslednjo povezavo do glave gmp.h:
# ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h
Nato zaženite make in make install kot v prejšnjem primeru. V 10-15 minutah bi se kompilacija morala končati in nameščeno različico PHP lahko preverimo kot prej:
# make # make install
Nastavitev php.ini in preizkušanje namestitve PHP 7
Ko namestite PHP iz vira, sta na voljo dva vzorca php.ini. V tem primeru se nahajajo znotraj /opt/php-7.0.0RC1:
# ls -l /opt/php-7.0.0RC1 | grep php.ini
Zdaj morate enega od njih kopirati v/usr/local/lib, ki je določen kot privzeto mesto za to datoteko v skladu z opombami o namestitvi:
# cp /opt/php-7.0.0RC1/php.ini-development /usr/local/lib
In ne pozabite dodati te konfiguracijske direktive v glavne konfiguracijske datoteke Apacheja.
/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>
V Debianu 8 lahko izpustite vrstico LoadModule, prav tako pa morate odstraniti in ustvariti naslednje simbolne povezave do navedenih modulov Apache:
# 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
Nato znova zaženite spletni strežnik:
# systemctl restart httpd [On CentOS 7 box] # systemctl restart apache2 [On Debian 8 box]
Če se pri zagonu Apache v CentOS 7 prikaže sporočilo o napaki, v katerem piše, da ne more najti modula libphp7.so, preprosto kopirajte na navedeno pot iz /opt/php-7.0.0RC1/.libs/libphp7.so.
Klasičen način preizkušanja namestitve PHP/Apache je uporaba datoteke phpinfo()
. Ustvarite datoteko z imenom test.php z naslednjo vsebino v korenu dokumentov spletnega strežnika (/ var/www/html v obeh distribucijah):
<?php phpinfo(); ?>
In zaženite brskalnik v odjemalcu znotraj vašega omrežja, da preizkusite:
http://localhost/test.php OR http://IP-address/test.php
Povzetek
V tem članku smo razložili, kako namestiti PHP 7 iz izvorne kode, najnovejšega RC tega priljubljenega skriptnega jezika na strani strežnika, katerega cilj je izboljšati zmogljivost na vrednosti brez primere. Dokler ne doseže stabilnosti novembra letos 2015, vam STROGO priporočamo, da te izdaje NE uporabljate v produkcijskem okolju.
Če imate kakršna koli vprašanja/komentarje/predloge glede tega članka, nam to sporočite z uporabo spodnjega obrazca.