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.
Оставить комментарий
Комментарии
ServerRoot "C:/Server/Apache/Apache2"
(устанавливаю Апаче 2.2) - но зато всё прошло удачно с:
ServerRoot "C:/Server/Apache"
sinsir@inbox.ru
если есть добрые неленивые люди скинте плз конфиг
not listning sockets aviable, shuting down. Что делать? Пишите на почту если не сложно, заранее благодарен.и если есть рабочий и правильно сконфигурированный httpd.conf, дайте плиииз!(demon_no_fear@mail.ru)
я так понимаю apache не видит открытый порт или не может связаться с сокетом
вопрос как с этим бороться??
Для тех кто 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. ЧЕБОКСАРЫ ЭТО САМЫЙ ЕБАНУТЫЙ ГОРОД
чтобы его подключить нужно раскомментировать соответствующую строку
Include conf/extra/httpd-vhosts.conf
что делать даже не знаю подскажите плиз или киньте свой "httpd.conf" мне на мыло(nekros_2006@mail.ru) буду очень признателен за помощь
Кому не составить сложности помогите, вот номере аси 227752856 или пишите по адресу vudvard@mail.ru
в чем дело не знаю Аpache 2.0 php 4.4 Сделал все по описанию, ничего не работает... если кто знает в чем проблема пишите аська: 139369355
"syntax error on line 286"
Не могу понять что это означает? Если кто знает. Напишите пожалуйсто.
или напишите мне в асю 490450966
плиз помогите
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 призапуске выдает вот это сообщение.... я чест даже не представляю что надо сделать чтоб исправить, инструкции соблюдал все чательно.... помогите плиз....!!
спасибо
4Fobus:Я тоже на этой фигне попался,там не строчку менять надо, да директиву полностью
После того как выстовил
<Directory "C:/Sites">
Options Indexes Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
......
Когда загружаю Апач выдает ошибку "AllowOverride not Allowed Here"
Syntax Errore on line 308" помогите исправить
Закинул в папку localhost/www Index.html. Потом запустил броузер и ввел в строку адрес "localhost", "localhost:80(бред, но я не знал что делать, дошло до крайностей)", "127.0.0.1". Что только не пробовал, страничка так и не открылась.
Ввожу адрес -> нажимаю ввод -> "ожидание ответа от localhost"
Посмотрите на мои настройки, указаны ниже:
http://shareua.com/files/93b493/httpd.conf.html
вот с этой строчечкой проблемма. чтоб сервак пахал приходиться ее комментировать. Причем как на версии "2.0.х", так и на "2.2.х".
Она вобще критична - эта строчечка?? ато на /cgi-bin/ он не ругается... %)) Напишите мне в личные если не трудно ... спасибо за раннее
<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]
Адрес, по-иоуму неверный ...
AddType application/x-httpd-php php phtml
ScriptAlias /_php_/ "C:/Server/PHP/"
Action application/x-httpd-php "/_php_/php.exe
По тому, что я его вставляю произвольно и апач вообще ничего не загружает!
когда в httpd.conf вставляю блок
<Directory "C:/Sites">
Options Indexes Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
apache почему то-не грузится, в чем может быть причина, подмагните, пож!
Некорректно работает Apache.
Например, http://localhost/ффффф/оооооо/?id=67
не загружает страницу.
Спасибо!
спасибо