CodeNet / Веб программирование / WEB Сервера / Apache / Установка и настройка Apache, PHP, MySQL и SMTP под Windows NT/2000/XP
Настройка Apache
Файл "httpd.conf"
Основной файл конфигурации этого сервера - "httpd.conf". Лежит он в каталоге "conf" в root-директории Apache. Вот над ним вам и придеться издеваться. Скажу сразу, если вы не понимаете английского, удалите из этого файла все комментарии и пояснения, оставьте только сами директивы (и закоментированные тоже); таким образом вы сможете быстрее находить нужную директиву, не роясь среди множества непонятных вам пояснений. Синтаксис файла очень простой: "директива значение", все строки не соответствующие этому виду можно удалить.
Внимане! Некоторые директивы могут выглядеть так:
#директива значение
<блок директив />
директива значение
</блок директив>
<блок директив />
# Комментарий
директива значение
# Комментарий
</блок директив>
и т. п. Эти строки удалять не нужно!
Символ комментария в "http.conf" - "#" (решетка). Т. е. все символы, идущие в строке после "#" не воспринимаются сервером. Так вы можете добавлять собственные комментарии. Убирая этот символ перед закомментированными строками вы делаете их доступными для чтения сервером.
Общие настройки
Вам нужно будет сделать правку файла "httpd.conf". У некоторых директив изменить значение, другие раскомментировать, третьи добавить. Далее я приведу список директив и их значений, которые должны присутствовать в файле конфигурации Apache.
Каталог с файлами сервера (не путать с "DocumentRoot"):
ServerRoot "C:/Server/Apache/Apache2"
Привязывает Apache к конкретному порту:
Listen 80
Имя сервера (на работу это не влияет):
ServerName localhost:80
Администратор сервера. Содержит ваш адрес электронной почты, который будет отображаться при некоторых ошибках сервера:
ServerAdmin your@email.name
Вам необходимо создать папки, где будут храниться ваши сайты. По умолчанию Apache устанавливает "DocumentRoot" - "%ServerRoot%/htdocs" (т. е. если вы установили Apache в папку "C:\Server\Apache", то "DocumentRoot" будет выглядеть так: "C:/Server/Apache/Apache2/htdocs"). Вы должны изменить значение "DocumentRoot" на "C:/Sites/home/localhost/www".
DocumentRoot "C:/Sites/home/localhost/www"
Строго следуйте моим инструкциям, чтобы быть уверенными, что все это у вас потом заработает. Создайте на диске "C:" папку "Sites". В ней создайте каталог "home", уже в нем - "localhost", "neebet", "mysite". В каждую из этих папок ("localhost", "neebet", "mysite") положите каталоги "www" (для хранения html документов), "cgi" (для хранения cgi-скриптов), пустые файлы access.log (журнал доступа к серверу) и error.log (журнал ошибок сервера). Т. о. структура каталогов, в которых будут храниться ваши сайты должна выглядеть так:

Зачем это нужно, поймете потом, а сейчас просто сделайте как я говорю.
Далее замените блок "<Directory "C:/Server/Apache/Apache2/htdocs">" на следующее:
<Directory "C:/Sites">
Options Indexes Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Этими директивами вы разрешите просмотр содержимого каталога в браузере при отсутствии индексных файлов, включите поддержку SSI, разрешите использовать файлы .htaccess для настройки каталогов и разрешите доступ для всех к сайту.
Задание индексного файла для директории (этот файл сервер будет отображать при обращении к каталогу без указания имени файла):
DirectoryIndex index.php index.html index.html.var
Настройки CGI
Задание псевдонима для каталога с cgi-скриптами "C:\Sites\home\localhost\cgi". При указании пути вида http://localhost/cgi/ или http://localhost/cgi-bin/, Apache будет обращаться к каталогу "C:\Sites\home\localhost\cgi":
ScriptAlias /cgi/ "C:/Sites/home/localhost/cgi/" ScriptAlias /cgi-bin/ "C:/Sites/home/localhost/cgi/"
Каталог "C:\Sites\home\localhost\cgi" также будет доступен вашим виртуальным хостам при обращении вида "http://имя_виртуального_хоста/cgi-bin/cgi-скрипт.bat". Напрмер, если вы введете в браузере http://neebet/cgi-bin/cgitest.bat, то будет выполнен код, находящийся в файле "C:\Sites\home\localhost\cgi\cgitest.bat", который также доступен по адресу http://localhost/cgi/cgitest.bat. У виртуальных хостов есть свой каталог для cgi-скриптов, доступный по адресу "http://имя_виртуального_хоста/cgi/cgi-скрипт.bat". Каталоги "cgi" не доступны для просмотра в браузере, и при прямом обращении к ним вы получите сообщение об ошибке "403".
Указывает Apache, что файлы с расширением "cgi", "bat", "exe" нужно воспринимать как cgi-скрипты:
AddHandler cgi-script .cgi .bat .exe
Блок "<Directory "C:/Server/Apache/Apache2/cgi-bin">" замените на:
<Directory "C:/Sites/home/localhost/cgi">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
Языковые настройки
Остальные строки вида "AddLanguage lang .lang" можете закомментировать (если конечно вам не нужна поддержка этих языков):
AddLanguage en .en AddLanguage ru .ru
Устанавливает языковой приоритет:
LanguagePriority en ru
Настройка кодировок:
AddDefaultCharset WINDOWS-1251 AddCharset WINDOWS-1251 .cp-1251 .win-1251
Настройки PHP
Подключение PHP:
AddType application/x-httpd-php php phtml ScriptAlias /_php_/ "C:/Server/PHP/" Action application/x-httpd-php "/_php_/php.exe"
Настройки SSI
Включение SSI:
AddType text/html .shtml AddHandler server-parsed .shtml .html .htm
Теперь основные дерективы заданы. Для вступления изменений в силу - перезапустите Apache.
Виртуальные хосты
Итак, вы создали каталог "localhost" для хранения и тестирования документов вашего сайта. Но если у вас не один сайт? Можно конечно создать каталоги для других сайтов внутри "localhost" и обращаться к ним "http://localhost/site", но это не совсем удобно. Тем более, что Apache дает возможность решить эту проблему с помощью виртуальных хостов. Есть два вида виртуальных хостов: отдельные для каждого IP адреса и использующие один IP (name-based хосты). Я объясню как настроить последние.
Вы уже создали ранее папки "neebet" и "mysite" в директории "home". Это и есть корни ваших виртуальных хостов. В них должны быть папки "www" и "cgi", файлы access.log и error.log. Т. е. все так же как и с каталогом "localhost". Все ваши виртуальные хосты будут использовать IP "127.0.0.1".
Добавьте в файл "httpd.conf" следующее:
NameVirtualHost 127.0.0.1 #localhost <VirtualHost localhost> ServerAdmin me@localhost ServerName localhost DocumentRoot "C:/Sites/home/localhost/www" ScriptAlias /cgi/ "C:/Sites/home/localhost/cgi/" ErrorLog C:/Sites/home/localhost/error.log CustomLog C:/Sites/home/localhost/access.log common </VirtualHost> #neebet <VirtualHost neebet> ServerAdmin me@neebet ServerName neebet DocumentRoot "C:/Sites/home/neebet/www" ScriptAlias /cgi/ "C:/Sites/home/neebet/cgi/" ErrorLog C:/Sites/home/neebet/error.log CustomLog C:/Sites/home/neebet/access.log common </VirtualHost> #mysite <VirtualHost mysite> ServerAdmin me@mysite ServerName mysite DocumentRoot "C:/Sites/home/mysite/www" ScriptAlias /cgi/ "C:/Sites/home/mysite/cgi/" ErrorLog C:/Sites/home/mysite/error.log CustomLog C:/Sites/home/mysite/access.log common </VirtualHost>
Можно добавить в блоки "<VirtualHost>" и другие параметры, однако лучше управлять виртуальными хостами с помощью .htaccess. Также стоит отметить, что все параметры, не указанные в блоках "<VirtualHost>" или в .htaccess, наследуются от главного хоста (т. е. от "localhost").
Т. о. вы настроили Apache для работы с виртуальными хостами. Имена, естесственно, можно изменить, но при этом будте внимательны с путями!
Теперь определимся с тем, как Windows узнает о существовании виртуальных хостов? Для этого придется отредактировать файл "hosts" (не путать с файлом "hosts.sam"), хранящийся в папке "%WINDOWS%\System32\drivers\etc". Выглядит он примерно так:
# (C) Корпорация Майкрософт (Microsoft Corp.), 1993-1999 # # Это образец файла HOSTS, используемый Microsoft TCP/IP для Windows. # # Этот файл содержит сопоставления IP-адресов именам узлов. # Каждый элемент должен располагаться в отдельной строке. IP-адрес должен # находиться в первом столбце, за ним должно следовать соответствующее имя. # IP-адрес и имя узла должны разделяться хотя бы одним пробелом. # # Кроме того, в некоторых строках могут быть вставлены комментарии # (такие, как эта строка), они должны следовать за именем узла и отделяться # от него символом '#'. # # Например: # # 102.54.94.97 rhino.acme.com # исходный сервер # 38.25.63.10 x.acme.com # узел клиента x 127.0.0.1 localhost
В него нужно будет дописать две строки:
127.0.0.1 neebet 127.0.0.1 mysite
Теперь, при обращении http://neebet загрузится содержимое "C:\Sites\home\neebet\www".
Для вступления изменений в силу - перезапустите Apache.
Оставить комментарий
Оставлять комментарии могут только зарегистрированные пользователи.
Если вы не являетесь зарегистрированным пользователем, то вам необходимо зарегистрироваться. Регистрация бесплатна. Если вы уже зарегистрированы на CodeNet, то вам необходимо ввести логин и пароль в верхней (Alt-U) части страницы.
Комментарии
1. shade137 / 30 июня 2011, 23:16:35

Привет!помогите пожалуйста!у меня та же проблема что и у demon_no_fear и выдает ту же ошибку!если у кого то есть работающий httpd.conf скиньте пожалуйста,буду очень благодарен!мое мыло- tyxer2006@gmail.com


2. ДобрыйФей / 02 декабря 2009, 11:41:48

Не принял директиву 

ServerRoot "C:/Server/Apache/Apache2"
(устанавливаю Апаче 2.2) - но зато всё прошло удачно с:
ServerRoot "C:/Server/Apache"
3. Ананас / 30 августа 2009, 00:34:51

Спасибо!! Хорошая статья! Даже новичок справился)


4. Sinsir / 26 мая 2009, 12:11:00

А у меня выдает ошибку 403 нет доступа!

sinsir@inbox.ru
если есть добрые неленивые люди скинте плз конфиг
5. VIOLETT / 13 февраля 2009, 14:40:42

Привет!помогите и мне пожалуйста!у меня та же лажа что и у demon_no_fear и выдает ту же ошибку!если у кого то есть работающий httpd.conf дайте пожалуйста,буду очень благодарна!мое мыло- anya_mehed@mail.ru


6. demon_no_fear / 10 февраля 2009, 14:11:16

Привет! Помогите, пожалуйста, сделала все как написанно, но при загрузки Apache выдает ошибку: make_sock: could not bind to address 127.0.0.1:80

not listning sockets aviable, shuting down. Что делать? Пишите на почту если не сложно, заранее благодарен.и если есть рабочий и правильно сконфигурированный httpd.conf, дайте плиииз!(demon_no_fear@mail.ru)
7. еВГЕНИЙпс / 20 января 2009, 09:10:16

Добрый День! не подскажете как бороться с проблеммой ,которая освещена chulabre / 11 апреля 2007, 12:40:02

я так понимаю apache не видит открытый порт или не может связаться с сокетом
вопрос как с этим бороться??
8. Дк. Влад / 02 декабря 2008, 16:43:09

А можно и мне выслать на мыло файл "httpd.conf". Мыло E_A_G_L_E@i.ua


9. Toganashi-Koder / 11 ноября 2008, 07:53:10

!!!!!!!!!!!!!!! ВАЖНО ЧИТАТЬ ВСЕМ !!!!!!!!!!!!!!!

Для тех кто PHP РАЗАРХИВИРОВАЛ !!!!!! то есть НЕ устанавливал
--------------------------------------------------------------
===Правка файла httpd.conf ===
1) Для загрузки модуля mod_rewrite найдите и раскомментируйте (уберите в начале строки символ "#") данную строку:
LoadModule rewrite_module modules/mod_rewrite.so
2) Для загрузки PHP интерпретатора, в конец блока загрузки модулей необходимо добавить строку:
LoadModule php5_module "C:/Server/PHP/php5apache2_2.dll"
3)Определите каталог содержащий конфигурационный файл PHP, добавив ниже следующую строку:
PHPIniDir "C:/Server/PHP"
=================================================================
P.S. ЧЕБОКСАРЫ ЭТО САМЫЙ ЕБАНУТЫЙ ГОРОД
10. mag913 / 10 сентября 2008, 23:04:03

Привет! Помогите, пожалуйста, сделала все как написанно, но при загрузки Apache выдает ошибку: AllowOverride not allowedhere. Что делать? Пишите на почту если не сложно, заранее благодарна.(mag913@mail.ru)


11. Ap|_|_| / 25 августа 2008, 15:18:57

Делаю всё как показано здесь, не работает, там что то про адресы в каталоги, помогите вот ася : 409-565-176


12. aristov / 07 августа 2008, 17:17:10

стоит заметить, что подключение виртуальных хостов может происходить в файле httpd-vhosts.conf

чтобы его подключить нужно раскомментировать соответствующую строку
Include conf/extra/httpd-vhosts.conf
13. KreNos / 24 июля 2008, 01:26:04

что самое интересное когда файл закидываю в localhost/www все нормально вижу свое творение а ввод hhtp://neebet и http://mysite приводит к тому что выхожу на сайты http://www.neebet.com и http://www.mysite.com че делать не знаю помогите плиз


14. KreNos / 24 июля 2008, 01:15:07

не могу понять в чем причина все делал по инструкции, Apache ни с чем ни ругался но при попытки ввести в браузере http://neebet ниче не выдает мол типо выдает что я неправильно ввел либо такой страницы нету....

что делать даже не знаю подскажите плиз или киньте свой "httpd.conf" мне на мыло(nekros_2006@mail.ru) буду очень признателен за помощь
15. vudvard / 30 июня 2008, 17:45:31

Все разобрался, мне помогла в этом программа Денвер с этим делом


16. vudvard / 30 апреля 2008, 13:16:09

Помогите. Долаю все так как написано в инструкции, а при запуске сервера выдает The requested operation has failed вот такое сообщение об ошибке.

Кому не составить сложности помогите, вот номере аси 227752856 или пишите по адресу vudvard@mail.ru
17. NetWorm / 25 января 2008, 19:58:02

помогите пожалуйста!!! ошибка: The requested operation has failed.

в чем дело не знаю Аpache 2.0 php 4.4 Сделал все по описанию, ничего не работает... если кто знает в чем проблема пишите аська: 139369355
18. NANA_G / 22 декабря 2007, 23:11:03

При запуске тестирования Apache выдаёт такую ошибку 

"syntax error on line 286"
Не могу понять что это означает? Если кто знает. Напишите пожалуйсто.
19. NANA_G / 22 декабря 2007, 21:31:50

Добрый день. Спасибо за статью Настройки Apache.Я вроде сделала все так как описано, но выдаёт ошибку. Не могу понять в чем моя ошибка. Если у кого все получилось, пошлите пожалуйсто файл "httpd.conf" (gnf2005@gmail.com). Заранее спасибо

20. gutt / 08 ноября 2007, 23:09:06

Люди, киньте мне на мыло (gutt@hotmail.ru) свой httpd.conf у кого всё получилось по инструкции.. Никак не могу настроить CGI. :(( Зараннее благодарен..


21. Arhangel1 / 17 сентября 2007, 12:43:17

Люди подскажите что я не так сделал в настройках apache ощибок вроде не выдает а запускатся не хочет Когда пытаюсь подключить нажимаю на старт Выдает вот что The requested operation has failed


22. delfin2007 / 02 августа 2007, 15:59:05

помогите настроить апач у мя выдает ошыбку 1

или напишите мне в асю 490450966
плиз помогите
23. chulabre / 11 апреля 2007, 12:40:02

(OS 10049)╥Ёхсєхь√щ рфЁхё фы ётюхую ъюэЄхъёЄр эхтхЁхэ. : make_sock: could not

bind to address 12.34.56.78:80
no listening sockets available, shutting down
Unable to open logs
Note the errors or messages above, and press the <ESC> key to exit. 26...
Apache призапуске выдает вот это сообщение.... я чест даже не представляю что надо сделать чтоб исправить, инструкции соблюдал все чательно.... помогите плиз....!!
спасибо
24. SteppeWolf / 24 января 2007, 20:14:08

Большое спасибо за статью, таким как я она оч. пригодится

4Fobus:Я тоже на этой фигне попался,там не строчку менять надо, да директиву полностью
25. FobuS / 29 декабря 2006, 18:06:06

Незнаю что делать помогите пожалуйста!!

После того как выстовил
<Directory "C:/Sites">
Options Indexes Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
......
Когда загружаю Апач выдает ошибку "AllowOverride not Allowed Here"
Syntax Errore on line 308" помогите исправить
26. ProXi / 27 сентября 2006, 01:00:00

Сделал все в точности по представленной инструкции.

Закинул в папку localhost/www Index.html. Потом запустил броузер и ввел в строку адрес "localhost", "localhost:80(бред, но я не знал что делать, дошло до крайностей)", "127.0.0.1". Что только не пробовал, страничка так и не открылась.
Ввожу адрес -> нажимаю ввод -> "ожидание ответа от localhost"
Посмотрите на мои настройки, указаны ниже:
http://shareua.com/files/93b493/httpd.conf.html
27. Homodrill / 11 августа 2006, 00:06:40

ScriptAlias /cgi/ "D:/sites/home/localhost/cgi/"

вот с этой строчечкой проблемма. чтоб сервак пахал приходиться ее комментировать. Причем как на версии "2.0.х", так и на "2.2.х".
Она вобще критична - эта строчечка?? ато на /cgi-bin/ он не ругается... %)) Напишите мне в личные если не трудно ... спасибо за раннее
28. Тиша / 26 апреля 2006, 15:36:32

Действительно, чета я тоже не пойму, куда вставлять код? 

<blockquote><small>Цитата:<hr size=1>
AddType application/x-httpd-php php phtml
ScriptAlias /_php_/ "C:/Server/PHP/"
Action application/x-httpd-php "/_php_/php.exe [/quote]
Адрес, по-иоуму неверный ...
29. Антон / 11 апреля 2006, 22:57:41

Так где вставлять этот кусок:

AddType application/x-httpd-php php phtml
ScriptAlias /_php_/ "C:/Server/PHP/"
Action application/x-httpd-php "/_php_/php.exe
По тому, что я его вставляю произвольно и апач вообще ничего не загружает!
30. apata / 10 апреля 2006, 14:42:47

Здравствуйте, не знаю где еще спросить, поэтому пишу сюда :(

когда в httpd.conf вставляю блок
<Directory "C:/Sites">
Options Indexes Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
apache почему то-не грузится, в чем может быть причина, подмагните, пож!
31. николай / 07 апреля 2006, 05:42:37

Добрый день!

Некорректно работает Apache.
Например, http://localhost/ффффф/оооооо/?id=67
не загружает страницу.
Спасибо!
32. Digerman / 03 апреля 2006, 21:39:31

2 Enforcer2k Огромное спасибо, а то я весь нет перерыл в поисках причин ошибки... вызванной указанием php.exe вместо php-cgi.exe. Дома я интуитивно вписал именно php-cgi, а на рабрте все по книжке писал Ужос. Еще раз спа...


33. Игорь / 30 января 2006, 20:19:20

это всё хорошо, но это стандартные настройки, анельзя ли настройки по каждому пункту файла конфигурации с примерами, что и как ставить и какой результат

спасибо
34. Enforcer2K / 23 декабря 2005, 12:30:20

Грамотно, мне понравилось. Особенно про neebet =). Только неплохо было бы уточнить, что для PHP 5 нужно указывать не php.exe, а php-cgi.exe, а то нифига работать не будет.



