Jak zainstalować PHP 5.6 z PHP-FPM i FastCGI, MemCache dla ISPConfig 3 na Debian 9 (Stretch)
W tym poradniku zajmiemy się instalacją PHP 5.6 na Debian 9 (Stretch).
Po instalacji Debian-a 9 w wersji serwer, domyślnie mamy zainstalowane PHP w wersji 7.0. Jak wiadomo już wyszły nowsze wersje PHP. Na szczęście ISPConfig 3 daje nam możliwość obsługi wielu wersji PHP na jednym serwerze i możemy wybrać inną wersje dla każdej strony na serwerze, więc grzechem by było z tego nie skorzystać.
Zainstalujemy dla wersji PHP 5.6 z FPM i FastCGI, domyślnie wszystko będzie instalowane do folderu /opt, żeby nie ingerowało w domyślną wersje PHP 7.0 Debiana 9.
Co musimy pamiętać ?
– PHP-FPM może być używane na serwerach Apache i Nginx,
– FastCGI tylko na serwerach Apache.
Przygotowanie
Instalujemy potrzebne nam rzeczy,
- Edytor nano,
- Kreator PHP build-essential,
Z poziomu root-a:
apt-get install build-essential nano
następnie biblioteki: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
tworzymy powiązania:
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
Jeśli tworzymy PHP z –with-imap to potrzebujemy użyć lcrypt, żeby ./configure nam działało prawidłowo.
checking for crypt in -lcrypt... yes
configure: error: Cannot find imap library (libc-client.a). Please check your c-client installation.
root@server1:/usr/local/src/php5-build/php-7.1.14#
Kompilujemy PHP 5.6 wraz z FastCGI i FPM-PHP.
Ściągamy i rozpakowujemy archiwa instalacyjne.
mkdir -p /opt/php-5.6
mkdir /usr/local/src/php5.6-build
cd /usr/local/src/php5.6-build
wget http://de2.php.net/get/php-5.6.33.tar.bz2/from/this/mirror -O php-5.6.33.tar.bz2
tar jxf php-5.6.33.tar.bz2
Przed przejściem dalej dla instalacji PHP 5.6 musimy utworzyć powiązania dla bibliotek freetype, libcrypto i libssl.
mkdir /usr/include/freetype2/freetype
ln -s /usr/include/freetype2/freetype.h /usr/include/freetype2/freetype/freetype.h
ln -s /opt/openssl/lib/libcrypto.so.1.0.0 /usr/lib/x86_64-linux-gnu/
ln -s /opt/openssl/lib/libssl.so.1.0.0 /usr/lib/x86_64-linux-gnu/
ln -fs /opt/openssl /usr/local/ssl
Konfigurujemy i kompilujemy paczkę z PHP 5.6
Wchodzimy teraz do folderu z plikami PHP 5.6
cd /usr/local/src/php5.6-build/php-5.6.33/
Teraz możemy zbudować paczkę z PHP 5.6 za pomocą ./configure. Sprawdzamy.
./configure --help
Jeśli używamy ./configure to te paczki nam wystarczą, czyli:
./configure --prefix=/opt/php-5.6 --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-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=/opt/openssl --with-fpm-user=www-data --with-fpm-group=www-data --with-libdir=/lib/x86_64-linux-gnu --enable-ftp --with-kerberos --with-gettext --with-xmlrpc --with-xsl --enable-opcache --enable-fpm
Sama ostatnia opcja czyli –enable-fpm jak sama nazwa wskazuje odpowiada za kompatybilność PHP 5.6 z PHP-FPM. Następnie tworzymy za pomocą „make” i instalujemy za pomocą polecania „make install”
make
make install
Teraz kopiujemy niezbędne nam pliki w odpowiednią lokalizacje, jak na początku ustaliliśmy będzie to /opc
A te niezbędne nam pliki to oczywiście php.ini oraz php-fpm.conf.
cp /usr/local/src/php5.6-build/php-5.6.33/php.ini-production /opt/php-5.6/lib/php.ini
cp /opt/php-5.6/etc/php-fpm.conf.default /opt/php-5.6/etc/php-fpm.conf
mkdir -p /opt/php-5.6/etc/php-fpm.d
Kolejnym krokiem jest edytowanie pliku php-fpm.conf, który już znajduje się w folderze /opt/php-5.6.33/etc/ (tutaj sprawdzić, bo może być już dostępna nowa wersja) Zrobimy to z edytora nano, który zainstalowaliśmy na początku. Naszym celem jest usunięcie średnika z lini „;pid = run/php-fpm.pid” Czyli:
nano /opt/php-5.6/etc/php-fpm.conf
żeby uzyskać:
usuwamy „;” przed „pid = run/php-fpm.pid” tak żeby nam zostało samo: pid = run/php-fpm.pid Kolejny krokiem będzie zmiana portu dla PHP 7.1 z 9000 na np. 8997, to możemy zrobić w pliku /opt/php-5.6.33/etc/php-fpm.d/www.conf a więc do dzieła:
nano /opt/php-7.2/etc/php-fpm.d/www.conf
Teraz wyszukujemy linie: listen = 127.0.0.1:9000 i zmieniamy numer portu np. z 9000 na 8997
pid = run/php-fpm.pid [...] user = www-data group = www-data [...] listen = 127.0.0.1:8997 [...] include=/opt/php-5.6/etc/php-fpm.d/*.conf
Tworzenie pliku systemowego do uruchamiania PHP-FPM
Tworzymy plik:
nano /lib/systemd/system/php-5.6-fpm.service
Wklejamy do niego następującą treść:
[Unit]
Description=The PHP 5.6 FastCGI Process Manager
After=network.target
[Service]
Type=simple
PIDFile=/opt/php-5.6/var/run/php-fpm.pid
ExecStart=/opt/php-5.6/sbin/php-fpm --nodaemonize --fpm-config /opt/php-5.6/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
Zapisujemy, włączamy usługę PHP-FPM i restartujemy usługę.
systemctl enable php-5.6-fpm.service
systemctl daemon-reload
Startujemy usługę:
systemctl start php-5.6-fpm.service
Włączamy pamięć podręczną za pośrednictwem Zend OPcache, która się znajduje w /opt/php-5.6/lib/php.ini
nano /opt/php-5.6/lib/php.ini
Na samym końcu pliku dodajemy wiersz:
zend_extension=opcache.so
Dodajemy, kompilujemy, włączamy pamięć cache (MemCache)
Żeby to uczynić musimy dodać paczkę libmemcached-dev, a więc:
apt-get install libmemcached-dev
Teraz tworzymy katalog, pobieramy MemCache PHP z Girhub-a, rozpakowujemy i wchodzimy do nowo powstałego katalogu:
cd /opt/php-5.6/etc
pecl -C ./pear.conf update-channels
pecl -C ./pear.conf install memcache
Teraz pora edytować php.ini
nano /opt/php-5.6/lib/php.ini
Dopisujemy na końcu pliku
extension=memcache.so Restartujemy usługę PHP-FPM 5.6
systemctl start php-5.6-fpm.service
PHP 7.1 z FastCGI, PHP-FPM, MemCache.
Testujemy czy działa
Sprawdzamy wersje PHP:
cd /opt/php-5.6/bin
./php --version
Powinniśmy uzyskać informacje: PHP 5.6.xx ….
Włączamy PHP 5.6 w panelu ISPConfig 3
- Logujemy się do panelu ISPConfig 3
- Wchodzimy w system
- Klikamy dodaj kolejną wersje PHP
- Tworzymy nową wersje (nazywamy ją np. PHP 5.6)

- Przechodzimy do zakładki „Ustawienia FastCGI„
- Dodajemy ścieżki do plików FastCGI i PHP.INI
Ścieżka do binarki PHP FastCGI: /opt/php-5.6/bin/php-cgi
Ścieżka do katalogu PHP.INI: /opt/php-5.6/lib

- Przechodzimy do Ustawienia PHP-FPM
- Dodajemy ścieżki do PHP-FPM, do katalogu PHP.INI oraz do katalogu pól PHP-FPM.
Ścieżka do skryptu inicjującego PHP-FPM: php-5.6-fpm
Ścieżka do katalogu PHP.INI: /opt/php-5.6/lib
Ścieżka do katalogu pool PHP-FPM: /opt/php-5.6/etc/php-fpm.d

- Zapisujemy
Teraz w każdej stronie w panelu możemy ustawić wersje PHP 5.6 z PHP-FPM i FastCGI 🙂
Dla starszych stron np. w joomli, w pliku configure musimy zmienić „localhost” na 127.0.0.1, dla PHP 5.6, bo inaczej nie widzi bazy danych prawidłowo.
źródło: howtoforge.com/tutorial/how-to-install-php-7-on-debian/