[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*
..(後略)..
作为发音方式,
頭文字意味説明
S
Start(該当ランレベルで起動時に)プログラム開始K
Kill(該当ランレベルで起動時に)プログラム停止数字紧随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