Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

FAQ по Web серверу Apache

2
31 марта 2006 года
squirL
5.6K / / 13.08.2003
[COLOR=Red]ПОЖАЛУЙСТА! НЕ ПОСТИТЕ В ЭТОТ ТОПИК СВОИ ВОПРОСЫ – ПИШИТЕ В ПРИВАТ, ЛИБО СОЗДАВАЙТЕ ОТДЕЛЬНЫЕ ТЕМЫ. НАИБОЛЕЕ ХАРАКТЕРНЫЕ ВОПРОСЫ БУДУТ ЗАНЕСЕНЫ В FAQ.[/COLOR]

Q: Где взять информацию по настройке Apache.
A: Во-первых – на сайте проекта Apache http://httpd.apache.org. Во-вторых Apache посвящено очень много печатной литературы. Я могу порекомендовать книгу издательства SAMS Publishing ”Apache. Administrator’s Handbook”, изданную на русском языке издательством Diasoft.

кроме того, мной написан HOW-TO, специально для web девелоперов, использующих ОС Windows

http://www.codenet.ru/webmast/apache/AMP/

Q: Что такое виртуальный хостинг
A: Это функция, позволяющая разместить на одном сервере Apache сразу несколько сайтов. Пользователь, запрашивая сайт и не подозревает, где физически находится нужный ресурс. Перенаправление осуществляет Web сервер прозрачно для пользователя Существует три вида виртуальных хостов: основанные на IP адресах, основанные на именах, основанные на портах.

Q: Как сделать виртуальный хостинг по IP
A: При использовании виртуального хостинга по IP каждое имя сайта, расположенного на сервере представлено своим IP адресом. Это могут быть как различные физические интерфейсы, а соответствующие им адреса,так и виртуальные интерфейсы. Напомню, что все современные операционные системы позволяют назначать одному физическому интерфейсу более одного IP адреса. Кроме установки на сервере нескольких IP адресов нужно также корректно настроить преобразование имен. Тут нужно сделать небольшое лирическое отступление.
Читая различные топики на форуме, я сделал вывод, что многие начинающие Web мастера (и не только) не различают NetBIOS и DNS имена хостов, а также не представляют механизмов разрешения этих имен в IP адреса. Подробно рассматривать этот вопрос я не буду, вкратце скажу следующее – имена с которыми работает Apache – это DNS имена. Для корректной работы сервера имена хостов, с которыми он будет работать должны быть занесены в DNS. Если вы работаете с локальной машиной – можете использовать файл hosts. В нем также прописывается соответствие IP адресов и символических имен.
Итак для настройки виртуального хостинга используются секции VirtualHost, в которых собраны директивы конфигурации для конкретного хоста. Для IP-based виртуального хостинга, при наличии двух IP адресов, секции VirtualHost могут выглядеть так:
Код:
<VirtualHost 192.168.0.1>
    ServerName    vhost1.net.local
    DocumentRoot    /usr/local/apache/vhosts/vhost1
    ErrorLog    logs/vhost1_error.log
    AccessLog    logs/vhost1_access.log
</VirtualHost>

<VirtualHost 192.168.1.1>
    ServerName    vhost2.net.local
    DocumentRoot    /usr/local/apache/vhosts/vhost2
    ErrorLog    logs/vhost2_error.log
    AccessLog    logs/vhost2_access.log
</VirtualHost>
Для тестирования обратитесь к серверу по адресу http://192.168.0.1. Если сервер по запросу разных адресов выдает разные сайты, значит настроено все правильно. Теперь вводите имена, соответствующие IP адресам ваших виртуальных хостов. Если что то не работает – проверяйте настройки вашего DNS сервера.


Q: Как сделать виртуальный хостинг по именам
A: Конфигурирование виртуального хостинга основанного на именах практически ничем не отличается от в/х основанного на IP адресах. Разница в том – что вам не требуется больше одного IP адреса. Файл конфигурации будет выглядеть следующим образом:
Код:
NameVirtualHost    192.168.0.1

<VirtualHost 192.168.0.1>
    ServerName    vhost1.net.local
    DocumentRoot    /usr/local/apache/vhosts/vhost1
    ErrorLog    logs/vhost1_error.log
    AccessLog    logs/vhost1_access.log
</VirtualHost>

<VirtualHost 192.168.0.1>
    ServerName    vhost2.net.local
    DocumentRoot    /usr/local/apache/vhosts/vhost2
    ErrorLog    logs/vhost2_error.log
    AccessLog    logs/vhost2_access.log
</VirtualHost>
Как видите – меняется заголовок директивы VirtualHost – теперь у нас используется один IP адрес. Также – добавилась директива NameVirtualHost, которая указывает Apache, что адрес 192.168.0.1 используется для name-based в/х. Директива ServerName указывает, какой виртуальный хост отдавать клиенту, имя хоста передается браузером в заголовке Host. Эта возможность появилась только в протоколе HTTP 1.1, HTTP 1.0 не поддерживает виртуальные хосты основанные на именах. Так что если на ваш сайт хотят посетители с совсем древними браузерами – не используйте этот вид в/х :);

Q: Как сделать виртуальный хостинг по портам
A: Такой вид в/х используется редко. При в/х по портам нужный пользователю контент определяется по номеру порта, на который он присоединился. Директива VirtualHost будет выглядеть так:
 
Код:
<VirtualHost 192.168.0.1:8888>
    ServerName    vhost.net.local
    DocumentRoot    /usr/local/apache/vhosts/vhost8888
</VirtualHost>
Кроме того надо добавить директиву Port (либо Listen) для любого порта, который будет использоваться для в/х. В нашем случае
 
Код:
Port 8888
Один из вариантов использования в/х на портах – при настройке определенной части сайта через SSL.


Q: Как мне настроить выполнение CGI сценариев в Apache
A: Включение исполнения CGI сценариев в определенном каталоге осуществляется опцией +ExecCGI. Например:
 
Код:
<Directory /usr/local/apache/htdocs/dyncontent>
    Options +ExecCGI
</Directory>
Таким образом в каталоге /usr/local/apache/htdocs/dyncontent мы включили разрешение CGI сценариев. Теперь мы должны «обьяснить» Apache, что файлы с определенным расширением это CGI скрипты. Делается это при помощи директивы AddHandler, например:
 
Код:
<Directory /usr/local/apache/htdocs/dyncontent>
    Options +ExecCGI
    AddHandler cgi-script .pl .cgi .exe
</Directory>
Второй вариант:
 
Код:
<Directory /usr/local/apache/htdocs/dyncontent>
    Options +ExecCGI
    SetHandler cgi-script
</Directory>
В этом случае – все файлы в каталоге будут обрабатываться как CGI сценарии, что избавляет нас от необходимости давать файлам определенные расширения.

И наконец последний вариант – использование директивы ScriptAlias:
 
Код:
ScriptAlias     /cgi-bin/        /usr/local/apache/cgi-bin/
Этот вариант аналогичен предыдущему. Обычно применяется только он, а первый и второй – используються, чтобы разрешить выполнение CGI за пределами каталога указанного в ScriptAlias.

Q: CGI скрипт не работает!
A: Смотрим в логи. Наиболее распространненные ошибки следующие:

1. неправильные права доступа к файлу. Напомню, что владелец сценария и пользователь, который его запускает ( в данном случае – пользователь от имени которого работает Apache) – это разные вещи. 100% способ убедится, что права правильно установлены – дать права на выполнение всем:
 
Код:
chmod a+x script.pl
2. ошибочный синтаксис. Попробуйте запустить скрипт из командной строки. Для Perl используйте директивы use warnings, use strict.

3. Распространеная ошибка, на которую я сам попался недавно на хостинге ho.com.ua – это загрузка на сервер, работающий под управлением ОС семейства UNIX или Linux скрипта написанного в каком либо редакторе под Windows. Windows и UNIX по разному трактуют конец строки, поэтому интерпретатор не может корректно обработать данный скрипт.

Q: А можно пример работающего CGI скрипта? Чтобы проверить мои настройки?
A: Пожалуйста.
На Perl
 
Код:
#!/usr/bin/perl
   
    use strict;
    use warnings;
   
print ("Content-type: text/html\n\n");
print ("<html><body>Hello, World!</body></html>");
На С
 
Код:
#include <stdio.h>

int main()
{    
printf("Content-type: text/html\n\n");
printf("<html><body>Hello, World!</body></html>");

return 0;
}
2
04 апреля 2006 года
squirL
5.6K / / 13.08.2003
Q: как включить поддержку SSI на моем сервере?
A: для начала нужно включить поддержку Includes:
 
Код:
Options Includes

это делается либо в httpd.conf либо в .htaccess для конкретного каталога. Эту опцию обеспечивает стандартный модулю mod_includes, который ставится по умолчанию. Однаком проверить его наличие не мешает.
далее возможно несколько способов:
  • указываем серверу, что все файлы с определенным расширением должны быть проанализированы на предмет SSI, через директиву AddHandler:
     
    Код:
    AddType text/html .shtml
       AddHandler server-parsed .shtml

    в Apache 2.x нужно добавить следующую запись:
     
    Код:
    <FilesMatch "\.shtml(\..+)?$)">
          SetOutputFilter INCLUDES
       </FilesMatch>

    недостаток этого способа - в том, что для каждого файла, где присутствует SSI нужно менять расширение.
  • Альтернативный способ - включение директивы XBitHack:
     
    Код:
    XBitHack on

    эта директива указывает на необходимость анализа всех файлов с установленным битом исполнения на наличие SSI. Насколько мне известно эта функция не поддерживается в Windows.
2
04 апреля 2006 года
squirL
5.6K / / 13.08.2003
Q: У меня хостится куча народу и я хочу чтобы скрипт выполнялся с правами владельца сайта!
A: Для начала - у вас должен быть установлен модуль suexec (ключ --enable_suexec при установке Apache).
затем настраиваем виртуальный хост:
 
Код:
<VirtualHost 192.168.0.1>
      ServerName    vhost1.net.local
      DocumentRoot  /usr/local/apache/vhosts/vhost1
      ErrorLog  logs/vhost1_error.log
      AccessLog logs/vhost1_access.log
      ScriptAlias     /cgi-bin/   /usr/local/apache/vhosts/vhost1/cgi-bim/
      User   vhost1_user
      Group  vhost1_group
</VirtualHost>

если что-то не работает, проверям:
  • принадлежит ли каталог со сценарием пользователю и группе, которые заданы директивами User/Group
  • принадлежит ли сам скрипт указанным пользователю и группе?
  • право на запись должно стоять только для владельца!
  • каталог со скриптом должен быть доступен на запись только владельцу!
12
14 мая 2006 года
alekciy
3.0K / / 13.12.2005
Странно... куда это мой прошлый пост делся?! Ладно, дублирую.

Q: После установки SP2 для Windows XP перестали работать виртуальных хосты (Virtual Host).

A: Необходимо в безопасном режиме (safe mode) установить обновление KB884020.
2
27 мая 2006 года
squirL
5.6K / / 13.08.2003
Q:
я устанавливаю Apache 2.2, подключаю модуль PHP, все делаю как в документации. при попытке запуска Apache получаю следующую ошибку в Event Log:
Source: Apache Service
Event ID: 3299
Цитата:

The Apache service named reported the following error:
>>> httpd.exe: Syntax error on line 115 of D:/www/Apache/conf/httpd.conf: Cannot load D:/www/php/php5apache2.dll into server: \xcd\xe5 \xed\xe0\xe9\xe4\xe5\xed \xf3\xea\xe0\xe7\xe0\xed\xed\xfb\xe9 \xec\xee\xe4\xf3\xeb\xfc. .


A:
стандартные модули от php.net php4apache2.dll и php5apache2.dll не работают с Apache 2.2. для Apache 2.2 есть специальный модуль, который можно найти на сайте проекта "Apache 2 on Windows Support"
http://www.apachelounge.com/download/

19K
09 июня 2006 года
Serg13
1 / / 09.06.2006
[QUOTE=squirL]Q:
я устанавливаю Apache 2.2, подключаю модуль PHP, все делаю как в документации. при попытке запуска Apache получаю следующую ошибку в Event Log:
Source: Apache Service
Event ID: 3299

A:
стандартные модули от php.net php4apache2.dll и php5apache2.dll не работают с Apache 2.2. для Apache 2.2 есть специальный модуль, который можно найти на сайте проекта "Apache 2 on Windows Support"
http://www.apachelounge.com/download/[/QUOTE]

или загрузить последний снапшот http://snaps.php.net/
там есть рабочий модуль php5apache2_2.dll
У меня с этим модулем все заработало
2
26 апреля 2008 года
squirL
5.6K / / 13.08.2003
Q:
можно ли средствами Apache справится с ошибкой, которую выдает JavaScript при попытке послать запрос по URI из другого домена
Цитата:
Error: uncaught exception: Permission denied to call method
XMLHttpRequest.open


A:
описанная ошибка возникает, если вы пытаетесь через XMLHttpRequest получить данные из "другого домена". т. е. - если URL в XMLHttpRequest.open у вас задается в виде http:// URL[: port]. По соображениям безопасности такие запросы блокируются. Что делать?
Первый вариант - использовать некоторую прослойку, например CGI скрипт, к которому будет выполняться обращение в пределах домена, а он, в свою очередь - будет запрашивать нужный ресурс и отдавать данные.

Однако, проблему можно решить средствами Apache. для этого нужно использовать mod_proxy.
Пример.
Ajax запросы обращаются к web сервису, который работает под управлением JBoss на порту 8080, по адресу: http://example.domain.com:8080/cat/services

XMLHttpRequest.open обрабатывать такой URI отказывается. Прописываем в конфиг Apache следующие строки:

Цитата:

ProxyRequests Off

ProxyPass /cat/services http://example.domain.com:8080/cat/services


и делаем apachectl graceful, либо рестартуем Apache.
В результате, все запросы по адресу http://example.domain.com/cat/services Apache будет перенаправлять на http://example.domain.com:8080/cat/services, что позволяет нам использовать в XMLHttpRequest.open URI из локального домена - просто /cat/services

53K
11 ноября 2009 года
plenlytep
10 / / 29.10.2009
есть такие проги с помощью которых можно менять скины веб-магазинам на php движках?... всмысле если я хочу переделать структуру магаза через что это делаеться не вручную же есть наверно какие то проги?
55K
19 ноября 2009 года
zalei
1 / / 19.11.2009
Как настроить apache, для того, чтобы в адресной строке браузера был различим регистр символов?

На хостингах по умолчанию чувствительность к регистру символов включена. Дома я поставил apache+php - нет чувствительности к регистру (закачиваю рисунки на платный хостинг - не отображаются, дома все хорошо...)
57K
26 января 2010 года
PsychoScum
3 / / 26.01.2010
Если переставлять систему, то лучше поставить WinXP SP2 Corporate хотя это дело вкуса. Установщик сам удалит папку Windows
При переустановки системы файлы веб-сервера остаются неизменными если конечно не форматировать диск. На новой системе откроете файлы запуска web-сервера.
28K
10 апреля 2010 года
Demon1X
4 / / 28.04.2007
http://www.codenet.ru/webmast/apache/AMP/ читал, устанавливал и настраивал все по этой теме. Установил appache php и mysql, appache настроил на работу с php. Но вот с настройкой PHP на работу с MySQL возникли проблемы. Там описывается 3 шага с первыми двумя справился, нашел их в php.ini и прописал, а вот с третьим непонятка?!
Цитата:
И третье - прописываем в системной переменной окружения PATH путь к каталогу, в который устанавливался PHP. У меня это, напомню - D:\www\php. Это нужно для того, чтобы PHP подхватил библиотеку libmysql.dll. Обращаю ваше внимание - это самая распространенная ошибка. Тут вам поможет наш старый знакомый - тестовый скрипт, который использует функцию phpinfo. Вызовите его и посмотрите секцию Apache Environment, переменную PATH. В этой переменной ОБЯЗАТЕЛЬНО должен присутствовать каталог, в котором лежит libmysql.dll.


не совсем понял где прописывать PATH? Tестовый скрипт phpinfo выдает

Цитата:
PATH C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\ATI Technologies\ATI Control Panel;C:\Program Files\ATI Technologies\ATI.ACE\;C:\mysql\bin


Apache установлен в D:\www\Apache2
PHP D:\www\php
MySQL в C:\mysql (пробывал тоже на диск Д ставить там какие то траблы выскакивали то с кодировкой то с путями, установил на С все нормально работает(токо закончил курс с интуита введения в mysql, вручную создавал\редактировал БД\таблицы))

2
10 апреля 2010 года
squirL
5.6K / / 13.08.2003
Цитата: Demon1X

не совсем понял где прописывать PATH?


я, честно говоря, думал, что это азы компьютерной грамотности, а поэтому разъяснять этот пункт не надо...

http://www.oszone.net/6157

28K
10 апреля 2010 года
Demon1X
4 / / 28.04.2007
Спасибо за ссылку - разобрался, настроил тестовый скрипт нормально выводит время.
Честно говоря до этого мне никогда и не приходилось дописывать в PATH, что либо,
так как прежде с этим не сталкивался. Привык, что в виндовс всё по дефолту в пару кликов
мыши устанавливается.

Просто php начил изучать по книге PHP5 - Дмитрий Котеров, Алексей Костарев.
Там они описывали как устанавливать отдельно апач, мускул и пхп, но как то замороченно с созданием
диска Z и пр. Попробывал установить как они писали не получилось (какие то ошибки апач выводил, хотя
все делал в точь в точь по их инструкций),тогда не стал парится и установил денвер, который они сами
же в этой книге и рекомендовали. Обходился им 3месяца, но созрела потребность научиться устанавливать
и настраивать все самому не пользуясь готовыми наборами. Из всех статеек, что в нете нарыскал - эта
показалась наиболее полной и обстоятельной. Хотя тоже возникли три проблемы по ходу исполнения:
первая была с настроикой php на работу с appache, делал все как описано в статье но тот упорно
отказывался работать двот суток корпел над статьей этой и др., перерыл половину форумов, пытал гугл и только потом
выяснил, что проблема была в несоответствие версий апач и пхп, о чем собственно указывалось в начале
статьи, но я не предал этому значения, за что и поплатился своим временем и нервами.
вторая проблема была с подключением мускул к пхп которую только, что решил.

Осталась только вот третья проблема которую хотелось бы решить с настроикой виртуальных хостов.
Я подозреваю, что проблема у меня с этим -
Цитата:
Кроме установки на сервере нескольких IP адресов нужно также
корректно настроить преобразование имен через DNS либо файл %SystemRoot%\system32\drivers\etc\hosts.


Попытался сначала настроить на несколько IP и прописал в C:\WINDOWS\system32\drivers\etc\hosts
новую строке для сайта с названием test вот содержимое hosts

 
Код:
127.0.0.1       localhost
127.0.0.2       test


после прописываю в конце файла httpd.conf
 
Код:
<VirtualHost 127.0.0.2>
   ServerName   test
   DocumentRoot   D:/www/Apache2/vhosts/test
   ErrorLog   logs/test_error.log
   AccessLog   logs/test_access.log
</VirtualHost>

рестартую апач, тот отказывается запускаться вываливая сообщение ошибки "The rquested operation has failed!"

Когда попытался сделать в\х по именам на одном ip
то дописал в файл hosts

 
Код:
127.0.0.1  site


а в httpd.conf следующее

 
Код:
NameVirtualHost   127.0.0.1
<VirtualHost 127.0.0.1>
   ServerName   site
   DocumentRoot   D:/www/Apache2/vhosts/site
   ErrorLog   logs/site_error.log
   AccessLog   logs/site_access.log
</VirtualHost>

то так же апач отказывается запускаться и выводит тоже сообщение ошибки.

Что я делаю не так? и что можете порекомендовать почитать по теме -
Цитата:
Кроме установки на сервере нескольких IP адресов нужно также
корректно настроить преобразование имен через DNS

28K
29 апреля 2010 года
Demon1X
4 / / 28.04.2007
Все разобрался благодаря этой теме http://www.codenet.ru/webmast/apache/Apache-WindowsNT/apache_config.php

оказывается в строчке AccessLog надо было дописать common вообщем вот так должно было выглядить
 
Код:
AccessLog   logs/site_access.log common
13
29 апреля 2010 года
RussianSpy
3.0K / / 04.07.2006
Почему беседы и обсуждения надо вести в разделе FAQ??? Я может чего-то не понимаю, но вроде как он сделан не для обсуждений.
62K
06 июля 2010 года
lehua768
2 / / 06.07.2010
Спасибо за ссылку - разобрался, настроил тестовый скрипт нормально выводит время.Честно говоря до этого мне никогда и не приходилось дописывать в PATH, что либо,так как прежде с этим не сталкивался. Привык, что в виндовс всё по дефолту в пару кликовмыши устанавливается. Просто php начил изучать по книге PHP5 - Дмитрий Котеров, Алексей Костарев.Там они описывали как устанавливать отдельно апач, мускул и пхп, но как то замороченно с созданием
диска Z и пр. Попробывал установить как они писали не получилось (какие то ошибки апач выводил, хотя
все делал в точь в точь по их инструкций),тогда не стал парится и установил денвер, который они сами же в этой книге и рекомендовали. Обходился им 3месяца, но созрела потребность научиться устанавливать
и настраивать все самому не пользуясь готовыми наборами. Из всех статеек, что в нете нарыскал - этапоказалась наиболее полной и обстоятельной. Хотя тоже возникли три проблемы по ходу исполнения:
первая была с настроикой php на работу с appache, делал все как описано в статье но тот упорно отказывался работать двот суток корпел над статьей этой и др., перерыл половину форумов, пытал гугл и только потомвыяснил, что проблема была в несоответствие версий апач и пхп, о чем собственно указывалось в началестатьи, но я не предал этому значения, за что и поплатился своим временем и нервами.вторая проблема была с подключением мускул к пхп которую только, что решил.
62K
29 июля 2010 года
glonnawancy
5 / / 14.07.2010
хм... надо будет подумать над намеком...
а так - там желающик было выше много, потом как-то не густо стало, может это - они все стали крутыми веб-девелоперами и со смертными обсчаца не хотят?
69K
04 марта 2011 года
FoNeZly
1 / / 04.03.2011
Не открывает .php файлы
The requested URL /_php_/php.exe/install.php was not found on this server.
В httpd присутствует:
AddType application/x-httpd-php php phtml
Action application/x-httpd-php "/_php_/php.exe"
70K
30 июня 2011 года
prikolistik
4 / / 30.06.2011
У меня проблема: поставил Apache 2 на windows 7 x64, сделал все,как пишут в сети. В трее появился значок, который сообщает об успешном подключении. Но на localhost никак не откликается. Скайп не на 80 порте (проверил:cmd- "netstat -abo").Что не так?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог