nginx 在 apache 之前启动

nginx 在 apache 之前启动

我一直摸索通过在 unbuntu (12.04) 框上设置 redmine,并且在某处设置了 NginX,但现在 apache 不再加载,因为 nginx 已经抓取了端口。

我尝试使用以下命令删除 NginX,但似乎没有任何效果。当我重新启动服务器并指向我的网络浏览器时,我仍然收到“欢迎使用 NginX”消息

sudo apt-get purge nginx

我已经确认 NginX 已经消失,因为当我运行上述命令时,我得到的输出是

Package nginx is not installed, so not removed

但每次我启动机器时它都会再次运行。我注意到正在运行的进程如下(如果有帮助的话)

root       923  0.0  0.0  76784  1280 ?        Ss   03:00   0:00 nginx: master process /usr/sbin/nginx
www-data   925  0.0  0.0  77092  1704 ?        S    03:00   0:00 nginx: worker process
www-data   926  0.0  0.1  77092  2204 ?        S    03:00   0:00 nginx: worker process
www-data   927  0.0  0.0  77092  1704 ?        S    03:00   0:00 nginx: worker process
www-data   928  0.0  0.0  77092  1704 ?        S    03:00   0:00 nginx: worker process

有什么建议可以将 apache2 重新恢复为“默认”(缺乏更好的术语) Web 服务器?

答案1

取决于您如何安装 nginx。

如果您用来安装它的过程也安装了有效的 rc 脚本,那么它将起作用:

sudo update-rc.d nginx disable

如果这给出一个有意义的输出,则重启时不会出现问题。

如果使用了 upstart 脚本,请检查内部/etc/init/nginx。您可能需要更改此文件内的变量来禁用它。

如果它是源安装并且您不知道在哪里或如何安装它,请使用findlocate

要使用locate,请运行: sudo updatedb

这将索引所有文件以便快速查找

然后运行: locate nginx

这应该会让你丢失一些你应该(小心)删除的 nginx 文件。

答案2

我建议也终止进程。删除过程可能留下一些仍在运行的进程。

显然,重启应该也能解决这个问题。但是如果你不想重启,你需要手动关闭它们,因为你的清除操作删除了 /etc/init.d/nginx 脚本。

从命令行运行此命令:

kill $(pidof nginx)

它会终止所有 nginx 进程并允许您继续启动 Apache。

如果这不起作用,您需要确定哪个端口占用了该端口。您可以使用 来做到这一点netstat -natp | grep 80

该命令将显示处于“侦听”状态的“:80”端口引用,以及打开该端口的进程。然后您可以终止该特定进程。

答案3

我猜你有一个启动脚本在执行此操作。考虑到它是 Ubuntu 12.04,它很可能是一个 upstart 脚本(否则它是一个 init 脚本,但我们最近两者都用)。

您可以检查是否有启动 ngnix 的 upstart 作业,initctl list如果有,您将找到一个可能名为 的任务ngnix。您可以使用 stop ngnix 停止它,然后手动启动 apache。

转到/etc/init并查找名为 ngnix.conf 的文件(upstart 中的启动脚本是jobname.conf) - 将其重命名为不以 conf 结尾的名称或删除它,然后重新启动。

如果没有这样的文件,请检查 /etc/init.d 中是否存在启动 ngnix 的脚本。

答案4

您应该通过运行以下命令检查实际安装了哪个 nginx 包:

dpkg -l | grep nginx

在 Debian 和 Ubuntu 中,不同的 nginx 包包含不同的模块集,例如,你可以安装包nginx-extrasnginx-full,然后你需要运行

aptitude purge nginx-full

nginx是一个简单的元包,它将nginx-full作为依赖项安装,但它不需要自行安装。

相关内容