Как собрать PHP7 из исходных файлов на Raspbian Jessie

Данный учебник описывает, как собрать PHP7 из исходников и установить его на Raspbian Jessie. Я работал с маломощным Raspberry Pi 1 Model B. Однако его вычислительных ресурсов недостаточно для компиляции программного обеспечения. Процесс сборки PHP7 занял около 5 часов. Рекомендую использовать Pi 2 или Pi 3, если они у вас есть, так как у Pi 2 двухъядерный процессор, а у Pi 3 — четырехъядерный.

Сборка PHP7 из исходного кода.

Сначала установите соединение с вашим Raspberry Pi через SSH, если графический интерфейс отсутствует. После этого скачайте исходный код PHP7 с официального ресурса.

wget http://php.net/distributions/php-7.0.4.tar.gz

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

tar xvf php-7.0.4.tar.gz

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

cd php-7.0.4/

sudo apt-get install libkrb5-dev libc-client2007e libc-client2007e-dev libcurl4-openssl-dev libbz2-dev libjpeg-dev libmcrypt-dev libxslt1-dev libxslt1.1 libpq-dev build-essential git make

Возможно, вам уже известно, что для настройки среды компиляции нужно выполнить скрипт configure. Однако сначала хочу обратить ваше внимание на две проблемы, с которыми я столкнулся в процессе конфигурации, и объяснить, как их решить.

Ошибка номер один.

configure: ошибка: Не удается найти библиотеку imap (libc-client. a). Пожалуйста, проверьте установку вашего c-client.

Решение: создайте символическую ссылку и заново выполните скрипт настройки.

sudo mkdir /usr/c-client/ sudo ln - s /usr/lib/libc-client. a /usr/c-client/

Ошибка номер два

ошибка: Библиотеки Kerberos не найдены. Проверьте путь, указанный для --with-kerberos (если путь не указан, поиск ведется в /usr/kerberos, /usr/local и /usr)

Решение: создайте символическую ссылку и заново выполните скрипт настройки.

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

sudo mkdir /usr/kerberos sudo ln - s /usr/lib/arm-linux-gnueabihf/mit-krb5/* /usr/kerberos

Чтобы самостоятельно увидеть ошибку, вы можете выполнить указанный ниже скрипт конфигурации. Если вы предпочитаете не сталкиваться с ошибками, создайте символические ссылки, указанные выше, и запустите скрипт конфигурации ниже.

Вот основные рекомендации для настройки скрипта. Скопируйте приведённый код и вставьте его в терминал Raspbian, затем нажмите Enter для начала процесса конфигурации.

./configure \ --prefix=/opt/php-7.0.4 \ --with-config-file-path=/opt/php-7.0.4/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=www-data \ --with-fpm-group=www-data \ --with-libdir=/usr/lib/arm-linux-gnueabihf \ --enable-ftp \ --with-imap \ --with-imap-ssl \ --with-kerberos \ --with-gettext \ --with-xmlrpc \ --with-xsl \ --enable-opcache \ --enable-fpm

После завершения этого процесса, приступим к компиляции PHP7 с использованием команды make. Если ваш Raspberry Pi оснащен четырехъядерным процессором, добавьте опцию — j4.

make или make - j4

На моем слабом однопоточном Raspberry Pi процесс компиляции занял примерно 5 часов. В то время как Raspberry Pi 3 с четырехъядерным процессором справляется с этой задачей значительно быстрее.

По окончании компиляции установите PHP версии 7.0.4 с использованием следующей команды:

sudo make install

После окончания процесса вам будет предоставлена информация о местах установки файлов. Это действительно ценная информация.

Соберите PHP7 из исходного кода на Raspberry Pi.

Бинарный файл PHP-FPM расположен по адресу /opt/php-7.0.4/sbin/, в то время как моя конфигурационная директория для PHP-FPM находится по пути /opt/php-7.0.4/etc/. Следовательно, если я выполню команду для запуска php-fpm следующим образом:

Читайте также:  Добавление строки в середину файла с помощью команды Linux

/opt/php-7.0.4/sbin/php-fpm

Сообщение об ошибке информирует меня о том, что файл php-fpm.conf отсутствует.

Необходимо изменить имена двух файлов конфигурации.

sudo mv /opt/php-7.0.4/etc/php-fpm.conf.default /opt/php-7.0.4/etc/php-fpm.conf sudo mv /opt/php-7.0.4/etc/php-fpm.d/www.conf.default /opt/php-7.0.4/etc/php-fpm.d/www.conf

Скопируйте файл php. ini-production в директорию настройки php-fpm.

sudo cp /home/pi/php-7.0.4/php. ini-production /opt/php-7.0.4/etc/

Теперь вновь активируйте php-fpm.

sudo /opt/php-7.0.4/sbin/php-fpm

Интеграция с Nginx.

Чтобы узнать, как собрать Nginx из исходного кода на Raspbian Jessie, посмотрите следующий пост. Также у вас есть возможность установить Nginx на Raspbian Jessie через репозиторий программного обеспечения, воспользовавшись командой sudo apt-get install nginx.

Включите эти строки в конфигурацию вашего серверного блока Nginx.

# передать PHP-скрипты серверу FastCGI, слушающему на 127.0.0.1:9000 # location ~ \.php$ < корень /usr/share/nginx/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; >

Корневая папка документа на моем Raspbian Jessie находится по адресу /usr/share/nginx/html. Вам может потребоваться изменить эту папку. Не забудьте сохранить изменения и закрыть файл. После этого перезапустите Nginx.

sudo sysemctl reload nginx

После этого создайте файл test.php в корневой директории вашего документа.

sudo nano /usr/share/nginx/html/test.php

Добавьте следующий PHP-код в файл.

Сохраните изменения и закройте документ. Затем в строке адреса вашего браузера введите

ip-of-raspberrypi/test.php

Подставьте вместо ip-of-raspberrypi реальный IP-адрес. Вам будет представлена полная информация о вашей установке PHP. Если вы видите эту страницу, значит, php-fpm корректно функционирует с Nginx.

Читайте также:  Установка редакторов OnlyOffice Desktop на Linux: пошаговая инструкция

Соберите PHP7 из исходного кода на Raspberry Pi.

Точная настройка.

Активировать журнал ошибок.

Измените файл php-fpm.conf.

sudo nano /opt/php-7.0.4/etc/php-fpm.conf

Ищите следующую строку в данном документе.

;error_log = log/php-fpm.log

Конечно!

error_log = /var/log/php-fpm.log

Теперь есть возможность просмотреть журнал php-fpm, который находится в файле /var/log/php-fpm.log.

Интеграция с Systemd.

Сформируйте файл сервиса systemd для php-fpm.

sudo nano /etc/systemd/system/php-fpm.service

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

[Unit] Description=Менеджер процессов PHP FastCGI After=syslog. target network. target [Service] Type=simple PIDFile=/var/run/php-fpm.pid ExecStart=/opt/php-7.0.4/sbin/php-fpm--нодаемон --конфигурация-fpm/opt/php-7.0.4/etc/php-fpm.conf ExecReload=/bin/kill - USR2 $MAINPID [Install] WantedBy=multi-user. target

Сохраните изменения и закройте файл. Затем завершите текущий процесс php-fpm и перезапустите его через systemctl.

sudo pkill php-fpm sudo systemctl start php-fpm

sudo systemctl status php-fpm

Соберите PHP7 из исходного кода на Raspberry Pi.

Настройте автоматический запуск php-fpm при загрузке Raspberry Pi.

sudo systemctl enable php-fpm

Изменение файла www.conf

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

Отыщите следующие две строки.

;listen. owner = www-data ;listen. group = www-data ;listen. mode = 0660

Удалите с них комментарий. После этого найдите эту строку.

listen = 127.0.0.1:9000

listen = /var/run/php7-fpm.sock

Сохраните документ. Затем внесите изменения в файл конфигурации Nginx, указав значение fastcgi_pass как /var/run/php7-fpm.sock.

location ~ \.php$ < корень /usr/share/nginx/html; fastcgi_pass unix:/var/run/php7-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; >

Сохраните файл и закройте его. После этого перезапустите Nginx и php-fpm.

sudo systemctl restart nginx sudo systemclt restart php-fpm

Поздравляю! Вы успешно собрали PHP7 и установили его на Raspbian Jessie. Кроме того, мы создали файл php-fpm.service, что позволяет удобно управлять php-fpm с помощью Systemd.