Úvod
Aktuální úložiště stabilních balíčků Debianu nemusí vždy obsahovat aktuální software, který by byl v souladu s
naše očekávání. Existuje pro to velmi dobrý důvod, například stabilní systém jako kompromis za provozování nekvalitního softwaru.
Skriptovací jazyk PHP na straně serveru není výjimkou! V
době psaní aktuální verze PHP Debianu je 5.6.29
zatímco nejnovější vydání zdrojového kódu PHP je 7.1.0
(vzhledem k tomu, že neexistuje žádné PHP 6).
Tvrzení současného vývojáře PHP staví PHP 7 před PHP 5.6, pokud jde o rychlost, kde má být PHP 7 dvakrát rychlejší než jeho předchůdce:
Díky novému Zend Engine 3.0 mají vaše aplikace až 2x vyšší výkon a o 50 % lepší spotřebu paměti než PHP 5.6, což vám umožňuje obsluhovat více souběžných uživatelů bez přidání jakéhokoli
hardwaru. PHP 7, navržené a upravené pro dnešní pracovní zátěže, je dnes nejlepší volbou pro webové vývojáře.
Odkaz:zend.com/en/resources/php-7
Cíl
Porovnat rychlost mezi PHP 5.6 a nejnovější PHP 7.1.0 není cílem tohoto článku. Cílem je však nainstalovat nejnovější verzi PHP 7 na systém Debian 8. Dále
nainstalujeme PHP-FPM (FastCGI Process Manager). Tato příručka nabídne dvě možné instalace.
Nejprve bude průvodce používat compile-php-debian
skript dostupný na github.com/linuxconfig/compile-php-debian
pro automatizaci instalace PHP 7 a později se ukáže, jak nainstalovat PHP 7 ručně.
Požadavky
- Privilegovaný přístup k vašemu systému Debian Linux jako root nebo přes
sudo
je vyžadován příkaz
Obtížnost
STŘEDNÍ
Konvence
- # – vyžaduje, aby dané linuxové příkazy byly spouštěny s právy root buď přímo jako uživatel root, nebo pomocí
sudo
příkaz - $ – vyžaduje, aby dané linuxové příkazy byly spouštěny jako běžný neprivilegovaný uživatel
Pokyny
Odstranit balíčky PHP5
Pokud již máte na svém systému nainstalované PHP5, musíte je před novou instalací PHP 7 odstranit. Chcete-li tak učinit pro seznam všech php
související balíček ve vašem systému:
# dpkg -l | grep -E "^ii.*php" | cut -d " " -f3 libapache2-mod-php5 php5 php5-cli php5-common php5-json php5-readline
Následující linuxový příkaz odstraní všechny balíčky uvedené ve výše uvedeném výstupu příkazu:
# REMOVE=$(dpkg -l | grep -E "^ii.*php" | cut -d " " -f3) # dpkg -P $REMOVE
Skriptovaná automatická instalace
Následující skriptovaná automatická instalace provede všechny potřebné kroky ke kompilaci a instalaci uživatelem vybrané verze PHP 7 a také nainstaluje démona PHP-FPM. Začněte klonováním compile-php-debian
skript:
$ git clone https://github.com/linuxconfig/compile-php-debian.git
Dále přejděte na compile-php-debian
adresář:
$ cd compile-php-debian
Nyní se jednoduše rozhodněte, jakou verzi PHP 7 chcete nainstalovat, a zadejte číslo vybrané verze jako argument pro install_php.sh
skript. Například pro instalaci PHP verze 7.0.8 zadejte:
# ./install_php.sh 7.0.8 FOR PHP VERSION 7.1.0 RUN # ./install_php.sh 7.1.0
Instalace může nějakou dobu trvat. Po dokončení spusťte PHP-FPM Daemon spuštěním service
příkaz:
# service php7-fpm start # service php7-fpm status [ ok ] php-7.1.0-fpm is running.
Démon PHP-FPM nyní naslouchá na localhost
číslo portu 9000
. Můžete se také pokusit připojit k démonu PHP-FPM přímo pomocí cgi-fcgi
příkaz nalezený v libfcgi0ldbl
balíček:
# cgi-fcgi -bind -connect 127.0.0.1:9000 X-Powered-By: PHP/7.1.0 Content-type: text/html; charset=UTF-8
Tím je instalace PHP 7 na vašem systému Debain 8 Linux dokončena.
Ruční instalace
Předpoklady instalace
Začněme instalací všech předpokladů, aby vyhovovaly nejběžnějším možnostem kompilace PHP:
# apt-get install autoconf bison build-essential git-core libbz2-dev libcurl4-openssl-dev libfreetype6-dev libicu-dev libjpeg-dev libmcrypt-dev libpng-dev libpspell-dev libreadline-dev libssl-dev libxml2-dev pkg-config
Stažení zdrojového kódu PHP
Pravděpodobně nejjednodušší způsob, jak získat zdrojový kód PHP pro klonování úložiště PHP na GitHubu. Pro klonování zdrojového adresáře PHP spusťte následující linuxový příkaz:
$ git clone https://github.com/php/php-src.git
Jakmile je git clone
operace je dokončena, zůstane vám nový název adresáře php-src
.
Další alternativou je získat tarball konkrétní verze PHP, kterou
chcete nainstalovat, jejím stažením přímo z http://php.net/downloads.php
. Výhodou je v tomto případě požadavek na minimální velikost stahování. Nebudete si však moci vybrat
selektivně různé verze pro více nasazení.
Kompilace zdrojového kódu PHP
V této fázi jsme připraveni provést kompilaci zdrojového kódu PHP. Přejděte na dříve stažený php-src
adresář:
$ cd php-src
Dále se rozhodněte, jakou verzi PHP chcete zkompilovat a nainstalovat. Spusťte následující git
příkaz k zobrazení seznamu všech dostupných verzí PHP 7:
$ git branch -a | grep PHP-7 remotes/origin/PHP-7.0 remotes/origin/PHP-7.0.0 remotes/origin/PHP-7.0.1 remotes/origin/PHP-7.0.10 remotes/origin/PHP-7.0.11 remotes/origin/PHP-7.0.12 remotes/origin/PHP-7.0.13 remotes/origin/PHP-7.0.14 remotes/origin/PHP-7.0.2 remotes/origin/PHP-7.0.3 remotes/origin/PHP-7.0.4 remotes/origin/PHP-7.0.5 remotes/origin/PHP-7.0.6 remotes/origin/PHP-7.0.7 remotes/origin/PHP-7.0.8 remotes/origin/PHP-7.0.9 remotes/origin/PHP-7.1 remotes/origin/PHP-7.1.0 remotes/origin/PHP-7.1.0RC1 remotes/origin/PHP-7.1.0RC2 remotes/origin/PHP-7.1.0RC3 remotes/origin/PHP-7.1.0beta1 remotes/origin/PHP-7.1.0beta2 remotes/origin/PHP-7.1.0beta3
Použijte git checkout
příkaz pro přepnutí do požadované větve verze PHP, kterou chcete použít pro kompilaci. Příklad:
$ git checkout PHP-7.1.0 Branch PHP-7.1.0 set up to track remote branch PHP-7.1.0 from origin. Switched to a new branch 'PHP-7.1.0'
Dále vytvořte adresář, který bude použit jako cíl instalace. V našem případě to bude /usr/local/php-7.1.0
:
# mkdir /usr/local/php-7.1.0
a zadejte všechny řetězce kompilace. Věnujte zvláštní pozornost --prefix
a --with-config-file-scan-dir
konfigurační řetězce, které definují instalaci a konfiguraci
nastavení. Níže je uveden seznam nejběžnějších možností kompilace PHP.
Neváhejte a aktualizujte seznam, aby vyhovoval vašim potřebám. V závislosti na vašem výběru možná budete muset nainstalovat další
předpoklady. Zkopírujte a vložte níže uvedený text do svého terminálu a stiskněte ENTER:
CONFIGURE_STRINGS="--enable-bcmath \ --enable-calendar \ --enable-dba \ --enable-exif \ --enable-filter \ --enable-fpm \ --enable-ftp \ --enable-gd-native-ttf \ --enable-intl \ --enable-mbstring \ --enable-mysqlnd \ --enable-pcntl \ --enable-shmop \ --enable-simplexml \ --enable-soap \ --enable-sockets \ --enable-sysvmsg \ --enable-sysvsem \ --enable-sysvshm \ --enable-wddx \ --enable-xmlreader \ --enable-xmlwriter \ --enable-zip \ --prefix=/usr/local/php-7.1.0 \ --with-bz2 \ --with-config-file-scan-dir=/usr/local/php-7.1.0/etc/conf.d \ --with-curl \ --with-fpm-group=www-data \ --with-fpm-user=www-data \ --with-freetype-dir \ --with-gd \ --with-gettext \ --with-jpeg-dir \ --with-mcrypt \ --with-mhash \ --with-mysqli=mysqlnd \ --with-mysql-sock=/var/run/mysqld/mysqld.sock \ --with-openssl \ --without-pear \ --with-pdo-mysql=mysqlnd \ --with-pdo-sqlite \ --with-png-dir \ --with-pspell \ --with-readline \ --with-sqlite3 \ --with-zlib"
Výše uvedené nastaví CONFIGURE_STRINGS
proměnná shellu, která obsahuje všechny vaše možnosti kompilace PHP. Dále musíme vytvořit konfigurační a Makefiles. Chcete-li tak učinit, proveďte:
$ ./buildconf --force Forcing buildconf Removing configure caches rebuilding aclocal.m4 rebuilding configure rebuilding main/php_config.h.in
Dále proveďte konfiguraci kompilace:
$ ./configure $CONFIGURE_STRINGS
Pokud výše uvedená configure
nevyvolala žádné chyby a poté je čas provést kompilaci spuštěním make
příkaz:
$ make .... Build complete. Don't forget to run 'make test'.
Po dokončení kompilace, pokud je zdrojový kód PHP dokončen, volitelně spusťte make test
nebo spusťte make install
příkaz k instalaci všech dříve zkompilovaných binárních souborů do jejich
příslušných adresářů:
# make install Installing shared extensions: /usr/local/php-7.1.0/lib/php/extensions/no-debug-non-zts-20160303/ Installing PHP CLI binary: /usr/local/php-7.1.0/bin/ Installing PHP CLI man page: /usr/local/php-7.1.0/php/man/man1/ Installing PHP FPM binary: /usr/local/php-7.1.0/sbin/ Installing PHP FPM config: /usr/local/php-7.1.0/etc/ Installing PHP FPM man page: /usr/local/php-7.1.0/php/man/man8/ Installing PHP FPM status page: /usr/local/php-7.1.0/php/php/fpm/ Installing phpdbg binary: /usr/local/php-7.1.0/bin/ Installing phpdbg man page: /usr/local/php-7.1.0/php/man/man1/ Installing PHP CGI binary: /usr/local/php-7.1.0/bin/ Installing PHP CGI man page: /usr/local/php-7.1.0/php/man/man1/ Installing build environment: /usr/local/php-7.1.0/lib/php/build/ Installing header files: /usr/local/php-7.1.0/include/php/ Installing helper programs: /usr/local/php-7.1.0/bin/ program: phpize program: php-config Installing man pages: /usr/local/php-7.1.0/php/man/man1/ page: phpize.1 page: php-config.1 /php-src/build/shtool install -c ext/phar/phar.phar /usr/local/php-7.1.0/bin ln -s -f phar.phar /usr/local/php-7.1.0/bin/phar Installing PDO headers: /usr/local/php-7.1.0/include/php/ext/pdo/
Vše hotovo. PHP 7.1.0 je nyní nainstalováno. Pro potvrzení provedení:
$ /usr/local/php-7.1.0/bin/php -v PHP 7.1.0 (cli) (built: Jan 2 2017 09:09:59) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.1.0-dev, Copyright (c) 1998-2016 Zend Technologies
Instalace správce procesů FastCGI
V této sekci nainstalujeme PHP-FPM, který bude použit jako předek pro instalaci s webovými servery, jako je Nginx nebo Apache. Nejprve vytvořte symbolický odkaz nově zkompilovaného/usr/local/php-$version/sbin/php-fpm
binární, aby byla naše instalace uklizená:
# ln -s /usr/local/php-7.1.0/sbin/php-fpm /usr/local/php-7.1.0/sbin/php-7.1.0-fpm
Stále v php-src
adresář, nastavte výchozí php.ini
config:
# cp php.ini-production /usr/local/php-7.1.0/lib/php.ini
Povolit konfigurační soubor démona PHP-FPM:
# mv /usr/local/php-7.1.0/etc/php-fpm.d/www.conf.default /usr/local/php-7.1.0/etc/php-fpm.d/www.conf
Použijte textový editor a vytvořte nový /usr/local/php-7.1.0/etc/php-fpm.conf
konfigurační soubor s následujícím obsahem:
[global] pid = /var/run/php7-fpm.pid error_log = /var/log/php7-fpm.log include=/usr/local/php-7.1.0/etc/php-fpm.d/*.conf
Povolit další moduly PHP
Vložte všechny direktivy modulu, které chcete povolit, do php.ini
konfigurační soubor. Chcete-li například povolit spuštění modulu PHP OpCache společnosti Zend:
# echo "zend_extension=opcache.so" >> /usr/local/php-7.1.0/lib/php.ini
Nakonfigurujte skript PHP7-FPM init.d
Nejprve vložte následující upravený php7-fpm.init
skript do /etc/init.d/
adresář:
# wget -qO /etc/init.d/php7-fpm https://linuxconfig.org/images/php7-fpm.init
V případě, že jste nainstalovali jinou verzi PHP než 7.1.0
použijte textový editor a změňte následující proměnné skriptu tak, aby odpovídaly vašemu nainstalovanému PHP VERSION
:
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/php-VERSION/sbin NAME=php-VERSION-fpm DAEMON=/usr/local/php-VERSION/sbin/$NAME CONFFILE=/usr/local/php-VERSION/etc/php-fpm.conf
Nakonec vytvořte /etc/init.d/php7-fpm
spustitelný soubor a spusťte udpate-rc.d
příkaz:
# chmod +x /etc/init.d/php7-fpm # update-rc.d php7-fpm defaults
Spusťte démona PHP-FPM
Nyní byste měli být schopni jednoduše spustit PHP-FPM Daemon spuštěním service
příkaz:
# service php7-fpm start # service php7-fpm status [ ok ] php-7.1.0-fpm is running.
Démon PHP-FPM nyní naslouchá na localhost
číslo portu 9000
.