Я могу остановить его, используя
/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]
Несколько слов об ошибках, которые, надеюсь, спасут вас от подобных ситуаций в будущем.
В 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) Разрешение отказано: [...]
)
Заключение
В основном есть два решения этой проблемы:
Запустите демон Apache2 HTTP с правами root, используя sudo
:
sudo service apache2 start
или:
sudo /etc/init.d/apache2 start
Измените порт по умолчанию с 80
на большее, чем 1024
, например 2000
, 2500
, 9000
] и т. д. Типичный порт для запуска в такой ситуации - 8080
sudo vi /etc/apache2/ports.conf
ищите, а если нет, добавьте:
Слушайте 8080
или любой другой порт по вашему выбору, например порт > 1024
, и выбранный порт не используется другим процессом.
Ниже приведены команды для запуска / остановки / перезапуска сервера apache:
Для запуска:
sudo /etc/init.d/apache2 start
Чтобы остановить:
sudo /etc/init.d/apache2 stop
Для перезапуска:
sudo /etc/init.d/apache2 restart
Это ошибка selinux, или, по крайней мере, в моем случае. Либо измените булевы, отключите selinux, либо установите его на разрешительный с помощью setenforce 0
.
Изменение булева потребовало бы запуска getenforce -a | grep http
, и поиска "allow http connect network". Скопируйте его и замените "on", где в списке написано "-- off"
Проверьте контекст порта selinux, выпустив команду
semanage port -l | grep http
Если он присутствует в списке http_port_t, то все в порядке, в противном случае добавьте порт на
semanage port -a -t http_port_t -p tcp 80
или что-то, что вы хотите назначить.