我一直摸索通过在 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
。您可能需要更改此文件内的变量来禁用它。
如果它是源安装并且您不知道在哪里或如何安装它,请使用find
或locate
。
要使用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-extras
或nginx-full
,然后你需要运行
aptitude purge nginx-full
nginx
是一个简单的元包,它将nginx-full
作为依赖项安装,但它不需要自行安装。