Docker 中的 Apache 2.4 httpd 在加载代理模块时不启动
Apache 2.4 httpd in Docker doesn't start when loading proxy module
我正在使用 Docker 构建 Apache2.4 堆栈。配置期间,服务器未启动:
apache-php-fpm-docker_apache_1 exited with code 1
发现在添加以下行加载模块后会发生这种情况:
LoadModule proxy_module modules/mod_proxy.so
我认为我做错了什么,但是我怎样才能得到错误信息,看看是什么问题?
我已经尝试过的
运行 httpd -h
我看到了以下选项:
-e level : show startup errors of level (see LogLevel)
所以我尝试了 ENTRYPOINT httpd -k start -e debug
,现在看到了一些日志,但没有错误。并且网络服务器没有启动,即使错误已修复也没有启动。
完整的 Apache 配置
Listen 80
ServerRoot "/usr/local/apache2"
DocumentRoot "/usr/local/apache2/htdocs"
ServerName localhost
LogLevel warn
LoadModule mpm_event_module modules/mod_mpm_event.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule access_compat_module modules/mod_access_compat.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule reqtimeout_module modules/mod_reqtimeout.so
LoadModule filter_module modules/mod_filter.so
LoadModule mime_module modules/mod_mime.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule env_module modules/mod_env.so
LoadModule headers_module modules/mod_headers.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule version_module modules/mod_version.so
LoadModule unixd_module modules/mod_unixd.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule dir_module modules/mod_dir.so
LoadModule alias_module modules/mod_alias.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
<IfModule mime_module>
TypesConfig conf/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
</IfModule>
<Directory />
AllowOverride none
Require all denied
</Directory>
<Files ".ht*">
Require all denied
</Files>
#ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://php:9000/usr/local/apache2/htdocs/
<Directory "/usr/local/apache2/htdocs">
Options Indexes FollowSymlinks
AllowOverride None
Require all granted
</Directory>
Docker撰写
version: "2.4"
services:
apache:
image: httpd:2.4
volumes:
- ./apache/httpd.conf:/usr/local/apache2/conf/httpd.conf
- ./src:/usr/local/apache2/htdocs
ports:
- 80:80
php:
image: php:7.3-fpm
volumes_from:
- apache
首先,将 ErrorLog /proc/self/fd/2
添加到您的 http.conf
以启用错误日志。
然后,我看到了你的情况的错误日志:
shubuntu1@shubuntu1:~/aa$ docker run -idt -v ${PWD}/httpd.conf:/usr/local/apache2/conf/httpd.conf -p 9000:80 httpd:2.4
fd0d0b45bd8e25e5ce8219d6b96e5b446307d7a76bf7e3eecb47e23d93b04368
shubuntu1@shubuntu1:~/aa$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fd0d0b45bd8e httpd:2.4 "httpd-foreground" 3 seconds ago Exited (1) 1 second ago agitated_edison
shubuntu1@shubuntu1:~/aa$ docker logs agitated_edison
[Wed Jun 19 08:45:20.774433 2019] [core:emerg] [pid 1:tid 139720185319488] (22)Invalid argument: AH00024: Couldn't set permissions on the proxy mutex; check User and Group directives
[Wed Jun 19 08:45:20.774495 2019] [proxy:crit] [pid 1:tid 139720185319488] (22)Invalid argument: AH02478: failed to create proxy mutex
AH00016: Configuration Failed
来自错误日志:为 proxy_module
创建代理互斥锁时似乎失败了。所以,我在 httpd.conf
旁边添加,然后一切正常:
<IfModule unixd_module>
User daemon
Group daemon
</IfModule>
我正在使用 Docker 构建 Apache2.4 堆栈。配置期间,服务器未启动:
apache-php-fpm-docker_apache_1 exited with code 1
发现在添加以下行加载模块后会发生这种情况:
LoadModule proxy_module modules/mod_proxy.so
我认为我做错了什么,但是我怎样才能得到错误信息,看看是什么问题?
我已经尝试过的
运行 httpd -h
我看到了以下选项:
-e level : show startup errors of level (see LogLevel)
所以我尝试了 ENTRYPOINT httpd -k start -e debug
,现在看到了一些日志,但没有错误。并且网络服务器没有启动,即使错误已修复也没有启动。
完整的 Apache 配置
Listen 80
ServerRoot "/usr/local/apache2"
DocumentRoot "/usr/local/apache2/htdocs"
ServerName localhost
LogLevel warn
LoadModule mpm_event_module modules/mod_mpm_event.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule access_compat_module modules/mod_access_compat.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule reqtimeout_module modules/mod_reqtimeout.so
LoadModule filter_module modules/mod_filter.so
LoadModule mime_module modules/mod_mime.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule env_module modules/mod_env.so
LoadModule headers_module modules/mod_headers.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule version_module modules/mod_version.so
LoadModule unixd_module modules/mod_unixd.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule dir_module modules/mod_dir.so
LoadModule alias_module modules/mod_alias.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
<IfModule mime_module>
TypesConfig conf/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
</IfModule>
<Directory />
AllowOverride none
Require all denied
</Directory>
<Files ".ht*">
Require all denied
</Files>
#ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://php:9000/usr/local/apache2/htdocs/
<Directory "/usr/local/apache2/htdocs">
Options Indexes FollowSymlinks
AllowOverride None
Require all granted
</Directory>
Docker撰写
version: "2.4"
services:
apache:
image: httpd:2.4
volumes:
- ./apache/httpd.conf:/usr/local/apache2/conf/httpd.conf
- ./src:/usr/local/apache2/htdocs
ports:
- 80:80
php:
image: php:7.3-fpm
volumes_from:
- apache
首先,将 ErrorLog /proc/self/fd/2
添加到您的 http.conf
以启用错误日志。
然后,我看到了你的情况的错误日志:
shubuntu1@shubuntu1:~/aa$ docker run -idt -v ${PWD}/httpd.conf:/usr/local/apache2/conf/httpd.conf -p 9000:80 httpd:2.4
fd0d0b45bd8e25e5ce8219d6b96e5b446307d7a76bf7e3eecb47e23d93b04368
shubuntu1@shubuntu1:~/aa$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fd0d0b45bd8e httpd:2.4 "httpd-foreground" 3 seconds ago Exited (1) 1 second ago agitated_edison
shubuntu1@shubuntu1:~/aa$ docker logs agitated_edison
[Wed Jun 19 08:45:20.774433 2019] [core:emerg] [pid 1:tid 139720185319488] (22)Invalid argument: AH00024: Couldn't set permissions on the proxy mutex; check User and Group directives
[Wed Jun 19 08:45:20.774495 2019] [proxy:crit] [pid 1:tid 139720185319488] (22)Invalid argument: AH02478: failed to create proxy mutex
AH00016: Configuration Failed
来自错误日志:为 proxy_module
创建代理互斥锁时似乎失败了。所以,我在 httpd.conf
旁边添加,然后一切正常:
<IfModule unixd_module>
User daemon
Group daemon
</IfModule>