Главная :: Linux/Unix :: GNU/openSUSE :: Установка локального HTTP сервера
Ваши руки выполнили недопустимую операцию и будут ампутированы

Установка локального HTTP сервера

В данной статье мы установим локальный HTTP-сервер Apache, настроим виртуальные хосты и поддержку человеко-понятных ссылок.

Простой путь

Все делаем под суперпользователем. Все файлы, которые правим вручную предварительно копируем под другим именем (в случае, если все будет плохо, сможем восстановить исходные настройки).

Устанавливаем необходимые пакеты через yast. Выбираем фильтр Шаблоны и в подсекции Server Functions выбираем Web and LAMP Server. В результате мы получаем в yast с Сетевых службах новый пункт - Сервер HTTP. Туда и идем.

Включаем HTTP сервер в первой закладке. Настраиваем основной узел (он на самом деле уже настроен, просто проверяем):

DocumentRoot "/srv/www/htdocs"
Directory "/srv/www/htdocs"
Alias /icons/ "/usr/share/apache2/icons/"
Directory "/usr/share/apache2/icons"
ScriptAlias /cgi-bin/ "/srv/www/cgi-bin/"
Include /etc/apache2/conf.d/*.conf
Include /etc/apache2/conf.d/apache2-manual?conf
Имя сервера localhost
NameVirtualHost 127.0.0.1

Последнего пункта нет, он появится автоматически позже. Пока жмем Завершить.

Теперь настраиваем виртуальные хосты. Один хост уже есть - это localhost. В браузере набираем localhost и смотрим результат. Если вы видите "It works!", значит основной хост работает. Замечательно.

Добавляем виртуальные хосты. Виртуальные, значит, что они все будут сидеть на одном IP адресе (127.0.0.1), но будут различаться по имени (localhost, site1, site2).

Возвращаемся в Сервер HTTP. Идем на последнюю закладку (Узлы) и добавляем новые хосты. Первый хост должен совпадать с основным (т.к. иначе основной хост перезапишется одним из виртуальных). Создаем виртуальный localhost:

Дополнительные настройки Directory. Здесь вы можете шелкнуть по пункту Directory и настроить опции. Для ЧПУ нужна опция AllowOverride All (по этому у меня эта функция через yast и не заработала, т.к. по умолчанию он пишет AllowOverride None). С учетом этого момента все должно спокойно настраивать через yast. Но, как показывает опыт, быстрее накидать по быстрому настройки в yast`е и доколотить/поправить вручную. Кому как нравиться.

Ставим переключатель в положение Определить сервер запросов по HTTP-заголовкам. И имя сервера - localhost.

Далее добавляем столько виртуальных хостов, сколько вам нужно. Правда вы можете устанавливать переключатель только в положение Определять сервер запросов по IP-адресу сервера и имя сервера - 127.0.0.1. Главное, чтобы хотя бы у одного хоста переключатель стоял в другом положении, иначе по всем хостам будет грузиться только один сайт. Сохраняем и проверяем в браузере.

Если не работает

Делаем руками - путь война

Если не заработало или же вам не интересно все настраивать через yast (к сожалению, не лишенный некоторых недостатков), то смотрим файлы, которые можно поправить вручную. Лично у меня через yast, почему-то, не все заработало и я просто вколотил в конфигурационные файлы то, что там должно быть. Не забудьте сделать резервные копии файлов перед правкой, например, командой cp file file.old (т.е. создаем копию файла с тем же именем + .old. Если что-то пойдет не так, всегда можно восстановить первоначальную конфигурацию из копии файла).

Настройка виртуальных узлов /etc/hosts Важные строчки (список хостов):

127.0.0.1 localhost
127.0.0.1 site1
127.0.0.1 site2
...

Настройки Apache-сервера /etc/apache2/httpd.conf Важные строчки (основной узел): DirectoryIndex index.html - когда запрашивается директория, в ней ищется этот/эти (если указано несколько, через запятую) файлы и они открываются в браузере (первый подходящий).

Дополнительные настройки (здесь указываются ваши виртуальные хосты) /etc/apache2/vhosts.d/ В этой папке есть файл yast2_vhosts.conf - это куда yast пишет настройки - его редактировать не нужно, т.к. он перезаписывается yast`ом. Вы можете создать свой файл, например, myhosts.conf (все файлы .conf из этой папки автоматически подключаются при запуске сервера) и в нем прописать все ваши хосты в виде:

<VirtualHost 127.0.0.1>
 DocumentRoot "/srv/www/htdocs/"
 ServerName localhost
 ServerAdmin admin@localhost
 <Directory "/srv/www/htdocs/">
  Options Indexes FollowSymLinks MultiViews
  AllowOverride All
  Order allow,deny
  Allow from all
 </Directory>
</VirtualHost>

Зеленое - то, что вы правите под конкретный хост.

Синее - если ваш сайт использует человеко-понятные ссылки (ЧПУ). Проверьте, что запущен mod_rewrite. Это можно сделать через yast или в списке запускаемых модулей. Сам список настраивается в файле /etc/sysconfig/apache2 (директива APACHE_MODULES должна содержать rewrite).

Ну и настройка основного хоста (не виртуального) /etc/apache2/default-server.conf. Примерная конфигурация:

DocumentRoot "/srv/www/htdocs"

<Directory "/srv/www/htdocs">
Options None
AllowOverride None
Order allow,deny
 Allow from all
</Directory>

Alias /icons/ "/usr/share/apache2/icons/"

<Directory "/usr/share/apache2/icons">
 Options Indexes MultiViews
 AllowOverride None
 Order allow,deny
 Allow from all
</Directory>

ScriptAlias /cgi-bin/ "/srv/www/cgi-bin/"

<Directory "/srv/www/cgi-bin">
 AllowOverride None
 Options +ExecCGI -Includes
 Order allow,deny
 Allow from all
</Directory>

ServerName localhost
NameVirtualHost 127.0.0.1

В принципе, важны только две последние строчки, т.к. они определяют IP-адрес, на котором повешены виртуальные хосты, остальное - настройки по умолчанию, можно изменить, если для вас принципиально повесить на localhost что-то свое.

Задаем IP:порт который будет слушать Apache в файле /etc/apache2/listen.conf (имя виртуального хоста любое, IP 127.0.0.1, порт 80 - тот, на который идут запросы в браузере):

NameVirtualHost *
Listen 127.0.0.1:80

Финальный штрих - apache2ctl -k restart

Должно работать, если Apache выдает ошибку - проверяем все конфигурационные файлы, которые подверглись вашему вмешательству.

Вот, вкратце и все.

Ссылки

Автор: Ильдар Насибуллаев