Apache2 悄然中断,不会生成 apache2.pid

Apache2 悄然中断,不会生成 apache2.pid

当我运行 # /etc/init.d/apache2 restart 时,它高兴地声称已启动该程序,但实际上并未启动。输出内容如下。

www ~#/etc/init.d/apache2 重启
* 停止 apache2... [2009 年 10 月 25 日星期日 23:50:38] [警告] /etc/apache2/vhosts.d/30_subversion_ssl_vhost.conf 第 63 行中 AllowOverride 的使用毫无用处。 [2009 年 10 月 25 日星期日 23:50:38] [警告] NameVirtualHost --removed--:443 没有 VirtualHosts [2009 年 10 月 25 日星期日 23:50:38] [警告] NameVirtualHost --removed1--:8443 没有 VirtualHosts httpd(无 pid 文件)未运行 [ ok ] * 启动 apache2... [2009 年 10 月 25 日星期日 23:50:38] [警告] /et 第 63 行中 AllowOverride 的使用毫无意义 c/apache2/vhosts.d/30_subversion_ssl_vhost.conf。 [2009 年 10 月 25 日星期日 23:50:38] [警告] NameVirtualHost --removed--:443 没有 VirtualHosts [2009 年 10 月 25 日星期日 23:50:38] [警告] NameVirtualHost --removed1--:8443 没有 VirtualHosts [ 好的 ]

如您所见,尽管声称之前已启动,但 httpd 进程从未运行过,这里再次出现这种情况。手动验证,/var/run/apache2/apache2.pid 不存在。在我手动添加和更改所有者之前,run/apache2/ 目录甚至不存在。/var/log/apache2/error_log 中没有附加任何内容,我的任何虚拟主机的任何域特定日志中也没有附加任何内容。

但是,使用 --verbose 和 --debug 选项运行时,它似乎挂在涉及位置 /var/run/apache2/apache2.pid 的 for 循环中

+ i=0 
+ '[' '!' -e /var/run/apache2.pid ']'
+ '[' 0 -lt 10 ']'
+ sleep 1
++ expr 0 + 1
+ i=1
+ '[' '!' -e /var/run/apache2.pid ']'
+ '[' 1 -lt 10 ']'
+ sleep 1
++ expr 1 + 1
...

我在最新版本的 Gentoo Linux 上运行 apache 2.2。vhosts.d 配置文件已从以前的设置导入,但 httpd.conf 和相关文件都是全新的。

编辑:经过进一步调查,apache2 init 脚本调用

/usr/sbin/apache2 -D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST \
-D LANGUAGE -d /usr/lib/apache2 -f /etc/apache2/httpd.conf -k 启动
如果我删除 -D SSL 部分,pid 可以自行创建...但是,我想要 ssl...有什么想法吗?

编辑2:

start() {
        checkconfig || return 1

        [ -f /var/log/apache2/ssl_scache ] && rm /var/log/apache2/ssl_scache

        ebegin "Starting ${SVCNAME}"
        ${APACHE2} ${APACHE2_OPTS} -k start

        i=0
        while [ ! -e "${PIDFILE}" ] && [ $i -lt ${TIMEOUT} ]; do
                sleep 1 && i=$(expr $i + 1)
        done

        test $i -le ${TIMEOUT}
        eend $?
}

如果这提供了任何进一步的见解,请告诉我

编辑3:

如果我在我的 ssl vhosts 中注释掉SSLEngine on,apache 就能成功启动......

编辑4:

看看我的 apache 构建选项

www ~#emerge-av apache

这些是将要合并的软件包,顺序如下:

计算依赖关系|...完成!
[ebuild R ] www-servers/apache-2.2.11-r2 USE="sni ssl -debug -doc -ldap (-s
elinux) -static -suexec -threads” APACHE2_MODULES="actions 别名 asis auth_diges
t authz_host 自动索引缓存 dav deflate dir env 过期过滤器标头包括
信息 log_config logio mime 协商代理重写 setenvif 拼写状态使用
rdir 用户轨道 -auth_basic -authn_alias -authn_anon -authn_dbd -authn_dbm -authn
_默认-authn_file-authz_dbm-authz_default-authz_groupfile-authz_owner-au
thz_user-cern_meta-charset_lite-dav_fs-dav_lock-dbd-disk_cache-dumpio-ex
t_filter-file_cache-ident-imagemap-log_forensic-mem_cache-mime_magic-prox
y_ajp-proxy_balancer-proxy_connect-proxy_ftp-proxy_http-substitute-unique_
id -version-vhost_alias” APACHE2_MPMS="-event-itk-peruser-prefork-worker" 0
 KB

总计:1 个包(1 个重新安装),下载大小:0 kB

您想合并这些包吗?[是/否]

并验证校验和

www ~#equery 检查 apache
[检查 www-servers/apache-2.2.11-r2]
!!! /etc/apache2/vhosts.d/00_default_vhost.conf 的 md5sum 不正确
!!! /etc/conf.d/apache2 的 md5sum 不正确
!!! /etc/apache2/vhosts.d/00_default_ssl_vhost.conf 的 md5sum 不正确
 * 406 个文件中 403 个正确

编辑5:

哇!编辑 5!

将相应行更改/etc/conf.d/apache2APACHE2_OPTS="-X -e debug -D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE -D PHP5

* 启动 apache2...
[2009 年 10 月 27 日星期二 23:15:19] [调试] mod_so.c(246): 已加载模块actions_module
[2009 年 10 月 27 日星期二 23:15:19] [调试] mod_so.c(246): 已加载模块 alias_module
[2009 年 10 月 27 日星期二 23:15:19] [调试] mod_so.c(246): 已加载模块 asis_module
[2009 年 10 月 27 日星期二 23:15:19] [调试] mod_so.c(246): 已加载模块 authz_host_modul
[2009 年 10 月 27 日星期二 23:15:19] [调试] mod_so.c(246): 已加载模块 autoindex_module

[2009 年 10 月 27 日星期二 23:15:19] [调试] mod_so.c(246): 已加载模块 cgi_module
[2009 年 10 月 27 日星期二 23:15:19] [调试] mod_so.c(246): 已加载模块 deflate_module
[2009 年 10 月 27 日星期二 23:15:19] [调试] mod_so.c(246): 已加载模块 dir_module
[2009 年 10 月 27 日星期二 23:15:19] [调试] mod_so.c(246): 已加载模块 env_module
[2009 年 10 月 27 日星期二 23:15:19] [调试] mod_so.c(246): 已加载模块 expires_module
[2009 年 10 月 27 日星期二 23:15:19] [调试] mod_so.c(246): 已加载模块 filter_module
[2009 年 10 月 27 日星期二 23:15:19] [调试] mod_so.c(246): 已加载模块 headers_module
[2009 年 10 月 27 日星期二 23:15:19] [调试] mod_so.c(246): 已加载模块 include_module
[2009 年 10 月 27 日星期二 23:15:19] [调试] mod_so.c(246): 已加载模块 info_module
[2009 年 10 月 27 日星期二 23:15:19] [调试] mod_so.c(246): 已加载模块 log_config_modul
[2009 年 10 月 27 日星期二 23:15:19] [调试] mod_so.c(246): 已加载模块 logio_module
[2009 年 10 月 27 日星期二 23:15:19] [调试] mod_so.c(246): 已加载模块 mime_module
[2009 年 10 月 27 日星期二 23:15:19] [调试] mod_so.c(246): 已加载模块 negotiation_modu
[2009 年 10 月 27 日星期二 23:15:19] [调试] mod_so.c(246): 已加载模块 rewrite_module
[2009 年 10 月 27 日星期二 23:15:19] [调试] mod_so.c(246): 已加载模块 setenvif_module
[2009 年 10 月 27 日星期二 23:15:19] [调试] mod_so.c(246): 已加载模块 speling_module
[2009 年 10 月 27 日星期二 23:15:19] [调试] mod_so.c(246): 已加载模块 ssl_module
[2009 年 10 月 27 日星期二 23:15:19] [调试] mod_so.c(246): 已加载模块 usertrack_module

[2009 年 10 月 27 日星期二 23:15:19] [调试] mod_so.c(246): 已加载模块 php5_mod [ 正常 ]

还没有提示。另外,不确定如何验证 SSL 配置,如果这确实是问题所在

答案1

嗯,我对配置文件很怀疑

/etc/apache2/vhosts.d/30_subversion_ssl_vhost.conf

当您删除“-D SSL”时,将导致跳过包含在 ... 中的配置文件的所有部分。我的 Gentoo 框上的默认 SSL vhost 文件包含在该标记中,因此我想知道,通过删除“-D SSL”,您是否会阻止 30_subversion_ssl_vhost.conf 中的配置运行,以及这是否是允许 Apache 启动的原因。

如果您暂时从 /etc/apache2/vhosts.d 中删除文件 30_subversion_ssl_vhost.conf,Apache 还能运行吗?vhosts.d 中还有其他与 SSL 相关的 vhost.conf 文件吗?我刚刚安装的/未使用过的 Apache 的 vhosts.d 目录如下所示:

# pwd && ls
/etc/apache2/vhosts.d
00_default_ssl_vhost.conf  00_default_vhost.conf  default_vhost.include

编辑1:

理论就到此为止 :) 我现在想知道问题是否出在 Apache SSL 设置本身。如果我涉及您已经检查过的内容,我深表歉意,但我想知道您是否可以执行以下操作来帮助验证您的 Apache 安装。

在我安装的 Apache 上使用有效的 SSL 时,使用标志如下:

# emerge -av apache

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild     U ] www-servers/apache-2.2.11-r2 [2.2.11] USE="ssl -debug -doc -ldap (-selinux) -sni -static -suexec -threads" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias -asis -auth_digest -authn_dbd -cern_meta -charset_lite -dbd -dumpio -ident -imagemap -log_forensic -proxy -proxy_ajp -proxy_balancer -proxy_connect -proxy_ftp -proxy_http -substitute -version" APACHE2_MPMS="-event -itk -peruser -prefork -worker" 64 kB

具体来说,您是否设置了“ssl”USE 标志?

另外,您可以使用 equery 来验证 apache2 安装的完整性吗?如果您没有 equery 命令,您可以通过运行“emerge -av gentoolkit”来安装它。以下命令应可验证 apache 安装的完整性:

equery check apache

在我的服务器上,上述命令给出以下输出:

[ Checking www-servers/apache-2.2.11 ]
!!! /etc/apache2/vhosts.d/00_default_ssl_vhost.conf has wrong mtime (is 1256620928, should be 1246793824)
!!! /etc/apache2/modules.d/00_default_settings.conf has wrong mtime (is 1246796304, should be 1246793824)
!!! /etc/conf.d/apache2 has incorrect md5sum
 * 429 out of 432 files good

编辑2:

嗯,安装对我来说看起来不错,理论 2 就这么多。我想知道我们是否可以诱导 Apache 在启动时提供更多信息。在 /etc/conf.d/apache2 中,如果您将 APACHE2_OPTS 行从:

APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE"

APACHE2_OPTS="-X -e debug -D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE"

然后启动 Apache (/etc/init.d/apache2 start),守护进程应该停留在前台 (-X 标志) 并在启动时输出调试消息 (-e debug 选项)。这也许会给出它在启动时死机的原因的线索。

答案2

该脚本正在访问 /var/run/apache2.pid,而不是 /var/run/apache2/apache2.pid。您能检查一下 /var/run/apache2.pid 是否具有正确的权限吗?

答案3

不知何故,在创建了自己的 .crt 和 .key 文件后,尝试了一个emerge mod_ssl,最终做了一堆事情,并再次重建了 apache,一切都不知何故变得井然有序。我无法解释,除了可能与我创建 .crt 和 .key 文件的方式之前存在一些不一致之处 :/

这次旅程让我感到空虚和不满足。好吧,除了你们的帮助 :] 谢谢大家。

相关内容