@MSAFT

Как установить PHP 5.4 на Nginx в Ubuntu Server 16.04?

Есть проект, надо поднять локально строго на PHP 5.4

Вроде из исходников получилось сделать по такому маршруту:
Скачать php 5.4.45

Распаковать:
tar -xvf php-5.4.45.tar.gz

заходим в распакованную папку

GCC:
sudo apt install gcc

выполнить ./configure

затем

sudo make install


Дальше вроде показывает версию 5.4, а как настройки NGINX'а не подкручиваю, показывает то 403 forbidden на index.php, то тупо скачивает файл index.php :(
  • Вопрос задан
  • 1242 просмотра
Решения вопроса 1
Если кратко, то можно так собрать:

Установка php-5.4.45 + fpm

mkdir -p /opt/php-5.4.45
rm -rf /usr/local/src/php5-build && mkdir /usr/local/src/php5-build
cd /usr/local/src/php5-build
wget de2.php.net/distributions/php-5.4.45.tar.gz
tar -vzxf php-5.4.45.tar.gz && cd php-5.4.45
./configure --prefix=/opt/php-5.4.45 --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 --enable-zip --with-pcre-regex --with-mysqli --with-mysql --with-pdo-mysql --with-mysqli --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-fpm
make && make install
cp /usr/local/src/php5-build/php-5.4.45/php.ini-production /opt/php-5.4.45/lib/php.ini
cp /opt/php-5.4.45/etc/php-fpm.conf.default /opt/php-5.4.45/etc/php-fpm.conf
mkdir /opt/php-5.4.45/etc/php-fpm.d

Редактируем некоторые параметры в /opt/php-5.4.45/etc/php-fpm.conf

include=etc/php-fpm.d/*.conf
[global]
pid = run/php-fpm.pid
log_level = error

Меняем настройки в /opt/php-5.4.45/lib/php.ini по своему вкусу, у меня так:

date.timezone = "Asia/Yekaterinburg"
expose_php = Off
short_open_tag = On
max_execution_time = 600
max_input_time = 300
max_input_vars = 5000
memory_limit = 512M
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE
post_max_size = 128M
;default_charset = "UTF-8"
upload_max_filesize = 128M
default_socket_timeout = 120
mysql.connect_timeout = 120

Если в Linux используется sysv, то создаем файл /etc/init.d/php-5.4.45-fpm, см. https://gist.github.com/CHERTS/bcf1006e90777ead77c...

Назначаем права и автостарт
# chmod 755 /etc/init.d/php-5.4.45-fpm
# insserv -v /etc/init.d/php-5.4.45-fpm
Запускаем:
# /etc/init.d/php-5.4.45-fpm start

Если в Linux используется systemd, то создаем файл
/lib/systemd/system/php-5.4.45-fpm.service
исходник https://gist.github.com/CHERTS/bcf1006e90777ead77c...

Если в Linux используется systemd выполняем:
# chown root:root /lib/systemd/system/php-5.4.45-fpm.service
# systemctl daemon-reload
# systemctl enable php-5.4.45-fpm.service
# systemctl start php-5.4.45-fpm.service

Проверить статус можно командой
# systemctl status php-5.4.45-fpm.service

Удалить
# systemctl stop php-5.4.45-fpm.service
# systemctl disable php-5.4.45-fpm.service
# systemctl daemon-reload
# systemctl reset-failed
# rm /lib/systemd/system/php-5.4.45-fpm.service
# systemctl daemon-reload

Далее в каталоге /opt/php-5.4.45/etc/php-fpm.d/ создаем файл пула php-fpm с именем к примеру mysite.conf
Содержание mysite.conf например такое (mysiteuser и mysitegroup - это имена системного пользователя и группу от имени которых будет работать данный пулл, в php_admin_value[open_basedir] указывается путь до корневого каталога сайта, на этот каталог у mysiteuser и mysitegroup должны быть полные права):

[mysite]
listen = /var/lib/php5-fpm/mysite.sock
listen.owner = mysiteuser
listen.group = mysitegroup
listen.mode = 0660
user = mysiteuser
group = mysitegroup
pm = dynamic
pm.max_children = 8
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 5
pm.max_requests = 500
chdir = /
php_admin_value[open_basedir] = /var/www/mysite/web:/usr/share/php5:/usr/share/php:/tmp:/usr/share/phpmyadmin:/etc/phpmyadmin:/var/lib/phpmyadmin
php_admin_value[session.save_path] = /var/www/mysite/tmp
php_admin_value[upload_tmp_dir] = /var/www/mysite/tmp

После рестартуем
systemctl status php-5.4.45-fpm.service
или
/etc/init.d/php-5.4.45-fpm restart

В настройках nginx в качестве сокета php-fpm указываем /var/lib/php5-fpm/mysite.sock

Вот как то так.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы