Debian 8 (Jessie) Üzerine PHP 7.1 - PHP-FPM - FastCGI Yükleme (ISPConfig)

ispconfig
php71
debian-8

(Muhammed Yalçınkaya) #1

Merhaba arkadaşlar,

PHP 7.1’in son sürümü şimdi Github ve PHP sunucularından indirilebilir durumdadır. PHP 7.1, PHP programlama dilinin yeni nesli, PHP 5.6’dan 2 kat daha hızlı ve PHP 5.0’ın 14 katı daha hızlıdır (sürüm notlarına göre).

Yeni PHP sürümü, PHP 5.x ile %100 uyumlu değil, önceden geliştiriciler tarafından önerilmeyen bazı API kısımlarıda kaldırıldı, bu nedenle web sitelerinizi bu yeni sürümle uyumluluk açısından önce yayınlanmamış bir sürümde test etmeye başlamanız iyi bir fikir olacaktır :wink:

Bu işlemi, ISPConfig 3’teki çoklu PHP sürümü özelliğini kullanarak sunucunuzdaki tüm siteleri etkilemeden kolayca yapabilirsiniz. PHP sürümü, her site için ISPConfig 3 web sitesi ayarlarında ayrı ayrı seçilebilir. Bu özellik PHP-FPM ve FastCGI ile de çalışır.

Bu dersimizde Debian Jessie sunucunuz üzerinde yeni PHP 7.1’i (PHP-FPM ve FastCGI ile) nasıl oluşturacağınızı anlatacağım. Bu PHP 7.1 derlememiz birçok uzantıyı ve Zend OPcache’yi / Memcached’ı yüklenebilir modüller halinde içerir.

Kurulum kopyala yapıştır şeklinde hazırlanmıştır. Lütfen uyarıları dikkate alınız.

PHP 7.1 (PHP-FPM ve Fastcgi) Yapılandırması
PHP 7.1 sürümünü Github üzerinden sunucumuza kurulum yapmak için;

mkdir -p /opt/php-7.1

mkdir /usr/local/src/php7-build

cd /usr/local/src/php7-build

wget http://de1.php.net/get/php-7.1.0.tar.bz2/from/this/mirror -O php-7.1.0.tar.bz2

tar jxf php-7.1.0.tar.bz2

cd php-7.1.0/

Kurulum ve gerekli yapılandırmalar için;

apt-get install build-essential nano 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

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

./configure --prefix=/opt/php-7.1 --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

make

make install

php.ini ve php-fpm.conf dosyalarını doğru yerlere kopyalamak için;

cp /usr/local/src/php7-build/php-7.1.0/php.ini-production /opt/php-7.1/lib/php.ini

cp /opt/php-7.1/etc/php-fpm.conf.default /opt/php-7.1/etc/php-fpm.conf

cp /opt/php-7.1/etc/php-fpm.d/www.conf.default /opt/php-7.1/etc/php-fpm.d/www.conf

Şimdi /opt/php-7.1/etc/php-fpm.conf dosyasını açıp pid kısmından önceki ; işaretini silmeliyiz.

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

Şu şekilde olmalıdır;

pid = run/php-fpm.pid

/opt/php-7.1/etc/php-fpm.d/www.conf dosyasını açıp port değiştirmemiz gerekiyor;

nano /opt/php-7.1/etc/php-fpm.d/www.conf

Şu şekilde olmalıdır;

listen = 127.0.0.1:8999

Şimdi ise init dosyasını oluşturmalıyız;
nano /etc/init.d/php-7.1-fpm

Boş dosya içerisine şu kodları eklemeliyiz;

#! /bin/sh
### BEGIN INIT INFO
# Provides:          php-7.1-fpm
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts php-7.1-fpm
# Description:       starts the PHP FastCGI Process Manager daemon
### END INIT INFO
php_fpm_BIN=/opt/php-7.1/sbin/php-fpm
php_fpm_CONF=/opt/php-7.1/etc/php-fpm.conf
php_fpm_PID=/opt/php-7.1/var/run/php-fpm.pid
php_opts="--fpm-config $php_fpm_CONF"
wait_for_pid () {
        try=0
        while test $try -lt 35 ; do
                case "$1" in
                        'created')
                        if [ -f "$2" ] ; then
                                try=''
                                break
                        fi
                        ;;
                        'removed')
                        if [ ! -f "$2" ] ; then
                                try=''
                                break
                        fi
                        ;;
                esac
                echo -n .
                try=`expr $try + 1`
                sleep 1
        done
}
case "$1" in
        start)
                echo -n "Starting php-fpm "
                $php_fpm_BIN $php_opts
                if [ "$?" != 0 ] ; then
                        echo " failed"
                        exit 1
                fi
                wait_for_pid created $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed"
                        exit 1
                else
                        echo " done"
                fi
        ;;
        stop)
                echo -n "Gracefully shutting down php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -QUIT `cat $php_fpm_PID`
                wait_for_pid removed $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed. Use force-exit"
                        exit 1
                else
                        echo " done"
                       echo " done"
                fi
        ;;
        force-quit)
                echo -n "Terminating php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -TERM `cat $php_fpm_PID`
                wait_for_pid removed $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed"
                        exit 1
                else
                        echo " done"
                fi
        ;;
        restart)
                $0 stop
                $0 start
        ;;
        reload)
                echo -n "Reload service php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -USR2 `cat $php_fpm_PID`
                echo " done"
        ;;
        *)
                echo "Usage: $0 {start|stop|force-quit|restart|reload}"
                exit 1
        ;;
esac

Oluşturduğumuz init dosyasımızı sistem başlangıcına eklemeliyiz;

chmod 755 /etc/init.d/php-7.1-fpm

insserv php-7.1-fpm

Daha sonra PHP-FPM çalıştıracağız;
/etc/init.d/php-7.1-fpm start

Komutumuz sonrası ekran şu şekilde olmalıdır;

/etc/init.d/php-7.1-fpm start
Starting php-fpm done

Şimdi systemd unit dosyasını oluşturacağız;
nano /lib/systemd/system/php-7.1-fpm.service

Yine içerik olarak şu kodları eklemeliyiz;

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

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

[Install]
WantedBy=multi-user.target

Etkinleştirmek ve systemd yeniden yüklemek için;

systemctl enable php-7.1-fpm.service

systemctl daemon-reload

Son olarak PHP-FPM başlatmalıyız;
systemctl start php-7.1-fpm.service

Zend OPcache Kurulumu İçin;
nano /opt/php-7.1/lib/php.ini

Dosyanın en sonuna şu kodu eklemeliyiz;

zend_extension=opcache.so

PHP versiyonunu test etmek için;
cd /opt/php-7.1/bin
./php --version

Şu ekran sizi karşılayacaktır;

Memcache Kurulumu (opsiyoneldir);

Öncelikle libmemcached-dev paketini yüklemeliyiz;
apt-get install libmemcached-dev

mkdir /usr/local/src/php7-build/php-memcache

cd /usr/local/src/php7-build/php-memcache

wget https://github.com/php-memcached-dev/php-memcached/archive/php7.zip

unzip php7.zip

cd php-memcached-php7

/opt/php-7.1/bin/phpize

./configure --with-php-config=/opt/php-7.1/bin/php-config

make

make install

Son olarak ise altta verdiğim kodu dosyanın en sonuna eklemelisiniz;

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

extension=memcached.so

ISPConfig’e kurulumumuzu tanıtmak için;
System > Additional PHP Versions kısmına gidelim. Ve altta verdiğim şekilde dolduralım.

Ekran görüntüsü;

FastCGI Settings kısmına gidelim şimdi;
Path to the PHP FastCGI binary: /opt/php-7.1/bin/php-cgi
Path to the php.ini directory: /opt/php-7.1/lib

Ekran görüntüsü;

Şimdi ise PHP-FPM Settings kısmını ayarlayalım;
Path to the PHP-FPM init script: /etc/init.d/php-7.1-fpm
Path to the php.ini directory: /opt/php-7.1/lib
Path to the PHP-FPM pool directory: /opt/php-7.1/etc/php-fpm.d

Ekran görüntüsü;