Понедельник, 21.09.2026, 08:20
Приветствую Вас Гость | RSS
Главная | FAQ по Web серверу Apache - SAWEB :: Форум | Регистрация | Вход
Меню сайта
Наш опрос
У Вас есть свой сайт?
Всего ответов: 25
Форма входа
Счетчик материалов
Форум: 22/53
Галерея: 451
Файлы: 52
Статей: 29
Друзья сайта
[ Новые сообщения · Участники · Поиск · RSS ]
  • Страница 1 из 1
  • 1
FAQ по Web серверу Apache
Крестный  отецДата: Вторник, 09.12.2008, 01:37 | Сообщение # 1
Добрый Админ
Группа: Администраторы
Сообщений: 8
Награды: 0
Репутация: 0
Статус: Offline
Q: Где взять информацию по настройке Apache.
A: Во-первых – на сайте проекта Apache http://httpd.apache.org. Во-вторых Apache посвящено очень много печатной литературы. Я могу порекомендовать книгу издательства SAMS Publishing ”Apache. Administrator’s Handbook”, изданную на русском языке издательством Diasoft.

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 могут выглядеть так:

Code
<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 адреса. Файл конфигурации будет выглядеть следующим образом:

Code
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 будет выглядеть так:

Code
<VirtualHost 192.168.0.1:8888>
     ServerName    vhost.net.local
     DocumentRoot    /usr/local/apache/vhosts/vhost8888
</VirtualHost>

Кроме того надо добавить директиву Port (либо Listen) для любого порта, который будет использоваться для в/х. В нашем случае

Code
Port 8888

Один из вариантов использования в/х на портах – при настройке определенной части сайта через SSL.

Q: Как мне настроить выполнение CGI сценариев в Apache
A: Включение исполнения CGI сценариев в определенном каталоге осуществляется опцией +ExecCGI. Например:

Code
<Directory /usr/local/apache/htdocs/dyncontent>
     Options +ExecCGI
</Directory>

Второй вариант:

Code
<Directory /usr/local/apache/htdocs/dyncontent>
     Options +ExecCGI
     SetHandler cgi-script
</Directory>

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

И наконец последний вариант – использование директивы ScriptAlias:

Code

ScriptAlias     /cgi-bin/        /usr/local/apache/cgi-bin/

Этот вариант аналогичен предыдущему. Обычно применяется только он, а первый и второй – используються, чтобы разрешить выполнение CGI за пределами каталога указанного в ScriptAlias.

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

1. неправильные права доступа к файлу. Напомню, что владелец сценария и пользователь, который его запускает ( в данном случае – пользователь от имени которого работает Apache) – это разные вещи. 100% способ убедится, что права правильно установлены – дать права на выполнение всем:

Code
chmod a+x script.pl

2. ошибочный синтаксис. Попробуйте запустить скрипт из командной строки. Для Perl используйте директивы use warnings, use strict.

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

Q: А можно пример работающего CGI скрипта? Чтобы проверить мои настройки?
A: Пожалуйста.
На Perl

Code
#!/usr/bin/perl
      
     use strict;
     use warnings;
      
print ("Content-type: text/html\n\n");
print ("<html><body>Hello, World!</body></html>");
 
  • Страница 1 из 1
  • 1
Поиск:
Хостинг от uCozCopyright script.ucoz.de © 2026