Apache продолжает возвращаться к mpm_prefork (Apache 2.4.7 / Ubuntu 14.04.2)

У меня эта проблема была больше года, когда каждый раз, когда появляется обновление безопасности для Ubuntu, и мне приходится перезагружать сервер, Apache 2.4 решает запустить с помощью рабочего mpm_prefork, несмотря на то, что у меня mpm_event установлен как включенный модуль в / etc / apache2 / mods-enabled.

Я дошел до того, что отредактировал файл mpm_prefork.conf в / etc / apache2 / mods-available и прокомментировал, где он загружает модуль, но после перезагрузки сегодня утром apache просто не запускался, потому что он настаивал на запуске вверх с помощью Prefork.

Вот мой список каталогов / etc / apache2 / mods-enabled /

access_compat.load
actions.conf
actions.load
alias.conf
alias.load
auth_basic.load
authn_core.load
authn_file.load
authz_core.load
authz_host.load
authz_user.load
autoindex.conf
autoindex.load
deflate.conf
deflate.load
dir.conf
dir.load
env.load
evasive.conf
evasive.load
expires.load
fastcgi.conf
fastcgi.load
filter.load
headers.load
mime.conf
mime.load
mpm_event.conf
mpm_event.load
negotiation.conf
negotiation.load
pagespeed.conf
pagespeed.load
rewrite.load
setenvif.conf
setenvif.load
socache_shmcb.load
spamhaus.conf
spamhaus.load
ssl.conf
ssl.load
status.conf
status.load

Я проверил, был ли он скомпилирован в Apache, запустив apache2 -l, и это был результат

Compiled in modules:
  core.c
  mod_so.c
  mod_watchdog.c
  http_core.c
  mod_log_config.c
  mod_logio.c
  mod_version.c
  mod_unixd.c

И, наконец, результат a2query -M is

sudo a2query -M
event

Но если я перезагружаюсь прямо сейчас, Apache не работает при запуске, потому что ему нужен модуль mpm_prefork, который, как я уже сказал, я отключил, закомментировав его .conf файл, чтобы предотвратить его загрузку, что не было решением моей проблемы. проблема.

Я, честно говоря, озадачен, когда Apache 2.4 просто решает сам постоянно загружать mpm_prefork.

Вот также мой файл apache2.conf, урезанный без комментариев

# Global configuration
Mutex file:${APACHE_LOCK_DIR} default
PidFile ${APACHE_PID_FILE}
Timeout 40
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
HostNameLookups Off
ErrorLog ${APACHE_LOG_DIR}/apache-error.log
LogLevel warn
SetEnvIf Remote_Addr "127\.0\.0\.1" loopback
SetEnvIf Remote_Addr "::1" loopback
CustomLog ${APACHE_LOG_DIR}/apache-access.log combined env=!loopback

# Include module configuration:
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf

# Include list of ports to listen on
Include ports.conf


<Directory />
    Options -Indexes +FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

<Directory /usr/share>
    AllowOverride None
    Require all granted
</Directory>

<Directory /var/www/>
    Options -Indexes +FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

<Directory /var/www/html/opcache/>
    Options -Indexes +FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>


AccessFileName .htaccess

<FilesMatch "^\.ht">
    Require all denied
</FilesMatch>

LogFormat "%V %v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
LogFormat "%h %l %u %t \"%r\" %>s %O %b %D \"%{Referer}i\" \"%{User-Agent}i\"" custom


IncludeOptional conf-enabled/*.conf

IncludeOptional sites-enabled/*.conf
0
задан 26 May 2016 в 12:56
1 ответ

Проблема, похоже, в том, что они установлены как пакеты:

apache2-mpm-event 2.4.7-1ubuntu4.9 amd64 transitional event MPM package for apache2
apache2-mpm-prefork 2.4.7-1ubuntu4.9 amd64 transitional prefork MPM package for apache2

Когда вы обновляете, вы специально указываете серверу установить предварительную версию. Если у вас есть правильная установка Apache2 на Ubuntu 14.04, в которой НЕ был бы указан тип MPM, используйте dpkg -l | grep apache2 будет включать:

apache2 2.4.7-1ubuntu4.9 amd64 Apache HTTP Server

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

Правильная установка Apache2 на Ubuntu 14.04 проста:

sudo apt-get install apache2

без какой-либо спецификации MPM. Базовые Модули многопроцессорности являются основными функциями Apache 2.4 и включены в установку apache2 .

Затем вы устанавливаете MPM следующим образом:

Чтобы определить, какой MPM в настоящее время используется, запустите apache2ctl -V . Вы увидите такую ​​строку, как:

 Server MPM:     prefork

Предположим, например, что вы запускаете «prefork» (как в приведенном выше примере apache2ctl -V результат выше) после установки, переключитесь на «событие "выполняется с помощью следующих команд:

 sudo a2dismod mpm_prefork
 sudo a2enmod mpm_event
 sudo service apache2 restart

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

После настройки таким образом при правильной установке обновления НЕ БУДУТ изменять ваши настройки.

ПРИМЕЧАНИЕ : Ваш" edits "в файлы *. conf должны находиться в каталоге / etc / apache2 / mods-available , где они защищены от перезаписи во время обновлений. В каталоге / etc / apache2 / mods-enabled будут только символические ссылки на / etc / apache2 / mods-available .

1
ответ дан 4 December 2019 в 16:36

Теги

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