我遇到了一个 apache 配置问题(CentOS 7.2 上的 Apache 2.4.6),我无法找出它apachectl -t
。
Apache 运行(由于系统是一个虚拟的开发环境,因此每周一都会重新开始),但只显示“它起作用了!”页面;apachectl -S
不发出任何输出。事实上,执行该/sbin/apachectl
脚本根本不会产生任何输出。
直接调用,/sbin/httpd -t
告诉我“ Syntax OK
”(这发现了一些让apachectl -t
我失望的错误,特别是在我使用宏时)。
我的配置可能相关的非标准特性:
- 我使用 apache 宏(
LoadModule macro_module modules/mod_macro.so
) - 我在配置中使用符号链接(例如,指向同级目录
sites-available/*.conf
中文件的链接sites-enabled/
,这在 CentOS 安装中似乎默认不被使用)。(据我所知,没有断开的链接;httpd -t
我刚刚测试过,本来会抱怨。)
我在输出中发现以下错误journalctl -xe
:Could not open configuration file /etc/httpd/sites-enabled/vhosts-vbox-therp.conf: Permission denied
。但是,恕我直言,这个文件没有任何问题:
lrwxrwxrwx. root root /etc/httpd/sites-enabled/vhosts-vbox-therp.conf -> ../sites-available/vhosts-vbox-therp.conf
-rw-r--r--. root root /etc/httpd/sites-available/vhosts-vbox-therp.conf
drwxr-xr-x. root root /etc/httpd/sites-available
drwxr-xr-x. root root /etc/httpd/sites-enabled
drwxr-xr-x. root root /etc/httpd
drwxr-xr-x. root root /etc
dr-xr-xr-x. root root /
更新:
消除提到的符号链接后,Apache 成功重新加载;但是,其余问题仍然存在(没有虚拟主机,没有apachectl -S
)。
我更新了 apache(yum update httpd
;现在2.4.6-45.el7.centos
,2.4.6-40.el7.centos
以前是)。没有帮助。
仍然存在一些符号链接(通过宏使用),但我有一个高效的 CentOS 服务器,它们不会导致问题(2.4.6.19.el7.centos
)。
(......我还修正了一些错别字。)
答案1
看起来 CenOS 可能搞砸了 apachectl 脚本或 envvars 文件(或者是你自己搞砸了)。
无论如何,apachectl 所做的就是加载 envvars 文件:
. /path/to/apacheinstall/bin/envvars
然后调用httpd:
/path/to/apacheinstall/bin/httpd
我会检查两者的内容并尝试修复错误的内容或手动加载环境并直接调用 httpd。
默认情况下的 envvars 文件(无发行版):只需将 /path/to/apacheinstall/lib 添加到 LD_LIBRARY_PATH apachectl 加载前一个文件并添加一些命令以便您轻松处理 httpd。