Как собрать PHP7.0/PHP7.1 из исходного кода на Arch Linux

Данный учебник расскажет, как собрать PHP7.0/PHP7.1 на Arch Linux и установить его параллельно с PHP7.2. Arch Linux — это дистрибутив с непрерывным обновлением, который предоставляет самое современное программное обеспечение. В репозитории Arch Linux доступна версия PHP7.2. Некоторые веб-приложения, такие как WordPress, отлично функционируют с PHP7.2, однако другие, например NextCloud, в данный момент не поддерживают эту версию. Ожидается, что NextCloud 13 будет совместим с PHP7.2.

Вчера я обновил свой сервер на Arch Linux, и в процессе PHP7.2 заменил старую версию PHP7.1, что привело к неработоспособности моего веб-интерфейса NextCloud. В AUR доступна версия PHP7.0, и я решил установить её через Yaourt, но возникла ошибка с проверкой подписи. В итоге мне пришлось самостоятельно скомпилировать PHP7.0 или PHP7.1.

Как собрать PHP7.0/PHP7.1 на Arch Linux

Сначала выполните обновление всего программного обеспечения.

sudo pacman - Syu

Скачайте и установите wget, затем загрузите исходники PHP. Я использую последнюю версию PHP 7.0. Вы можете заменить номер версии на тот, который вам нужен.

sudo pacman - S wget wget http://php.net/distributions/php-7.0.26.tar.gz

Распакуйте архив.

tar xvf php-7.0.26.tar.gz

Откройте вновь созданную папку.

cd php-7.0.26

Установите необходимые инструменты для сборки и все зависимые компоненты.

Читайте также:  Сконвертировать. doc файл в. txt в Linux

sudo pacman - S gcc make bison gawk re2c libxml2 libwebp freetype2 c-client libmcrypt libxslt

Настройте среду, используя указанные параметры. Скопируйте команду целиком и вставьте её в терминал.

./configure \ --prefix=/opt/php-7.0.26—с параметром конфигурационного файла=/opt/php-7.0.26/etc \ --with-zlib-dir \ --with-freetype-dir \ --enable-mbstring \ --with-libxml-dir=/usr \ --enable-soap \ --enable-calendar \ --with-curl \ --with-mcrypt \ --with-zlib \ --with-gd \ --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=http \ --with-fpm-group=http \ --enable-ftp \ --with-imap \ --with-imap-ssl \ --with-kerberos \ --with-gettext \ --with-xmlrpc \ --with-xsl \ --enable-opcache \ --enable-fpm

Когда все подготовлено, приступим к компиляции PHP7 с помощью команды make. Замените цифру 2 на количество ядер вашего процессора. По умолчанию make использует одно ядро, но вы можете ускорить процесс компиляции, задействовав все доступные ядра.

make - j2

Время компиляции может варьироваться в зависимости от производительности вашего процессора. После того как процесс завершится, выполните тест.

make test

Теперь необходимо установить PHP. Путь для установки — /opt/php-7.0.26/.

sudo make install

Соберите PHP 7 на Arch Linux.

На изображении видно, что бинарный файл PHP-FPM размещен в каталоге /opt/php-7.0.26/sbin/, а конфигурационные файлы PHP-FPM находятся в /opt/php-7.0.26/etc/. Перед тем как запускать PHP-FPM, необходимо создать конфигурационный файл. У нас есть два образца конфигураций, поэтому мы можем просто скопировать их.

Читайте также:  Настройка и управление сетью в Debian 9 для стабильной работы системы

sudo cp /opt/php-7.0.26/opt/php-php-fpm.conf.default /etc/php-7.0.26/etc/php-fpm.conf выполните команду sudo cp /opt/php-7.0.26/etc/php-fpm.d/www.conf.default /opt/php-7.0.26/etc/php-fpm.d/www.conf

Измените настройки в файле www.conf.

sudo nano /opt/php-7.0.26/etc/php-fpm.d/www.conf

По умолчанию PHP-FPM принимает запросы через TCP сокет по адресу 127.0.0.1:9000, однако мы можем настроить его для работы с Unix сокетом. Найдите следующую строку.

listen = 127.0.0.1:9000

В начале добавьте точку с запятой, чтобы сделать её комментарием. После этого добавьте новую строку ниже.

listen = /run/php-fpm/php7.0-fpm.sock

Затем отыщите три последующие строки и уберите символы комментария.

;listen. owner = http ;listen. group = http ;listen. mode = 0660

Сохраните изменения и закройте файл. Затем сделайте копию файла php. ini.

sudo cp ~/php-7.0.26/opt/php-php. ini-продакшн7.0.26/etc/php. ini

sudo nano /opt/php-7.0.26/etc/php. ini

Включите следующее в нижнюю часть файла.

include_path color: #ff0000;">7.0.26/lib/php"

Сохраните изменения и закройте файл. Теперь мы можем запустить PHP-FPM с помощью следующей команды:

sudo /opt/php-7.0.26/sbin/php-fpm

Разработка юнита для службы Systemd.

Разработайте юнит-файл Systemd для PHP7.0.

sudo nano /etc/systemd/system/php7.0-fpm.service

Скопируйте данные строки и поместите их в файл.

[Unit] Description=Управляющий процесс PHP FastCGI After=network. target [Service] Type=simple PIDFile=/run/php-fpm/php7.0-fpm.pid ExecStart=/opt/php-7.0.26/sbin/php-fpm --недемонстрация --конфигурация-fpm /опт/php-7.0.26/etc/php-fpm.conf ExecReload=/bin/kill - USR2 $MAINPID [Install] WantedBy=multi-user. target

Сохраните изменения и закройте файл. Теперь мы можем остановить текущую версию PHP7.0-FPM и перезапустить её с помощью systemd. Определите PID основного процесса PHP7.0-FPM.

Читайте также:  Обзор основных особенностей и преимуществ дистрибутива MX-15

ps aux | grep php-fpm

собрать php7 из исходников

PID на моем компьютере составляет 5066. Следовательно, я могу завершить его с помощью:

sudo kill 5066

Имейте в виду, что бинарный файл PHP7.2-FPM часто обозначается как php-fpm.При использовании команды pkill php-fpm будут остановлены как PHP7.2-FPM, так и PHP7.0-fpm.Теперь запустите php7.0-fpm с помощью systemd.

sudo systemctl start php7.0-fpm

Активируйте автоматический запуск при старте системы.

sudo systemctl enable php7.0-fpm

Убедитесь в его статусе.

systemctl status php-fpm

Соберите PHP7 из исходников на Arch Linux.

Конфигурация Nginx для работы с PHP7.0-FPM

Для того чтобы изменить настройку Nginx и использовать PHP7.0 вместо PHP7.2, необходимо открыть файл конфигурации блока сервера Nginx и отыскать следующую строку.

fastcgi_pass unix:/run/php-fpm/php-fpm.sock;

fastcgi_pass unix:/run/php-fpm/php7.0-fpm.sock;

Вероятно, есть несколько копий этой строки. Вам следует внести изменения во все из них. После этого назначьте пользователя http (веб-сервер в Arch Linux) владельцем файла /run/php-fpm/php7.0-fpm.sock.

sudo chown http:http /run/php-fpm/php7.0-fpm.sock

Убедитесь в правильности настроек Nginx.

sudo nginx - t

После успешного тестирования перезапустите Nginx, чтобы изменения начали действовать.

sudo systemctl reload nginx

Вот и завершили! Надеюсь, этот гид оказался вам полезен для компиляции PHP 7.0/7.1 из исходников на Arch Linux. Если вам понравилась эта информация, не забудьте подписаться на нашу бесплатную рассылку, чтобы получать больше полезных советов и рекомендаций.