在删除了 Debian 标准包提供的 0.7.x 版本后,我通过源代码安装了 nginx 1.4.1 版本。
可以启动 nginx,service nginx start
当我执行 netstat 时,我看到 nginx 正在保留端口 80。
netstat -apn | grep nginx
输出:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3115/nginx
问题是,当我这样做service nginx status
或service nginx stop
收到此消息时:
无法访问 nginx 的 PID 文件...失败!
我可以找谁来解决这个问题?我该如何防止出现这个问题?
编辑:解决方案
remove nginx
- 然后去源头
./configure --pid-path=/var/run/nginx.pid
make
checkinstall make install
答案1
Debian 可能为其软件包配置/修补了 nginx,以将 pid 文件放在默认情况下不执行的特定位置。当您通过从源代码编译的内容替换它时,它与服务基础设施的期望不符。
我会看看 debian 人员完成了哪些补丁和配置选项,并使用将 pid 文件放在同一位置的选项重新编译您的 1.4.x 版本。
至于如何预防此类问题的发生呢?要么通过包做事,要么从源代码编译,但不能两者兼而有之。或者请注意,这样做时您需要格外小心,因为事情可能会损坏。