
Я хотел бы узнать, как запустить 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 шага.
Поместите это в конец 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
исходный файл /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
В верхней части apache2.conf поместите строку: LoadModule mono_module /usr/lib/apache2/modules/mod_mono.so.
Чтобы проверить это, поставьтеhttp://127.0.0.1/test/Default.csи положиhttp://127.0.0.1/personal/Default.csв веб-браузере Firefox.