Как установить RPM-файлы в ОС Tails

Этот ответ предназначен специально для Gentoo с профилем 17. Вероятно, он будет работать с несколькими версиями плюс и минус. Я использовал страницу Red Hat с советами по настройке PHP для вдохновения. Та же идея должна работать и для других дистрибутивов Linux (, конечно, конкретные команды будут отличаться ).

Решение заключается в использовании PHP -FPM (FastCGI Process Manager ). Каждая версия PHP получает свою собственную службу PHP -FPM, которая прослушивает сокет. Apache передает запросы на выполнение PHP конкретной службе PHP -FPM в зависимости от того, какая версия PHP требуется.

Вы можете использовать мод _php для одной версии PHP и PHP -FPM для другой (s ), но я решил вообще отказаться от мода _php. Во-первых, я где-то читал, что можно сэкономить память, отключив мод _php. Во-вторых, решение казалось немного чище, так как все версии PHP обрабатывались одинаково. В-третьих, всегда лучше иметь наименьшее количество или только необходимое программное обеспечение, установленное с точки зрения безопасности.

  1. Измените флаги USEдля dev-lang/php, чтобы добавить fpmи удалить apache2.

    Текущее соглашение Gentoo заключается в создании файла типа /etc/portage/package.use/phpи указании здесь флагов USE. Если вы указываете точные версии в файле, убедитесь, что все версии PHP, которые вы хотите использовать, имеют эти флаги USE.

  2. Установите/переустановите версии PHP, которые вы собираетесь использовать.

# emerge -av =dev-lang/php-7.2.3
# emerge -av =dev-lang/php-5.6.7
  1. Измените переменную APACHE2_MODULES, чтобы построить модули Apache proxyи proxy_fcgi.

    Вы указываете, какие модули Apache используют, добавляя/обновляя переменную APACHE2_MODULESв /etc/portage/make.conf. Как и флаги USE, в Gentoo уже установлены некоторые значения по умолчанию -для вашего профиля. В отличие от флагов USE, кажется, что вам нужно явно указать Gentoo, чтобы он начал со значений по умолчанию, добавив $APACHE2_MODULESперед переменной:

APACHE2_MODULES="$APACHE2_MODULES proxy proxy_fcgi"
  1. Переустановите Apache.
# emerge -av apache
  1. Установите PHP -FPM.
# emerge -av php-fpm
  1. Создайте сценарии запуска PHP -FPM для каждой версии PHP, которую вы используете с Apache.

    Установка PHP -FPM создает один сценарий запуска (/etc/init.d/php-fpm), который позволяет вам выбрать версию PHP для запуска с помощью eselectили путем изменения суффикса имени файла сценария (, например. php-fpm-php5.6, php-fpm-php7.2и т. д. ). Поскольку мы хотели бы использовать eselectтолько в том случае, если бы мы хотели использовать только одну версию PHP за раз или если бы мы хотели использовать не более двух версий с модом _php для одной и PHP -FPM для во-вторых, мы будем использовать суффиксный метод. Вместо того, чтобы копировать скрипт, мы хотим сделать на него символическую ссылку. (допустимые суффиксы — это имена каталогов из ls -ld /usr/lib64/php*, например. php5.6, php7.2и т. д.):

# cd /etc/init.d
# ln -s php-fpm php-fpm-php5.6
# ln -s php-fpm php-fpm-php7.2
  1. Измените конфигурацию PHP -FPM, чтобы служба каждой версии PHP работала на другом порту.

    Конкретные имена файлов различаются в зависимости от версии, но вы хотите отредактировать файл конфигурации для каждой версии PHP в этих общих местах :/etc/php/fpm-php*/*.conf, чтобы директива listenимела отдельный порт для каждой версии.

  2. Настройте службы PHP -FPM для запуска.

# rc-update add php-fpm-php5.6 default
# rc-update add php-fpm-php7.2 default
# /etc/init.d/php-fpm-php5.6 start
# /etc/init.d/php-fpm-php7.2 start
  1. Отредактируйте начальную -конфигурацию Apache, чтобы включить прокси-модули.

    Отредактируйте /etc/conf.d/apache2, чтобы добавить -D PROXYи удалить -D PHPиз APACHE2_OPTS.

  2. Отредактируйте конфигурацию Apache, чтобы связать определенные местоположения каталогов с определенными экземплярами PHP -FPM.

    Существует множество способов справиться с этим в зависимости от конкретной конфигурации Apache. Я решил отредактировать запись , связанную с моим веб-корнем, чтобы обработчик PHP по умолчанию был версии 7.2, добавив:


    SetHandler "proxy:fcgi://127.0.0.1:9972" # <-- Note port num.

Поскольку PHP 5.6 использовался только в виде исключения, я добавил директивы для каждого приложения, которому необходимо было использовать старую версию PHP:


    
        Sethandler "proxy:fcgi:/127.0.0.1:9956" # <-- Note diff port num.
    

  1. Добавить index.phpв качестве действительного индексного файла каталога.

    В Gentoo /etc/apache2/modules.d/70_mod_php.confвключает директиву для добавления index.phpв качестве индексного файла каталога, как это обычно делается index.html. Поскольку мы отключили мод _php на шаге 9, 70_mod_php.confбольше не существует для его установки. Чтобы это исправить, добавьте DirectoryIndex index.phpв конфигурацию Apache. В противном случае, если вы перейдете по таким путям, как /oldapp/, вы получите ошибку 403.

  2. Перезапустите Apache.

# /etc/init.d/apache restart

Другие примечания

  • Если вы установили -определенные параметры конфигурации в вашем php.iniфайле (, например. максимальные значения POST, часовой пояс и т. д. ), вам нужно будет установить их во всех ваших /etc/php/fpm-php*/php.iniфайлах (для каждой версии ).
  • PHP -FPM по умолчанию работает как user=nobody/ group=nobody. Возможно, вам придется изменить эти (в /etc/php/fpm-php*/php-fpm.conf), чтобы они соответствовали тому, что работает на вашем веб-сервере.
  • Чтобы управлять несколькими виртуальными хостами, выполните шаги 10 и 11 для каждого из них.

0
12.06.2020, 18:30
0 ответов

Теги

Похожие вопросы