Hogyan telepítsük a PHP 7.1.19-et opcionális módban Debian 8-as tökéletes szerverre

botond küldte be 2018. 07. 06., p - 20:45 időpontban

Tartalom

 

Bevezető

Korábban elkészítettük a Debian 8-ra épülő ISPConfig-os tökéletes szerver összeállítást, ami sok hasznos programot és szolgáltatást tartalmaz, melyek segítségével könnyedén tudjuk üzemeltetni, konfigurálni és karbantartani osztott tárhelyes webkiszolgálónkat. Ez a szerver csomag – a régebbi weboldalakkal való kompatibilitás megőrzése végett – a PHP 5.6-os verzióját tartalmazza, aminél már léteznek újabb és gyorsabb kiadások.

A PHP dokumentációja szerint a 7.1-es változat akár 2x is gyorsabb az 5.6-osnál, és 14x gyorsabb az 5.0-ásnál. Továbbá sok újdonságot is beletettek a 7-es ágba és néhány dolgot kivettek, ami a PHP 5.6-ban benne volt, így a 7-es verzió már nem kompatibilis a korábbival.

A PHP hivatalos oldalán követhető, hogy melyik ágakat támogatják és fejlesztik tovább:

  • 5.6-os ág: Ebből jelenleg az 5.6.36 a legfrissebb (2018. április 26.)
  • 7.0-ás ág: Itt a 7.0.30 a legutóbbi (2018. április 26.)
  • 7.1-es ág: Ebből pedig a 7.1.19 a legújabb (2018. június 22.)
  • 7.2-es ág: Ebből a 7.2.7-es a legfrissebb (2018. június 21.)
  • 7.3-as ág: Ebből még csak alfa változat van: 7.3.0 alpha 3 (2018. július 5.)

Tehát látható, hogy jelenleg (2018. július 6.) 5 ágat tart fenn a PHP fejlesztő csapata, és ezeket párhuzamosan frissítik.

A Debian 8-as szerverkörnyezetre nekünk a 7.1-es ág a megfelelő, mivel a 7.2-es PHP-ban már sok olyan Debian csomag követelmény van, aminek a Debian 8 nem felel meg, hogyha forrásból szeretnénk lefordítani, így már a configure fázisban dobálja a figyelmeztetéseket. Léteznek repository-k, amik rendelkeznek a PHP 7.2.x bináris telepítőcsomagjaival Debian 8-ra, azonban ezekkel a csomagokkal csak az alapértelmezett PHP rendszert lehet leváltani, így ezekkel itt most nem foglalkozunk.

Ebben a leírásban a forrásból fogjuk lefordítani a PHP-t, majd opcionális módban telepítjük a szerverre, így az alapértelmezett 5.6-os változat mellett fog tudni működni, ami azt jelenti, hogy a szerveren lévő weboldalaknál külön lehet állítgatni ezt az új PHP verziót, ami FastCGI és PHP-FPM módokban lesz elérhető.

Egy másik leírásban Debian 9 (Stretch) tökéletes szerverre telepítjük hasonló módon a PHP 5.6.40-es verzióját.

 

 

Előfeltételek

A leírás elkészítéséhez szükség van a korábban elkészített tökéletes szerverkörnyezetre, erre telepítjük fel most a PHP 7.1.19-es változatát.

 

Ha megvan a szükséges szerverkörnyezet, akkor munkához is láthatunk.

 

Előkészítés

Elsőként lépjünk be root-ként, és frissítsük az APT csomagkezelő adatbázisát és magukat a csomagokat is, hogy naprakészek legyenek. Ehhez futtassuk az alábbi két apt-get parancsot:

apt-get update
apt-get upgrade

(Ezt minden nagyobb beavatkozás előtt ajánlott elvégezni, hogy mindig a legfrissebb csomagokkal dolgozhassunk.)

Maradjunk root-ként, majd hozzuk létre a szükséges könyvtárakat és töltsük le a PHP 7.1.19 forráscsomagját a wget paranccsal:

mkdir /opt/php-7.1.19
mkdir /usr/local/src/php7-build
cd /usr/local/src/php7-build
wget http://uk3.php.net/get/php-7.1.19.tar.bz2/from/this/mirror -O php-7.1.19.tar.bz2
tar jxf php-7.1.19.tar.bz2
cd php-7.1.19/

Itt tehát először létrehoztunk egy munkakönyvtárat a PHP rendszernek, és létrehoztunk egy másikat a fordításhoz, ahova letöltöttük az angol tükörről a PHP 7.1.19 forrását, majd kicsomagoltuk.

Ezután telepítsük fel a fordításhoz szükséges segédeszközöket, valamint a PHP-hoz szükséges fejlesztői könyvtár csomagokat:

apt-get install build-essential autoconf

apt-get install \
    libfcgi-dev \
    libfcgi0ldbl \
    libjpeg62-turbo-dbg \
    libmcrypt-dev \
    libssl-dev \
    libc-client2007e \
    libc-client2007e-dev \
    libxml2-dev \
    libbz2-dev \
    libcurl4-openssl-dev \
    libjpeg-dev \
    libpng12-dev \
    libfreetype6-dev \
    libkrb5-dev \
    libpq-dev \
    libxml2-dev \
    libxslt1-dev
Az áttekinthetőség kedvéért a hosszabb parancsokat több sorba törve teszem ide, hogy látható legyen, milyen csomagok kerülnek telepítésre, vagy milyen opciók kerülnek végrehajtásra, stb. Ilyenkor ügyelni kell, hogy a sorok végén lévő fordított per jelek után ne legyen semmilyen karakter.

 

Ha IMAP támogatással szeretnénk lefordítani a PHP-t, akkor még létre kell hozni egy linket:

ln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a

 

Fordítás

Konfigurálás

A forráskód konfigurálását a következő hosszú paranccsal vágezhetjük el (a /usr/local/src/php7-build/php-7.1.19 könyvtárban maradva):

./configure \
    --prefix=/opt/php-7.1.19 \
    --with-pdo-pgsql \
    --with-zlib-dir \
    --with-freetype-dir \
    --enable-mbstring \
    --with-libxml-dir=/usr \
    --enable-soap \
    --enable-calendar \
    --with-curl \
    --with-mcrypt \
    --with-zlib \
    --with-gd \
    --with-pgsql \
    --disable-rpath \
    --enable-inline-optimization \
    --with-bz2 \
    --with-zlib \
    --enable-sockets \
    --enable-sysvsem \
    --enable-sysvshm \
    --enable-pcntl \
    --enable-mbregex \
    --enable-exif \
    --enable-bcmath \
    --with-mhash \
    --enable-zip \
    --with-pcre-regex \
    --with-pdo-mysql \
    --with-mysqli \
    --with-mysql-sock=/var/run/mysqld/mysqld.sock \
    --with-jpeg-dir=/usr \
    --with-png-dir=/usr \
    --enable-gd-native-ttf \
    --with-openssl \
    --with-fpm-user=www-data \
    --with-fpm-group=www-data \
    --with-libdir=/lib/x86_64-linux-gnu \
    --enable-ftp \
    --with-imap \
    --with-imap-ssl \
    --with-kerberos \
    --with-gettext \
    --with-xmlrpc \
    --with-xsl \
    --enable-opcache \
    --enable-fpm

A további konfiguráló kapcsolóiról az alábbi parancssal tájékozódhatunk, amikkel szükség esetén még fűszerezhetjük a beállításokat:

./configure --help

A fenti konfiguráció hiba nélkül lefutott, így most jöhet a fordítás.

Make

A PHP fordítása kicsit hosszabb idő, ilyenkor én szeretem mérni az időt, így a time parancsot teszem a make elé, ami a végén kiírja a futás idejét. Ezalatt kényelmesen lefőzők egy jó kávét. A parancs tehát a következő:

time make

Nálam 11 perc alatt futott le a VirtualBox gépen, ami egy Intel I7-3770 -es gazdagépen működik.

És most jöhet a telepítés:

make install

Ha ez is megvan, próbáljuk is ki a friss PHP telepítésünket:

/opt/php-7.1.19/bin/php --version

A kimenet pedig ha minden jól ment:

PHP 7.1.19 (cli) (built: Jul  7 2018 00:12:44) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies

Fordítás utáni beállítások

Most az .ini és a .conf fájlokat rakjuk a helyükre, a gyári fájlok lemásolásával:

cp /usr/local/src/php7-build/php-7.1.19/php.ini-production /opt/php-7.1.19/lib/php.ini
cp /opt/php-7.1.19/etc/php-fpm.conf.default /opt/php-7.1.19/etc/php-fpm.conf
cp /opt/php-7.1.19/etc/php-fpm.d/www.conf.default /opt/php-7.1.19/etc/php-fpm.d/www.conf

Nyissuk meg a /opt/php-7.1.19/etc/php-fpm.conf fájlt

nano /opt/php-7.1.19/etc/php-fpm.conf

És vegyük ki a komment (;) jelet a következő sor elől:

[...]
pid = run/php-fpm.pid
[...]

Állítsuk be a bejövő portot. Itt egy használaton kívüli portszámot kell beállítani, ami 9000-től visszafelé az első szabad port. Mivel a szerverkörnyezetben már van egy alapértelmezett 5.6-os PHP, ami használja a 9000-es portot, így itt állítsuk be a 8999-es értéket a /opt/php-7.1.19/etc/php-fpm.d/www.conf fájlban:

nano /opt/php-7.1.19/etc/php-fpm.d/www.conf
[...]
listen = 127.0.0.1:8999
[...]

Ha több opcionális PHP-t használunk, akkor léptessük értelemszerűen lejjebb ezt az értéket, hogy a legelső üres port legyen beállítva az újabb PHP számára.

 

 

Ez a leírás több oldalból áll: