
Установка PHP 7(php-fpm) с nginx 1.9 в Debian 8
Недавно, вышла новая версия PHP7. В данной статье «Установка PHP 7 в Debian 8» я хотел бы уделить внимание установки PHP 7 в Debian 8.
Установка nginx 1.9 в Debian 8.
Для начала, добавляем ключ:
#apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
Добавляем репозиторий:
# echo "deb http://nginx.org/packages/mainline/debian/ jessie nginx" >> /etc/apt/sources.list
И выполняем установку:
# apt-get update && apt-get install -y ca-certificates nginx
Я ленивый иногда, по этому для этой задачи, я написал bash скрипт. Вы можете его тоже использовать:
# cd /usr/local/src && wget https://raw.githubusercontent.com/SebastianUA/Nginx-1.9-PHP-7-PHP7-FPM/master/Install-nginx1.9.x.sh && bash Install-nginx1.9.x.sh
Установка PHP 7 в Debian 8 с использованием репозитория Dotdeb.
Чтобы установить PHP 7 на Debian 8, но для начала добавляем репозиторий:
# echo "deb http://packages.dotdeb.org jessie all" >> /etc/apt/sources.list && echo "deb-src http://packages.dotdeb.org jessie all" >> /etc/apt/sources.list
После этого, загружаем и запускаем ключ GnuPG:
# cd /usr/local/src && wget https://www.dotdeb.org/dotdeb.gpg && apt-key add dotdeb.gpg
Обновляем репозиторий:
# apt-get update
Запускаем установку PHP как fpm:
# apt-get install -y php7.0-fpm
Чтобы запустить PHP 7, используйте:
Запуск:
# service php7.0-fpm start
Останавливаем:
# service php7.0-fpm stop
Перезапуск:
# service php7.0-fpm restart
Чтобы проверить, правильно ли сконфигурирован конфиг php-fpm, используйте:
# php7.0-fpm -t
Ну это простой вариант и взят в качестве примера (что можно использовать данный репозиторий), а дальше, я опишу нормальное решение.
Установка PHP 7 в Debian 8 с исходного кода.
Для начала выполняем установку всех необходимых компонентов и все зависимости для PHP 7:
#apt-get install -y wget curl git vim make checkinstall build-essential libtool gettext libpcre3 libpcre3-dev libldap2-dev libpq-dev libxslt-dev libxpm-dev libmysqlclient-dev libgmp3-dev libpng12-dev libpng-dev libfreetype6-dev autoconf re2c bison libssl-dev libcurl4-openssl-dev pkg-config openssl libpng-dev libpspell-dev librecode-dev libreadline-dev libjpeg-dev libxml2 libxml2-dev libbz2-dev libmcrypt-dev libicu-dev libltdl-dev libcurl3
Я указал все нужные зависимости для моей сборки, вы можете дополнить их (в зависимости от своих нужд). Если не сделать это, то вы получите ошибку в процессе выполнения команды ./configure.
Переходим в директорию, скачиваем и распаковываем архив с php7, для этого выполните команду:
# cd /usr/src && wget http://be2.php.net/get/php-7.0.2.tar.gz/from/this/mirror -O php-7.0.2.tar.gz && tar -xzf php-*.tar.gz
Вы можете использовать другую ссылку (если вышла пхп свежей версии) с официального сайта.
Переходим в папку:
# cd php-*
Добавляем нужные модули в свою сборку и указываем параметры:
./buildconf --force CONFIGURE_STRING="--prefix=/usr/local/php7 \ --with-config-file-path=/usr/local/etc \ --with-config-file-scan-dir=/usr/local/php7/etc/conf.d \ --enable-mbstring \ --with-curl \ --with-openssl \ --with-xmlrpc \ --enable-soap \ --enable-zip \ --with-gd \ --with-jpeg-dir \ --with-png-dir \ --with-pgsql \ --enable-embedded-mysqli \ --with-freetype-dir \ --enable-intl \ --with-xsl \ --with-mysqli \ --with-pdo-mysql \ --enable-pdo=shared \ --with-pdo-mysql=shared \ --with-pdo-sqlite=shared \ --with-pdo-pgsql=shared \ --disable-short-tags \ --enable-phpdbg \ --with-readline \ --with-gettext \ --enable-opcache \ --enable-xdebug \ --enable-intl \ --enable-mbstring \ --enable-pcntl \ --enable-sockets \ --enable-sysvmsg \ --enable-sysvsem \ --enable-sysvshm \ --enable-ftp \ --enable-fpm \ --enable-shmop \ --with-fpm-user=www-data \ --with-fpm-group=www-data \ --bindir=/usr/local/bin \ --sbindir=/usr/local/sbin \ --libdir=/usr/local/php7/lib \ --includedir=/usr/local/php7/include \ --mandir=/usr/local/php7"
При необходимости, можно просмотреть весь список доступных модулей:
# ./configure --help
А сейчас, приступаем к компиляции и собственно к самой установки PHP 7:
# ./configure $CONFIGURE_STRING # make && make install
Идем далее, копируем конфигурационный файл с php.ini в папку установки PHP:
# cp /usr/src/php-7.0.2/php.ini-production /usr/local/etc/php.ini
Подключаем модуль Zend OPcache: /usr/local/php7/etc/conf.d
# vim /usr/local/etc/modules.ini
Прописываем в него:
# Zend OPcache zend_extension=opcache.so
И так, настроим сейчас PHP-FPM, для этого открываем файл:
# vim /usr/local/php7/etc/php-fpm.d/www.conf
И прописываем в него:
[global] pid = /var/run/php7-fpm.pid error_log = /var/log/php7-fpm.log include=/usr/local/php7/etc/php-fpm.d/*.conf Затем создайте файл: nano /usr/local/php7/etc/php-fpm.d/www.conf И добавьте в него параметры: [www] user = www-data group = www-data listen = /var/run/php7-fpm.sock listen.owner = www-data listen.group = www-data listen.mode = 0660 pm = dynamic pm.max_children = 5 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3
И для этого, создаем init.d скрипт:
# cd /etc/init.d && wget http://linux-notes.org/wp-content/uploads/files/php7-fpm
Назначаем нужные права (исполнение) и добавляем скрипт в автозагрузку своей ОС:
# chmod +x /etc/init.d/php7-fpm # update-rc.d php7-fpm defaults
Чтобы запустить (в данном случае перезапусить) php7-fpm выполняем:
# service php7-fpm restart
Если используете PHP-FPM с Nginx, то нужно добавьте в блок server виртуального хоста следующий текст:
location ~ .php$ { try_files $uri = 404; fastcgi_pass unix:/var/run/php7-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
PS: Для всего этого, я написал bash скрипт, вы можете его использовать для своих нужд:
# cd /usr/local/src && wget https://raw.githubusercontent.com/SebastianUA/Nginx-1.9-PHP-7-PHP7-FPM/master/Install-PHP7.sh && bash Install-PHP7.sh
Осталось только перезапустить все службы:
# service nginx restart && service php7-fpm restart
Вот и все!
Чтобы проверить, правильно ли сконфигурирован конфиг php-fpm, используйте:
# php7-fpm -t
Статья «Установка PHP 7 в Debian 8» завершена.