envvars - переменные среды по умолчанию для apache2ctl

envvars - переменные среды по умолчанию для apache2ctl

Я хотел бы узнать, как запустить k=10 процессов сервера Apache2 при перезагрузке Ubuntu 16.04 alpha release. Вчера я прочитал этот URL, [https://rudd-o.com/linux-and-free-software/настройка-сервера-apache-за-5-минут], который говорит об использовании Apache2 с модулем prefork.c и установке StartServers равным 10

<IfModule prefork.c>
StartServers       4
MinSpareServers    3
MaxSpareServers   10
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  10000
</IfModule>

К сожалению, у моего apache2 есть только модуль event.c. Я попытался обновить apache2 до модуля prefork.c с помощью sudo apt-get install apache-mtm-prefork, и ошибка установки сообщила, что такой пакет недоступен, поскольку он может быть устаревшим или неактуальным. Затем я попробовал sudo apt-get update и получил то же самое сообщение об ошибке.

Следующим шагом я попытался настроить модуль событий apache2 с помощью StartServers = 5, изменив /etc/httpd.conf и перезапустив файл systemd apache.service. В результате ps -ef | grep -in "apache2" показал только 2 процесса www-data apache2, а ps-ef | grep -in "mod" не показал ни одного процесса mod-mono-server4.

Более того, при запуске apache2 в командной строке оболочки bash он сообщил об ошибке синтаксиса APACHE2_LOCK_FILE переменная окружения отсутствует. Я обнаружил, что APACHE2_LOCK_FILE определен в моем файле /etc/apache2/envvars.

На странице руководства apache2 в Ubuntu 16.04 говорится: «В общем случае apache2 не следует вызывать напрямую, его следует вызывать через /etc/init.d/apache2 или apache2ctl. Для конфигурации Debian по умолчанию требуются переменные среды, которые определены в /etc/apache2/envvars и недоступны, если apache2 запущен напрямую. Однако apache2ctl можно использовать для передачи произвольных аргументов в apache2».

Чтобы использовать /etc/apache2/envars, я отредактировал файл systemd apache.service, чтобы использовать ExecStart = /etc/init.d/apache2 start, и перезагрузил рабочий стол Lenovo ThinkStation Ubuntu 16.04. Но это не помогло. У меня по-прежнему было только 2 процесса www-data apache2, а ps-ef | grep -in "mod" не показывала процесса mod-mono-server4 при запуске ps -ef | grep -in "apache2".

Могу ли я спросить, что я сделал не так и как это исправить? Пожалуйста, предложите тесты, которые я могу сделать.

Я знаю, что многие пользователи альфа-версии Ubuntu 16.04 вскоре начнут жаловаться на ту же проблему, с которой столкнулся я.

решение1

Сначала вы можете убедиться, что у вас уже есть модуль mpm_prefork, увидев, что он поставляется в apache2пакете в 16.04. Вы увидите несколько результатов для него, если сделаете это:

 dpkg -L apache2 | grep fork

 /etc/apache2/mods-available/mpm_prefork.conf
 /etc/apache2/mods-available/mpm_prefork.load

Теперь проверьте, какой модуль MPM включен, и вы увидите, что модуль Event MPM включен, а модуль Prefork — нет:

  ls /etc/apache2/mods-enabled/mpm*

Похоже, вы хотите отключить модуль Event MPM и включить модуль Prefork MPM, что можно сделать с помощью символических ссылок, а затем перезапустить Apache:

sudo rm /etc/apache2/mods-enabled/mpm*
sudo ln -s /etc/apache2/mods-available/*fork* /etc/apache2/mods-enabled/

Возможно, тогда ваша директива "StartServer" будет работать так, как нужно. Сервер Event MPM запускает цикл событий в одном процессе, поэтому он не выполняет все дополнительные процессы.

Вы также упомянули запуск Apache и systemd. Я НЕ рекомендую запускать http Apache напрямую или с помощью apache2ctl. ТОЛЬКО управляйте им через systemd для согласованности.

Вот некоторые связанные команды управления systemd, в качестве примеров:

 sudo systemctl start   apache2
 sudo systemctl stop    apache2
 sudo systemctl restart apache2

В ваших комментариях было больше вопросов о настройке Mono, ASPX и нескольких приложений. Вам следует задать эти вопросы отдельно и четко указать, собираетесь ли вы обслуживать несколько приложений на одном домене или несколько приложений на нескольких доменах.

Чтобы служба Apache2 запускалась при загрузке, выполните:

sudo systemctl enable apache2

решение2

Для настройки Ubuntu 16.04 на обслуживание aspx-контента, находящегося в разных корневых каталогах, необходимо выполнить еще 3 шага.

  1. Поместите это в конец apache2.coonf

    Псевдоним /test "/usr/share/doc/xsp/test" Псевдоним /personal "/home/user/mypages" AddMonoApplications по умолчанию "/test:/usr/share/doc/xsp/test,/personal:/home/user/mypages" SetHandler mono SetHandler mono

    1. исходный файл /etc/apache2/envvars, изменив его следующим образом:

      envvars - переменные среды по умолчанию для apache2ctl

      это будет некорректно после смены uid

      снять ДОМОЙ

      для поддержки нескольких экземпляров apache2

      если [ "${APACHE_CONFDIR##/etc/apache2-}" != "${APACHE_CONFDIR}" ] ; тогда СУФФИКС="-${APACHE_CONFDIR##/etc/apache2-}" иначе СУФФИКС= fi

      Поскольку нет разумного способа получить проанализированную конфигурацию apache2 в скриптах, некоторые

      настройки определяются через переменные среды и затем используются в apache2ctl,

      /etc/init.d/apache2, /etc/logrotate.d/apache2 и т.д.

      экспорт APACHE_RUN_USER=venkat экспорт APACHE_RUN_GROUP=venkat

      Расположение временного файла состояния. Это может быть изменено на /run в Wheezy+1

      экспорт APACHE_PID_FILE=/var/run/apache2/apache2.pid экспорт APACHE_RUN_DIR=/var/run/apache2 экспорт APACHE_LOCK_DIR=/var/lock/apache2

      /etc/logrotate.d/apache2 обрабатывает только /var/log/apache2.

      экспорт APACHE_LOG_DIR=/var/log/apache2

      Локаль, используемая некоторыми модулями, такими как mod_dav

      экспорт ЯЗЫК=С

      Раскомментируйте следующую строку, чтобы использовать системную локаль по умолчанию:

      . /etc/default/locale

      экспортировать ЯЗЫК

      Команда для получения статуса «apache2ctl status».

      Некоторым пакетам, предоставляющим «www-browser», требуется «--dump» вместо «-dump».

      экспорт APACHE_LYNX='www-браузер -дамп'

      Если вам нужен более высокий лимит дескрипторов файлов, раскомментируйте и измените

      следующая строка (по умолчанию 8192):

      APACHE_ULIMIT_MAX_FILES='ulimit -n 65536'

      Если вы хотите передать аргументы веб-серверу, добавьте их ниже.

      в среду APACHE_ARGUMENTS.

      экспорт APACHE_ARGUMENTS=''

      Включите режим отладки для скриптов поддержки.

      Это создаст подробный вывод по установкам пакетов модулей веб-сервера и веб-приложений.

      установки, взаимодействующие с Apache

      экспорт APACHE2_MAINTSCRIPT_DEBUG=1

      1. В верхней части apache2.conf поместите строку: LoadModule mono_module /usr/lib/apache2/modules/mod_mono.so.

      2. Чтобы проверить это, поставьтеhttp://127.0.0.1/test/Default.csи положиhttp://127.0.0.1/personal/Default.csв веб-браузере Firefox.

Связанный контент