Софт-Архив

Apache Windows img-1

Apache Windows

Рейтинг: 4.0/5.0 (1910 проголосовавших)

Категория: Windows: Web серверы

Описание

Установка Apache PHP MySQL под Windows - Apache

Установка Apache+PHP+MySQL под Windows - Apache

07.01.2010, 15:12 Установка Apache+PHP+MySQL под Windows

Очень часто у людей возникают сложности с установкой Apache+PHP+MySQL. В результате начинают использовать всякие глючные сборки типа Денвера и т.п. Предлагаю подробную инструкцию, как установить Apache, PHP и MySQL самому и без лишних проблем. Я постарался написать её как можно проще для понимания.

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

Несколько слов про PHP. установочные файлы под Windows находятся на http://windows.php.net/download/ Выбирать там нужно тот, который VC6 x86 Thread Safe. VC9 под Apache не подходит.

В этой инструкции я использовал последнии версии, существующие сегодня (Apache 2.2.14, PHP 5.3.1 и MySQL 5.1.42). Но и с более современными версиями всё должно быть так же.

Установка Apache

Запускаем установщик apache_2.2.14-win32-x86-openssl-0.9.8k.msi

Вначале появится просто окно приветствия. нажимаем кнопку "Next"

Потом соглашаемся с лицензионным соглашением.

Потом нам покажут небольшую информацию об Апаче. опять идём дальше.

Тут нас просят имя домена, имя сервера и e-mail администратора. На первое время, это не имеет никакого значения. А если потом потребуется, то можно будет настроить. Пока домен и имя сервера назовём именем этого компьютера (в моём случае имя компьютера "test"). E-mail админа вообще не имеет значения. он отображается только при сообщениях об ошибках (например, если не найдена страница, запрещён доступ и т.п.). Ниже он справшивает, на какой порт настроить сервер. оставляем на 80 (это стандартный порт для веб-серверов).

На следующей странице нас спрашивают, как устанавливать: Typical или Custom. Выбираем Typical.

Дальше предлагают указать папку, куда устанавливать. оставляем как есть.

На следующей странице нажимаем кнопку "Install"

Всё. Веб-сервер Apache установлен. Что бы проверить, открываем браузер и заходим на http://127.0.0.1 (я рекомендую использовать именно IP адрес 127.0.0.1. а не localhost. Т.к. иногда по каким-то причинам у некоторых пользователей имя localhost бывает не указано в файле \WINDOWS\system32\drivers\etc\hosts, что приводит к лишней трате времени).

Должна появиться надпись "It works!". значит сервер работает.

Установка PHP

Запускаем файл php-5.3.1-Win32-VC6-x86.msi

Нажимаем "Next"

Соглашаемся с лицензией

Указываем папку, куда нужно устанавливать

Дальше установщик спросит, какой у вас установлен веб-сервер. Выбираем Apache 2.2x Module

Потом спросит, в какой папке находится файл с настройками Апача (файл называется httpd.conf ). Он находится в папке C:\Program Files\Apache Software Foundation\Apache2.2\conf

На следующей странице попросит выбрать компоненты, которые нужно установить. можно оставить всё как предлагает.

Нажимаем кнопку "Install"

PHP сам настроит Апач должным образом. а именно добавит в конец файла httpd.conf строки

Другие статьи, обзоры программ, новости

Настройка и защита apache под windows

Установка веб сервера на windows

Настройки apache установленного под windows или под другой операционной системой одинаковые. Отличие только в путях к файлам и в некоторых специфических настройках.

Поэтому эти настройки подойдут для апача установленного под freebsd, linux, и т.д.

В этой статье я затрону не все, а наиболее важные настройки apache установленного под windows. Это минимум, который необходим для запуска нового сервера.

Если вы устанавливали apache по другой схеме, то у вас могут отличаться пути к файлам настроек, но сами настройки будут такие же.

Если вы еще не установили apache, советую вам установить его как рассказано в этой статье (Как установить сервер apache дома под windows ).

Все настройки apache как правило сконцентрированы в одном файле httpd.conf. но в случае установки с помощью xampp, конфигов становится больше, где они лежат я буду указывать.

1. Скрываем лишнюю информацию.

По умолчанию сервер выдает слишком много информации, просто сливает нужную информацию хаккерам.

Например в заголовках сервера, а так же при выводе стандартных служебных страниц типа 404 можно видеть подобное

Apache/2.2.12 (Win32) DAV/2 mod_ssl/2.2.12 OpenSSL/0.9.8k mod_autoindex_color PHP/5.3.0 mod_perl/2.0.4 Perl/v5.10.0

То есть абсолютно любой прохожий знает какой версии стоит апач, какая операционка, какие модули и т.д.

Всю эту информацию не стоит всем светить, особенно когда сервер стоит под windows.

Если вы устанавливали apache с помощью xampp, тогда открывайте файл конфига

/xampp/apache/conf/extra/httpd-default.conf

(если нет такого файла, открывайте файл httpd.conf )

здесь находите команду "ServerTokens ", это и есть объем показываемой информации о сервере.

Меняем значение на такое ServerTokens Prod .

В этом случае светится будет только название сервера.

Кроме этого заголовка сервер выдает еще один не приятный заголовок

X-Powered-By:

Этот заголовок появляется когда информация выводится с помощью PHP скрипта.

Если запросить статический html документ, то этого заголовка не будет, но если информацию на страницу выведет PHP скрипт, то в этом заголовке будет подобное

X-Powered-By: PHP/5.2.5

То есть заголовок объясняет всем, что страница создана с помощью PHP и показывает версию PHP.

Даже если вы используете mod rewrite и обращаетесь к страницам как к статическим документам, то этот заголовок все равно расскажет всем, что страница создана с помощью PHP.

Лучше всего убрать этот заголовок. Полезно, если вы хотите замаскировать свой сайт под полностью статический, ну и хулиганы лишний раз не узнают версию PHP.

Для этого потребуется конфиг php.ini

Обычно он лежит в папке php, но может быть и в других местах, да еще и в нескольких экземплярах.

Чтобы точно найти нужный php.ini. выполните phpinfo(); в скрипте и найдите параметр Loaded Configuration File. тут и будет путь до конфига php.

Открываем php.ini и находим

expose_php = on

меняйте значение на off

2. Листинг директории.

Если в директории нет индексного файла, то по умолчанию сервер покажет список всех файлов и директорий.

Во многих случаях этого делать не нужно, зачем всем показывать, что лежит в вашей папке.

Чтобы запретить листинг директорий открываем файл

/xampp/apache/conf/httpd.conf

Внутри тега <Directory "/xampp/htdocs"> должен быть Options с различными параметрами. Среди этих параметров должен быть Indexes. вот именно Indexes удалите.

Теперь при попытке просмотреть директорию без индексного файла будет получена ошибка 403.

3. Типы файлов (MIME types)

Когда с сервера запрашивается какой-либо файл, apache прежде выясняет какой тип имеет этот файл (картинка, текстовый файл, архив, и т.д.). После этого сервер посылает заголовок, в котором указано какой тип файла сейчас будет отдан. Браузер получает этот заголовок и на основании него решает, что делать с этим файлом.

До недавнего времени по умолчанию в apache отсутствовал тип файлов RAR, всем известный архив. И если вы разместите на своем сайте файл rar, то например браузер OPERA вместо скачивания этого файла начнет открывать его в браузере как текстовый файл и будут видны непонятные символы. Чтобы этого не было, нужно добавить на сервер тип файлов RAR.

Если установку делали через XAMPP, то настройки типов файлов тут

/xampp/apache/conf/mime.types

Нужно добавить строку

application/x-rar-compressed rar

Но прежде убедитесь, что этот тип еще не прописан, так как в последней версии XAMPP он уже присутствует.

4. Виртуальные хосты, дополнительные домены.

После установки сервера вам доступен только один локальный домен localhost.

С помощью настройки виртуальных хостов можно разместить на вашем сервере сколько угодно сайтов с разными доменами или поддоменами, все зависит от ресурсов вашего компьютера.

<VirtualHost *:80>

# настройки первого сайта

</VirtualHost>

<VirtualHost *:80>

# настройки второго сайта

</VirtualHost>

<VirtualHost *:80>

#настройки третьего сайта

</VirtualHost>

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

ServerAdmin adm@webi.ru

Указывает email админа этого сайта.

Например при определенных настройках этот email может быть виден при возникновении ошибок сервера или сайта.

Во втором хосте все тоже самое, только добавлен еще один параметр

ServerAlias www.webi.ru

Это хост, являющийся зеркалом основного хоста.

Можно перечислить несколько зеркал, и все они будут иметь такие же параметры как основной хост и в конкретном случае при наборе адреса сайта хоть с www, хоть без wwww, будет обработан основной хост webi.ru.

А третий хост, это пример настроек поддомена от домена webi.ru.

Как видно, настройки поддомена ничем не отличаются от настроек доменов.

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

Например, скрипты любого из этих сайтов имеют доступ ко всем файлам и папкам всего компьютера.

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

Чтобы дать ограничение существует такая команда

<Directory c:/xampp/htdocs/webi.ru> # директория из которой работает скрипт

php_admin_value open_basedir "c:/xampp/htdocs/webi.ru/" # доступ скриптов к папке

</Directory>

В данном примере PHP скрипты не будут выходить за пределы указанной директории.

Если хотите указать несколько директорий, к которым могут получать доступ скрипты из указанной директории, разделяйте их '; ', например

php_admin_value open_basedir "c:/xampp/htdocs/webi.ru/;c:/xampp/htdocs/asd/"

Обратите внимание, пробела между путями нет, все пути перечисляются слитно, разделяются лишь точкой с запятой (; ).

А можете даже запретить использование PHP скриптов в определенной директории таким образом

DocumentRoot c:/xampp/htdocs/webi.ru/www

ServerAdmin adm@webi.ru

</Directory>

ErrorLog "c:/xampp/htdocs/webi.ru/log/error_log.txt"

CustomLog "c:/xampp/htdocs/webi.ru/log/access_log.txt" combined

</VirtualHost>

После настройки своих хостов вам нужно будет прописать в зонах ДНС эти домены и направить их все на ip вашего сервера.

Если не знаете как настроить ДНС, читайте о настройке бесплатного ДНС сервера .

5. Как создавать локальные поддомены.

Если вы используете сервер для тестирования и вам нужно создавать локальные домены или поддомены, то после настройки виртуального хоста нужно прописать этот домен локальным в файле

C:/WINDOWS/system32/drivers/etc/hosts

В этом файле прописывайте нужный домен на локальный IP

По умолчанию там прописано 127.0.0.1 localhost

Добавьте к этой записе еще нужные домены, например

127.0.0.1 localhost

127.0.0.1 asd.ru

127.0.0.1 asd.localhost

Если вы прописали эти домены в виртуальных хостах, то теперь при посещении этих сайтов вы будете попадать на свой сервер, даже если пропишите любые домены.

6. Псевдонимы.

По умолчанию, после установки сервера с помощью xampp установлены некоторые стандартные псевдонимы.

Например, если набрать в браузере http://localhost/phpmyadmin. то вы попадете в phpmyadmin, не смотря на то, что в папке отведенной для скриптов нет phpmyadmin.

phpmyadmin будет доступен из под любого домена http://домен/phpmyadmin

Такая опция задается с помощью псевдонимов в настройке apache.

Для xampp это находится в файле /xampp/apache/conf/extra/httpd-xampp.conf.

если устанавливали сервер иначе, то редактировать можно основной конфиг apache.

В этом файле можно видеть такие строки

Alias /phpmyadmin "/xampp/phpMyAdmin/"

Alias /webalizer "/xampp/webalizer/"

Это и есть псевдонимы. Именно эти команды указывают серверу обрабатывать запросы и перенаправлять их в другие директории.

Например если запрашивается http://localhost/phpmyadmin. то в данном примере запрос к phpmyadmin будет перенаправлен в директорию /xampp/phpMyAdmin/. которая находится за пределами директории со скриптами.

И срабатывать это будет для любого домена.

Так как подобные псевдонимы используются всегда и всеми, то их естественно знают все хулиганы и когда вы откроете сервер для всех, то все эти псевдонимы будут щупать на уязвимости.

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

Например так

<VirtualHost *:80>

ServerAdmin adm@webi.ru

DocumentRoot C:/xampp/htdocs/localhost/www

ServerName localhost

ServerAlias www.localhost

Alias /phpmyadmin123 "C:/xampp/phpMyAdmin/"

<Directory C:/xampp/htdocs/localhost>

php_admin_value open_basedir "C:/xampp/htdocs/localhost/;C:/xampp/phpmyadmin/"

</Directory>

</VirtualHost>

Обратите внимание, защита выхода скриптов за пределы директории php_admin_value open_basedir содержит еще путь до папки phpmyadmin, иначе если к нему не будет доступа, то он и работать не будет.

И еще можете заметить, что вызов phpmyadmin происходит через phpmyadmin123, чтобы не сразу могли найти.

В последних версиях xampp доступ к административным скриптам возможен только при локальном входе, внешний доступ закрыт, phpmyadmin тоже доступен только локально.

Если хотите открыть внешний доступ для phpmyadmin или другим стандартным скриптам, опять смотрим файл

/xampp/apache/conf/extra/httpd-xampp.conf

Тут есть подобная конструкция

<LocationMatch "^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))">

</LocationMatch>

Эта конструкция и запрещает доступ снаружи, конечно сам запрет находится внутри этой конструкции, но если вам нужно открыть внешний доступ например для phpmyadmin, то просто удалите его из этого списка.

Установка Apache php MySQL phpMyAdmin под Windows

1 30.03.12 02:04

Установка Apache+php+MySQL+phpMyAdmin под Windows проверено на 2003

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

Этапы инсталляции

1. Получение дистрибутивов на ваш компьютер

Дистрибутивы можно скачать с официальных сайтов:

Apache: http://httpd.apache.org/ (последняя рабочая на момент написания статьи была Apache HTTP Server 2.2.22 )

PHP: http://windows.php.net/download/ (последняя рабочая на момент написания статьи была PHP 5.3.10 )

- Рекомендую выбрать дистрибутив php не в виде инсталлятора, а в виде архива ZIP (15М).

MySQL: http://www.mysql.com/downloads/mysql/ (последняя рабочая на момент написания статьи была MySQL Community Server 5.5.22 )

- Выберите под свою разрядность системы x86 (32 бит) или x64 (64 бит), я рекомендую скачать Windows (x86, 32-bit), MSI Installer

- Так же можете скачать базы с русско-язычного ресурса, если с скаченное с английского каким либо образом не работает корректно http://www.mysql.ru/download/ мне это помогло - mysql-5.0.67-win32.zip версия для Windows 95/98/NT/2000/XP/2003 (45.3Mb)

phpMyAdmin: http://php-myadmin.ru/download/ (последняя рабочая на момент написания статьи была phpMyAdmin-3.4.10.2-all-languages.zip )

2. Установка Apache

Разворачиваем Apache из архива zip в любую удобную Вам папку. Например, в C:\www (это расположение и будем предполагать в дальнейшем).

Теперь нам придётся подправить файл C:\www\conf\httpd.conf. Это файл, хранящий настройки Апача. Открываем его через обычный текстовик. Основной разговор о нём у нас впереди, а пока подправим его, чтобы Apache запустился.

Находим строку через поиск по слову ServerRoot и правим так, чтобы строка имела такой вид:

ServerRoot "c:/www/"

Находим строку через поиск по слову ServerName и правим так, чтобы строка имела такой вид:

ServerName localhost (или ваше предпологаемое доменное имя, например: site.ru)

Затем инсталлируем Apache как службу. Для этого в командной строке выполняем следующую команду:

C:\www\bin\httpd.exe -k install

<OS 5>Access denied: Failed to open the WinNT service manager

Так замысловато Вам сообщается, что Вы запускаете эту команду без прав администратора. Вам придётся запустить её от имени администратора. Например, сохранив её в виде bat-файла и щелкнув на этом файле правой кнопкой мыши — и выбрав в контекстном меню Запуск от имени администратора (Run as admininstrator).

Если служба установлена, пробуем её запустить:

C:\www\bin\httpd.exe -k start

Если Вам повезло, то эта команда ничего не выведет. Но слишком часто приходится читать нечто невразумительное:

httpd.exe: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

(OS 10048)+сvўэю ЁрчЁх°рхЄё юфэю шёяюы№чютрэшх рфЁхёр ёюъхЄр (яЁюЄюъюы/ёхЄхтющрфЁхё/яюЁЄ).

make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down

Unable to open logs

Note the errors or messages above, and press the <ESC> key to exit. 30.

Переведу для Вас фразу +сvўэю ЁрчЁх°рхЄё юфэю шёяюы№чютрэшх рфЁхёр ёюъхЄр (яЁюЄюъюы/ёхЄхтющрфЁхё/яюЁЄ).

По-русски она звучит так:

Обычно разрешается одно использование адреса сокета (протокол/сетевой адрес/порт).

Суть ошибки Вы уже уловили: какая-то программа или служба уже закрепила за собой хост и порт, под которым Апач хотел работать. Чаще всего это IIS или Skype.

Выхода у Вас два: или раскулачивать программы/службы, коотрые «сидят» на 80-м порту, или уходить на другой порт.

Если Вы собираетесь отбирать 80-й порт у другой программы, то сначала нужно выяснить, у какой именно. В этом Вам поможет список, который построит для Вас команда Windows

Ну а дальше настраиваете выявленную программу или службу в соответствии с её особенностями.

Чтоб уйти на другой порт (например, на 8080 ), нужно скорректировать две строки файла httpd.conf:

Строка должна иметь вид:

Строка должна иметь вид:

ServerName localhost:8080

И теперь снова попытайте счастья:

C:\www\bin\httpd.exe -k start

Если команда запустилась, ничего не выведя — Апач наконец установился.

Проверка установки службы Apache: При вызове броузером адреса http://localhost/ (Или http://localhost:8080/. если Вы увели Apache на порт 8080) Вы увидите надпись «Forbidden». Это ошибка http, но она свидетельствует, что Вы на правильном пути: Апач принял и обработал http-запрос.

Если Вы не видите надпись «Forbidden»

Проверьте — не заблокирован ли Apache Вашим брандмауэром

Проверьте — установилась ли служба Apache2.2. Выяснить это можно, зайдя в Панель Управления Windows — в разделе Администрирование/Службы (Administrative Tools/Services).

В Windows Vista зачастую Apache запускается и останавливается только через консоль Службы

Может помочь установка в начало файла httpd.conf директивы Win32DisableAcceptEx

Ну и последний штрих: поставьте в меню Windows Автозагрузка (StartUp) ярлык, указывающий на

C:\www\bin\ApacheMonitor.exe

Чтобы проще было перезапускать Апач

3. Распаковка архива php в c:\php

Именно на это расположение ориентированы строки в конфигурационных файлах php. Если Вы первый раз устанавливаете Apache/php/MySQL — Вам лучше выбрать именно это расположение, так как в противном случае Вам придётся менять некоторое количество параметров в конфигурационных файлах.

4. Внесение исправлений в файл httpd.conf

Их смысл: мы сообщаем Апачу, что у него есть модуль, который должен срабатывать на расширение php

В распакованном архиве c:\php есть файл install.txt. В нём написано на англ.языке, какие изменения нужно внести в файл httpd.conf. А именно:

В файле httpd.conf добавить строку:

LoadModule php5_module "c:/php/php5apache2_2.dll"

Таким образом, мы указали, что при загрузке apache запускает интерпретатор php в качестве своего модуля. Теперь укажем Апачу, где он должен искать файл php.ini (параметры php)

В файле install.txt есть строка PHPIniDir "C:/php". Её нужно поставить в файл httpd.conf (если ее там нет, пользуйтесь поиском по строкам).

Теперь нужно указать, что этот модуль должен обрабатывать файлы с расширением php

В файле install.txt есть строка:

AddType application/x-httpd-php .php

Её вставляем в окончание блока AddType файла httpd.conf

5. Создаём и описываем в httpd.conf папку для хранения WEB-папок.

Один WEB-сервер может управлять работой нескольких сайтов (или веб-приложений). Различать их Apache будет по доменному имени — и каждому из этих имён назначит в соответствие WEB-папку (в которой будут хранится файлы сайта).

Как мы зададим эти соответствия — я расскажу в следующем параграфе. А пока создадим папку, в которой будут храниться WEB-папки.

Итак, мы создали папку c:\www (конечно, могли и иначе назвать). Теперь в файл httpd.conf добавляем описание этой папки: мы разрешим доступ к этой папке по протоколу http (по умолчанию этого доступа нет). После описания общих умолчаний добавим следующий блок (если его там нет или правим его):

<Directory "C:/www">

Apache Web Server for Windows

Building Apache 2.2.3 or 2.0.59, with mod_ssl, mod_security, mod_deflate Building a Web Server, for Windows Requirements
  • Microsoft Visual C++

[we will use Visual Studio 98 / VC++ 6.0]

[Visual Studio .NET will also work with the same instructions]
  • Gawk [needed for the Apache2 build process]
  • [optional] zlib. mod_deflate source
  • [optional] OpenSSL. mod_ssl source
    • Perl [native Perl, not Cygwin Perl]
    • Additional build tools: bison, flex, sed
  • [optional] mod_security source
    • Package(win32 source):
      • httpd-2.2.3-win32-src.zip -- Unpack as C:\build\httpd-2.2.3
      • httpd-2.0.59-win32-src.zip -- Unpack as C:\build\httpd-2.0.59
    • Gawk, bison, flex, sed. can be downloaded as stand alone win32 ports from GnuWin32 or with the Cygwin environment. Do not use UnxUtils.
      • Pre-packaged DeveloperSide.NET distribution of the required GnuWin32 tools: GnuWin32tools.rar [Download and add directory 'C:\GnuWin32\bin' to the PATH]
      • GnuWin32. http://gnuwin32.sourceforge.net/packages.html [Note that only Bison v1.35 will work from GnuWin32 for this build, and will require libintl-2.dll and libiconv-2.dll ]
      • Cygwin. http://cygwin.com/
    • Download zlib source code, v1.2.3, from. http://www.gzip.org/zlib/
      • Unpack as C:\build\httpd-2.x.x\srclib\zlib
    • Download OpenSSL source code, v0.9.8b, from. http://www.openssl.org/source/
      • Unpack as C:\build\httpd-2.x.x\srclib\openssl
    • Download mod_security source code, v1.9.4, from. http://www.modsecurity.org/download/index.html
      • Unpack as C:\build\modsecurity-apache-1.9.4
    Our Configuration
    • Build directory. C:\build
    • Install to:
      • Apache 2.0: C:\www\Apache2
      • Apache 2.2: C:\www\Apache22
    • System:Port. localhost:80
    • Module type. dynamically loaded modules, *.so (and *.dll)
    • [optional] Additional modules over base. mod_deflate, mod_ssl, mod_security
    • Perl.exe path. C:\www\perl\bin
    • awk, bison, flex, sed path. C:\GnuWin32\bin [Read below 'Notes' for clarification on gawk/awk]
    • System PATH. contains C:\www\perl\bin and C:\GnuWin32\bin

      [Read below 'Notes' for clarification on system path]

    • When using the command-line (command-shell) with VC++, always set the Build Environment and update the System PATH to reflect the tools used in the build --> Guide: Working with the Command Shell
    • This Guide can be used without the inclusion of modules mod_ssl, mod_security, and mod_deflate -- simply ignore the related Sections, material, and tools
    • The System PATH must contain the path to perl.exe and the other build tools
    • file 'gawk.exe' must be renamed to 'awk.exe' for the Apache2 build process
    • If using Cygwin 'gawk', delete the symlink 'awk.exe' and rename 'gawk.exe' to 'awk.exe' under. \cygwin\bin
    Setup for mod_deflate

    To build mod_deflate, the zlib source code directory is placed under C:\build\httpd-2.x.x\srclib (as httpd-2.x.x\srclib\zlib). The main Apache 2.0/2.2 build process will automatically compile the zlib source code and build mod_deflate. Note that to build zlib v1.2.3 under Apache 2.0, the C:\build\httpd-2.0.x\modules\filters\mod_deflate.dep/dsp/mak files will need to be patched. Do NOT perform this patching step if building mod_deflate under Apache 2.2, or if building against zlib v1.1.4.

    Patch mod_deflate (zlib 1.2.3) to build under Apache 2.0.

    • Download package Patch (binary zip or setup) and install, making sure that patch.exe can be located under the PATH and that libs libiconv-2.dll and libintl-2.dll are under the same directory as the patch binary.
    [the patch utility is provided under the DeveloperSide.NET GnuWin32 tools distribution]
  • Save zlib patch file as C:\build\httpd-2.0.x\zlib.patch
  • . \httpd-2.0.x> patch -p1 < zlib.patch
  • [Optional] Build zlib with ASM options.

    • . \httpd-2.x.x\srclib\zlib\contrib\masmx86> mkasm.bat
    • Copy files gvmat32.obj, inffas32.obj, gvmat32c.obj to the base zlib directory.
    • . \httpd-2.x.x\srclib\zlib> nmake -f win32\Makefile.msc LOC="-DASMV -DASMINF" OBJA="gvmat32c.obj gvmat32.obj inffas32.obj"
    Setup for mod_ssl

    To build mod_ssl, the OpenSSL source code directory is placed under C:\build\httpd-2.x.x\srclib (as httpd-2.x.x\srclib\openssl). The OpenSSL source is then manually compiled to prepare for the main Apache 2.0/2.2 build process.

    Configure the build.

    ['--openssldir=DIR' tells openssl.exe where to look for openssl.cnf]

    [we must use unix forward style slashes(/), instead of windows style back slashes(\)]
    • > cd /d C:\build\httpd-2.x.x\srclib\openssl
    • For Apache 2.2
    > perl Configure --openssldir=C:/www/Apache22/bin VC-WIN32
  • For Apache 2.0

    > perl Configure --openssldir=C:/www/Apache2/bin VC-WIN32

  • Use x86 assembly functions for performance improvements.

    Note that if your Compiler or System does not include MASM (ml.exe error): run 'ms\do_ms' instead.

    > ms\do_masm

    > nmake -f ms\ntdll.mak

    [optional] Test the built OpenSSL package.

    • > cd out32dll
    • >. \ms\test
    Apache 2.2.3 Patch

    The Apache 2.2.3 Windows source has problems in four projects dsp and mak files. Also, a perl script has to be run to convert the projects to the VC++ version that is being used to compile the code. Both of these problems should be fixed under Apache 2.2.4

    Download apache-2.2.3-projects.zip and extract the following 4 dsp and mak project files to the given directories.

    • modules/aaa/mod_authn_dbd.dsp\mak
    • modules/filters/mod_ext_filter.dsp\mak
    • modules/metadata/mod_usertrack.dsp\mak
    • support/htpasswd.dsp\mak

    If using VS.NET 2005 to compile Apache 2.2.3, download cvtdsp.pl and run 'perl cvtdsp.pl -2005' (For VC++ 6.0: 'perl cvtdsp.pl -6' but this is unnecessary).

    Build/Install Apache

    Apache 2.0/2.2 can be built using the command line, or with the Visual Studio Workspace IDE. The command line build is the perfered choice.

    Command-Line Build Instructions

    Build Apache 2.0/2.2 in Release mode under C:\www\Apache22 (for 2.2) or C:\www\Apache2 (for 2.0), with the server listening on localhost (127.0.0.1, your local system) on port 80 (regular HTTP port).

    • For Apache 2.2
    \httpd-2.2.x> nmake /f Makefile.win SERVERNAME="localhost" PORT=80 INSTDIR="C:\www\Apache22" installr
  • For Apache 2.0

    \httpd-2.0.x> nmake /f Makefile.win SERVERNAME="localhost" PORT=80 INSTDIR="C:\www\Apache2" installr

  • Visual Studio Workspace IDE Build Instructions

    Apache.dsw is the Visual Studio workspace, which exposes the entire list of working .dsp projects that are required for the complete Apache 2.0/2.2 binary release.

    • Load Apache.dsw
    • "The project Apache.dsp needs to be converted to the Visual C++ 7.0 project format"
      • Click 'Yes To All'
    • Right click 'BuildBin' under Solution Explorer
      • Select 'Set as StartUp Project'
    • Select 'Solution 'Apache'' under Solution Explorer
      • Change 'Active Config' value under Properties Window from 'Debug' to 'Release'
    • [If you are not building mod_ssl and mod_deflate] Note that by default, under the IDE build, the build process will try to build modules abs, mod_ssl, and mod_deflate. If the source code and libs of the additional modules have not been provided, the mentioned modules will need to be deselected.
      • Under the Build menu, select Configuration Manager
      • Deselect 'abs', 'mod_deflate', 'mod_ssl'
      • Click 'Close'
    • Note that with the Workspace IDE build, by default, Apache 2.0/2.2 is installed into <drive>:\Apache2. We are installing to <drive>:\www\Apache22 (for 2.2) or to <drive>:\www\Apache2 (for 2.0).
      • For 'BuildBin' and 'InstallBin' -- Right click each under Solution Explorer and perform these steps
        • Select 'Properties'
        • Select 'NMake' under 'Configurations Properties'
        • Update. 'Build Command Line', 'Rebuild All Command Line', 'Output' Replace "\Apache2\. " with "\www\Apache22\. " (for 2.2) or "\www\Apache2\. " (for 2.0)
        • Click 'OK'
    • Select 'Build Solution' under the Build menu
    Setup for mod_security

    To build mod_security, the built Apache2 libraries and include files are used.

    Edit file C:\build\modsecurity-apache-1.9.4\apache2\makefile.win and change the BASE path to the built Apache2 dir.

    • Apache 2.2
    BASE = "C:/www/Apache22/"
  • Apache 2.0

    BASE = "C:/www/Apache2/"

  • If building against Apache 2.2, edit file C:\build\modsecurity-apache-1.9.4\apache2\makefile.win and update the following line to reflect the new Apache 2.2 library names.

    • Original line
    LIBS = $(BASE)\lib\libhttpd.lib $(BASE)\lib\libapr.lib $(BASE)\lib\libaprutil.lib
  • Updated line

    LIBS = $(BASE)\lib\libhttpd.lib $(BASE)\lib\libapr-1.lib $(BASE)\lib\libaprutil-1.lib

  • Build mod_security.

    . \modsecurity-apache-1.9.4\apache2> nmake /f makefile.win

    Copy generated file mod_security.dll to dir C:\www\Apache[2,22]\modules and file mod_security.lib to dir C:\www\Apache[2,22]\lib

    Additional Steps and Information

    During the Apache 2.0/2.2 build process, the needed OpenSSL files (libeay32.dll, ssleay32.dll, openssl.exe) are placed into C:\www\Apache[2,22]\bin, except openssl.cnf. openssl.cnf is the OpenSSL configuration file. This file needs be copied manually.

    From directory. \httpd-2.x.x\srclib\openssl\apps copy file openssl.cnf to C:\www\Apache22\bin (2.2) or C:\www\Apache22\bin (2.0) [note that .cnf file extensions are invisible, by default, on Windows 2000/XP]

    Apache v2.x (win32) file ssl.conf contains a syntax problem that needs to be addressed.

    Change 'SSLMutex file:logs/ssl_mutex' under ssl.conf to 'SSLMutex default' [the default 'file:logs/ssl_mutex' option is not available under win32]

    Update Configuration Files

    Now that the Apache httpd Web-Server has been successfully built -- [before proceeding with startup] configuration file httpd.conf will need to be updated (for mod_deflate and other changes) and an SSL Private/Public Key-Pair will need to be created (for mod_ssl).

    Note that if "localhost" will be used, make sure that file %SystemRoot%\system32\drivers\etc\hosts contains line.

    127.0.0.1 <tab> localhost

    mod_deflate requires several additions and updates to be made to httpd.conf, the Apache 2.0/2.2 configuration file.

    Open C:\www\Apache[2,22]\conf\httpd.conf, add.

    The default Apache DocumentRoot/Webroot is set to. \Apache22\htdocs (for 2.2) or. \Apache2\htdocs (for 2.0) -- our Guides and our Web-Server Suite has this changed to \www\webroot -- update DocumentRoot if you are also going to use our other Guides. Note that when testing Apache, you will need to make/copy index.html and/or other files into the new directory, as it will be empty.

    Open C:\www\Apache[2,22]\conf\httpd.conf.

    Locate line DocumentRoot "/www/Apache[2,22]/htdocs". replace with.

    DocumentRoot "/www/webroot"

    Locate line <Directory "/www/Apache[2,22]/htdocs">. replace with.

    <Directory "/www/webroot">

    Startup and Operation

    Executables 'httpd.exe' (for 2.2) and 'apache.exe' (for 2.0) are located under directory 'C:\www\Apache22\bin' (for 2.2) or 'C:\www\Apache2\bin' (for 2.0) - which should be included into the System PATH. If this dir is not in the PATH, 'httpd.exe' or 'apache.exe' should be run from a command line that is under 'C:\www\Apache[2,22]\bin'.

    Install the 'Apache2' Service.

    Using Apache HTTP Server on Microsoft Windows - Apache HTTP Server Version 2

    Using Apache HTTP Server on Microsoft Windows

    Available Languages: en | ko

    This document explains how to install, configure and run Apache 2.2 under Microsoft Windows. If you have questions after reviewing the documentation (and any event and error logs), you should consult the peer-supported users' mailing list .

    Operating System Requirements

    Running Apache on Windows 9x is ignored by the developers, and is strongly discouraged. On Windows NT 4.0, installing Service Pack 6 is required. Apache HTTP Server versions later than 2.2 will not run on any operating system earlier than Windows 2000.

    Downloading Apache for Windows

    The Apache HTTP Server Project itself does not provide binary releases of software, only source code. Individual committers may provide binary packages as a convenience, but it is not a release deliverable.

    If you cannot compile the Apache HTTP Server yourself, you can obtain a binary package from numerous binary distributions available on the Internet.

    Popular options for deploying Apache httpd, and, optionally, PHP and MySQL, on Microsoft Windows, include:

    Installing Apache for Windows

    You need Microsoft Installer 2.0 or above for the installation to work. For Windows NT 4.0 and 2000 refer to Microsoft's article KB 292539. Windows XP and later do not require this update. The Windows 98/ME installer engine appears to no longer be available from Microsoft, and these instructions no longer detail such prerequisites.

    Note that you cannot install two versions of Apache 2.2 on the same computer with the binary installer. You can, however, install a version of the 1.3 series and a version of the 2.2 series on the same computer without problems. If you need to have two different 2.2 versions on the same computer, you have to compile and install Apache from the source .

    Run the Apache .msi file you downloaded above. The installation will ask you for these things:

    Network Domain. Enter the DNS domain in which your server is or will be registered in. For example, if your server's full DNS name is server.mydomain.net. you would type mydomain.net here.

    Server Name. Your server's full DNS name. From the example above, you would type server.mydomain.net here.

    Administrator's Email Address. Enter the server administrator's or webmaster's email address here. This address will be displayed along with error messages to the client by default.

    For whom to install Apache Select for All Users, on Port 80, as a Service - Recommended if you'd like your new Apache to listen at port 80 for incoming traffic. It will run as a service (that is, Apache will run even if no one is logged in on the server at the moment) Select only for the Current User, on Port 8080, when started Manually if you'd like to install Apache for your personal experimenting or if you already have another WWW server running on port 80.

    The installation type. Select Typical for everything except the source code and libraries for module development. With Custom you can specify what to install. A full install will require about 13 megabytes of free disk space. This does not include the size of your web site(s).

    Where to install. The default path is C:\Program Files\Apache Software Foundation under which a directory called Apache2.2 will be created by default.

    During the installation, Apache will configure the files in the conf subdirectory to reflect the chosen installation directory. However, if any of the configuration files in this directory already exist, they will not be overwritten. Instead, the new copy of the corresponding file will be left with the extension .default. So, for example, if conf\httpd.conf already exists, it will be renamed as conf\httpd.conf.default. After the installation you should manually check to see what new settings are in the .default file, and if necessary, update your existing configuration file.

    Also, if you already have a file called htdocs\index.html. it will not be overwritten (and no index.html.default will be installed either). This means it should be safe to install Apache over an existing installation, although you would have to stop the existing running server before doing the installation, and then start the new one after the installation is finished.

    After installing Apache, you must edit the configuration files in the conf subdirectory as required. These files will be configured during the installation so that Apache is ready to be run from the directory it was installed into, with the documents server from the subdirectory htdocs. There are lots of other options which you should set before you really start using Apache. However, to get started quickly, the files should work as installed.

    Advanced Installation Topics

    One feature of the installer, "Build Headers and Libraries", can be ignored by most users, but should be installed if compiling third party modules. The "APR Iconv Code Pages" can similarly be omitted by most users, unless using mod_charset_lite or a third party module which relies on APR internationalization features.

    There are requests to ship a .zip file from time to time. There is no point in the ASF consuming additional storage, mirroring and bandwidth for this purpose, because the .msi installer allows the installation artifacts to all be unpacked using the msiexec /a network installation option. Using this command against any .msi will result in an exploded tree of all of the individual files and components.

    The installation options above can be customized by users familiar with msiexec.exe options and silent installation. The actual installer sources are available in the httpd/httpd/win32-msi/ tree of the httpd project subversion respository. For reference, some of the more common variables which may be modified are;

    • AgreeToLicense (toggle to "Yes")
    • ALLUSERS (choose between Null and "1")
    • ApplicationUsers (toggle to "OnlyCurrentUser")
    • EXISTING_APACHE_SERVICE_PATH
    • INSTALLDIR (default "ProgramFilesFolder\Apache Software Foundation\Apache2.2\")
    • INSTALLLEVEL (default "100", refer to list below)
    • RESOLVED_WINSOCK2 (toggle to "1")
    • SERVERADMIN
    • SERVERDOMAIN
    • SERVERNAME
    • SERVERPORT (default "80")
    • SERVERSSLPORT (default "443")
    • SERVICEINTERNALNAME (default "Apache2.2", no spaces!)
    • SERVICENAME (default "Apache2.2", include spaces)
    • SetupType (default "Typical")

    The installation level of various features, which may be individually toggled, include;

    • Apache (1, base Apache HTTP Server 2.2 feature)
    • ApacheDocs (11, Apache Documentation)
    • ApacheMonitoring (41, Apache Service Taskbar Icon)
    • ApacheRuntime (1, Apache Runtime)
    • BuildFiles (101, Build Headers and Libraries)
    • Iconv (21, APR Iconv Code Pages)
    • OpensslBin (31, OpenSSL Runtime)
    • SslBin (41, Ssl Binaries)
    Customizing Apache for Windows

    Apache is configured by the files in the conf subdirectory. These are the same files used to configure the Unix version, but there are a few different directives for Apache on Windows. See the directive index for all the available directives.

    The main differences in Apache for Windows are:

    Because Apache for Windows is multithreaded, it does not use a separate process for each request, as Apache can on Unix. Instead there are usually only two Apache processes running: a parent process, and a child which handles the requests. Within the child process each request is handled by a separate thread.

    The process management directives are also different:

    MaxRequestsPerChild. Like the Unix directive, this controls how many requests (actually, connections) which a single child process will serve before exiting. However, unlike on Unix, a replacement process is not instantly available. Use the default MaxRequestsPerChild 0. unless instructed to change the behavior to overcome a memory leak in third party modules or in-process applications.

    Warning: The server configuration file is reread when a new child process is started. If you have modified httpd.conf. the new child may not start or you may receive unexpected results.

    ThreadsPerChild. This directive is new. It tells the server how many threads it should use. This is the maximum number of connections the server can handle at once, so be sure to set this number high enough for your site if you get a lot of hits. The recommended default is ThreadsPerChild 150. but this must be adjusted to reflect the greatest anticipated number of simultaneous connections to accept.

    The directives that accept filenames as arguments must use Windows filenames instead of Unix ones. However, because Apache may interpret backslashes as an "escape character" sequence, you should consistently use forward slashes in path names, not backslashes.

    While filenames are generally case-insensitive on Windows, URLs are still treated internally as case-sensitive before they are mapped to the filesystem. For example, the <Location>. Alias. and ProxyPass directives all use case-sensitive arguments. For this reason, it is particularly important to use the <Directory> directive when attempting to limit access to content in the filesystem, since this directive applies to any content in a directory, regardless of how it is accessed. If you wish to assure that only lowercase is used in URLs, you can use something like:

    RewriteEngine On

    RewriteMap lowercase int:tolower

    RewriteCond % [A-Z]

    RewriteRule (.*) $ [R,L]

    When running, Apache needs write access only to the logs directory and any configured cache directory tree. Due to the issue of case insensitive and short 8.3 format names, Apache must validate all path names given. This means that each directory which Apache evaluates, from the drive root up to the directory leaf, must have read, list and traverse directory permissions. If Apache2.2 is installed at C:\Program Files, then the root directory, Program Files and Apache2.2 must all be visible to Apache.

    Apache for Windows contains the ability to load modules at runtime, without recompiling the server. If Apache is compiled normally, it will install a number of optional modules in the \Apache2.2\modules directory. To activate these or other modules, the new LoadModule directive must be used. For example, to activate the status module, use the following (in addition to the status-activating directives in access.conf ):

    LoadModule status_module modules/mod_status.so

    Information on creating loadable modules is also available.

    Apache can also load ISAPI (Internet Server Application Programming Interface) extensions such as those used by Microsoft IIS and other Windows servers. More information is available. Note that Apache cannot load ISAPI Filters, and ISAPI Handlers with some Microsoft feature extensions will not work.

    When running CGI scripts, the method Apache uses to find the interpreter for the script is configurable using the ScriptInterpreterSource directive.

    Since it is often difficult to manage files with names like .htaccess in Windows, you may find it useful to change the name of this per-directory configuration file using the AccessFilename directive.

    Any errors during Apache startup are logged into the Windows event log when running on Windows NT. This mechanism acts as a backup for those situations where Apache is not yet prepared to use the error.log file. You can review the Windows Application Event Log by using the Event Viewer, e.g. Start - Settings - Control Panel - Administrative Tools - Event Viewer.

    Running Apache as a Service

    You can install Apache as a service automatically during the installation. If you chose to install for all users, the installation will create an Apache service for you. If you specify to install for yourself only, you can manually register Apache as a service after the installation. You have to be a member of the Administrators group for the service installation to succeed.

    Apache comes with a utility called the Apache Service Monitor. With it you can see and manage the state of all installed Apache services on any machine on your network. To be able to manage an Apache service with the monitor, you have to first install the service (either automatically via the installation or manually).

    You can install Apache as a Windows NT service as follows from the command prompt at the Apache bin subdirectory:

    httpd.exe -k install

    If you need to specify the name of the service you want to install, use the following command. You have to do this if you have several different service installations of Apache on your computer. If you specify a name during the install, you have to also specify it during any other -k operation.

    httpd.exe -k install -n "MyServiceName"

    If you need to have specifically named configuration files for different services, you must use this: