@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

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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
22 апр. 2024, в 16:15
18000 руб./за проект
23 апр. 2024, в 16:55
10000 руб./за проект