Сам себе хостмастер или установка Apache на платформе Windows. Установка и настройка сервера Apache

В данном разделе мы с вами будем разбираться с тем, как работает HTTP сервер Apache . Начнем мы, конечно, с установки Apache на Windows. Нужно отметить, что большинство хостингов в качестве веб-сервера используют Apache, поэтому любому веб-мастеру необходимо знать основы работы с этим сервером.

В этой записи мы с вами разберемся для чего вообще нужен веб-сервер, затем поговорим про некоторые особенности сервера Apache и установим его на компьютер под управлением Windows, а в завершении мы посмотрим на ошибки, которые могут возникнуть при установке Apache на Windows 7 и выше.

Что такое веб-сервер Apache и для чего он нужен?

Мы знаем, что взаимодействие в сети Интернет можно полностью описать или эталонной моделью. Для веб-разработчика наибольший интерес представляют протоколы и технологии, находящиеся на шестом и седьмом уровне эталонной модели. Из всех протоколов седьмого уровня нам более всех интересен , в основе которого лежит архитектура клиент-сервер.

Мы это сделали следующим образом: в корне диска С создали папку Server, внутри которой создали еще четыре папки: apache, tmp, www, log, php. Не все папки мы будем использовать в данной инструкции. Всё это отображено на рисунке ниже.

В папке www мы создали простой , который назвали Index.html со следующим содержимым:

Проверочная страница

Apache в действие

< ! DOCTYPE html >

< html lang = "ru-RU" >

< head >

< meta charset = "UTF-8" >

< title > Проверочнаястраница< / title >

< link rel = "stylesheet" type = "text/css" href = "style.css" / >

< / head >

< body >

< h1 > Apache вдействие< / h1 >

< / body >

< / html >

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

Для загрузки Apache 2.4 откройте браузер и перейдите на сайт apachelounge.com .

В зависимости от того, какая разрядность Вашей системы, скачайте архив либо для Apache 2.4.25 Win64 , либо для Apache 2.4.25 Win32 .


После этого загрузите службу vc_redist .


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


Далее поставьте галочку возле vc_redist.x64.exe и нажмите Next .


После того, как Вы скачали vc_redist , введите в адресной строке браузера windows.php.net/download для загрузки PHP . Далее в разделе PHP 7.0 (7.0.16) скачайте архив zip либо VC14 x86 Thread Safe (2017-Feb-14 22:22:54) , либо VC14 x64 Thread Safe (2017-Feb-14 22:22:54) .


Всё, что нужно, Вы скачали. Теперь установите саму службу vc_redist на компьютер. Запустите у себя в загрузках vc_redist.x64.exe . Откроется следующее окно, нажмите Запустить .


После нажмите галочку возле Я принимаю условия лицензии и нажмите Установить .


Далее перейдите в Компьютер => Локальный диск (С:) и создайте папку WEB , в которую будете устанавливать Apache и PHP . Внутри папки WEB создайте папку php . После этого откройте архив с Apache и извлеките папку Apache24 в папку WEB . Далее откройте архив с PHP и всё содержимое извлеките в папку php в папке WEB .
Наконец, Вы можете перейти к настройке Apache 2.4 . В папке WEB откройте папку Apache24 , а в ней папку conf . Внутри папки conf есть файл httpd.conf . Откройте его в текстовом редакторе. Нужно в файле httpd.conf указать, где располагается Apache . То есть нужно во всех местах добавить папку WEB перед Apache24 . Для этого нажмите Ctrl + F => Заменить . В строке Найти: напишите c:/ , а в строке Заменить на: напишите c:/WEB/ . После нажмите Заменить всё .


Далее опуститесь в самый низ файла и добавьте следующие 3 строчки:
LoadModule php7_module "c:/WEB/php/php7apache2_4.dll" AddHandler application/x-httpd-php .php
PHPIniDir "c:/WEB/php" PHP - файла php.ini .


После нажмите Ctrl + F и в поле Найти: напишите documentroot и нажмите Enter .


Но перед тем, как Вы что-то измените дальше, перейдите в папку WEB => Apache24 => htdocs и создайте здесь папку www . Затем поместите стандартный файл index.html в созданную папку www .
Возвращайтесь к текстовому документу и добавьте папку www в строчку DocumentRoot "c:/WEB/Apache24/htdocs" как показано на картинке ниже.


Далее нажмите Ctrl + F и в поле Найти: введите directoryindex . Нажмите Enter .


В строчке DirectoryIndex index.html допишем перед index.html index.php . То есть, когда Вы будете заходить на Ваш сайт, в первую очередь будет загружаться index.php .


Если Вы хотите использовать файл .htaccess , то нужно в строке AllowOverride None вместо None написать All .


Далее перейдите в папку WEB => php . Найдите файл php.ini-development . В его имени удалите -development , оставьте php.ini . Откройте файл php.ini в текстовом редакторе. Нажмите Ctrl + F и в поле Найти: введите extension_dir . Нажмите Enter .


Раскомментируйте строку ; extension_dir = "./" (удалите ; ) и укажите в какой папке будет работать php код. Далее в строке doc_root = укажите "c:/WEB/php/ext" .


После этого прокрутите файл немного вниз и раскомментируйте 2 верхние библиотеки, как показано на картинке ниже.


Теперь Вы можете заняться установкой самого Apache . Нажмите комбинацию клавиш Windows + R . После в поле Открыть: напишите cmd и нажмите ОК .
Далее напишите в командной строке c:\WEB\Apache24\bin\httpd.exe -k install .


Нажмите Enter и Apache 2.4 установится. Чтобы запустить Apache , перейдите в папку WEB => Apache24 => bin . Запустите ApacheMonitor.exe . Затем нажмите правой кнопкой мыши на иконку Apache в правом нижнем углу рабочего стола и нажмите Start .


Проверьте, работает ли Apache . Для этого откройте браузер, в адресной строке введите localhost и нажмите Enter . Если у Вас появилась надпись It works! , как на картинке ниже, то Вы всё сделали правильно.

Теперь в конфигурационных файлах Apache допускается параметризация с помощью переменных. Так, в самом начале конфигурационного файла "httpd.conf" путь к папке сервера помещается в переменную SRVROOT , которая используется во всех остальных инструкциях, где требуется указание пути.

В этом механизме существенным является то, что в конфигурационных файлах доступны переменные окружения среды, из которой запускается сервер. Это даёт возможность устанавливать значения переменных, например, в BAT- или CMD-файле. Нельзя только забывать две вещи:

  1. Доступ к значению переменной ПЕРЕМЕННАЯ в командных файлах операционной системы осуществляется с помощью записи %ПЕРЕМЕННАЯ% , а в конфигурационных файлах веб-сервера — с помощью записи ${ПЕРЕМЕННАЯ} .
  2. Элементы пути в командных файлах должны разделяться символом " \ " (обратный слеш), а в конфигурационных файлах — символом " / " (прямой слеш).

Установка

В соответствии с ранее изложенной аргументацией , бинарные файлы сервера будем держать в папке %ProgramFiles%, а конфигурационные и журнальные файлы, файлы сценариев и веб-страницы — в папке "D:\www". Итак, установка:

  1. Распаковываем папку "Apache24" из архива "httpd-2.4.34-(…).zip " в папку %ProgramFiles%. Из-за ограничений безопасности это действие нужно выполнять с правами администратора.
  2. Создаём новую папку "D:\www".
  3. Копируем из "%ProgramFiles%\Apache24" в "D:\www" следующие папки:
    • "cgi-bin" (файлы CGI-сценариев веб-сервера);
    • "conf" (конфигурационные файлы веб-сервера);
    • "htdocs" (файлы веб-страниц);
    • "logs" (журнальные файлы веб-сервера).
  4. Во избежание путаницы переименовываем исходные папки, находящиеся в "%ProgramFiles%\Apache24", следующим образом:
    • "cgi-bin" → "cgi-bin.0";
    • "conf" → "conf.0";
    • "htdocs" → "htdocs.0";
    • "logs" → "logs.0".

Установка выполнена, содержимое папки "%ProgramFiles%\Apache24" в дальнейшем будет оставаться неизменным. Все исправления выполняются над файлами, находящимися в "D:\www". Переходим к настройке.

Основная настройка

Будем использовать в конфигурационных файлах две переменных: SRVROOT — путь к бинарным файлам веб-сервера, и DOCROOT — путь к файлам веб-страницы. А для большей гибкости значения этих переменных будем задавать в командном файле "apache24.bat" со следующим содержимым:

@ECHO OFF
SET SRVPATH=%ProgramFiles%\Apache24
SET DOCPATH=D:\WWW
SET SRVROOT=%SRVPATH:\=/%
SET DOCROOT=%DOCPATH:\=/%
"%SRVPATH%\bin\httpd.exe" -w -f "%DOCPATH%\conf\httpd.conf"

Переменным SRVROOT и DOCROOT присваиваются значения путей SRVPATH и DOCPATH соответственно с заменой разделителя " \ " на " / ". О том, как работают эти инструкции, можно прочитать в справке по команде SET, если в командной строке набрать "SET /?".

Изменения, которые нужно выполнить в конфигурационном файле "D:\www\conf\httpd.conf", описаны в виде пар строк:

#Заменяемая строка
Заменяющая строка.

Вот минимальный список изменений:

#Define SRVROOT "c:/Apache24"
PidFile "${DOCROOT}/logs/httpd.pid"

#DocumentRoot "${SRVROOT}/htdocs"
DocumentRoot "${DOCROOT}/htdocs"
#

#TypesConfig conf/mime.types
TypesConfig ${DOCROOT}/conf/mime.types

#ErrorLog "logs/error.log"
ErrorLog "${DOCROOT}/logs/error.log"

#CustomLog "logs/access.log" common
CustomLog "${DOCROOT}/logs/access.log" common

#ScriptAlias /cgi-bin/ "${SRVROOT}/cgi-bin/"
ScriptAlias /cgi-bin/ "${DOCROOT}/cgi-bin/"

#

С выполненной настройкой сервер должен запуститься с помощью описанного выше командного файла "Apache24.bat".А по адресу "http://localhost/ " в браузере должна открыться страница с сообщением "It works!".

Если это не так, то сведения о причине неполадки скорее всего можно обнаружить в конце журнального файла "D:\www\logs\error.log". Например, если в конфигурационном файле забыть указать параметр PidFile, то появится такое сообщение:

(OS 3)Системе не удается найти указанный путь. : AH00099: could not create C:/Program Files/Apache24/logs/httpd.pid
AH00100: httpd.exe: could not log pid to file C:/Program Files/Apache24/logs/httpd.pid

Дополнительная настройка

По умолчанию веб-сервер принимает подключения на TCP-порту 80 всех сетевых интерфейсов. Для того, чтобы он был доступен на TCP-порту 8080 только локальных интерфейсов, в конфигурационный файл нужно внести следующие изменения:

#Listen 80
Listen 127.0.0.1:8080 # Ожидание подключений по IPv4
Listen [::1]:8080 # Ожидание подключений по IPv6

Естественно, такой сервер не виден за пределами компьютера, на котором он запущен, и пригоден только для локальной разработки. Чтобы сервер появился для всей сети, надо либо прописать IP-адреса сетевых интерфейсов, либо убрать их совсем вместе с разделителем " : ", оставив только номер порта.

Чтобы избавиться от предупреждения в консольном окне запуска веб-сервера:

AH00558: httpd.exe: Could not reliably determine the server"s fully qualified domain name, using (…). Set the "ServerName" directive globally to suppress this message

нужно выполнить предложенную в сообщении рекомендацию — указать в конфигурационном файле доменное имя сервера:

ServerName localhost:8080

Для просмотра локальной документации по адресу "http://localhost:8080/manual " нужно подключить соответствующую конфигурацию:

#Include conf/extra/httpd-manual.conf
Include ${DOCROOT}/conf/extra/httpd-manual.conf

Чтобы PHP-страницы обрабатывались интерпретатором, который установлен в папку "C:\PHP7", нужно прописать в конфигурационном файле "httpd.conf" следующие настройки:

PHPIniDir "C:/PHP7"

LoadModule php7_module "C:/PHP7/php7apache2_4.dll"

AddType application/x-httpd-php .php

Добавляемые директивы LoadModule и AddType надо размещать рядом с уже существующими в конфигурационном файле одноимёнными директивами.

Для управления разделами сайтов, работающих на веб-сервере Apache, часто задают настройки для отдельных папок в файлах ".htaccess". Чтобы этот механизм заработал, нужно в сеции внести следующие исправления:

# AllowOwerride None
AllowOwerride All

Подготовка папок

Я очень не люблю, чтобы у меня все валялось, где попало, так что для начала создадим папки, где у нас будут располагаться программы и сайты.
Создадим на диске «C:\» (или где вам удобней) папку «Server»:
C:\Server\
В ней создадим 2 папки:
C:\Server\web – это папка в которой у нас будут лежать программы
C:\Server\domains – а в этой папке будут лежать наши сайты
Итак, в папке \web\ мы создадим 3 папки для apache, php, mysql:
C:\Server\web\apache\
C:\Server\web\php\
C:\Server\web\mysql\
Далее перейдем в папку domains и создадим папку \localhost\
C:\Server\domains\localhost\
Внутри папки у нас будет 2 подпапки: public_html – для файлов сайта; logs – для текстовых файлов, в которых записывается «кто» получал доступ к сайту и какие ошибки в работе сайта появлялись.
C:\Server\domains\localhost\public_html\
C:\Server\domains\localhost\logs\
На этом структура папок заканчивается, переходим к настройке Apache.

Настройка Apache

Для установки Apache нам понадобиться сам Apache (Кэп). Так как у нас Windows 8.1 x64, то устанавливать будем Apache x64.
Для скачивания перейдем по ссылке:
www.apachelounge.com/download/win64
и скачиваем «httpd-2.4.6-win64.zip». Так же нам понадобиться для нормальной работы «Распространяемый пакет Microsoft Visual C++ 2010 (x64)». Для этого скачаем его по этой ссылке:
www.microsoft.com/ru-ru/download/details.aspx?id=14632
и устанавливаем.
После того как скачался наш архив с Apache, откроем его. Открыв архив, мы увидим папку «Apache24», зайдем в нее. Появиться множество папок и файлов программы, все распаковываем в заготовленную ранее папку:
C:\Server\web\apache\
Должно получиться так:
C:\Server\web\apache\bin\
C:\Server\web\apache\cgi-bin\
C:\Server\web\apache\conf\
C:\Server\web\apache\error\
C:\Server\web\apache\htdocs\
C:\Server\web\apache\icons\
C:\Server\web\apache\include\
C:\Server\web\apache\lib\
C:\Server\web\apache\logs\
C:\Server\web\apache\manual\
C:\Server\web\apache\modules\
Папки, такие как \cgi-bin\, \htdocs\, \icons\ и \manual\ нам не нужны – можете их удалить.
Перейдем в папку:
C:\Server\web\apache\conf\
И откроем файл конфигурации Apache – «httpd.conf» любым текстовым редактором. В этом файле каждая строка содержит директивы для настройки Apache, а строки, начинающиеся со знака # (решетка) – комментарий и пояснение. Приступим к настройке:

Файл конфигурации Apache

# директива Apache
ServerRoot “C:/Server/web/apache”
# Слушаем на локальном IP порт (80 по стандарту)
Listen 127.0.0.1:80
# далее подключим библиотеки расширений для Apache
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule php5_module "C:/Server/web/php/php5apache2_4.dll"
# указываем Apache, что файлы с расширением php, нужно воспринимать как php-скрипты
AddHandler application/x-httpd-php .php
# укажем расположение файла настроек php
PHPIniDir “C:/Server/web/php”
# изменим имя сервера
ServerName 127.0.0.1:80
# изменим доступ к директории

Options Includes Indexes FollowSymLinks
AllowOverride All
Allow from all


# директория с нашими сайтами
DocumentRoot “C:/Server/domains”
# индексные файлы, по приоритету.

DirectoryIndex index.php index.html index.htm index.shtml

# папка для log-файлов
ErrorLog “C:/Server/domains/logs/error.log”
CustomLog “C:/Server/domains/logs/access.log”
# добавим alias для phpMyAdmin, и поправим alias для cgi

Alias /pma “C:/Server/domains/phpMyAdmin”
ScriptAlias /cgi-bin/ “C:/Server/web/apache/cgi-bin/”

# правим путь для cgi

AllowOverride None
Options None
Require all granted

# типы файлов


AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

# Другие конфиги:



BrowserMatch "MSIE 10.0;" bad_DNT


RequestHeader unset DNT env=bad_DNT

На этом заканчивается настройка httpd.conf.
В конфигурационном файле Apache httpd.conf были подключены дополнительные конфиги:
Include conf/extra/httpd-mpm.conf
Include conf/extra/httpd-autoindex.conf
Include conf/extra/httpd-vhosts.conf
Include conf/extra/httpd-manual.conf
Include conf/extra/httpd-default.conf
Откроем файл «C:\Server\web\apache\conf\extra\httpd-mpm.conf» и быстро пробежимся по нему.
# указываем, где у нас будет храниться pid-файл:

PidFile “C:/Server/web/apache/logs/httpd.pid”

Остальные параметры оставляем без изменений. Откроем файл «httpd-autoindex.conf», изменим там только строки с путем:
Alias /icons/ "c:/Server/web/apache/icons/"

Options Indexes MultiViews
AllowOverride None
Require all granted

Файл хостов Apache

# на примере доменная localhost

DocumentRoot "C:/Server/domains/localhost/public_html"
ServerName localhost
ErrorLog "C:/Server/domains/localhost/logs/error.log"
CustomLog "C:/Server/domains/localhost/logs/access.log" common


# добавим для будущего phpMyAdmin (не забываем создать папку)

DocumentRoot "C:/Server/domains/phpmyadmin/public_html"
ServerName localhost
ErrorLog "C:/Server/domains/phpmyadmin/logs/error.log"
CustomLog "C:/Server/domains/phpmyadmin/logs/access.log" common

На этом редактирование файла заканчивается. Далее в оставшихся файлах правим только пути:
Файл «httpd-manual.conf»:
AliasMatch ^/manual(?:/(?:da|de|en|es|fr|ja|ko|pt-br|ru|tr|zh-cn))?(/.*)?$ "C:/Server/web/apache/manual$1"

В файле «httpd-default.conf» никаких изменений не производиться. На этом настройка конфигурации Apache завершается.

Настройка PHP

Раз у нас Windows 8.1 x64 и Apache x64 установлен и настроен, то и php должно быть x64.
Идем на сайт:

и скачиваем архив php последней версии. Нам нужен php как модуль, т.е. для этого скачиваем Thread Safe. После того как архив скачался, открываем его и переносим содержимое в папку «C:\Server\web\php\». Создадим две пустые папки «tmp» и «upload». Далее в этой папке ищем файл «php.ini-development» и переименовываем его в «php.ini». Открываем файл в текстовом редакторе и изменяем директивы (комментирования строк в файле начинается с точки с запятой).

Настройка php.ini

short_open_tag = On
zlib.output_compression = On
post_max_size = 64M
include_path = ".;С:\Server\web\php\includes"
extension_dir = "C:/Server/web/php/ext"
upload_tmp_dir = "C:/Server/web/php/upload"
upload_max_filesize = 64M
extension=php_bz2.dll
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
extension=php_sockets.dll
extension=php_sqlite3.dll
; в секции указываем временную зону нашего сервера (http://php.net/date.timezone)
date.timezone = "Asia/Yekaterinburg"
session.save_path = "С:/Server/web/php/tmp/"


На этом настройка php заканчивается.

Настройка MySQL

Ставим MySQL x64 как сокет под windows. Скачиваем архив с последней версией MySQL x64:
dev.mysql.com/downloads/mysql
В низу страницы находим Windows (x86, 64-bit), ZIP Archive и жмем на кнопку «Download». Вам перекинет на страницу регистрации на сайте. Нажимаем внизу страницы «No thanks, just start my download», запуститься скачивание архива MySQL. После того как скачался архив откроем его и перенесем все содержимое папки в «C:\Server\web\mysql\»
Теперь открываем файл настроек MySQL – «C:\Server\web\mysql\my-default.ini». Удаляем все его содержимое и вносим туда свои данные.
port=3306
host=127.0.0.1
port=3306
bind-address=127.0.0.1
enable-named-pipe
basedir="C:/Server/web/mysql/"
datadir="C:/Server/web/mysql/data/"
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
Вот и всё. В конфигурационном файле мы указали, что скрипты могут обращаться к серверу и по локальному IP, и по сокет-соединению.
Осталось дело за малым. Добавим в системную переменную «PATH» пути к Apache и MySQL, для этого:
  1. Перетащите курсор мыши в правый нижний угол экрана
  2. Щелкните на значке «Поиск» и введите: панель управления
  3. Выберите System (Система)-> Advanced (Дополнительные параметры системы)
  4. Выберите Environment Variables (Переменные среды), в меню System Variables (Системные переменные), найдите переменную PATH и щелкните на ней.
  5. Пропишите пути к Apache и MySQL:
;C:\Server\web\apache\bin;C:\Server\web\mysql\bin
Далее установим службы Apache и MySQL. Для этого воспользуемся сочетанием клавиш «Win+X», появиться выпадающее меню в левом нижнем углу. Выберем «Командная строка (администратор)».
В командной строке вводим, для установки Apache:
httpd –k install
для установки MySQL:
mysqld.exe --install MySQL --defaults-file=”C:\Server\web\mysql\my-default.ini”
Установим пароль для MySQL-пользователя. Для этого запустим службу MySQL командой:
NET start MySQL
После того как служба запустилась, установим пароль:
mysqladmin –u root password ВашПароль
В файл «httpd-vhosts.conf» мы прописали два сайта, для того чтобы браузер мог их увидеть, названия сайтов нужно добавить в файла «hosts». Перейдем в папку:
C:\Windows\System32\Drivers\etc\
откроем файл «hosts» любым текстовым редактором (запустить от имени администратора) и в конец файла добавим:
127.0.0.1 localhost
127.0.0.1 phpmyadmin
Сохраняем файл.
Для удобства запуска и остановки служб Apache и MySQL создадим файлы start-server.bat и stop-server.bat.
Для этого перейдем в папку «C:\Server\» и создадим два этих файла.
Содержание «start-server.bat»:
@echo off
NET start Apache2.4
NET start MySQL
Содержание «stop-server.bat»:
@echo off
NET stop Apache2.4
NET stop MySQL
Настройка Apache, PHP и MySQL на этом закончена. Для того чтобы протестировать сервер, давайте в папке «C:\Server\domains\localhost\public_html» создадим файл «index.php» с содержимым:

Далее запустим наш сервер, для этого запустите «start-server.bat» от имени администратора. После того как сервер запустился, откройте браузер и введите в адресной строке «localhost».
Должна отобразиться страница с информацией о PHP.

  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то