[Ubuntu] 在同一台服务器上安装了nginx和apache,但是apache无法启动的问题

嗯,虽然这是理所当然的事情。
在共存有Apache和Nginx的服务器上,尝试启动(重新启动)Apache时可能会出现错误,并且无法启动。

$ sudo service apache2 restart
 * Restarting web server apache2
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
   ...fail!

正如错误信息所述,socket已经被使用并且无法使用。

$ sudo netstat -tanp | grep LISTEN
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      849/nginx #使用中!
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      693/sshd
tcp6       0      0 :::22                   :::*                    LISTEN      693/sshd

作为解决方法

    • (nginx が不要なら) nginx を停止して apache を起動

 

    (nginx/apache 共に必要なら) nginx と apache で LISTEN するポート番号を変更する(どちらかを80番に残して、もう片方はウェルノウンポート以外で起動)

我认为主要有两种情况。关于前者,我们可以进行补充。

停止nginx并启动apache。

可以简单地停止nginx,然后使用apache,但这样在重新启动服务器时会再次出现相同的情况。这是因为nginx比apache先启动。

$ /sbin/runlevel #現在の run level の確認
N 2
$ ll /etc/rc2.d/ #/etc/rcN.d/ の中身を確認
total 12
drwxr-xr-x  2 root root 4096 Sep 25 17:36 ./
drwxr-xr-x 99 root root 4096 Mar  3 22:36 ../
-rw-r--r--  1 root root  677 Jul 27  2012 README
lrwxrwxrwx  1 root root   15 Mar 23  2014 S20nginx -> ../init.d/nginx*
..(中略)..
lrwxrwxrwx  1 root root   17 Jul  3  2014 S91apache2 -> ../init.d/apache2*
..(後略)..

作为发音方式,

頭文字意味説明SStart(該当ランレベルで起動時に)プログラム開始KKill(該当ランレベルで起動時に)プログラム停止

数字紧随S之后的是执行顺序,因此S20的nginx比S91的apache2先执行。

只需使用rename/remove来更改符号链接即可。

$ sudo ln -snf /etc/init.d/nginx /etc/rc2.d/.S20nginx
or
$ sudo rm /etc/rc2.d/S20nginx

以上 .

请看下面的一种选择的原文翻译:

参考资料

    http://linux.kororo.jp/cont/intro/init.php
广告
将在 10 秒后关闭
bannerAds