Невозможно запустить Apache в Ubuntu 12.10: нет доступных сокетов прослушивания


9

Я не могу запустить apache2, установленный с помощью apt-get. Я получаю ту же ошибку на двух отдельных установках Ubuntu 12.10, одна на моем настольном ПК, другая работает в VirtualBox:

michal@michaltest:~$ sudo service apache2 start
 * Starting web server apache2
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
           [fail]

Исоф говорит:

michal@michaltest:/var/log/apache2$ sudo lsof -i :80
COMMAND     PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
ubuntu-ge  2074 michal   11u  IPv4  23978      0t0  TCP michaltest.local:47578->mulberry.canonical.com:http (CLOSE_WAIT)
firefox   25194 michal   71u  IPv4  42477      0t0  TCP michaltest.local:59793->69.59.197.29:http (ESTABLISHED)
firefox   25194 michal   76u  IPv4  41834      0t0  TCP michaltest.local:59698->69.59.197.29:http (ESTABLISHED)
gvfsd-htt 25320 michal   12u  IPv4  42568      0t0  TCP michaltest.local:56203->lb260.amst.cotendo.net:http (CLOSE_WAIT)

netstat говорит:

michal@michaltest:/var/log/apache2$ sudo netstat -lnp | grep '80'
unix  2      [ ACC ]     STREAM     LISTENING     8030     876/acpid           /var/run/acpid.socket

/var/log/apache2/error.log:

[Thu Nov 08 11:13:30 2012] [notice] Apache/2.2.22 (Ubuntu) configured -- resuming normal operations
[Thu Nov 08 11:17:32 2012] [notice] caught SIGTERM, shutting down

/etc/apache2/ports.conf:

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

Спасибо за вашу помощь.

РЕДАКТИРОВАНИЕ № 1:

michal@michaltest:~$ sudo netstat -ano | grep '443'
tcp       54      0 10.0.2.15:58504         91.189.92.70:443        CLOSE_WAIT  off (0.00/0/0)

Ответы:


9

вам просто нужно удалить nginx (3 пакета), вот и все .....

Ваша основная проблема - недоступные прослушивающие сокеты. Вы столкнулись с этой проблемой, потому что другое приложение / служба приобрело порт 80 на вашем Ubuntu Server.

Теперь вам нужно убить процесс, получивший порт 80. Вы можете легко это найти с помощью следующей команды: -

sudo netstat -ltnp | grep ': 80'

Это вернет что-то вроде:

tcp 0 0 127.0.0.1:80 0.0.0.0:* LISTEN 1588 / aolserver4-nsd

в вышеприведенном случае процесс № 1588 приобрел порт 80 , вам нужно убить этот процесс 1588.

sudo kill -9 1588

Теперь вы можете запустить свой сервер Apache, выполнив следующую команду

sudo /etc/init.d/apache2 start


3
Спасибо! Это немного озадачило меня, потому что там написано, что «Журнал ошибок Apache может содержать больше информации», но там ничего нет, также «Невозможно открыть журналы», но нет информации, какой файл журнала (apache? The vhosts '? ). Оказывается, что nodejs все еще использует порт 80 ..
andyk

Я получаю ту же ошибку, но netstat ничего не перечисляет, используя порт 80 ...
Cerin

@ Слушай, ты должен попробовать sudo перед netstat.
Викас Двиведи

2

Чтобы устранить ошибку «apache2: не удалось надежно определить полное доменное имя сервера, используя 127.0.1.1 for ServerName» , пожалуйста, укажите следующее в файле apache2.conf

ServerName HOSTNAME_OF_THE_SERVER

Сохраните файл настроек и перезапустите сервер Apache.

Просьба опубликовать вывод sudo netstat -ano | grep '443'

Также убедитесь, что если вы настраиваете Apache для прослушивания порта 443 / ssl, вы должны настроить ssl сертификат на веб-сервере apache.


Я опубликовал вывод sudo netstat -ano | grep '443'. ServerName не является проблемой. Большое спасибо.
michalstanko

1

Вы видели:

Unable to open logs

Я думаю, что вы можете проверить права доступа к / var / log / apache2!


Я немного новичок, однако я сделал этот /var/log/apache2каталог рекурсивно доступным для записи во всем мире, затем попытался запустить его sudo service apache2 startснова, и результат все еще был Unable to open logsтам. Какие-либо предложения? Спасибо.
michalstanko

Хм. Так может ли быть что-то подобное? cpanelblog.in/apache-error-unable-to-open-logs
martin-mystere

1

Похоже, что позади может быть запущен сервис nginx. Так что остановите nginx "service nginx stop" и теперь попробуйте запустить службу apache2, она должна появиться без проблем. (остановите, если запущены какие-либо другие сервисы приложения)

У меня была та же проблема сегодня, и она была решена.

root@ip-172-31-16-xxx:~# **service nginx stop**
root@ip-172-31-16-xxx:~# **service nginx status**
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Tue 2017-12-26 08:48:21 UTC; 1min 12s ago
  Process: 5897 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)
  Process: 1220 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 1158 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Main PID: 1229 (code=exited, status=0/SUCCESS)

Dec 26 06:56:32 ip-172-31-16-xxxsystemd[1]: Starting A high performance web server and a reverse proxy server...
Dec 26 06:56:32 ip-172-31-16-138 systemd[1]: Started A high performance web server and a reverse proxy server.
Dec 26 08:48:21 ip-172-31-16-138 systemd[1]: Stopping A high performance web server and a reverse proxy server...
Dec 26 08:48:21 ip-172-31-16-138 systemd[1]: Stopped A high performance web server and a reverse proxy server.

root@ip-172-31-16-xxx:~# **service apache2 start**
root@ip-172-31-16-xxx:~# **service apache2 status**
● apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   **Active: active (running) since Tue 2017-12-26 08:49:51 UTC; 14s ago**
     Docs: man:systemd-sysv-generator(8)
  Process: 5845 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
  Process: 5937 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
    Tasks: 55
   Memory: 6.5M
      CPU: 46ms
   CGroup: /system.slice/apache2.service
           ├─5954 /usr/sbin/apache2 -k start
           ├─5957 /usr/sbin/apache2 -k start
           └─5958 /usr/sbin/apache2 -k start

Dec 26 08:49:50 ip-172-31-16-138 systemd[1]: Starting LSB: Apache2 web server...
Dec 26 08:49:50 ip-172-31-16-138 apache2[5937]:  * Starting Apache httpd web server apache2
Dec 26 08:49:51 ip-172-31-16-138 apache2[5937]:  *
Dec 26 08:49:51 ip-172-31-16-138 systemd[1]: Started LSB: Apache2 web server.
root@ip-172-31-16-138:~#

0

Похоже, проблема в том, что другой процесс имеет открытый порт 443. Вам нужно будет сначала убить этот процесс.

linux - как мне удалить соединение через сокет CLOSE_WAIT - переполнение стека говорит:

CLOSE_WAITозначает, что ваша программа все еще работает и не закрыла сокет (и ядро ​​ждет, пока это сделает). Добавьте, -pчтобы netstatполучить pid, а затем убить его более сильно ( SIGKILLесли нужно). Это должно избавиться от ваших CLOSE_WAITсокетов. Вы также можете использовать, psчтобы найти пид.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.