Я пытаюсь запустить экземпляр сервера Apache 2.2 с файлом конфигурации, довольно близким к стандартному. Я сделал одно небольшое изменение, потому что хочу, чтобы Apache обслуживал один XML-файл отдельно от всего остального, что он делает, исключительно для тестирования на моей локальной машине. Изменение в том, что я вставил это в httpd.conf
:
# Based on http://httpd.apache.org/docs/2.2/vhosts/examples.html
Listen 10.11.12.13:85
NameVirtualHost 10.11.12.13:85
<VirtualHost 10.11.12.13:85>
DocumentRoot "C:\foo\bar"
ServerName www.MyCompanyMyProjectFooBarTestURL.com
</VirtualHost>
Попытка запустить Apache привела к следующему:
(OS 10049) Запрошенный адрес недействителен в своем контексте. : make_sock: не удалось привязать к адресу 10.11.12.13:85
нет доступных гнезд для прослушивания, выключение
Невозможно открыть журналы
Ни один экземпляр Apache не запущен. Ничто не использует порт 85 (или 80, или 8080). В этом нет ничего особенного 10.11.12.13:85
; Я просто подумал, что это IP-адрес, который ни к чему не мешает.
Что означает эта ошибка и как ее исправить?
Может быть причина, по которой указываемый вами IP-адрес является общим. Например: -10.1.1.233: 443 И вы получите ошибку >>> (OS 10049) Запрошенный адрес недействителен в своем контексте. : make_sock: не удалось привязать к адресу 10.1.1.233:443
прокомментируйте строку в httpd-ssl.conf и запустите Apache
Убедитесь, что IP-адрес настроен на сетевом интерфейсе, который работает.
Чтобы добавить IP-адрес к сетевому интерфейсу в Windows 7, вы можете следовать HOWTO из http://www.pctips3000.com/how-to-assign-more-than-one-ip-address-to-one-lan-in-windows-7/
Если у вас есть DHCP, вам может потребоваться проделать некоторые трюки с реестром, например: http://www.petri.co.il/configure_tcp_ip_to_use_dhcp_and_a_static_ip_address_at_the_same_time.htm или просто используйте статическое выделение IP.
в CMD , тип: ipconfig
и посмотрите свой локальный IP-адрес. затем установите это вместо неизвестного 10.11.12.13:85
Поскольку никто еще не объяснил, что происходит:
Apache не может выполнить привязку к указанному вами локальному IP-адресу, потому что компьютер не настроен с этим IP-адресом.
Есть несколько способов решить эту проблему:
Ты можешь Listen
на IP-адрес, которым действительно обладает компьютер. Но имейте в виду, что указание IP-адреса ограничивает входящие соединения, и только другие хосты, которые могут достичь этого адреса, смогут получить доступ к серверу, и только через этот адрес. Для рабочего веб-сервера в Интернете это почти всегда не то, что вам нужно, так что ...
Не указывайте IP-адрес в Listen
директива. Затем Apache будет прослушивать все интерфейсы на предмет входящих подключений. Если не имеет значения, откуда берутся соединения, например, с общедоступного веб-сервера или сервера с надлежащим брандмауэром, то это самое простое решение.
Чтобы найти сокет для привязки, вы можете указать адрес локального компьютера. Кажется, что все меняется, когда вы включаете и выключаете компьютер. Чтобы найти используемый локальный адрес, войдите в панель управления, в центр управления сетями и общим доступом, щелкните беспроводное соединение, затем кнопку «Подробности», и IPv4-адрес должен быть адресом локального компьютера. Вы можете добавить этот адрес и хороший сокет, например 8088, в httpd.conf в качестве параметра «Слушать» - например, Слушайте 127.0.0.1:8088 (это локальный хост по умолчанию, но ваш IP-адрес будет другим) - вы можете указать более одного из этих адресов, и он будет привязан к одному, который является бесплатным. Это работает в окнах. Затем добавьте тот же IP-адрес в файл hosts.