Установка и настройка web-сервера Apache

При выборе web-сервера для установки во внимание принимаются конкретные задачи, под которые он разворачивается. Установим бесплатный веб-сервер Apache. Он хорошо подходит для сайтов начального и среднего уровня.

Открываем страницу загрузки проекта — http://httpd.apache.org/download.cgi и скачаем последнюю стабильную версию под Windows в виде MSI инсталлятора (в примере это apache_2.2.14-win32-x86-no_ssl.msi). Начинаем установку. Первое диалоговое окно это ввод информации о сервере:

Заполняем первые два поля следующими данными: "Network Domain" и "Server Name" localhost, а в поле "Administrator's Email Address" ваш адрес электронной почты. Нижние переключатели пока не следует трогать. Нажимаем кнопку "Next", соглашаемся с типичной установкой, еще раз "Next". Инсталлятор предложит выбрать директорию, в которую будет установлен веб-сервер:

Указываем следующий путь C:\Program Files\Apache. Продолжаем установку, дожидаемся ее окончания. После закрытия инсталлятора в трее появится значок Apache монитора:

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

У каждого компьютера, подключенного к сети, есть свой IP-адрес. Но даже если ваш компьютер не имеет ни одного сетевого подключения, у него есть как минимум один внутренний IP-адрес. Этот адрес — 127.0.0.1. На всех компьютерах он одинаковый и указывает на сам компьютер. То есть, если сетевому клиентскому приложению указать адрес сервера 127.0.0.1, то клиент будет пытаться подключиться к серверу, расположенному на вашем же компьютере.

У внутреннего адреса 127.0.0.1 есть свое внутреннее доменное имя — localhost. При этом для преобразования этого имени в адрес компьютеру не нужно обращаться к DNS-серверу, так как это соответствие заложено в самом компьютере.

Запускаем веб-браузер и вводим в адресную строку домен localhost:

Домен localhost преобразовался в IP-адрес 127.0.0.1, веб-браузер подключился к веб-серверу по этому адресу и 80 порту и запросил главную страницу с помощью протокола HTTP. То есть наш веб-сервер работает, он отправил браузеру страничку с надписью "It works" ("работает").

Настройка веб-сервера сводится к редактированию конфигурационных файлов Apache. Для этого необходимо использовать любой простой текстовый редактор (Блокнот, AkelPad).

Переходим в папку C:\Program Files\Apache\conf и переименуем файл httpd.conf в httpd.conf.bak, чтобы в случае чего иметь под рукой начальную конфигурацию.

Создадим новый файл httpd.conf со следующим содержимым:

ServerRoot "C:/Program Files/Apache"

Listen 80

LoadModule actions_module modules/mod_actions.so

LoadModule alias_module modules/mod_alias.so

LoadModule asis_module modules/mod_asis.so

LoadModule auth_basic_module modules/mod_auth_basic.so

LoadModule authn_default_module modules/mod_authn_default.so

LoadModule authn_file_module modules/mod_authn_file.so

LoadModule authz_default_module modules/mod_authz_default.so

LoadModule authz_groupfile_module modules/mod_authz_groupfile.so

LoadModule authz_host_module modules/mod_authz_host.so

LoadModule authz_user_module modules/mod_authz_user.so

LoadModule autoindex_module modules/mod_autoindex.so

LoadModule cgi_module modules/mod_cgi.so

LoadModule dir_module modules/mod_dir.so

LoadModule env_module modules/mod_env.so

LoadModule include_module modules/mod_include.so

LoadModule isapi_module modules/mod_isapi.so

LoadModule log_config_module modules/mod_log_config.so

LoadModule mime_module modules/mod_mime.so

LoadModule negotiation_module modules/mod_negotiation.so

LoadModule rewrite_module modules/mod_rewrite.so

LoadModule setenvif_module modules/mod_setenvif.so

ServerName localhost

AccessFileName.htaccess

ServerTokens prod

LogLevel error

ErrorLog "logs/error.log"

DefaultType text/plain

AddDefaultCharset UTF-8

<IfModule dir_module>

DirectoryIndex index.html

</IfModule>

<FilesMatch "^\.ht">

Order allow,deny

Deny from all

Satisfy All

</FilesMatch>

<IfModule mime_module>

TypesConfig conf/mime.types

AddType application/x-compress.Z

AddType application/x-gzip.gz.tgz

</IfModule>

<IfModule log_config_module>

LogFormat "[VISIT]\nclient=%h\ntime=%{%d.%m.%Y %H:%M:%S}t\npage=%U%q\nreferer=%{Referer}i\nreqmethod=%m\nhost=%{Host}i\nagent=%{User-agent}i\n\n" mylog

</IfModule>

Рассмотрим содержимое файла. ServerRoot — путь, куда установлен наш веб-сервер. Listern — указывается номер порта, который будет "слушать" веб-сервер, а также, если необходимо, IP-адрес (если у вашего компьютера несколько подключений и нужно принимать соединения только по одному из них). Мы указали порт 80, который является стандартным для веб-серверов. LoadModule загружает модуль веб-сервера, модули позволяют получить дополнительные возможности. В нашем конфигурационном файле прописан перечень стандартных модулей. AddDefaultCharset — кодировка по умолчанию, выставили юникод (UTF-8).

Здесь применяется такое понятие, как корневой каталог — это каталог, где расположен контент сайта, то есть файлы, из которых он состоит. По умолчанию в Apache корневым каталогом является каталог C:\Program Files\Apache\htdocs. В нем находится единственный файл под именем index.html. Это тот самый файл, который содержит главную страницу с надписью "It works" по адресу http://localhost. Дело в том, что если в запросе (который, кстати, называется url) отсутствует имя файла, то веб-сервер ищет файл с одним из стандартных имен. Эти имена (точнее, одно имя — index.html) прописаны у нас в конфигурационном файле:

<IfModule dir_module>

DirectoryIndex index.html

</IfModule>

Таким образом, при запросе http://localhost веб-сервер будет искать файл C:\Program Files\Apache\htdocs\index.html, при запросе http://localhost/docsC:\Program Files\Apache\htdocs\docs\index.html (в том случае, если docs — папка), при запросе http://localhost/news.htmlC:\Program Files\Apache\htdocs\news.html и так далее.

При веб-строительстве удобно иметь не один, а, скажем, три локальных (находящихся на локальной машине) домена, на которых можно независимо тестировать ваши сайты. Apache позволяет обслуживать несколько сайтов, то есть вам не придется для каждого домена устанавливать свою копию веб-сервера (к тому же на компьютере может работать только одно серверное приложение на определенном порту). Несколько доменных имен могут ссылаться на один и тот-же IP-адрес. Apache, в свою очередь, может в зависимости от доменного имени, переданного в HTTP-запросе искать файлы в определенном корневом каталоге. Такая технология называется "виртуальный хост".

Итак, localhost соответствует адресу 127.0.0.1, создадим еще три внутренних домена test-domain1, test-domain2 и test-domain3, которые будут соответствовать этому же адресу. Открываем в текстовом редакторе файл C:\WINDOWS\system32\drivers\etc\hosts. В этом файле можно задать соответствия доменных имен и IP-адресов. Здесь же мы обнаружим то самое соответствие localhost адресу 127.0.0.1. Добавляем в конец файла строки:

127.0.0.1 test-domain1

127.0.0.1 test-domain2

127.0.0.1 test-domain3

Перед обращением к DNS-серверу соответствие ищется в этом файле, и, если удачно, обращение отменяется и используется найденный адрес.

Следующим шагом необходимо каждому доменному имени создать свой корневой каталог и сказать об этом веб-серверу. Удалим в папке C:\Program Files\Apache\htdocs файл index.html и создадим там три папки: test-domain1, test-domain2 и test-domain3, в каждой из этих папок папку log — для логов и папку www — собственно, корневой каталог для домена. В конце файла C:\Program Files\Apache\conf\httpd.conf дописываем следующее:

NameVirtualHost *:80

<VirtualHost *:80>

ServerName test-domain1

DocumentRoot "C:/Program Files/Apache/htdocs/test-domain1/www"

ErrorLog "C:/Program Files/Apache/htdocs/test-domain1/log/error.log"

CustomLog "C:/Program Files/Apache/htdocs/test-domain1/log/access.log" mylog

<Directory "C:/Program Files/Apache/htdocs/test-domain1/www">

AllowOverride All

Options -Indexes

</Directory>

</VirtualHost>

<VirtualHost *:80>

ServerName test-domain2

DocumentRoot "C:/Program Files/Apache/htdocs/test-domain2/www"

ErrorLog "C:/Program Files/Apache/htdocs/test-domain2/log/error.log"

CustomLog "C:/Program Files/Apache/htdocs/test-domain2/log/access.log" mylog

<Directory "C:/Program Files/Apache/htdocs/test-domain2/www">

AllowOverride All

Options -Indexes

</Directory>

</VirtualHost>

<VirtualHost *:80>

ServerName test-domain3

DocumentRoot "C:/Program Files/Apache/htdocs/test-domain3/www"

ErrorLog "C:/Program Files/Apache/htdocs/test-domain3/log/error.log"

CustomLog "C:/Program Files/Apache/htdocs/test-domain3/log/access.log" mylog

<Directory "C:/Program Files/Apache/htdocs/test-domain3/www">

AllowOverride All

Options -Indexes

</Directory>

</VirtualHost>

Три блока VirtualHost описывают наши три виртуальных хоста. Каждому задается свой корневой каталог — DocumentRoot, путь к логу ошибок — ErrorLog и логу доступа — CustomLog.

В корневом каталоге каждого домена создадим по файлу index.html с содержимым "Hello from test-domain1", "Hello from test-domain2" и ""Hello from test-domain3". Чтобы изменения в конфигурации вступили в силу, необходимо перезапустить Apache (левой кнопкой мыши по значку Apache монитора -> Restart). Если ошибок не было допущено, должно все работать:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: