Alternatív PHP7.3 telepítés ISPConfig3 alá

Ebből a leírásból megtudhatod, hogy hogyan telepítsd alternatív módon a PHP7.3 verzióiját ISPConfig3 alá. A módszer alkalmazható különböző php verziók egymás mellé telepítésére is. Így az egyes webalkalmazások különböző verziókkal futtathatók.

PHP Telepítése

Első lépés szokásos, frissítsük a rendszer csomagjait és telepítsük fel a szükségeseket

apt-get update && apt-get upgrade -y && apt-get install build-essential apt-get install libfcgi-dev libfcgi0ldbl libjpeg62-turbo-dev libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-dev libxml2-dev libbz2-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libfreetype6-dev libkrb5-dev libpq-dev libxml2-dev libxslt1-dev libsqlite3-dev libonig-dev

Az alábbi néhány beállítás azért kell, mert különben a ./configure parancs elhal a –with-imap kapcsoló használatakor

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

GMP library telepítése forrásból. Ez a csomag szükséges például a Nextcloud 19.1 verzióhoz is.

cd /tmp
wget ftp://ftp.gnu.org/gnu/gmp/gmp-4.3.2.tar.bz2
tar -xjf gmp-4.3.2.tar.bz2
cd gmp-4.3.2
./configure --prefix=/usr && make && make install

Elérkeztünk az érdemi munkához. Hozzuk létre a szükséges könyvtárakat és töltsük le-, majd csomagoljuk ki a php általunk kiválasztott verzióját. Én jelenleg a most elérhető legfrissebb stabil verziót fogom telepíteni

mkdir -p /opt/php-7.3.12
mkdir /usr/local/src/php7.3-build
cd /usr/local/src/php7.3-build
wget https://www.php.net/distributions/php-7.3.12.tar.gz -O php-7.3.12.tar.bz2
tar jxf php-7.3.12.tar.bz2
cd php-7.3.12/

Állítsuk be, hogy milyen szolgáltatásokat szeretnénk használni a php adott verziójánál. Ezekről bővebben a ./configure –help parancs ad információt

./configure --prefix=/opt/php-7.3.12 --with-pdo-pgsql --with-zlib-dir --with-freetype-dir --enable-mbstring --with-libxml-dir=/usr --enable-soap --enable-calendar --with-curl --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 --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 --enable-intl --with-gmp
make
make install

Konfigurációs állományok másolása, beállítása

cp /usr/local/src/php7.3-build/php-7.3.12/php.ini-production /opt/php-7.3.12/lib/php.ini
cp /opt/php-7.3.12/etc/php-fpm.conf.default /opt/php-7.3.12/etc/php-fpm.conf
cp /opt/php-7.3.12/etc/php-fpm.d/www.conf.default /opt/php-7.3.12/etc/php-fpm.d/www.conf
nano /opt/php-7.3.12/etc/php-fpm.conf
[...]
pid = /opt/php-7.3.12/var/run/php-fpm.pid
[...]
nano /opt/php-7.3.12/etc/php-fpm.d/www.conf
[...]
listen = 127.0.0.1:8991
[...]

Hozzuk létre a szolgáltatás indító scriptjét

nano /lib/systemd/system/php-7.3.12-fpm.service

Másoljuk be az alábbi tartalmat

[Unit]
Description=The PHP 7.3.12 FastCGI Process Manager
After=network.target

[Service]
Type=simple
PIDFile=/opt/php-7.3.12/var/run/php-fpm.pid
ExecStart=/opt/php-7.3.12/sbin/php-fpm --nodaemonize --fpm-config /opt/php-7.3.12/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target

Engedélyezzük- és indítsuk el a szolgáltatást

systemctl enable php-7.3.12-fpm.service
systemctl daemon-reload
systemctl start php-7.3.12-fpm.service

Engedélyezzük a php cache lehetőségét, ehhez először nyissuk meg a konfigurációs fájlt

nano /opt/php-7.3.12/lib/php.ini

Majd adjuk hozzá az alábbi sort

[...]
zend_extension=opcache.so

 

Először telepítsük fel a szükséges csomagokat

apt-get -y install libzip-dev libmemcached-dev

Lépjünk az átmeneti fájlokat tartalmazó „tmp” könyvtárba, majd a Git verziókezelő tárolójából töltsük le a szükséges állományt és tömörítsük azt ki

cd /tmp
wget https://github.com/php-memcached-dev/php-memcached/archive/master.zip -O php7.zip
unzip php7.zip

Lépjünk be az alábbi könyvtárba, majd a php verziónknak megfelelően genereáljuk le a konfigurációs állományt, majd fordítsunk és telepítsünk

cd php-memcached-master
/opt/php-7.3.12/bin/phpize
./configure --with-php-config=/opt/php-7.3.12/bin/php-config
make
make install

A php.ini konfigurációjában adjuk meg a külső modul elérési útját

nano /opt/php-7.3.12/lib/php.ini
extension=/opt/php-7.3.12/lib/php/extensions/no-debug-non-zts-20180731/memcached.so

Opcionális modulok telepítése

xDebug és APCU extension

Ebben a szakaszban opcionális modulok telepítése következik

apt install php-apcu php-apcu-bc
cd /opt/php-7.3.12/etc
../bin/pecl -C ./pear.conf update-channels
../bin/pecl -C ./pear.conf install xdebug
../bin/pecl -C ./pear.conf install apcu

Következik a szokásos beállítás, a modul elérési útját adjuk a php.ini fájlhoz

nano /opt/php-7.3.12/lib/php.ini
zend_extension=/opt/php-7.3.12/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so
extension=apcu.so

Az új beállítások érvényesítéséhez indítsuk újra a szolgáltatást

systemctl restart php-7.1-fpm.service

Redis extension

Redis támogatása, telepítsük fel a szükséges csomagokat

apt install php-redis redis-server

Majd telepítsük a a Redis szerver támogatását a php verziónkba

cd /opt/php-7.3.12/etc
../bin/pecl -C ./pear.conf update-channels
../bin/pecl -C ./pear.conf install redis

Végül ismét nincs más hátra, mint a php.ini fájlban a szükséges kiegészítés beállítása

nano /opt/php-7.3.12/lib/php.ini

extension=redis.so

Indítsuk újra a szolgáltatást

systemctl restart php-7.1-fpm.service

WordPress és Nextcloud támogatás

Egyes webes alkalmazások igénylik az imagick kiterjesztést is. Ez a modul tulajdonképpen arra szolgál, hogy a php grafikus szerkesztésekhez meg tudja hívni az ImageMagick alkalmazás megfelelő rutinjait, például mondjuk, ha egy jpg képet akarunk átméretezni. Lássuk mi kell ehhez. Először telepítsük az ImageMagick programot. Lépjünk a „tmp” könyvtárba

cd /tmp

Majd a következő parancsokkal folytassuk

wget https://www.imagemagick.org/download/ImageMagick.tar.gz
tar xvzf ImageMagick.tar.gz
cd ImageMagick-7.0.8-26/
./configure
make
make install
sudo ldconfig /usr/local/lib
magick -version

Most jön a modul telepítése

apt install php-imagick php-gd

Lássuk a kiterjesztést

cd /tmp
git clone --depth 1 https://github.com/mkoppanen/imagick.git
cd imagick
/opt/php-7.3.12/bin/phpize
./configure --with-php-config=/opt/php-7.3.12/bin/php-config
make install

Végezetül a már jól ismert beállító fájl konfigurálása

nano /opt/php-7.3.12/lib/php.ini
[...]
extension=/opt/php-7.3.12/lib/php/extensions/no-debug-non-zts-20180731/imagick.so
[...]

Indítsuk újra a szolgáltatást

service php-7.3.12-fpm restart

Ezzel el is készültünk, az fpm szolgáltatás apache2 beállítása egy következő bejegyzés témája lesz…