Почему я получаю & ldquo; Отказано в разрешении: make_sock: не удалось привязать к адресу & rdquo; при запуске Apache2?

Я могу остановить его, используя

/etc/init.d/apache2 stop

Но когда я хочу запустить его снова, используя:

/etc/init.d/apache2 start

, я получаю эту ошибку:

Starting web server apache2                                                  /usr/sbin/apache2ctl: 87: ulimit: error setting limit (Operation not permitted)
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
(13)Permission denied: make_sock: could not bind to address [::]:80
(13)Permission denied: 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]
28
задан 28 August 2013 в 11:12

4 ответа

Несколько слов об ошибках, которые, надеюсь, спасут вас от подобных ситуаций в будущем.

В Linux порты от 0 до 1024 зарезервированы для использования системой. Это означает, что для того, чтобы использовать его, у вас должны быть права на изменение - доступ к основным настройкам системы. Пользователь root имеет такие привилегии и может использовать порт в диапазоне от 0 до 1024.

В вашей проблеме, как вы можете видеть, система через ответ Apache2 указывает на корень проблемы ([...] не удалось выполнить привязку для адресации бла-бла 80 ):

(13)Permission denied: make_sock: could not bind to address [::]:80
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80

Когда запускается демон Apache2 http, он пытается привязать порт 80, поскольку это порт по умолчанию для использования в HTTP см. , который является порт в системе, назначенный портам, и поэтому к нему может получить доступ только root.

Вы выполнили команду start как обычный пользователь без привилегий root, и это привело к тому, что это не удалось.

Простыми словами:

] Вы:

Привет, Apache2. Я - Kongthap, и я говорю вам начать ( /etc/init.d/apache2 start )

Apache2:

ОК. Я запускаю (Запуск веб-сервера apache2)

Система, пожалуйста, дайте мне порт 80 для использования и прослушивания соединений.

Система:

ОК. Один момент, чтобы проверить ...

Ах ... Извините, Apache2, но я не могу позволить вам работать с портом 80, это для личного использования.

И у вас нет необходимых прав для его привязки. ( Операция запрещена )

Apache2:

Ох, Kongthap Мне не удалось запустить, Система не позволила мне это сделать ( (13) Разрешение отказано: [...] )

Заключение

В основном есть два решения этой проблемы:

  1. Запустите демон Apache2 HTTP с правами root, используя sudo :

     sudo service apache2 start
     

    или:

     sudo /etc/init.d/apache2 start
     
  2. Измените порт по умолчанию с 80 на большее, чем 1024 , например 2000 , 2500 , 9000 ] и т. д. Типичный порт для запуска в такой ситуации - 8080

     sudo vi /etc/apache2/ports.conf
     

    ищите, а если нет, добавьте:

     Слушайте 8080
     

    или любой другой порт по вашему выбору, например порт > 1024 , и выбранный порт не используется другим процессом.

55
ответ дан 28 August 2013 в 11:12

Ниже приведены команды для запуска / остановки / перезапуска сервера apache:

  • Для запуска:

     sudo /etc/init.d/apache2 start
     
  • Чтобы остановить:

     sudo /etc/init.d/apache2 stop
     
  • Для перезапуска:

     sudo /etc/init.d/apache2 restart
     
7
ответ дан 28 August 2013 в 11:12

Это ошибка selinux, или, по крайней мере, в моем случае. Либо измените булевы, отключите selinux, либо установите его на разрешительный с помощью setenforce 0.

Изменение булева потребовало бы запуска getenforce -a | grep http, и поиска "allow http connect network". Скопируйте его и замените "on", где в списке написано "-- off"

1
ответ дан 28 August 2013 в 11:12

Проверьте контекст порта selinux, выпустив команду

semanage port -l | grep http

Если он присутствует в списке http_port_t, то все в порядке, в противном случае добавьте порт на

semanage port -a -t http_port_t -p tcp 80

или что-то, что вы хотите назначить.

5
ответ дан 28 August 2013 в 11:12

Другие вопросы по тегам:

Похожие вопросы: