Назад | Перейти на главную страницу

Как мне запустить Apache 2.2.17?

Я использую Apache 2.2.17 в Fedora v14. Я не могу получить доступ к работающему веб-серверу из браузера, и у меня также возникают трудности с его настройкой для прослушивания порта 443.

Сервер httpd это работает:

[me@host ~]$ sudo ps -U root -u root u | grep httpd
root      6592  0.0  3.4 404620 17552 ?        Ss   10:50   0:00 /usr/sbin/httpd -k graceful

Затем я останавливаю службу:

[me@host ~]$ sudo apachectl stop

Затем я настроил Listen директива в /etc/httpd/conf/httpd.conf для прослушивания портов 80 и 443:

Listen 1.2.3.4:80
Listen 1.2.3.4:443 https

(IP не 1.2.3.4 но фактический IP этого хоста.)

Я проверил другие директивы Apache conf, чтобы убедиться, что у меня есть папка с документами, что она доступна всем пользователям, и что она покажет список каталогов папки, если я не укажу index.html и т.п.

При попытке запустить httpd, Я получаю ошибку конфигурации:

[me@host conf]$ sudo apachectl graceful
(98)Address already in use: make_sock: could not bind to address [::]:443
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:443
no listening sockets available, shutting down
Unable to open logs

Похоже, что никакие другие службы не работают на TCP-порту 443 (или порту 80):

[me@host conf]$ sudo netstat -tulpn | grep 443
[me@host conf]$ sudo netstat -tulpn | grep 80

Если я закомментирую 443 Listen директива и graceful-перезапустить httpd сервис, он запускается и отображается в списке процессов (через ps, как указано выше), но я все еще не могу получить доступ к хосту через веб-браузер.

Что я упустил из виду при настройке Apache? Спасибо за ваш совет.

Проверьте правила iptables:

iptables -nv -L

Чтобы добавить новые правила, отредактируйте / etc / sysconfig / iptables:

...
-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
...

Чтобы перезапустить iptables:

#service iptables restart

Чтобы остановить iptables:

#service iptables stop

Для отладки используйте tcpdump:

# tcpdump -pn host YOU_IP and not port 22
or
# tcpdump -pn port 443 and icmp

Я только что прокомментировал строку

Listen *:80

и теперь он работает.

Перед этим запустите команду hostname и добавьте это имя в свой /etc/hosts. В httpd.conf У меня то же имя на линии ServerName.

Раньше я контролировал, что ни одна служба не использовала этот порт: в моем случае 80.