Разное

Настройка apache: Настройка виртуальных хостов на Apache для начинающих / Песочница / Хабр

Настройка виртуальных хостов на Apache для начинающих / Песочница / Хабр

В прошлых статьях мы установили и настроили на локальном компьютере сервер Apache. В принципе, на этом можно было бы остановиться, так как сервер находится в рабочем состоянии и его можно спокойно использовать в работе. Но, по личному опыту, могу сказать, что использование только одного хоста localhost не очень удобно при разработке нескольких сайтов, так как для каждого сайта нужно будет создавать в каталоге localhost отдельный каталог и со временем в ней (папке localhost) будет очень трудно разобраться и что-то найти. Да и при тестировании разрабатываемого проекта гораздо удобнее набирать в браузере адрес вида test, чем localhost/test. Поэтому мы приступаем к настройке виртуальных хостов на локальном сервере.

Вообще, существует два способа конфигурирования виртуальных хостов: на основе имени и на основе IP-адреса. Но, так как мы настраиваем локальный сервер и у нас только один IP (кстати, для локалки он 127.0.0.1), то вариант с привязкой к IP нам не подходит и мы будем рассматривать вариант с привязкой к имени.

В прошлой статье я уже упоминал, что в файле конфигурации httpd.conf сервера есть строчка Include conf/extra/httpd-vhosts.conf. Мы ее уже раскомментировали, поэтому собственно и переходим к этому файлу. Найти его можно в папке Apache/conf/extra/.

Начнем рассматривать содержимое файла.

Первая директива – это NameVirtualHost *:80 привязывает виртуальные хосты, указываемы далее, к именам сайтов указанных в секциях <VirtualHost …>. Здесь вместо звездочки можно вписать IP 127.0.0.1, но тогда во всех секциях <VirtualHost> нужно будет указать то же самый IP. Принцип работы этой директивы заключается в том, что при обращении, допустим, к адресу localhost, сервер проверяет, соответствует ли входящий адрес и порт, описанным в секциях VirtualHost и имеется ли запись 127.0.0.1:80 в директиве NameVirtualHost. Если соответствует, то он перебирает секции VirtualHost, в заголовках которых указан входящий адрес. Таким образом, запрос 127.0.0.1:80 будет распределяться только между виртуальными хостами, в которых он указан.

Дальше в файле идут секции VirtualHost. Как видно из названия, каждая секция описывает настройки каждого виртуального хоста. Обязательно должна быть хотя бы одна такая секция, которая описывает настройки для localhost.
<VirtualHost *:80>

DocumentRoot “D:/server/localhost/www”

ServerName localhost

ErrorLog “D:/server/logs/localhost.error.log”

CustomLog “D:/server/logs/localhost.access.log” common

Директива DocumentRoot в этой секции указывает на папку, к которой будет происходить обращение при вызове адреса localhost.
ServerName как раз содержит имя нашего виртуального хоста, то есть его адрес. Сюда можно вписывать как адреса вида localhost, test, site, так и адреса localhost.ru, test.com, www.site.org.

В ErrorLog и CustomLog мы указываем, где будут хранится логи этого виртуального хоста. Обратите внимание, имеет смысл для каждого хоста добавлять в имя файла лога название этого хоста, чтобы в будущем было легко найти лог требуемого хоста. Эти директивы можно и не указывать, но тогда логи этого виртуального хоста будут храниться в общих логах сервера.

В таком виде секция виртуального хоста уже работоспособна и на этом можно остановиться. Но можно добавить такие директивы как:

  • ServerAdmin [email protected] – адрес электронки администратора виртуального хоста
  • ServerAlias www.site.ru – зеркало хоста

Кроме того, можно добавить секции для индивидуальной настройки хоста:

<IfModule alias_module>

ScriptAlias /cgi-bin/ “d:/server/host_name/cgi-bin”

Создает ссылку на папку скриптов cgi-bin для хоста host_name.

<Directory “d:/server/host_name/www”>

Options Indexes Includes FollowSymLinks

AllowOverride All

Order allow,deny

Allow from all

Настройки директории хоста host_name, их мы разбирали в прошлой статье.

После настройки файла httpd-vhosts.conf проверим правильность его конфигурации. В каталоге D:\server\Apache\bin\ создайте файл httpd-S.cmd с содержимым:
“D:\server\Apache\bin\httpd.exe” –S

pause

После запуска этого файла вы увидите окно с отчетом о проверке, Syntax OK в конце говорит о том, что все настройки в порядке.

Теперь нужно прописать созданные хосты в файл C:\Windows\system32\drivers\etc\hosts. Для этого открываем его текстовым редактором и вносим следующие записи:

127.0.0.1 www.host1.ru host1.ru #Чтобы не набирать www перед именем сайта, создаем зеркало

127.0.0.1 www.host2 host2 #Можно и без .ru создавать хосты

127.0.0.1 host3 #Самый распространенный вариант для локалки

127.0.0.1 localhost # Обычно уже указано, проследите чтобы случайно не удалили и не закомментировали.

Сохраните файл и перезапустите Apache. Попробуйте разместить в каталогах созданных вами виртуальных хостов какие-нибудь тестовые файлы (например index.html) и из браузера открыть хосты по адресам, указанным в директории ServerName каждого хоста.

Если вам приходится часто создавать виртуальные хосты и не очень хочется каждый раз редактировать все эти файлы и перезапускать Apache вручную, создайте в папке сервера (D:\server\) файл createVH.cmd с таким содержимым:

@cls

@rem Получаем текущую папку. Если у вас структура папок сервера как у меня, но он установлен, например на другом диске, укажите здесь вместо %~dp0 путь с нему (например, D:\server\) косая черта в конце обязательна.

@set server_path=%~dp0

:dir_exist

@set /P new_dir="Enter new VHost name:"

@set /P ip_add="Enter your IP address:"

@ if exist %server_path%%new_dir% echo "VHost %new_dir% already exist. Please re-enter Vhost name."

@ if exist %server_path%%new_dir% goto dir_exist

@md %server_path%%new_dir%

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

@set outputfile=%server_path%Apache\conf\extra\httpd-vhosts.conf

@echo. >> %outputfile%

@echo ^<VirtualHost %ip_add%:80^> >> %outputfile%

@echo ServerName %new_dir% >> %outputfile%

@echo DocumentRoot «%server_path%%new_dir%» >> %outputfile%

@echo ErrorLog «%server_path%logs\%new_dir%.error.log» >> %outputfile%

@echo CustomLog «%server_path%logs\%new_dir%.access.log» common >> %outputfile%

@echo ^</VirtualHost^> >> %outputfile%

@if %ip_add%==* set ip_host=127.0.0.1

@if not %ip_add%==* set ip_host=%ip_add%

@set hostfile=%windir%\system32\drivers\etc\hosts

@echo. >> %hostfile%

@echo %ip_host% %new_dir% >> %hostfile%

@set htmlfile=%server_path%%new_dir%\index.html

@echo ^<html^> >> %htmlfile%

@echo ^<head^> >> %htmlfile%

@echo ^<title^>%new_dir%^</title^> >> %htmlfile%

@echo ^</head^> >> %htmlfile%

@echo ^<body^> >> %htmlfile%

@echo %new_dir% >> %htmlfile%

@echo ^</body^> >> %htmlfile%

@echo ^</html^> >> %htmlfile%

@rem Здесь путь до самого сервера, если у вас другой, поменяйте

@start %server_path%Apache\bin\httpd.exe -k restart

Теперь для создания хоста просто запустите этот файл, впишите в ответ имя нового хоста и IP, который будет указываться в секции VirtualHost файла httpd-vhosts.conf. По окончанию работы программа сама закроется. Вам останется только проверить созданный хост, набрав в адресной строке браузера имя, которое вы вписали в программу. Если все успешно прошло, то вы увидите страницу с именем нового хоста.

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

Установка Apache HTTP Server 2.2.22

Главная страница / Документация / Инструментарий веб-разработчика /

Статья описывает процесс установки и первоначальной настройки на локальном компьютере, работающим под операционной системой Windows XP, прекрасно зарекомендовавшей себя связки программ, используемых при создании, как крупных, так и средних веб-проектов: Apache, MySQL, PHP и phpMyAdmin.

Авторы: Виктор Волков, Иван Шумилов

Содержание:


Сайт разработчика: http://www.apache.org/
Дистрибутив (Apache 2.2 Win32 Binary): http://www.apachelounge.com/download/
Прямая ссылка: httpd-2.2.22-win32.zip

Вот он – великий и ужасный. Сгубивший на своём веку множество начинающих веб-разработчиков, сложивших головы на настройке его конфигурационных файлов. 🙂 Но мы с вами люди, крепких нервов и стальных желудков — поэтому, поехали.

Начальная установка и настройка

Распакуйте архив дистрибутива в каталог C:\Apache2.

Откройте в текстовом редакторе файл «C:\Apache2\conf\httpd.conf», являющийся основным конфигурационным файлом сервера Apache.

Ну а теперь держитесь. Женщинам, старикам и детям просьба – дальше не читать. За психическое состояние людей, дочитавших статью до конца – авторы ответственности не несут. 🙂

Правка файла httpd.conf

  1. Для загрузки модуля mod_rewrite найдите и раскомментируйте (уберите в начале строки символ «#») данную строку:
    LoadModule rewrite_module modules/mod_rewrite.so
  2. Для загрузки PHP интерпретатора, в конец блока загрузки модулей необходимо добавить строку:
    LoadModule php5_module «C:/php/php5apache2_2.dll»
  3. Определите каталог содержащий конфигурационный файл PHP, добавив ниже следующую строку:
    PHPIniDir «C:/php»
  4. Найдите и раскомментируйте строку:
    ServerName www.example.com:80
    Отредактируйте ее следующим образом установив изначальное имя сервера:
    ServerName localhost:80
  5. Найдите строку:
    DocumentRoot «c:/Apache2/htdocs»
    Назначьте корневую директорию управления сайтами (немного позже мы ее создадим):
    DocumentRoot «C:/apache»
  6. Найдите данный блок:
    <Directory />
       Options FollowSymLinks
       AllowOverride None
       Order deny,allow
       Deny from all
    </Directory>
    И замените его на нижеследующий:
    <Directory />
       Options Includes Indexes FollowSymLinks
       AllowOverride All
       Allow from all
    </Directory>
  7. Удалите или закомментируйте первоначальный блок управления директориями (он нам не понадобится), который без комментариев выглядит примерно так:
    <Directory «c:/Apache2/htdocs»>
       Options Indexes FollowSymLinks
       AllowOverride None
       Order allow,deny
       Allow from all
    </Directory>
  8. Найдите блок:
    <IfModule dir_module>
       DirectoryIndex index.html
    </IfModule>
    Замените его на:
    <IfModule dir_module>
       DirectoryIndex index.html index.htm index.shtml index.php
    </IfModule>
  9. Найдите строку:
    ErrorLog «logs/error.log»
    Замените на нижеследующую (в этом случае просматривать глобальный файл ошибок сервера будет удобнее):
    ErrorLog «C:/apache/error.log»
  10. Найдите строку:
    CustomLog «logs/access.log» common
    Замените на:
    CustomLog «C:/apache/access.log» common
  11. Для работы SSI (включения на стороне сервера) следующие строки, находящийся в блоке <IfModule mime_module>, необходимо найти и раскомментировать:
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
  12. Добавьте ниже, в тот же блок <IfModule mime_module>, две строки:
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
  13. И, наконец, найдите и раскомментируйте строки:
    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

Сохраните изменения и закройте файл «httpd.conf»

Теперь откройте файл «C:\Apache2\conf\extra\httpd-vhosts.conf» и произведите в нем следующие изменения.

Существующие блоки примеров виртуальных хостов необходимо удалить, и вставить только нижеследующее:
NameVirtualHost *:80

<VirtualHost *:80>
   DocumentRoot «C:/apache/localhost/www»
   ServerName localhost
   ErrorLog «C:/apache/localhost/error.log»
   CustomLog «C:/apache/localhost/access.log» common
</VirtualHost>

Сохраните изменения и закройте файл «httpd-vhosts.conf»

Настройка конфигурационныйх файлов завершена, теперь необходимо установить сервис Apache2.2.

Установка сервиса Apache2.2 в картинках

Запускаем командную строку и вводим в ней «C:\Apache2\bin\httpd.exe -k install»

Вот что мы должны увидеть при успешной установке сервиса Apache2.2.

Если все прошло успешно, движемся дальше — устанавливаем ручной запуск сервиса Apache2.2 для чего проходим путь: «Start» («Пуск») → «Control Panel» («Панель управления») → «Administrative Tools» («Администрирование») → «Services» («Службы»), в открывшемся окне управления служб выбираем строку «Apache2.2» и делаем на ней двойной щелчок, после чего во вкладке «General» («Общие») выбираем ручной запуск сервиса — «Startup type: Manual» («Тип запуска: вручную»). Это необходимо сделать для того, чтобы лишние службы не загружали систему. Учитывая, что домашний компьютер используется не только для веб-разработок, но и для многих других нужд, ручной запуск и остановка, непостоянно используемых сервисов, является наиболее приемлемым.

Создание структуры каталогов виртуальных хостов

В корне диска необходимо создать каталог «apache» — в нем будут лежать ваши виртуальные хосты (домены), глобальный файл журнала ошибок «error.log» (создается программой при первом запуске, автоматически), глобальный файл доступа «access.log» (создается автоматически). В каталоге «apache» создаем еще одну пустую папку — «localhost», в которой, в свою очередь, создаем папку «www», именно в последней и надо будет держать наше добро в виде локальных скриптов. Такая, казалось бы странная структура каталогов, продиктована схожей схемой построения каталогов в системах Unix, и призвана упростить в дальнейшем ее понимание и использование.

Пример создания виртуального хоста

При необходимости установки собственных виртуальных хостов сделайте следующее:

Откройте файл «httpd-vhosts.conf», и создайте в нём блок, примерно, следующего содержания:
<VirtualHost *:80>
   # Папка, в которой будет корень вашего хоста.
   DocumentRoot «C:/apache/test.ru/www»
   # Домен по которому вы сможете обращаться к виртуальному хосту.
   ServerName test.ru
   # Алиас (добавочное имя) домена.
   ServerAlias www.test.ru
   # Файл, в который будут записываться ошибки.
   ErrorLog «C:/apache/test.ru/error.log»
   # Файл журнала доступа к хосту.
   CustomLog «C:/apache/test.ru/access.log» common
</VirtualHost>

Затем в каталоге «apache», создайте папку «test.ru» (прямо так, с точкой), в которой, в свою очередь, создайте папку «www».

Следующий шаг создания виртуального хоста – это изменение файла C:\WINDOWS\system32\drivers\etc\hosts операционной системы. Откройте данный файл и добавьте в него две строки:
127.0.0.1 test.ru
127.0.0.1 www.test.ru

Теперь запустите сервер Apache выполнив в командной строке «C:\Apache2\bin\httpd.exe -k start», откройте браузер, введите в адресной строке «test.ru» или «www.test.ru» и вы окажетесь в своем виртуальном хосте. Только будьте внимательны, теперь вы сможете попасть на оригинальный сайт с именем виртуального хоста («www.test.ru», если таковой существует), только закомментировав либо удалив строку: «127.0.0.1 www.test.ru», в вышеупомянутом файле «hosts».

Документация Apache, при запущенном сервере, доступна по адресу http://localhost/manual/

Остановить работу Apache можно выполнив в командной строке «C:\Apache2\bin\httpd.exe -k stop». При необходимости перезагрузить Apache, выполните в командной строке «C:\Apache2\bin\httpd.exe -k restart».

Установка и настройка веб-сервера Apache – завершена.

Создание пакетных файлов для запуска и остановки сервисов

Согласитесь, что вручную редактировать файл «hosts» при каждом запуске сервисов – это не удобно, поэтому для более удобного, одновременного запуска сервисов Apache, MySQL, и изменения файла «hosts» мы создадим два пакетных файла: на запуск и остановку, которые будут выполнять всю рутинную работу автоматически.

При использовании виртуальных хостов необходимо создать в директории C:\apache два файла: vhosts-off.txt – содержащий изначальное содержимое файла «hosts» и vhosts-on.txt – содержащий все виртуальные хосты. Обратите внимание, что при создании новых виртуальных хостов вам необходимо будет добавлять их в файл vhosts-on.txt, а не в C:\WINDOWS\system32\drivers\etc\hosts. Посмотрите на примеры ниже.

Файл vhosts-off.txt (может содержать одну единственную строку):
127.0.0.1 localhost

Пример файла vhosts-on.txt с виртуальными хостами www.test.ru и test.ru:

127.0.0.1 localhost
127.0.0.1 www.test.ru
127.0.0.1 test.ru

В той же директории C:\apache, создайте два пакетных файла: start-webserver.bat – для запуска
сервисов и подмены файла «hosts», и stop-webserver.bat – для остановки сервисов и очистки файла
«hosts».

Файл запуска start-webserver.bat:

@echo off
echo.
if not exist C:\apache\vhosts-on.txt goto no_vhosts
echo Create virtual hosts:
copy /v /y C:\apache\vhosts-on.txt C:\WINDOWS\system32\drivers\etc\hosts
echo.
:no_vhosts
NET start Apache2.2
NET start MySQL

Файл остановки stop-webserver.bat:

@echo off
echo.
if not exist C:\apache\vhosts-off.txt goto no_vhosts
echo Restore hosts file:
copy /v /y C:\apache\vhosts-off.txt C:\WINDOWS\system32\drivers\etc\hosts
echo.
:no_vhosts
NET stop Apache2.2
NET stop MySQL

В случае если вы не используете виртуальные хосты или хотите запустить сервисы без подмены файла «hosts», просто уберите из директории C:\apache файлы vhosts-on.txt и vhosts-off.txt.

Одновременно с сервисами удобно запускать программу Apache Monitor, отображающую в системном лотке состояние сервера Apache, для чего можно создать еще один пакетный файл «start-webserver-monitor.bat», содержание которого аналогично файлу «start-webserver.bat» с добавлением в самый конец следующей строки:

start «» «C:\Apache2\bin\ApacheMonitor.exe»

Теперь для запуска всего инструментария вам понадобится запустить файл «start-webserver-monitor.bat», или «start-webserver.bat», а для остановки «stop-webserver.bat». При желании вы можете переименовать эти файлы, переместить их в любое другое место из папки «C:\apache», либо создать на данные файлы ярлыки, например, на рабочий стол.


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

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

  1. Скачайте Web-сервер Apache
  2. Установите Web-сервер Apache
  3. Настройте файла конфигурации Apache mime.types
  4. Настройте файла httpd.conf
  5. Проверте Web-сервера
  6. Проверте выполнение CGI-программы

Сервер Apache вы можете загрузить с узла компании по адресу http://www.apache.org. Щелкните на ссылке с именем download и выберите самую повую версия сервера для платформы Win32. Имя файла будет скорее всего вроде apache_1_3_9_win32.exe.

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

Рекомендуем установить сервер так (шесть шагов):

  1. Определитесь с директорией, в которую Вы будете устанавливать Apache. Все дальнейшие рассуждения основаны на том, что Вы выбрали для этой цели такой каталог: f:usrlocalapache Если диска F: у Вас нет, или если Вы не хотите его захламлять, советуем сделать одно из трех:
    1. Создайте диск F: с помощью какой-нибудь программы для виртуальных разделов (например, с помощью встроенной в Windows 95/98 программы DriveSpace). Это самое лучшее решение, и с точки зрения экономии памяти, и с точки зрения быстродействия. Ведь что такое Web-сайт, как не набор очень небольших файлов? А DriveSpace как раз и оптимизирует работу с такими файлами.
    2. Сделайте виртуальный диск F:. Для этого создайте где-нибудь на любом диске директорию, которая в будущем будет являться корневой для диска F:. Предположим, Вы выбрали C:INTERNET. Далее, в начале файла c:autoexec.bat пропишите такую строку:

      и перезагрузите компьютер. У вас должен появиться виртуальный пустой диск F:.

      ВНИМАНИЕ: имеются сведения, что в Windows 95/98 есть ошибка, в результате которой иногда subst-пути «сами по себе» преобразуются в абсолютные. То есть, например, иногда в рассмотренном выше примере команды

      f:
      cd
      cd
      dir

      (а точнее, команда dir в своем заголовке) ошибочно выведут, что текущая директория C: (а не F:, как это должно быть). Указанная ошибка чаще всего проявляется в неработоспособности Perl-транслятора. Так что лично мы не рекомендуем Вам использовать subst. Вместо этого воспользуйтесь пунктом 1.

    3. Наконец, Вы можете всего этого не делать и поставить Apache на любой другой диск, только тогда Вам придется немного тяжелее при выполнении всех остальных действий. Нужно будет все указываемые пути заменять на Ваши собственные, а это крайне неприятно. Еще раз настоятельно рекомендуем воспользоваться диском F:.

    Рекомендуем все же разместить Apache в указанном в начале каталоге, так как он максимально соответствует каталогу для реального Web-сервера Интернета. Ведь чем ближе в плане конфигурации мы будем к такому серверу, тем лучше и эффективнее сможем работать.

  2. Запустите только что скачанный файл. В появившемся диалоге нажмите кнопку Yes, а затем — кнопку Next.
  3. Теперь нажмите Browse. Вручную задайте директорию для установки: f:usrlocalapache и нажмите кнопку OK.
  4. Выберите тип установки — Сustom и уберите флажок Source Code (если, конечно, не хотите посмотреть исходные тексты Apache). Этим Вы сэкономите себе 3 Мбайта.
  5. Нажмите Next и подождите, пока будут копироваться файлы Apache.
  6. На запрос о перезагрузке компьютера ответьте «Перезагрузить».

Поздравляем — Apache установлен! Теперь самое неприятное — его настройка.

  1. Откройте директорию f:usrlocalapacheconf. Откройте находящийся там файл mime.types.
  2. Найдите в нем такую строчку:

    Измените ее на

    text/html      html htm shtml shtm sht

    Следует заметить, что если Вы по каким-то причинам не хотите портить файл mime.types, то можно вместо этого прописать в файле httpd.conf (см. ниже) строки вида

    AddType text/html html htm shtml shtm sht

Внимание! Это — самый ответственный момент установки. Просим соблюдать инструкции БУКВАЛЬНО.

  1. Откройте директорию f:usrlocalapacheconf Откройте находящийся там файл httpd.conf. Это — единственный файл, который Вам осталось настроить. Вам предстоит найти и изменить в нем некоторые строки, а именно те, о которых упоминается далее. Во избежание недоразумений не трогайте все остальное. Следует заметить, что в нем каждый параметр сопровождается несколькими строками комментариев, разобраться в которых с первого раза довольно тяжело. Поэтому не обращайте на них внимание.
  2. В поле ServerAdmin укажите Ваш E-mail адрес, который будет показываться в сообщениях об ошибке сервера. Например:
  3. В поле ServerName напишите любое слово — на работе это не сказывается, например:

    Только не забудьте раскомментировать поле ServerName, то есть убрать символ «#» перед этим параметром (по умолчанию он закомментирован)!

  4. В поле DocumentRoot укажите ту директорию, в которой будут храниться Ваши html-файлы, например:

    Разумеется, можете указать и любую другую директорию, если хотите. В любом случае, не забудьте ее создать, лучше сделайте это прямо сейчас!

  5. Найдите блок, начинающийся строкой <Directory /> и заканчивающийся </Directory> (вообще, такие блоки обозначают установки для заданной директории и всех ее поддиректорий). Его нужно изменить на:
    <Directory />
   Options Indexes Includes
   AllowOverride All
 </Directory>

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

  6. Найдите аналогичный блок, начинающийся <Directory «f:/usr/local/apache/htdocs»> и заканчивающийся </Directory>. Там будет много комментариев, не обращайте на них внимание. Этот блок следует заменить на:
    <Directory "f:/www">
   Options Indexes Includes
   AllowOverride All
   Order allow,deny
   Allow from all
 </Directory>

    Это — установки для директории с Вашими html-документами. Если хотите, можете установить другую директорию, главное, чтобы она совпадала с той, которая прописана в параметре DocumentRoot

  7. Идем дальше. Установите UserDir, например так:

    Это будет директория, в которой хранились бы домашние страницы пользователей, если бы это был настоящий Web-сервер, а также корневые каталоги виртуальных хостов (см. ниже). Не забудьте также создать этот каталог.

  8. Установите DirectoryIndex так:
    DirectoryIndex index.htm index.html

    Это — так называемые файлы индекса, которые автоматически выдаются сервером при обращении к какой-либо директории, если не указано имя html-документа. В принципе, можно добавить сюда и другие имена, например, index.phtml, если Вы будите работать с PHP и т.д.

  9. Найдите и пропишите такой параметр:
    ScriptAlias /cgi-bin/ "f:/cgi-bin/"

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

    ScriptAlias /mycgi/ "f:/mycgidir/"

    Подобный параметр говорит Apache о том, что, если будет указан путь вида http://localhost/cgi-bin, то на самом деле следует обратиться к директории f:/cgi-bin.

  10. Теперь следует найти и настроить блок параметров, начинающийся с <Directory «f:/cgi-bin»> и заканчивающийся </Directory>. Это — установки для Вашей CGI-директории (если Вы установили для нее другое имя на предыдущем шаге, соответственно модифицируйте путь). Там должно быть:
    <Directory "f:/cgi-bin">
   AllowOverride All
   Options ExecCGI
 </Directory>
  11. Настройте следующий параметр:
    AddHandler cgi-script .bat .exe

    Это говорит Apache о том, что файлы с расширением .exe и .bat нужно рассматривать как CGI-скрипты.

  12. И последнее — установите:
    AddHandler server-parsed .shtml .shtm .sht

    Или, если Вы хотите, чтобы и обычные файлы html обрабатывались SSI, напишите так:

    AddHandler server-parsed .shtml .shtm .sht .html .htm

Поздравляем — Вы настроили свой Apache, и он должен уже работать! Для запуска сервера нажмите Пуск->Программы->Apache Web Server->Start Apache as console app, при этом появится окно, очень похожее на Сеанс MS-DOS, и ничего больше не произойдет. Не закрывайте его и не трогайте до конца работы с Apache.

Несколько слов о том, как можно упростить запуск и завершение сервера. В Windows можно назначить любому ярлыку функциональную комбинацию клавиш, нажав которые, Вы запустите этот ярлык. Так что щелкните правой кнопкой на панели задач, в контекстном меню выберите Свойства, затем Настройка меню и кнопку Дополнительно. В открывшемся Проводнике назначьте ярлыку Start Apache as console app комбинацию Ctrl+Alt+A, а ярлыку Shutdown Apache as console app — Ctrl+Alt+S

  • Проверка html: в директории f:/www с html-документами Apache создайте файл index.html. Теперь запустите браузер и наберите:
    http://localhost/index.html

    или просто

    Загрузится Ваш файл.

  • Проверка CGI: в директории f:/cgi-bin для CGI-скриптов создайте файл test.bat с таким содержанием:
    @echo off
 echo Content-type: text/html
 echo.
 echo.
 dir

    Теперь в браузере наберите:

    http://localhost/cgi-bin/test.bat

    В окне отобразится результат команды DOS dir. (Хотелось бы отметить, что указанный тест работает не на всех версиях Windows: иногда вместо того, чтобы выполнить файл test.bat, Apache выводит в браузер его содержимое. С чем это связано — не совсем ясно, однако, кажется, можно избавиться от указанной ошибки путем манипулирования с Реестром. Если у Вас test.bat не запускается, не расстраивайтесь: вряд ли Вы когда-нибудь будете писать скрипты в виде bat-файлов, тем более, что это несовместимо с Unix.)

  • Проверка SSI: аналогична проверке html. Используйте, например, директиву
    <!--#include virtual="/cgi-bin/test.bat"-->

Если bat-файлы Ваш Apache запускать не хочет (см. выше), то дождитесь установки Perl или PHP.

Если вы получили страницу с надпиьсю о правильной работе, вам нужно убедиться что сервер может выполнять CGI-программы. Для этого вы должны написать простую программу, поместить ее в правильный каталог и проверить, как она выполняется Web-сервером.

Ниже вы видите текст простой проверочной программы на языке Perl.

#!/usr/local/bin/perl
use CGI;
$query = new CGI;
print $query->header;

print "<html><head><title>Проверка</title></head>n";
print "<body>Проверка прошла успешно.</body></html>";

Скопируйте текст этой программы в Блокнот, сохраните его в файле test.pl и поместите этот файл в каталог cgi-bin корневого каталога вашего сервера. Первую строку в этой программе нужно изменить так, чтобы она отражала действительное положение интерпритатора Perl на вашем компьютере.

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

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

http://localhost/cgi-bin/test.pl

Если все работает правильно, вы должны увидеть в окне броузера страницу, HTML-код которой указан в операторах print. Результат выполнения этой программы вы можете увидеть кликнув тут. Русский текст может быть отображен броузером в неверной кодировке. Если это случилось, то в открывшемся окне вручную выставте кодировку Кирилица (Windows). Как устанавливать кодировку HTML-страницы возвращаемой CGI-программой, чтобы броузер ее всегда верно отображал, будет рассказано позже.

Эта программа проверяет правильность установки компонентов для CGI-программирования. В частности, при выполнении этой программы проверяется следующее.

  • Web-сервер настроен и сконфигурирован правильно и может выполнять CGI-программы.
  • Программа помещена в правильный каталог, сервер распознает файлы в этом каталоге как программы.
  • Интерпритатор Perl установлен и работает правильно; путь к программе интерпритатора правильно указан в первой строке.
  • Библиотеки, входящие в комплект поставки Perl, установлены правильно, в частности CGI.pm.

При написании статьи использовались материала сайта http://www.dklab.ru.

телеграм канал. Подпишись, будет полезно!

Как настроить сервер Apache на максимальную производительность

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

Работа веб-серверов может замедляться из-за вредоносных программ, больших объемов трафика или из-за неправильного распределения ресурсов. Есть два пути ускорения работы веб-сервера Apache:

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

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

Периодический аудит производительности и настройка Apache.

Позволяет найти уязвимости сервера и защитить их.

Настроить производительность Apache таким образом, чтобы она соответствовала объемам получаемого трафика. Таким образом можно добиться 50% ускорения работы.

Ускорить работу Apache можно на двух основных стадиях:

  • Во время компиляции – настройки при установке сервера.
  • Во время выполнения — установка параметров, влияющих на сервер во время его работы.

Нужно выбирать вариант установки Apache, исходя из ваших требований. Это поможет создать быстрый и эффективный веб-сервер.

В Apache функциональность реализуется путем добавления модулей. Они бывают двух типов: статические и динамические (общие).

Чтобы посмотреть список модулей, поддерживаемых вашим сервером, используйте команду apachectl -M. Статические модули компилируются в бинарные файлы httpd, а динамические загружаются непосредственно во время выполнения.

Статические и динамические модули: ключевые различия

Статические модулиДинамические модули
Компилируются в бинарные файлыДобавляются во время выполнения
Требуют перекомпиляции кодаПерекомпиляция не требуется
Быстро загружаютсяЗамедляют веб-сервер

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

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

Чтобы увеличить скорость работы и производительность, используйте минимальное количество динамических модулей, поскольку они уменьшают объем доступной памяти.

В Apache используются MPM (мульти-процессинговые модули), которые обрабатывают запросы, приходящие на сервер. Они прослушивают сетевые порты сервера, принимая запросы и создавая дочерние процессы.

MPM бывают двух типов: Prefork и Worker. В MPM Prefork каждый процесс httpd обрабатывает один сетевой запрос. Это более безопасно по сравнению с MPM Worker, но требует большего количества памяти и ресурсов.

MPM – Prefork и Worker

MPM PreforkMPM Worker
Один потокНесколько потоков
Использует больше ресурсовИспользует меньше памяти
ОтказоустойчивСправляется с большим трафиком

При использовании MPM Worker Apache работает в режиме многопоточного сервера, где каждый отвечает за свой запрос. Этот вариант подходит для обработки большего трафика при ограниченных мощностях сервера.

По умолчанию большинство установок Apache используют модуль Prefork. Он применяется для обработки больших объемов трафика. Вы можете проверить, какой модуль MPM использует ваш сервер при помощи следующей команды:

Определение типа MPM на вашем веб—сервере Apache

В Apache 2.4 появилась поддержка э MPM модуля Event, который может обрабатывать множественные запросы внутри одного потока. Поэтому он работает даже быстрее, чем модуль Worker.

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

Apache может тратить время на определение хоста каждого IP, с которого приходит запрос. Это замедляет обработку запроса, а также приводит к пустой трате ресурсов. Чтобы избежать этого, нужно отключить опцию HostnameLookups.

При настройке директив Allow from или Deny from используйте IP-адреса вместо доменных имён. Иначе будет осуществляться двойной поиск имени DNS, который уменьшит производительность сервера.

Если задана опция AllowOverride, то Apache попытается открыть файл .htaccess в каждой папке, которую он посещает. Эти дополнительные запросы к файловой системе увеличивают время отправки ответа с сервера.

Поэтому лучше отключить эту опцию. Если переопределение настроек в файлах .htaccess необходимо в определённой папке, нужно разрешить это только для данного каталога.

Настройка Apache FollowSymLinks сообщает серверу, что нужно проверять символические ссылки и проходить по ним. Если она имеет значение Off, Apache придётся выполнять дополнительные проверки, что замедлит его работу.

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

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

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

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

Настройка MaxClients устанавливает лимит количества одновременных запросов, которое может поддерживаться Apache. Если это значение слишком мало, запросы станут в очередь, и не будут обрабатываться.

Большое значение параметра может загрузить оперативную память и повлиять на скорость ответов Apache. Необходимо выбрать оптимально значение исходя из объёма доступной памяти и ресурсов, потребляемых процессом.

MaxSpareServers и MinSpareServers определяют количество дочерних процессов, которые будут находиться в состоянии ожидания обработки запросов. Эти параметры важны, потому что создание дочернего процесса отнимает ресурсы.

Если значение MinSpareServers слишком низкое, и на сервер поступает одновременно несколько запросов, Apache создаст дополнительные дочерние процессы. Это снижает возможность быстрого ответа на запрос клиента.

Значение MaxSpareServers не должно быть слишком большим. Так как стоящие в очереди на обработку дочерние процессы потребляют лишние серверные мощности. Нужно установить эти значения в оптимальном диапазоне, чтобы сбалансировать использование ресурсов и производительность.

Директива StartServers устанавливает количество дочерних серверных процессов, которые создаются при старте сервера. Если запросов много, а Apache часто перезагружается, нужно установить относительно большое значение.

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

KeepAlive используется для поддержки единого соединения для передачи данных веб-страницы. Благодаря чему не тратится время на создание нового подключения для каждого файла.

KeepAliveTimeout определяет время ожидания следующего запроса. Если значение большое, дочерние процессы могут расходовать ресурсы, ожидая следующего запроса. Оптимальное значение – 2-5 секунд для небольших объемов трафика и 10 секунд для высоконагруженных серверов.

Устанавливает время ожидания запроса от посетителя. При больших объемах трафика значение параметра должно быть не менее 120 секунд. Но лучше держать это значение минимальным. Это позволяет предотвратить излишнее расходование ресурсов.

Сжатие HTTP применяется для ускорения работы серверов Apache. Сервер применяет к телу ответа шифрование gzip или deflate перед тем, как отправить его клиенту. Затем клиент распаковывает полученные данные. Данные сжимаются только если браузер запрашивает сжатие. Сжатие HTTP включается в Apache с помощью модуля ‘mod_deflate’.

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

Модули mod_expires и mod_headers для настройки кэша через HTTP- заголовки, присылаемые с сервера. С помощью директив cache-control можно управлять правилами кэширования, чтобы ускорить работу Apache.

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

Процессы Apache, которые управляют динамическим контентом, потребляют от 3 до 20 Мб памяти. Статический контент требуют всего лишь 1Мб памяти. Процесс, управляющий динамическим контентом, при следующем запросе может предоставлять статический контент.

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

Например, можно использовать небольшой Apache в качестве frontend-сервера, предоставляющего статический контент. Запросы на динамический контент будут перенаправляться к другому серверу Apache со всеми необходимыми модулями.

Для подобного перенаправления запросов используются модули mod_proxy и mod_rewrite. Клиент не заметит разницы, и будет считать, что все запросы выполняются одним сервером.

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

Не менее важно оптимизировать сервер баз данных, чтобы избежать задержек в его работе. Также необходимо улучшить производительность PHP-страниц, используя механизм кэширования, такой как Zend OPcache.

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

Настройка производительности Apache – нелёгкое дело. Поэтому важно иметь чёткое понимание технических требований веб-сервера и принципа его работы.

Данная публикация представляет собой перевод статьи «How to speed up Apache webserver for maximum Performance» , подготовленной дружной командой проекта Интернет-технологии.ру

телеграм канал. Подпишись, будет полезно!

Пошаговая настройка Apache с выбором версий php + Nginx как reverse proxy (с mod_pagespeed) на ubuntu 16.04

В интернете кучу статей по настройке сервера, настройки Apache, Nginx и т.п. В данной статье будет пошагово настроен простой shared хостинг. Все операции производятся через консоль.

В посте будут решены и описаны следующий задачи:

1. Установка Apache + PHP

2. Возможность выбора версий PHP

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

4. Установка Nginx с модулем pagespeed от google

5. Настройка Nginx как reverse proxy

Все этапы будут содержать описание и пояснения. Сам пост писался больше для себя, чтобы не потерять порядок настройки, но будет очень полезным для новичков, которые начинают разбираться в администрировании сервера. В качестве сервера установлен Ubuntu 16.0.4 только с SSH.

ЭТАП 1 (Установка Apache + PHP)

Запускаем оболочку с root правами:

sudo -i

Устанавливаем apache:

apt install -y apache2

Ключ

 -y 

нужен для того чтобы в процессе установки, автоматически на все вопросы отвечал положительно. К примеру если выполнить:

 apt install apache2 

то в процессе установки нас спросят, действительно ли мы хотим установить.

Устанавливаем php (как mod_php)

 apt install -y php libapache2-mod-php 

На данном этапе у нас установиться php версии 7 как модуль apache.

ЭТАП 2 (Возможность выбора версий PHP)

На первом этапе мы установили сервер Apache + PHP при чем PHP у нас работает как модуль Apache. Существует несколько режимов работы PHP подробную информацию можно прочитать по ссылке «Коротко о CGI, FastCGI, PHP-FPM и mod_php».

Если вам лень читать, то объясню проще:

1. mod_php — сам Apache выполняет php скрипт.

Плюсы: работает быстро, требует минимум настроек и знаний

Минусы: скрипты выполняются от пользователя apache (как правило www-data)

2. CGI/FastCGI — Сервер Apache запускает прикладной скрипт интерпретатора php-cgi, который в свою очередь выполняет php скрипт

Плюсы: скрипты выполняются от произвольного пользователя, можно использовать в связке с другими приложениями (Nginx + PHP), конфигурацию PHP можно сделать индивидуальной

Минусы: скорость работы, дополнительная настройка

3.PHP-FPM — это модернизированный fast-cgi сервер который постоянно держит готовые для работы пул-процессов.

Плюсы: скорость работы, скрипты выполняются от произвольного пользователя, можно использовать в связке с другими приложениями (Nginx + PHP-FPM — самая распространная реализация)

Минусы: дополнительная настройка, занимает порт, на каждого пользователя открывается свой порт.

Мы остановимся на CGI/FastCGI. На самом деле многие может испугать, что он самый медленный, но на большинстве shared хостингов, именно этот режим работы (ispmanager использует именно этот режим работы). Нам потребуется собрать из исходников версии php которые нам необходимы.

2.1 Сборка php из исходников

Обновляем репозиторий:

apt update

Устанавливаем необходимые для сборки пакеты:

apt install -y make \
git autoconf \
lynx \
wget \
build-essential \
libxml2-dev \
libssl-dev \
libbz2-dev \
libcurl4-openssl-dev \
libpng12-dev \
libfreetype6-dev \
libxpm-dev \
libmcrypt-dev \
libmhash-dev \
libmysqlclient-dev \
libjpeg62-dev \
freetds-dev \
libjson-c-dev \
re2c \
zlib1g-dev \
libpcre3 \
libpcre3-dev \
unzip \
libxslt1-dev

Символ \ используется как перенос строки, для удобства чтения.

Создаем папки для php:

mkdir -p /opt/source/php
mkdir -p /opt/php/

Переходим в директорию в которой будут храниться исходники php

cd /opt/source/php

Скачиваем необходимую версию php и распаковываем ёё:

wget -c http://php.net/get/php-5.6.18.tar.bz2/from/this/mirror -O php-5.6.18.tar.bz2
tar xvjf php-5.6.18.tar.bz2

В последней команде мы скачали по ссылке php-5.6.18 и сохранили как php-5.6.18.tar.bz2
После чего распаковали архив.

Переходим в директория скаченного и распакованного php

cd /opt/source/php/php-5.6.18

Конфигурируем php

./configure --enable-cli \
 --prefix=/opt/php/php-5.6.18		\
 --disable-rpath		\
 --enable-calendar		\
 --enable-discard-path 		\
 --enable-fastcgi		\
 --enable-force-cgi-redirect		\
 --enable-fpm		\
 --enable-ftp		\
 --enable-gd-native-ttf		\
 --enable-inline-optimization		\
 --enable-mbregex		\
 --enable-mbstring		\
 --enable-pcntl		\
 --enable-soap		\
 --enable-sockets		\
 --enable-sysvsem		\
 --enable-sysvshm		\
 --enable-zip		\
 --with-bz2		\
 --with-curl		\
 --with-curl 		\
 --with-freetype-dir		\
 --with-gd		\
 --with-gd 		\
 --with-gettext		\
 --with-jpeg-dir 		\
 --with-jpeg-dir=/usr/lib/		\
 --with-libdir=/lib/x86_64-linux-gnu		\
 --with-libxml-dir=/usr		\
 --with-mcrypt		\
 --with-mhash		\
 --with-mysql		\
 --with-mysql 		\
 --with-mysqli		\
 --with-mysqli 		\
 --with-openssl		\
 --with-pcre-regex		\
 --with-pdo-mysql		\
 --with-png-dir=/usr		\
 --with-zlib		\
 --with-zlib-dir

Стоить обратить внимание на строку —prefix=/opt/php/php-5.6.18. Именно в эту директорию будет собран проект. Также вы самостоятельно можете добавлять или удалять необходимые модуль и компоненты php. Но при конфигурации обязательно должны быть —enable-fastcgi и —enable-force-cgi-redirect. После конфигурации собираем php

make
make install

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

/opt/php/php-5.6.18/bin/php -v

В результате будет что то вроде:

PHP 5.6.18 (cli) (built: Jun 8 2017 15:59:20)

Copyright © 1997-2016 The PHP Group

Zend Engine v2.6.0, Copyright © 1998-2016 Zend Technologies

2.2 Настройка Apache

Далее нам потребуется чтобы Apache вызывал php скрипт через режим fastcgi. Устанавливаем и активируем mod_fcgi

apt install libapache2-mod-fcgid
a2enmod cgi fcgid actions

перезапустим сервис Apache

service apache2 restart

2.3 Создание CGI скрипта

Создадим обертку для запуска PHP-FastCGI

mkdir -p /opt/php/php-5.6.18/fcgi-bin

В данной папке создадим скрипт с именем php со следующим содержимом
#!/opt/php/php-5.6.18/bin/php-cgi. Лично я использую редактор nano.

nano /opt/php/php-5.6.18/fcgi-bin/php

Вставляем код, выходим CTRL+X и подтверждаем изменения.

Делаем файл испольняемым:

chmod +x /opt/php/php-5.6.18/fcgi-bin/php

В той же директории создаем файл php.ini () можно скопировать /opt/source/php/php-5.6.18/php.ini-production.

2.4 Настройка хоста для Apache

В примере будет показана настройка виртуального хоста по умолчанию:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        <IfModule mod_fcgid.c>
            IPCCommTimeout 7200
            FcgidConnectTimeout 320
            MaxRequestLen 25728640
            FcgidMaxRequestsPerProcess 0
            FcgidBusyTimeout 3600
            FcgidOutputBufferSize 0
        </IfModule>

        <FilesMatch "\.ph(p[3-5]?|tml)$">
                SetHandler fcgid-script
                FCGIWrapper /opt/php/php-5.6.18/fcgi-bin/php
        </FilesMatch>
        ErrorLog /var/www/html/error.log
        CustomLog /var/www/html/access.log combined
</VirtualHost>
<Directory /var/www/html>
        Options +Includes +ExecCGI
</Directory>

Перезапускаем настройки Apache:

service apache2 reload

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

Для разграничения прав по пользователям у Apache есть 2 разных модуля suEXEC и ITK.

Рассмотрим как работает каждый из них:

ITK — При поступлении запроса, apache создает процесс-обработчик, который наследует права корневого процесса, но после проверки контекста меняет свои права на указанного пользователя.

suEXEC -При поступлении запроса apache запускает CGI и аналогичные собственные или сторонних разработчиков скрипты/программы внутри веб-папки домена от имени указанного пользователя.

suEXEC в нашем варианте предпочтительней из-за особенности архитектуры работы. Устанавливаем suEXEC

apt install apache2-suexec-custom
a2enmod suexec

Важно, для правильной работы suexec необходимы правильно выставить права на директории.

Как располагать директории вы должны определиться сами, в примере приведется пример, и он не является оптимальным.

Иерархия папок следующая:

|--/var/www/ - Корневая папка, права 751 владелец root

|----/php-bin - Папка храннения дефолтных настроек для php

|------/php-5.6.18 - Папка храннения дефолтных настроек для php-5.6.18

|--------php - Исполняемый файл для php-5.6.18

|--------php.ini - Дефольный файл настроке

|--------php.ini - Дефольный файл настроке

|----/apache-cert - папка хранения сертификатов для apache


Создаем папки для пользователя:

mkdir -p /var/www/users/admin
mkdir -p /var/www/users/admin/domain.ru
mkdir -p /var/www/users/admin/apache-log
mkdir -p /var/www/users/admin/php-bin
mkdir -p /var/www/users/admin/temp
mkdir -p /var/www/users/admin/temp/php-session

Копируем файлы настроек для php:

cp /opt/php/php-5.6.18/fcgi-bin/php /var/www/users/admin/php-bin/php
cp /opt/php/php-5.6.18/fcgi-bin/php.ini /var/www/users/admin/php-bin/php.ini

Создаем юзера (важно помнить что все пользователи в группе admin имеют доступ на запуск программ из sudo, поэтому при выборе имени admin он автоматически будет иметь права на выполнения sudo. В данном примере это не критично, но вам следует помнить об этом при создании пользователя).

useradd -m -s /bin/bash admin
passwd admin

Выставляем владельца папки:

chown admin:admin -R /var/www/users/admin

Выставляем корневую директорию для пользователя:

usermod -d /var/www/users/admin admin

Настраиваем виртуальные хосты в apache:

<VirtualHost *:8080>
	ServerAdmin webmaster@localhost
	DocumentRoot /var/www/users/admin/domain.ru

	SuexecUserGroup admin admin	

	<IfModule mod_remoteip.c>
	      RemoteIPHeader X-Forwarded-For
	      RemoteIPHeader X-Real-IP
	      RemoteIPInternalProxy 127.0.0.1
	</IfModule>

	<ifmodule mod_rewrite.c>
		RewriteEngine On
		RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
	</ifmodule>


	<IfModule mod_fcgid.c>
	    IPCCommTimeout 7200
	    FcgidConnectTimeout 320
	    MaxRequestLen 25728640
	    FcgidMaxRequestsPerProcess 0
	    FcgidBusyTimeout 3600
	    FcgidOutputBufferSize 0
	</IfModule>

	<FilesMatch "\.ph(p[3-5]?|tml)$">
		SetHandler fcgid-script
		FCGIWrapper /var/www/users/admin/php-bin/php
	</FilesMatch>

	ErrorLog /var/www/users/admin/apache-log/error.log
	CustomLog /var/www/users/admin/apache-log/access.log combined
</VirtualHost>
<Directory /var/www/users/admin/www>
	AllowOverride All
	Options +Includes +ExecCGI
</Directory>

В настройках php.ini пользователя меняем session.save_path
session.save_path = /var/www/users/admin/temp/php-session

Перезапускаем apache:

service apache2 restart

ЭТАП 4 (Установка Nginx с модулем pagespeed от google)

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

Изменяем порты для Apache:

/etc/apache2/ports.conf
+ Ваши созданные виртуальные хосты

Перезапускаем Apache:

service apache2 restart

Устанавливаем ngnix:

apt-get install nginx

Собираем Nginx с pagespeed

Вначале необходимо установить все необходимы для сборки пакеты:

apt install -y build-essential zlib1g-dev libpcre3 libpcre3-dev unzip libxslt1-dev libgd-dev libgeoip-dev

Создаем папки для исходников nginx:

mkdir -p /opt/source/nginx
cd /opt/source/nginx

Скачиваем и распаковываем pagespeed и psol. Yt cnjbn g

wget https://github.com/pagespeed/ngx_pagespeed/archive/v1.11.33.4-beta.zip
unzip v1.11.33.4-beta.zip
cd ngx_pagespeed-1.11.33.4-beta
wget https://dl.google.com/dl/page-speed/psol/1.11.33.4.tar.gz
tar -xzvf 1.11.33.4.tar.gz

Сам psol скачивается и распаковывается в директории с ngx_pagespeed. Переходим в папку с Ngnix

cd /opt/source/nginx

Проверяем версию ngnix (по умолчанию в ubuntu 16.0.4 устанавливается 1.10.0):

nginx -V

Загружаем т версию NGINX:

wget https://nginx.ru/download/nginx-1.10.0.tar.gz
tar -xvzf nginx-1.10.0.tar.gz

Собираем nginx с теми же параметрами что и установленный, но в конце добавляем дополнительные модули:

cd /opt/source/nginx/nginx-1.10.0
./configure \
--with-cc-opt='-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_v2_module --with-http_sub_module --with-http_xslt_module --with-stream --with-stream_ssl_module --with-mail --with-mail_ssl_module --with-threads \
--add-module=/opt/source/nginx/ngx_pagespeed-1.11.33.4-beta \
--with-http_mp4_module

Собираем Nginx:

make
make install

Собранный бинарный файл Nginx располагается в директории /opt/source/nginx/nginx-1.10.0/objs/nginx. Для того чтобы установить, требуется просто заменить текущий испоняемый файл Nginx на собранный.

Остановим Nginx, заменим файл, и перезапустим его.

service nginx stop

#Переименовываем (на всякий случай) текущий nginx в nginx_backup:

mv /usr/sbin/nginx /usr/sbin/nginx_backup

# Перемещаем на его место новый собранный бинарник:

mv /opt/source/nginx/nginx-1.10.0/objs/nginx /usr/sbin/nginx

перезапускаем Nginx:

service nginx start

Создаем папку хранения кэша для pagespeed:

/var/www/temp/
/var/www/temp/page-speed/

Добавим /etc/nginx/nginx.conf в секцию http:

pagespeed on;
pagespeed FileCachePath "/var/www/temp/page-speed/";
pagespeed EnableFilters combine_css,combine_javascript,rewrite_images,rewrite_css,rewrite_javascript,inline_images,recompress_jpeg,recompress_png,resize_images;
pagespeed JpegRecompressionQuality 85;
pagespeed ImageRecompressionQuality 85;
pagespeed ImageInlineMaxBytes 2048;
pagespeed LowercaseHtmlNames on;

ЭТАП 5 (Настройка Nginx как reverse proxy )

Скажу скажу что в интернете кучу статей для настройки Nginx как reverse proxy. Я лиш приведу ознакомительный вариант настройки.

server { 

	listen 80; 
	server_name domain.ru; 
	access_log /var/log/nginx.access_log;


	location ~* \.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|xml|docx|xlsx)$ { 
		root /var/www/users/admin/domain.ru; 
		index index.html index.php; 
		access_log off; 
		expires 30d; 
		error_page 404 = @prox;
	} 

	location @prox{
		proxy_pass 127.0.0.1:8880; 
		proxy_set_header X-Real-IP $remote_addr; 
		proxy_set_header X-Forwarded-for $remote_addr; 
		proxy_set_header Host $host; 
		proxy_connect_timeout 60; 
		proxy_send_timeout 90; 
		proxy_read_timeout 90; 
		proxy_redirect off; 
		proxy_set_header Connection close; 
		proxy_pass_header Content-Type; 
		proxy_pass_header Content-Disposition; 
		proxy_pass_header Content-Length;
	}


	location ~ /\.ht { 
		deny all; 
	} 


	location / { 
		proxy_pass 127.0.0.1:8880; 
		proxy_set_header X-Real-IP $remote_addr; 
		proxy_set_header X-Forwarded-for $remote_addr; 
		proxy_set_header Host $host; 
		proxy_connect_timeout 60; 
		proxy_send_timeout 90; 
		proxy_read_timeout 90; 
		proxy_redirect off; 
		proxy_set_header Connection close; 
		proxy_pass_header Content-Type; 
		proxy_pass_header Content-Disposition; 
		proxy_pass_header Content-Length; 
	} 
} 

Установка и настройка сервера Apache 2.4 – Ваш петербургский программист 1С

Эта статья – пошаговая инструкция по созданию локального web-сервера. В ней описана установка web-сервера Apache 2.4 на платформе ОС Windows. Тестирование установки выполнялось на Windows Server 2012 R2 для 64х разрядной операционной системы. Более подробно можно посмотреть в документации http://httpd.apache.org/docs/2.4/

Установка  Apache 2.4

Шаг 1. На сайте apache.org нет версии Apache 2.4 для Windows. Поэтому дистрибутив возьмем на apachelounge.com. В момент написания статьи последний релиз – Apache 2.4.25 win64

В дистрибутиве Apache нет файла инсталляции. Поэтому установка будет выполняться вручную.

Шаг 4 .  Скачиваем  apache 2/4/25 win64   и компоненту C++ Redistributable Visual Studio 2015 : vc_redist_x64/86.exe.

Шаг 5   Создаем папку и распаковываем архив httpd-2.4.25-win64-VC14.zip временную папку.  Скопируйте папку  Apache24 на диск С.  Не меняйте путь. Пусть будет C:\Apache24 . Правок в файле конфигурации будет гораздо меньше, если маршрут  будет такой C:\Apache24

Шаг 6   С помощью блокнота редактируем  файл  конфигурации httpd.conf , установленный по маршруту  C:\Apache2\conf  :

Строка 46  Устанавливаем значение параметра ServerName.
ServerName localhost:80

Строка 116 Снимаем  комментарий  (#) и делаем доступно загрузку модуля

LoadModule foo_module modules/mod_foo.so  

Строка 172  . Устанавливаем значение параметра ServerName и ServerAdmin
ServerName localhost:80

ServerAdmin [email protected]   

Я создал специальную учетную запись электронной почти на yandex  для параметра ServerAdmin

 Строка 179  Устанавливаем значение параметра DocumentRoot (расположение документов сайта). Я оставил такой мршрут по умолчанию

DocumentRoot C:/Apache24/htdocs

Шаг 7  Исполняемые файлы Apache находятся в папке C:\Apache24\bin. Добавляем это значение в переменную среды PATH Windows.

Шаг 8 Перед установкой  Apache как службу нужно запустить компоненту C++ Redistributable Visual Studio 2015 : vc_redist_x64/86.exe.

Шаг 9  Устанавливаем Apache как службу.

Исполняемые файлы Apache находятся в папке C:\Apache24\bin.  Для этом открываем командную панель  (Start > Run > cmd) с правами администратора и командой cd меняем директорию, чтобы было C:\Apache24\bin >  и запускаем
 httpd.exe -k install

Отметим, что я забыл выполнить шаг 8 перед  запуском службы Apache.  В результате без компоненты  C++ Redistributable Visual Studio 2015  не запускается  Apache из-за того , что нужна библиотека  vcruntime140.dll  в папке  C:\Windows\SysWOW64 ( а  для 32 бит в папку C:\Windows\System32).

Аналогичное сообщение дает параметр тестирования службы httpd.exe -t

Можно попробовать скачать компоненту  vcruntime140.dll от сюда  http://www.dll.ru/files/vcruntime140-dll.html и  скопировать  файл в папку  C:\Windows\SysWOW64  ( для 32 бит нужно скопировал  файл в папку C:\Windows\System32).  Однако после этого нужно перезагружать компьютер. Поэтому я рекомендую установить  компоненту C++ Redistributable Visual Studio 2015 : vc_redist_x64/86.exe. Установка этой компоненты не требует перезагрузки компьютера.

Шаг  10 После запуска службы apache  httpd.exe -k start , открываем список запущенным служб в управлении компьютера и находим службу apache 2.4

убедимся, что служба запущена и тип запуска – “автоматически”  

Шаг 10  Проверяем работоспособность сервера. В командной строке браузера набираем адрес: http://localhost. Если установка Apache прошла успешно – на экране отобразится текст It works!. В противном случае мы увидим пустой экран.

В случае если сервер не запустился, следует проверить, не занят ли порт 80, который использует Apache по умолчанию. Делается это с помощью команды
netstat –anb

Чаще всего этот порт используют Skype или Firefox. В этом случае следует либо освободить порт, либо перевести Apache на порт 8080.

Для этого в файле httpd.conf изменяем значений параметров ServerName и Listen. ServerName localhost:8080

После этого перезапускаем службу командой
httpd.exe -k restart

и опять пытаемся зайти по адресу http://localhost

Для удобства работы с сервером Apache можно установить в меню автозагрузки Windows ярлык, указывающий на C:\TestServer \Apache24\bin\ ApacheMonitor.exe

Поделиться ссылкой:

Понравилось это:

Нравится Загрузка…

Похожее

Автор публикации

1

Комментарии: 16Публикации: 447Регистрация: 25-12-2016

Как установить на Windows Apache 2.4 и PHP 7

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

  • ApacheHaus;
  • Apache Lounge.

Загрузите 32-разрядную версию Apache Windows (httpd-2.4.20-win32-VC14.zip) или 64-разрядную версию (httpd-2.4.20-win64-VC14.zip). Проверьте, установлена ли у вас 64-разрядная версия ОС. Чтобы определить это, можно использовать msinfo32.exe. Этот инструмент помогает в сборе информации о компьютере, в диагностике проблем или его можно использовать для доступа к другим инструментам.

Чтобы запустить его, выполните команду Выполнить> msinfo32> нажмите Enter.

После того, как найдете нужную версию, скачайте Zip-архив, а затем извлеките его содержимое в папку C:Apache24.

Перед запуском сервера Apache, если нужно изменить порт прослушивания на 8181:

  • Откройте в текстовом редакторе файл C:Apache24confhttpd.conf;
  • Найдите следующую строку: Listen 80;
  • И измените ее на: Listen 8181.

Сохраните изменения.

Теперь можно запустить сервер Apache Windows 7:

Откройте командную строку от имени администратора и перейдите в подкаталог bin:

Введите httpd.exe и нажмите Enter.

Если на экране появилось диалоговое окно с сообщением об отсутствии файла MSVCR140.dll, необходимо установить Visual C ++ Redistributable для Visual Studio 2015 (выберите vc_redist.x64.exe, если у вас установлена 64-разрядная версия Windows).

Теперь откройте браузер и введите в адресную строку http://localhost:8181, чтобы запустить демонстрационный сайт.

PHP 7 — важное обновление для серверного языка веб-разработки PHP. Загрузите zip-архив VC14 x64 Thread Safe (2016-Apr-29 00:38:19). Если вы загрузили 32-разрядную версию Apache, необходимо установить PHP x86.

Создайте папку с именем «php7», извлеките в нее содержимое архива php-7.0.6-Win32-VC14-x64.zip, а затем поместите папку в корень диска C:

Откройте файл конфигурации установки Windows Apache C:Apache24confhttpd.conf.

Скопируйте следующие строки в начало файла:

  • AddHandler application/x-httpd-php.php;
  • AddType application/x-httpd-php .php .html;
  • LoadModule php7_module «c:/php7/php7apache2_4.dll»;
  • PHPIniDir «c:/php7».

В разделе <IfModule dir_module> добавьте строку index.php и поместите ее перед index.html:

<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>

Сохраните файл Apache PHP Windows. Теперь переименуйте файл C:php7php.ini-development в C:php7php.ini.

Откройте файл конфигурации Apache C:Apache24confhttpd.conf;
Найдите в нем строку #LoadModule rewrite_module modules/mod_rewrite.so и удалите символ хеш «#»;
Найдите все вхождения строки «AllowOverride None» и измените их на «AllowOverride All».

Отредактируйте файл php.ini и раскомментируйте каталог расширений. Удалите символ «;» в начале строк:

; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
extension_dir = "ext"

Активируйте следующие строки, это даст возможность запуска модулей MySQL:

extension=php_mysqli.dll
extension=php_pdo_mysql.dll

А также приведенные ниже строки, если вы используете установку Apache PHP MySQL Windows в среде разработки:

extension=php_curl.dll
extension=php_fileinfo.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_openssl.dll

Раскомментируйте error_log, чтобы включить ведение журнала файлов:

; Log errors to specified file. PHP's default behavior is to leave this value
; empty.
; http://php.net/error-log
; Example:
error_log = c:php7php_errors.log

Сохраните изменения.

ВАЖНО! Установите PATH для Windows, чтобы найти PHP

  • Кликните правой кнопкой мыши на ярлыке Мой компьютер — Свойства — Дополнительно — Переменные среды;
  • В разделе «Системные переменные» найдите пункт «Путь», кликните по нему и выберите «Изменить»;
  • Добавьте в конце путь к папке php (обязательно после точки с запятой «;»). Например: «;C:php7«;
  • Нажмите «ОК».

Создайте файл по адресу C:Apache24htdocsphpinfo.php и добавьте в него следующий код:

Перезапустите Apache Windows, а затем в браузере перейдите по адресу http://localhost:8181/phpinfo.php. На этой странице должна отобразиться информация об установленной версии PHHP.

Если нужно зарегистрировать Apache как службу Windows, откройте командную строку и введите:

C:Apache24binhttpd -k install

Если вы не хотите, чтобы Apache запускался автоматически при запуске / перезагрузке системы, введите:

C:> sc config Apache2.4 start= demand

Данная публикация представляет собой перевод статьи «How To easy install Apache 2.4 and PHP 7 on Windows» , подготовленной дружной командой проекта Интернет-технологии.ру

телеграм канал. Подпишись, будет полезно!

бинарных файлов и модулей Apache VS16 скачать

Apache 2.4 VS16 Двоичные файлы и модули Windows
Apache Lounge предоставляет современные двоичные файлы Windows и популярные сторонние модули уже более 15 лет. У нас сотни тысяч довольных пользователей: как в малых, так и в крупных компаниях, а также домашние пользователи.
Всегда выполняйте сборку с использованием новейших зависимостей и последних компиляторов и тщательно тестируйте. На двоичные файлы ссылаются ASF, Microsoft, PHP и т. Д., И все больше и больше программного обеспечения упаковывается с нашими двоичными файлами и модулями.

Бинарные файлы собраны из исходных кодов ASF на httpd.apache.org, содержат последние исправления и последние зависимости, такие как zlib, openssl и т. Д., Что делает загрузки здесь более актуальными, чем загрузки из других мест. Двоичные файлы не запускают в XP и 2003. Работает на: 7 SP1, Vista SP2, 8 / 8.1, 10, Server 2008 SP2 / R2 SP1, Server 2012 / R2, Server 2016/2019.

Соберите последнюю версию Windows Visual Studio C ++ 2019, также известную как VS16. VS16 имеет улучшения, исправления и оптимизацию по сравнению с VC15 в таких областях, как производительность, управление памятью, новые стандартные функции соответствия, генерация кода и стабильность.Например, настройка качества кода и улучшения, сделанные в различных областях генерации кода для «скорости». И больше использует новейшие процессоры и поддерживаемые версии Windows (win 7 и выше) внутренние функции.

VS16 имеет обратную совместимость, см. Совместимость VS16 . Вы можете использовать модуль VC15 / 14 внутри двоичного файла VS16, например PHP VC15 / 14 как модуль,

Убедитесь, что вы установили последнюю версию 14.27.29112.0 Visual C ++ Redistributable для Visual Studio 2015-2019: vc_redist_x64 или vc_redist_x86 см. Распространяемый


Apache 2.4 двоичных файла VS16

Информация и журнал изменений

Apache 2.4.46 Win64

 httpd-2.4.46-win64-VS16.zip 02 окт '20 10,323k

    Подпись PGP  (открытый ключ  PGP ), SHA1-SHA512  Контрольные суммы  

Apache 2.4.46 Win32

httpd-2.4.46-win32-VS16.zip 02 окт '20 9.441k

    Подпись PGP  (открытый ключ  PGP ), SHA1-SHA512  Контрольные суммы 
 

Чтобы убедиться, что загрузка не повреждена и не была подделана, используйте PGP, см. Подпись PGP

Apache 2.4 модуля VS16

Почта для подписей PGP и / или контрольных сумм SHA для проверки содержимого файла.

mod_fcgid
Модуль FastCGI ASF

mod_fcgid-2.3.10-win64-VS16.zip информация 16 июн '19 45K

mod_fcgid-2.3.10-win32-VS16.zip 41 КБ
 

mod_security
Брандмауэр приложений, механизм обнаружения и предотвращения вторжений

mod_security-2.9.3-win64-VS16.zip info 16 июн '19 626K

mod_security-2.9.3-win32-VS16.zip 542 КБ
 

mod_jk и isapi_redirect.dll
Разъем Tomcat

mod_jk-1.2.46-win64-VS16.zip информация 16 июн '19 164K

mod_jk-1.2.46-win32-VS16.zip 133 КБ

isapi_redirect.dll-1.2.46-VS16.zip информация 388K
 

mod_xsendfile
Обрабатывает заголовки X-SENDFILE, зарегистрированные исходным обработчиком вывода.
Это полезно для обработки вывода сценария, например, php, perl или любой другой cgi.

mod_xsendfile-1.0-P1-win64-VS16.zip информация 16 июн '19 14K

mod_xsendfile-1.0-P1-win32-VS16.zip 14 КБ
 

mod_log_rotate
внутрипроцессная ротация журналов на сервере

mod_log_rotate-1.0.2-win64-VS16.zip информация 17 июн 19 10K

mod_log_rotate-1.0.2-win32-VS16.zip 9 КБ
 

dbd_modules
Виртуальный хост DBD

.

Использование HTTP-сервера Apache в Microsoft Windows

В этом документе объясняется, как установить, настроить и запустить
Apache 2.5 под Microsoft Windows. Если у вас есть вопросы после
просматривая документацию (и любые журналы событий и ошибок), вы
следует проконсультироваться с поддерживаемым коллегами
рассылка пользователей
список.

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

Основной платформой Windows для запуска Apache 2.5 является Windows.
2000 или новее. Всегда получайте и
установите текущий пакет обновления, чтобы избежать ошибок в операционной системе.

Apache HTTP Server версий выше 2.2 не будет работать ни на каких
операционная система ранее, чем Windows 2000.

Сам проект HTTP-сервера Apache не предоставляет двоичных выпусков
ПО, только исходный код. Индивидуальные коммиттеры могут предоставить
бинарные пакеты для удобства, но это не результат выпуска.

Если вы не можете скомпилировать HTTP-сервер Apache
вы можете получить бинарный пакет из множества бинарных дистрибутивов
доступно в Интернете.

Популярные варианты развертывания Apache httpd и, опционально, PHP
и MySQL в Microsoft Windows включают:

Apache настроен файлами в conf
подкаталог. Это те же файлы, которые используются для настройки Unix
версия, но есть несколько разных директив для Apache на
Windows.См. Указатель директив
для всех доступных директив.

Основные отличия Apache для Windows:

  • Поскольку Apache для Windows многопоточный, он не
    используйте отдельный процесс для каждого запроса, как это может сделать Apache в Unix.
    Вместо этого обычно работают только два процесса Apache:
    родительский процесс и дочерний процесс, который обрабатывает запросы. В
    в дочернем процессе каждый запрос обрабатывается отдельным потоком.

    Директивы по управлению процессами также разные:

    MaxConnectionsPerChild :
    Как и директива Unix, она контролирует количество подключений к одному
    дочерний процесс будет обслуживаться перед завершением.Однако, в отличие от Unix, процесс замены не происходит мгновенно.
    доступный. Используйте значение по умолчанию MaxConnectionsPerChild 0 ,
    если не указано изменить поведение, чтобы преодолеть утечку памяти
    в сторонних модулях или внутрипроцессных приложениях.

    Предупреждение: конфигурация сервера
    файл перечитывается при запуске нового дочернего процесса. Если у тебя есть
    модифицированный httpd.conf , новый дочерний элемент может не запускаться или
    вы можете получить неожиданные результаты.

    ThreadsPerChild :
    Это новая директива. Он сообщает серверу, сколько потоков он
    следует использовать. Это максимальное количество подключений к серверу.
    может справиться сразу, поэтому не забудьте установить это число достаточно большим, чтобы
    ваш сайт, если вы получаете много просмотров. Рекомендуемое значение по умолчанию:
    ThreadsPerChild 150 , но это должно быть изменено на
    отражать наибольшее ожидаемое количество одновременных
    подключения принять.

  • Директивы, которые принимают имена файлов в качестве аргументов, должны использовать
    Имена файлов Windows вместо файлов Unix. Однако, поскольку Apache
    может интерпретировать обратную косую черту как последовательность «escape-символа», вы
    следует последовательно использовать косую черту в именах путей, а не
    обратная косая черта.

  • Хотя имена файлов обычно не чувствительны к регистру
    Windows, URL-адреса по-прежнему обрабатываются внутри как с учетом регистра
    прежде, чем они будут сопоставлены с файловой системой.Например,
    <Местоположение> ,
    Все директивы Alias ​​ и ProxyPass используют
    аргументы с учетом регистра. По этой причине особенно
    важно использовать директиву при попытке
    для ограничения доступа к содержимому файловой системы, поскольку это
    Директива применяется к любому контенту в каталоге, независимо от
    как к нему обращаются. Если вы хотите убедиться, что только строчные буквы
    используется в URL-адресах, вы можете использовать что-то вроде:

     RewriteEngine On
    RewriteMap в нижнем регистре "int: tolower"
    RewriteCond "% {REQUEST_URI}" "[A-Z]"
    RewriteRule "(.*) "" $ {нижний регистр: $ 1} "[R, L] 
  • При работе Apache требуется доступ на запись только к журналам
    каталог и любое настроенное дерево каталогов кеша. Из-за
    выдача нечувствительных к регистру и коротких имен формата 8.3, Apache должен
    проверить все указанные имена путей. Это означает, что каждый каталог
    который оценивает Apache, от корня диска до каталога
    лист, должен иметь разрешения на чтение, список и просмотр каталогов.
    Если Apache2.5 установлен в C: \ Program Files, то корень
    каталог, Program Files и Apache2.5 должны быть видны
    в Apache.

  • Apache для Windows содержит возможность загрузки модулей на
    время выполнения, без перекомпиляции сервера. Если Apache скомпилирован
    обычно он устанавливает несколько дополнительных модулей в
    Каталог \ Apache2.5 \ modules . Чтобы активировать эти или
    другие модули, LoadModule
    директива должна использоваться. Например, чтобы активировать статус
    модуля, используйте следующие (в дополнение к
    директивы в доступе .conf ):

     LoadModule status_module "modules / mod_status.so" 

    Информация о создании
    загружаемые модули также доступны.

  • Apache также может загружать ISAPI (приложение Интернет-сервера).
    Programming Interface), например, используемые Microsoft
    IIS и другие серверы Windows. Больше
    информация имеется. Обратите внимание, что Apache не может
    загружать фильтры ISAPI и обработчики ISAPI с некоторыми функциями Microsoft
    расширения работать не будут.

  • При запуске сценариев CGI метод, используемый Apache для поиска
    интерпретатор сценария настраивается с помощью
    ScriptInterpreterSource
    директива.

  • Так как часто бывает сложно управлять файлами с именами
    например .htaccess в Windows, вам может быть полезно
    измените имя этого файла конфигурации для каждого каталога, используя
    AccessFilename
    директива.

  • Любые ошибки во время запуска Apache регистрируются в
    Журнал событий Windows при работе в Windows NT. Этот механизм
    действует как резервная копия для тех ситуаций, когда Apache еще не
    подготовлен к использованию файла error.log . Вы можете
    просмотрите журнал событий приложения Windows с помощью средства просмотра событий,
    например Пуск — Настройка — Панель управления — Администрирование
    — Просмотрщик событий.

Apache поставляется с утилитой, которая называется Apache Service Monitor.С его помощью вы можете видеть и управлять состоянием всех установленных Apache
сервисы на любой машине в вашей сети. Чтобы иметь возможность управлять
Сервис Apache с монитором, сначала необходимо установить
сервис (автоматически через установку или вручную).

Вы можете установить Apache как службу Windows NT следующим образом
командная строка в подкаталоге Apache bin :

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


httpd.exe -k install -n "MyServiceName"

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


httpd.exe -k install -n "MyServiceName" -f "c: \ files \ my.conf "

Если вы используете первую команду без каких-либо специальных параметров, кроме
-k install , сервис будет называться Apache2.5
Предполагается, что конфигурация — conf \ httpd.conf .

Удалить службу Apache очень просто. Просто используйте:

Определенную удаляемую службу Apache можно указать с помощью:


httpd.exe -k uninstall -n "MyServiceName"

Нормальный запуск, перезапуск и завершение работы Apache
обслуживание обычно выполняется через Apache Service Monitor, используя
такие команды, как NET START Apache2.5 и NET STOP
Apache2.5
или через обычное управление службами Windows. Перед
запуская Apache как службу любыми способами, вы должны протестировать
файл конфигурации службы, используя:


httpd.exe -n "MyServiceName" -t

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


httpd.exe -k start -n "MyServiceName"

Чтобы остановить службу Apache с помощью переключателей командной строки, используйте
это:


httpd.exe -k stop -n "MyServiceName"

или


httpd.exe -k shutdown -n "MyServiceName"

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


httpd.exe -k restart -n "MyServiceName"

По умолчанию все службы Apache зарегистрированы для работы как
системный пользователь (учетная запись LocalSystem ). В
Учетная запись LocalSystem не имеет прав доступа к вашей сети
через любой защищенный Windows механизм, включая файловую систему с именем
каналы, DCOM или безопасный RPC.Однако он имеет широкие привилегии на местном уровне.

Никогда не предоставляйте сетевые привилегии
учетная запись LocalSystem ! Если вам нужен Apache, чтобы
для доступа к сетевым ресурсам создайте отдельную учетную запись для Apache как
указано ниже.

Рекомендуется, чтобы пользователи создали отдельную учетную запись для запуска
Сервисы Apache. Если вам нужно получить доступ к сетевым ресурсам через Apache,
это обязательно.

  1. Создайте обычную учетную запись пользователя домена и обязательно
    запомнить его пароль.
  2. Предоставьте вновь созданному пользователю привилегию Вход в систему
    как услуга
    и Действуют как часть операционной
    система
    . В Windows NT 4.0 эти права предоставляются через
    Диспетчер пользователей для доменов, но в Windows 2000 и XP вы, вероятно,
    хотите использовать групповую политику для распространения этих параметров. Вы можете
    также вручную установите их через оснастку Local Security Policy MMC.
  3. Подтвердите, что созданная учетная запись является членом пользователей
    группа.
  4. Предоставьте учетной записи права на чтение и выполнение (RX) для всего документа.
    и папки скриптов ( htdocs и cgi-bin
    например).
  5. Предоставьте право изменения учетной записи (RWXD)
    Apache регистрирует каталог .
  6. Предоставьте учетной записи права на чтение и выполнение (RX) для
    httpd.exe двоичный исполняемый файл.

Обычно рекомендуется предоставить пользователю Apache
служба работает как доступ для чтения и выполнения (RX) ко всему Apache2.5
каталог, за исключением подкаталога logs , в котором
пользователь должен иметь как минимум права на изменение (RWXD).

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

Код ошибки 2186 — хороший признак того, что
вам необходимо просмотреть конфигурацию «Войти как» для службы,
поскольку Apache не может получить доступ к требуемому сетевому ресурсу. Также платите
пристальное внимание к привилегиям пользователя Apache стоит
настроен для работы как.

При запуске Apache как службы может возникнуть ошибка
сообщение из диспетчера управления службами Windows. Например,
если вы попытаетесь запустить Apache с помощью апплета Services в
Панель управления Windows, вы можете получить следующее сообщение:


Не удалось запустить Apache2.5 сервис на \\ КОМПЬЮТЕР
Ошибка 1067; Процесс неожиданно завершился.

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

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

Запуск Apache как службы обычно является рекомендуемым способом
использовать его, но иногда проще работать из командной строки,
особенно во время первоначальной настройки и тестирования.

Чтобы запустить Apache из командной строки как консольное приложение,
используйте следующую команду:

Apache будет запущен и будет работать до тех пор, пока не будет остановлен.
нажав Control-C.

Вы также можете запустить Apache с помощью ярлыка Запустить Apache в консоли
помещен в Меню Пуск -> Программы -> HTTP-сервер Apache
2.5.xx -> Управление Apache Server
во время установки.
Это откроет окно консоли и запустит внутри него Apache. если ты
если Apache не установлен как служба, окно останется
виден, пока вы не остановите Apache, нажав Control-C в консоли
окно, в котором работает Apache. Сервер завершит работу через несколько
секунд. Однако, если у вас установлен Apache как служба,
ярлык запускает службу. Если служба Apache запущена
уже ярлык ничего не делает.

Если Apache работает как служба, вы можете сказать ему остановиться, открыв другую консоль.
окно и ввод:

Запуск в качестве службы предпочтительнее, чем в
окно консоли, потому что это позволяет Apache завершить любые текущие операции
и аккуратно убирать.

Но если сервер работает в окне консоли, вы можете
только остановите его, нажав Control-C в том же окне.

Вы также можете указать Apache перезапустить.Это заставляет его перечитывать
файл конфигурации. Любые выполняемые операции разрешены
полная без перерыва. Чтобы перезапустить Apache, нажмите
Control-Break в окне консоли, которое вы использовали для запуска Apache,
или введите

, если сервер работает как служба.

Примечание для людей, знакомых с версией Apache для Unix:
эти команды обеспечивают эквивалент Windows kill -TERM
pid
и kill -USR1 pid
использованный параметр командной строки -k был выбран в качестве напоминания
команды kill , используемой в Unix.

Если окно консоли Apache закрывается сразу или неожиданно
после запуска откройте командную строку из меню «Пуск» ->
Программ. Перейдите в папку, в которую вы установили Apache, введите
команду httpd.exe и прочтите сообщение об ошибке. потом
перейдите в папку журналов и просмотрите ошибку . log
файл для ошибок конфигурации.Предполагая, что httpd был установлен в
C: \ Program Files \ Apache Software Foundation \ Apache2.5 \ ,
вы можете сделать следующее:


c:
cd "\ Program Files \ Apache Software Foundation \ Apache2.5 \ bin"
httpd.exe

Затем дождитесь остановки Apache или нажмите Control-C. Затем введите
следующее:


cd .. \ logs еще

При работе с Apache важно знать, как он будет
найдите файл конфигурации.Вы можете указать файл конфигурации
в командной строке двумя способами:

В обоих этих случаях правильный
ServerRoot должен быть установлен в
файл конфигурации.

Если вы не укажете файл конфигурации с -f
или -n , Apache будет использовать имя файла, скомпилированное в
сервер, например conf \ httpd.conf . Этот встроенный путь
относительно каталога установки. Вы можете проверить скомпилированный
имя файла из значения, помеченного как SERVER_CONFIG_FILE , когда
вызов Apache с помощью переключателя -V , например:

Apache затем попытается определить свой ServerRoot , выполнив следующие действия в следующем порядке:

  1. A Директива ServerRoot
    через переключатель командной строки -C .
  2. Ключ -d в командной строке.
  3. Текущий рабочий каталог.
  4. Запись в реестре, созданная, если вы сделали двоичный
    установка.
  5. Корень сервера, скомпилированный в сервер. Это
    / apache
    по умолчанию, вы можете проверить это с помощью
    httpd.exe -V
    и ищем значение, помеченное как
    HTTPD_ROOT .

Если вы не выполняли двоичную установку, Apache в некоторых
сценарии жалуются на отсутствующий ключ реестра.Это предупреждение может
игнорироваться, если сервер мог иным образом найти свой
Файл конфигурации.

Значение этого ключа -
ServerRoot каталог, который
содержит подкаталог conf . Когда Apache запускает это
читает файл httpd.conf из этого каталога. Если
этот файл содержит ServerRoot
директива, которая содержит каталог, отличный от того
полученный из ключа реестра выше, Apache забудет
раздел реестра и используйте каталог из файла конфигурации.Если
вы копируете каталог Apache или файлы конфигурации в новый
местоположение очень важно, чтобы вы обновили
ServerRoot директива в
httpd.conf , чтобы отразить новое местоположение.

После запуска Apache (либо в окне консоли, либо как
service) он будет прослушивать порт 80 (если вы не изменили
Слушайте директиву в
файлы конфигурации или установленный Apache только для текущего пользователя).
Чтобы подключиться к серверу и получить доступ к странице по умолчанию, запустите
браузер и введите этот URL:

Apache должен ответить приветственной страницей, и вы должны увидеть
"Оно работает!".Если ничего не происходит или возникает ошибка, загляните в
error.log файл в подкаталоге logs .
Если ваш хост не подключен к сети, или если у вас есть серьезные
проблемы с настройкой DNS (службы доменных имен), вы
возможно, придется использовать этот URL:

Если вы используете Apache на альтернативном порту, вы
необходимо явно указать это в URL:

После того, как ваша базовая установка заработает, вы должны ее настроить.
правильно, отредактировав файлы в подкаталоге conf .Опять же, если вы измените конфигурацию службы Windows NT
для Apache сначала попытайтесь запустить его из командной строки, чтобы
убедитесь, что служба запускается без ошибок.

Поскольку Apache не может использовать один и тот же порт с
другое приложение TCP / IP, вам может потребоваться остановить, удалить или перенастроить
некоторые другие службы перед запуском Apache. Эти противоречивые
услуги включают другие серверы WWW, некоторые реализации межсетевого экрана,
и даже некоторые клиентские приложения (например, Skype), которые будут использовать порт
80, чтобы попытаться обойти проблемы брандмауэра.

Доступ к файлам по сети можно указать с помощью двух
механизмы, предоставляемые Windows:

Буквы подключенных дисков
например, Псевдоним / images / Z: /
UNC-пути
например, Псевдоним / images / // imagehost / www / images /

Буквы подключенных дисков позволяют администратору поддерживать
отображение на конкретную машину и путь за пределами Apache httpd
конфигурация. Однако эти отображения связаны только с
интерактивные сеансы и не доступны напрямую для Apache httpd
когда он запускается как служба. Используйте только пути UNC для
сетевые ресурсы в httpd.conf
, чтобы ресурсы могли
будут доступны постоянно независимо от того, как запущен Apache httpd.
(Тайные процедуры и процедуры, подверженные ошибкам, могут обойти ограничение
на подключенных буквах дисков, но это не рекомендуется.)

Пример DocumentRoot с UNC-путем

 DocumentRoot "// dochost / www / html /" 

Пример DocumentRoot с IP-адресом в UNC-пути

 DocumentRoot "//192.168.1.50 / docs / "

Пример псевдонима и соответствующий каталог с UNC-путем

 Псевдоним "/ images /" "// imagehost / www / images /"

<Каталог "// imagehost / www / images /">
# ...
 

При запуске Apache httpd как службы необходимо создать
отдельная учетная запись для доступа к сетевым ресурсам, как описано
над.

  • Если в операционной системе используется более нескольких десятков подключенных по каналу регистраторов
    Например, часто необходимо масштабирование «кучи рабочего стола».За
    более подробную информацию см. в документации по конвейерному ведению журнала.

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *