Разное

Conf apache2: wiki:apache2_apache_http_server | Русскоязычная документация по Ubuntu

Содержание

Apache2 etc/apache2/ports.conf, несколько сайтов с https на одном сервере

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

 

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

 

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
NameVirtualHost *:443
Listen 443
</IfModule>

<IfModule mod_gnutls.c>
Listen 443
</IfModule>

 

Самое важное здесь:

NameVirtualHost *:443
Listen 443

 

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

 

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

a2ensite default-ssl

 

Найти файл виртуального хоста можно по адресу /etc/apache2/sites-availible/default-ssl, иногда он называется default-ssl.conf. Файл присутствует по умолчанию и размещается в каталоге при установке пакета с Apache2

 

Конифгурация проверяется

apache2ctl configtest

 

Затем веб-серверу дается команда на перечитывание конифгов

service apache2 reload

 

Или apache2 просто перезапускается

/etc/init.d/apache2 restart

 

Перезапуск apache2 или перечитывание конфигов необходимо как при активации дефолтного виртуального хоста, так и просто при редактировании файла ports.conf

Web blog: Настройка apache (apache2.conf)

Forbidden. You don’t have permission to access. LAMP

В первую очередь нам необходимо открыть доступ для нашей директории где у нас находятся web-ресурсы. Поскольку это не стандартная апачевская директория то нам надо создать доступ к своей директории где будут находится сайты. Иначе мы получим Forbidden.
Для этого откроем конфигурационный файл Apache /etc/apache2/apache2.conf. Выполним команду:

sudo nano /etc/apache2/apache2.conf

В открывшемся файле следует дописать

<Directory  «/mysites/»>
        Options All
        AllowOverride All
        Require all granted
</Directory>

Не забываем после манипуляций перезагрузить apache

sudo service apache2 restart

Это позволит открыть доступ к директории из вне. Это решает проблему «Forbidden. You don’t have permission to access /»

Добавление виртуальных хостов

Для того что бы апач видел наши сайты и сопоставлял их с доменами, в конфигурационный файл Apache /etc/apache2/apache2.conf необходимо добавить виртуальные хосты.
Выполним команду:

sudo nano /etc/apache2/apache2.conf

В открывшемся файле в самый конец файла дописываем:

NameVirtualHost *:80
<VirtualHost *:80>
      DocumentRoot «/mysites/test1/www/»
      ServerName domain-name.com
      ServerAlias www.domain-name.com
</VirtualHost>
….
<VirtualHost *:80>
      DocumentRoot «/mysites/test10/www/»
      ServerName domain-name.com
      ServerAlias www.domain-name.com
</VirtualHost>

Не забываем после манипуляций перезагрузить apache

sudo service apache2 restart

По уму виртуальные хосты должны хранится в отдельной папке, по мимо этого с отдельным конфигурационным файлом для каждого сайта.
То есть мы должны создать для каждого виртуального хоста отдельный конфиг в папке sites-available.
Для этого создадим отдельный конфиг, скопировав базовый функционал

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/testsite.conf

Далее откроем этот файл и допишем туда выше указанные параметры

sudo /etc/apache2/sites-available/testsite.conf

apache2.conf — Лунная База

apache2.conf — Лунная База

apache2.conf

apache2.conf — файл с основными конигруционными настройками HTTP-сервера Apache 2. В этом файле хранятся данные, контролирующие работу сервера. Этот файл читается при запуске Апача, поэтому все изменения, касающиеся настроек этого сервера, требуют его перезагрузки для того, чтобы веб-сервер мог стартануть в той конфигурации, которая прописана в конфиге. В конфиге apache2.conf прописываются глобальные настройки сервера, подключаемые к Apache модули, переменные, структура и прочее. В этом разделе рассмотрим структуру этого файла, его синтаксис, а также вопросы изменения настроек для различных задач, связанных с работой сайтов, подключённых к глобальной сети интернет при помощи веб-сервера Apache 2.

Статьи про основной конфиг Apache 2:

Информация о материале
Родительская категория: Apache
Категория: apache2.conf

При переезде на новый сервер без ISPmanager нужно вручную правильно собрать связку NGiNX + Apache. Для того, чтобы было на что ориентироваться, если что-то пойдёт не так, я сохранил исходные конфиги серверов у себя на локальном компьютере. Но, для того, чтобы не лазить по архивам, выискивая нужные файлы, выкладываю конфиг Apache 2 в ISPmanager Lite 5 (Debian 8 связка NGiNX + Apache). К тому же удобнее смотреть в браузере и на сервере в Notepad++, чем в нескольких вкладках.

Подробнее: apache2.conf — конфиг Apache 2 в ISPmanager Lite 5 (Debian 8 связка NGiNX + Apache)

Информация о материале
Родительская категория: Apache
Категория: apache2.conf

Статей о том, как найти конфиг Апача, в интернете масса. Но в них в основном даётся информация о том, где находится основной файл конфигурации Apache 2 на сервере автора статьи. Иногда это может быть даже Апач не второй, а первый. Так как в основном все копируют друг у друга контент. Для того, чтобы точно найти конфиг Apache, не нужно пытаться его искать по тому пути, что советуют. Нужно посмотреть его в настройках конкретного сервера. Именно о том, как найти его у себя на сервере и будет показано ниже в этой статье на примере моего текущего рабочего сервера, работающего с Debian 9. Но, я не думаю, что операционная система как-то затруднит поиск этого конфига. Разве что на сервере под Windows… Но тут я пока просто разведу руками. =)

Подробнее: Где действительно находится файл конфигурации Apache 2

Стандартные конфигурации Apache в разных операционных системах – ATMARK

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

Apache httpd 2.2 default layout (apache.org source package):
ServerRoot :: /usr/local/apache2
DocumentRoot :: /usr/local/apache2/htdocs
Apache Config File :: /usr/local/apache2/conf/httpd.conf
Other Config Files :: /usr/local/apache2/conf/extra/
SSL Config File :: /usr/local/apache2/conf/extra/httpd-ssl.conf
ErrorLog :: /usr/local/apache2/logs/error_log
AccessLog :: /usr/local/apache2/logs/access_log
cgi-bin :: /usr/local/apache2/cgi-bin (enabled by default, but the bundled scripts are 644)
binaries (apachectl) :: /usr/local/apache2/bin
start/stop :: /usr/local/apache2/bin/apachectl (start|restart|graceful|graceful-stop|stop|configtest)

Apache httpd 2.0 default layout (apache.org source package):
ServerRoot :: /usr/local/apache2
DocumentRoot :: /usr/local/apache2/htdocs
Apache Config File :: /usr/local/apache2/conf/httpd.conf
SSL Config :: /usr/local/apache2/conf/ssl.conf
ErrorLog :: /usr/local/apache2/logs/error_log
AccessLog :: /usr/local/apache2/logs/access_log
cgi-bin :: /usr/local/apache2/cgi-bin (enabled by default, but the bundled scripts are 644)
binaries (apachectl) :: /usr/local/apache2/bin
start/stop :: /usr/local/apache2/bin/apachectl (start|stop|graceful|configtest)

Debian, Ubuntu (Apache httpd 2.x):
ServerRoot :: /etc/apache2
DocumentRoot :: /var/www
Apache Config Files :: /etc/apache2/apache2.conf
:: /etc/apache2/ports.conf
Default VHost Config :: /etc/apache2/sites-available/default, /etc/apache2/sites-enabled/000-default
Module Locations :: /etc/apache2/mods-available, /etc/apache2/mods-enabled
ErrorLog :: /var/log/apache2/error.log
AccessLog :: /var/log/apache2/access.log
cgi-bin :: /usr/lib/cgi-bin
binaries (apachectl) :: /usr/sbin
start/stop :: /etc/init.d/apache2 (start|stop|restart|reload|force-reload|start-htcacheclean|stop-htcacheclean)

Fedora Core, CentOS, RHEL:
ServerRoot :: /etc/httpd
Primary Config Fle :: /etc/httpd/conf/httpd.conf
Other Config Files :: /etc/httpd/conf.d
Module Locations :: /usr/lib/httpd/modules
DocumentRoot :: /var/www/html
ErrorLog :: /var/log/httpd/error_log
AccessLog :: /var/log/httpd/access_log
cgi-bin :: /var/www/cgi-bin (empty and disabled by default)
binary :: /usr/sbin/httpd
runtime directory :: /etc/httpd/run
start/stop :: /sbin/service httpd {start|stop|restart|condrestart|reload|status|full status|graceful|help|configtest}

RedHat 9.0 and older:
ServerRoot :: /etc/httpd
Primary Config Fle :: /etc/httpd/conf/httpd.conf
DocumentRoot :: /var/www/html
ErrorLog :: /var/log/httpd/error_log
AccessLog :: /var/log/httpd/access_log
cgi-bin :: /var/www/cgi-bin (empty and disabled by default)
binary :: /usr/sbin/httpd
start/stop :: /sbin/service httpd {start|stop|restart|condrestart|reload|status|full status|graceful|help|configtest}

Mandriva (Apache httpd 2.2):
ServerRoot :: /etc/httpd
Primary Config Fle :: /etc/httpd/conf/httpd.conf
DocumentRoot :: /var/www/html
ErrorLog :: /var/log/httpd/error_log
AccessLog :: /var/log/httpd/access_log
cgi-bin :: /var/www/cgi-bin
binary :: /usr/sbin/httpd
start/stop :: /sbin/service httpd
{start|stop|restart|reload|graceful|condreload|clo selogs|update|condrestart|status|extendedstatus|co nfigtest|configtest_vhosts|semcleanrestart|debug|s how_defines}

Mac OS X (Leopard, Apache httpd 2.2):
ServerRoot :: /usr
Primary Config Fle :: /etc/apache2/httpd.conf
DocumentRoot :: /Library/WebServer/Documents
ErrorLog :: /var/log/apache2/error_log
AccessLog :: /var/log/apache2/access_log
cgi-bin :: /Library/WebServer/CGI-Executables (empty by default)
binary :: /usr/sbin/httpd
start/stop :: /usr/sbin/apachectl (start|stop|restart|fullstatus|status|graceful|gra ceful-stop|configtest|help)

NetBSD Apache httpd 2.0 and 1.3 from pkgsrc (layout is identical):
ServerRoot :: /usr/pkg
Config File :: /usr/pkg/etc/httpd/httpd.conf
DocumentRoot :: /usr/pkg/share/httpd/htdocs
ErrorLog :: /var/log/httpd/error_log
AccessLog :: /var/log/httpd/access_log
cgi-bin :: /usr/pkg/libexec/cgi-bin
binaries (apachectl) :: /usr/pkg/sbin
start/stop :: /etc/rc.d/apache [fast|force|one](start stop restart rcvar reload status poll)
/etc/rc.conf variables :: apache=YES, apache_start=”start” (or “startssl”)

FreeBSD 6.1 (Apache httpd 2.2):
ServerRoot :: /usr/local
Config File :: /usr/local/etc/apache22/httpd.conf
DocumentRoot :: /usr/local/www/apache22/data
ErrorLog :: /var/log/httpd-error.log
AccessLog :: /var/log/httpd-access.log
cgi-bin :: /usr/local/www/apache22/cgi-bin
binaries (apachectl) :: /usr/local/sbin
start/stop :: /usr/local/etc/rc.d/apache22.sh (start|restart|stop|reload|graceful|gracefulstop|c onfigtest)
/etc/rc.conf variables :: apache22_enable=”YES”

FreeBSD 6.1 (Apache httpd 2.0):
ServerRoot :: /usr/local
Config File :: /usr/local/etc/apache2/httpd.conf
DocumentRoot :: /usr/local/www/data
ErrorLog :: /var/log/httpd-error.log
AccessLog :: /var/log/httpd-access.log
cgi-bin :: /usr/local/www/cgi-bin
binaries (apachectl) :: /usr/local/sbin
start/stop :: /usr/local/etc/rc.d/apache2.sh [fast|force|one](start|restart|stop|reload|configtest|rcvar)
/etc/rc.conf variables :: apache2_enable=”YES”

Win32 (Apache httpd 2.2):
ServerRoot :: “C:/Program Files/Apache Software Foundation/Apache2.2”
Config File :: “C:/Program Files/Apache Software Foundation/Apache2.2/conf/httpd.conf”
DocumentRoot :: “C:/Program Files/Apache Software Foundation/Apache2.2/htdocs”
ErrorLog :: “C:/Program Files/Apache Software Foundation/Apache2.2/logs/error.log”
AccessLog :: “C:/Program Files/Apache Software Foundation/Apache2.2/logs/access.log”
cgi-bin :: “C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/”
binaries (apachectl) :: “C:/Program Files/Apache Software Foundation/Apache2.2/bin”

Solaris 10 (Apache httpd 2.0):
ServerRoot :: /usr/apache2
Config File :: /etc/apache2/httpd.conf
DocumentRoot :: /var/apache2/htdocs
ErrorLog :: /var/apache2/logs/error_log
AccessLog :: /var/apache2/logs/access_log
cgi-bin :: /var/apache2/cgi-bin
binaries :: /usr/apache2/bin

Slackware 12.0+ (Apache httpd 2.2):
ServerRoot :: /usr
DocumentRoot :: /svr/httpd/htdocs
AccessLog :: /var/log/httpd/access_log
ErrorLog :: /var/log/httpd/error_log
binaries (apachectl) :: /usr/sbin
modules :: /usr/lib/httpd
system startup script :: /etc/rc.d/rc.httpd (start|restart|graceful|graceful-stop|stop)
Apache config file :: /etc/httpd/httpd.conf
mod_ssl config file :: /etc/httpd/extra/httpd-ssl.conf
php config file :: /etc/httpd/mod_php.conf
cgi-bin :: /svr/httpd/cgi-bin
on-line docs (“manual”) :: /svr/httpd/htdocs/manual

openSUSE and SLES (Apache httpd 2.2):
ServerRoot :: /srv/www
DocumentRoot :: /srv/www/htdocs
Apache Config File :: /etc/apache2/httpd.conf
Other Config Files :: /etc/sysconfig/apache2
SSL Config File :: /etc/apache2/ssl-global.conf
ErrorLog :: /var/log/apache2/error_log
AccessLog :: /var/log/apache2/access_log
cgi-bin :: /srv/www/cgi-bin
binaries (apachectl) :: /usr/sbin
start/stop :: /etc/init.d/apache2 (start|restart|restart-graceful|reload|graceful|graceful-stop|stop|configtest)

Gentoo (Apache httpd 2.2):
ServerRoot :: /usr/lib/apache2
DocumentRoot :: /var/www/localhost/htdocs
Apache Config File :: /etc/apache2/httpd.conf
Other Config Files :: /etc/conf.d/apache2
Default VHost Config :: /etc/apache2/vhosts.d/00_default_vhost.conf
Module Configuration :: /etc/apache2/modules.d
Module Locations :: /usr/lib/apache2/modules
ErrorLog :: /var/log/apache2/error_log
AccessLog :: /var/log/apache2/access_log
cgi-bin :: /var/www/localhost/cgi-bin
binaries (apache2ctl) :: /usr/sbin
start/stop :: /etc/init.d/apache2 (start|restart|graceful|stop|configtest)

Файл конфигурации Httpd.conf

Httpd.conf — главный файл конфигурации сервера Apache, содержащий директивы, которые управляют работой сервера.

Различают несколько основных разделов группирования директив конфигурации:

— Директивы, управляющие процессом Apache в целом (глобальное окружение).

— Директивы, определяющие параметры «главного» сервера, или сервера «по умолчанию», который отвечает на запросы, которые не обрабатываются виртуальными хостами. Эти директивы определяют также настройки по умолчанию для остальных виртуальных хостов.

— Настройка виртуальных хостов, позволяющие обрабатывать запросы Web единственным сервером Apache, но направлять на различные IP адреса или имена хостов.

Файл Httpd.conf позволяет настроить функционирования сервера. После изменения данного файла в соответствии с вашими требованиями, можете запускать сервер.

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

ServerAdmin

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

ServerAdmin [email protected]

ServerRoot

Директива ServerRoot отвечает за базовый каталог, в котором будет установлено программное обеспечение HTTP-сервера Apache.

ServerRoot "C:/web_server/apache"

ErrorLog

Директива ErrorLog задает местоположение журнального файла, в котором регистрируются ошибки сервера. Если имя файла не начинается с символа слеш (/), то путь к файлу устанавливается относительно ServerRoot.

ErrorLog "logs/error.log"

ErrorDocument

Директива ErrorDocument позволяет сопоставить кодам ошибок HTTP-сервера адреса URL. Этой возможностью можно пользоваться для более красивого визуального взаимодействия с пользователями.

ErrorDocument 404 /404.html

ServerName

Директива ServerName задает официальное имя вашего сервера в том виде, в котором оно появляется в строке URL. Это должно быть имя компьютера, зарегистрированное в системе имен серверов вашей организации или провайдера.

ServerName localhost:80

DefaultType

При запросе файла с расширением, для которого на сервере не имеется соответствующего МIME-типа, будет использоваться MIME-тип, указанный в директиве DefaultType.

DefaultType text/plain

AddType

Директива AddType служит для добавления новых типов предоставляемых клиентам документов на основе использования MIME-типов.

AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/pdf pdf

<Directory directory> … </Directory>

Директива <Directory> указывает каталог, к которому будет включена группа директив, которые необходимо применить только к указанному каталогу и его подкаталогам.

<Directory C:/>
Options Indexes Includes
AllowOverride All
Allow from all
</Directory>

<Files имя-файла> … </Files>

Директива <Files> предназначена для управления доступом к файлу. Директивы, которые применяются к данному имени файла должны быть перечислены внутри.

<IfModule имя модуля> … </IfModule>

Раздел <IfModule> используется для того, чтобы отметить директивы, которые являются условными. Директивы внутри раздела IfModule обрабатываются только, если Имя модуляTrue. Параметр Имя модуля являет собой имя модуля как имя файла модуля. Например.

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

<VirtualHost адрес>

Директивы <VirtualHost> и </VirtualHost> используются для того, чтобы включить группу директив, которые применяются только к данному виртуальному хосту, который указывается в параметре Адрес. Когда сервер получает запрос на документ относящийся к VirtualHost, он использует директивы конфигурации включенные в раздел <VirtualHost>.

<VirtualHost profiphp>
ServerName profiphp:80
DocumentRoot "C:/localhost/profiphp"
ErrorLog "c:/localhost/profiphp/error.log"
CustomLog "c:/localhost/profiphp/access.log" common
</VirtualHost>

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

LAMP в Ubuntu: apache2.conf и .htaccess

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

Основной конфигурационный файл Apache в Ubuntu 16.04 и новее находится по адресу:

/etc/apache2/apache2.conf

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

Сразу скажу, что синтаксис этих двух документов идентичен.
Чтобы открыть apache.conf для редактирования, воспользуйтесь командой:

sudo gedit /etc/apache2/apache2.conf

Если вам не нравится gedit, замените его любым другим текстовым редактором (например, nano). Можно обойтись без sudo, но в этом случае вы, скорее всего, сможете только просматривать содержимое файла, но не изменять его.

Внутри находится набор директив, каждая из которых отвечает за определенный параметр. Например, присутствующая на снимке LogLevel warn означает следующее: сохранять в лог все сообщения сервера, соответствующие уровню «предупреждение» и более серьезные. Слева всегда располагается название директивы, справа — ее значение. Кстати, расположение файла, в котором хранится лог ошибок, определяет директива ErrorLog.

Не лишним будет определить директиву ServerName. Стандартное значение — 127.0.0.1.

Директивы могут занимать несколько строк, в этом случае их называют блочными. Рассмотрим для примера директиву Directory:

Между символами «<» и «>» располагается название директивы, а при необходимости — еще и параметр, уточняющий ее действие. В данном случае — название каталога, к которому относится содержимое. Конец блочной директивы обозначается так же, как начало, однако перед названием ставится слеш (/). Содержимое, располагающееся между открывающим и закрывающим тегами, представляет собой такие же директивы, как те, о которых шла речь выше.

Давайте выясним, что они означают.

AllowOverride None запрещает использование файлов .htaccess в данной директории. Чтобы разрешить перезаписывать любые параметры, замените None на All. Вы также можете указать группы настроек, разрешенных к перезаписи. Например, чтобы разрешить только те директивы из .htaccess, которые меняют режим доступа, следует указать AllowOverride AuthConfig.

Require all granted разрешает доступ к директории для всех без исключений. В более ранних версиях Apache применялся другой вариант — Allow from all, имеющий то же значение.

Начиная с версии Apache 2.4 для регулирования доступа к директории используется директива Require. Она может располагаться как в глобальном файле настроек, так и в любом  .htaccess. Раньше те же функции выполняли Order, Allow и Deny.

Итак, для того чтобы полностью запретить доступ, воспользуйтесь такой конструкцией:

Require all denied

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

Require not ip 123.456.789.012

подставив его ip вместо чисел.

Если убрать из этой конструкции not, доступ будет разрешен только с указанного ip. Можно также указать имя разрешенного или запрещенного хоста, указав вместо ip host.

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

После сохранения файла не лишним будет проверить его синтаксис — вдруг в процессе редактирования мы допустили ошибку или сделали опечатку? Для этого введем команду:

При обнаружении ошибки будут указаны сведения о ней.

Чтобы изменения, внесенные в конфигурационные файлы, подействовали, необходимо перезапустить веб-сервер командой

sudo systemctl restart apache  

В следующих статьях я продолжу рассказывать о связке LAMP.

Если вы хотите прочесть о каком-то конкретном аспекте этой темы, напишите в комментариях.

Установка 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 на Ubuntu или Debian VPS

Что такое апач?

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

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

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

Как установить Apache в Ubuntu и Debian

Если у вас еще не установлен Apache, вы можете сделать это сейчас, введя следующие команды:

 sudo apt-get update
sudo apt-get install apache2 

Это все, что необходимо для работы веб-сервера. Если вы посетите IP-адрес своего VPS в веб-браузере, вы получите страницу индекса Apache по умолчанию:

 your_domain_name_or_ip_address 
 Работает!
Это веб-страница по умолчанию для этого сервера.Программное обеспечение веб-сервера запущено, но контент еще не добавлен. 

Иерархия файлов Apache в Ubuntu и Debian

В Ubuntu и Debian Apache хранит свои основные файлы конфигурации в папке «/ etc / apache2»:

 компакт-диск / etc / apache2
ls -F 
 apache2.conf envvars magic mods-enabled / sites-available /
conf.d / httpd.conf доступные моды / ports.conf сайты-включены / 

В этом каталоге есть несколько текстовых файлов и несколько подкаталогов.Вот некоторые из наиболее полезных мест, с которыми стоит ознакомиться:

  • apache2.conf : это основной файл конфигурации для сервера. Практически всю настройку можно выполнить из этого файла, хотя для простоты рекомендуется использовать отдельные файлы. Этот файл будет настраивать значения по умолчанию и будет центральной точкой доступа сервера для чтения сведений о конфигурации.
  • ports.conf : Этот файл используется для указания портов, которые должны прослушивать виртуальные хосты.Обязательно проверьте правильность этого файла, если вы настраиваете SSL.
  • conf.d / : Этот каталог используется для управления определенными аспектами конфигурации Apache. Например, он часто используется для определения конфигурации SSL и вариантов безопасности по умолчанию.
  • sites-available / : Этот каталог содержит все файлы виртуального хоста, которые определяют различные веб-сайты. Они будут определять, какой контент будет обслуживаться по каким запросам.Это доступные конфигурации, а не активные конфигурации.
  • sites-enabled / : Этот каталог устанавливает, какие определения виртуальных хостов фактически используются. Обычно этот каталог состоит из символических ссылок на файлы, определенные в каталоге «сайты доступны».
  • mods- [включено, доступно] / : Эти каталоги аналогичны по функциям каталогам сайтов, но они определяют модули, которые могут быть дополнительно загружены вместо них.

Как видите, конфигурация Apache не выполняется в одном монолитном файле, а вместо этого происходит посредством модульной конструкции, в которой новые файлы могут быть добавлены и изменены по мере необходимости.

Просмотр файла Apache2.conf

Основные сведения о конфигурации вашего сервера Apache содержатся в файле «/etc/apache2/apache2.conf».

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

В Ubuntu и Debian большая часть файла предназначена для глобальных определений, а конфигурация сервера по умолчанию и виртуальных хостов обрабатывается в конце с помощью директивы «Include …».

Директива «Include» позволяет Apache считывать другие файлы конфигурации в текущий файл в том месте, где появляется оператор. В результате Apache динамически генерирует общий файл конфигурации при запуске.

Если вы прокрутите файл до конца, вы увидите несколько различных операторов «Включить».Эти определения модулей загрузки, документ ports.conf, конкретные файлы конфигурации в каталоге «conf.d /» и, наконец, определения виртуального хоста в каталоге «sites-enabled /».

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

Раздел глобальной конфигурации

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

В этом разделе есть несколько интересных опций, которые вы можете изменить:

Тайм-аут

По умолчанию для этого параметра установлено значение «300», что означает, что у сервера есть максимум 300 секунд для выполнения каждого запроса.

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

KeepAlive

Если этот параметр установлен на «Вкл.», Каждое соединение будет оставаться открытым для обработки нескольких запросов от одного и того же клиента.

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

MaxKeepAliveRequests

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

Установка этого значения на 0 позволит Apache обслуживать неограниченное количество запросов для каждого соединения.

KeepAliveTimeout

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

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

Конфигурация MPM

В следующем разделе описывается конфигурация опций MPM (Multi-Processing Module). Вы можете указать, с каким разделом была скомпилирована ваша установка Apache, выйдя в терминал и набрав:

 apache2 -l 
 Скомпилировано в модули:
  core.c
  mod_log_config.c
  mod_logio.c
  prefork.c
  http_core.c
  mod_so.c 

Как видите, на этом сервере «prefork.c» — это модуль, который был скомпилирован и также находится в «apache2».conf «. В вашей установке может быть несколько вариантов на выбор, но можно выбрать только один.

Вы можете настроить конфигурацию prefork MPM в соответствующем разделе.

Изучение файла виртуального хоста по умолчанию

Объявление виртуального хоста по умолчанию можно найти в файле с именем «default» в каталоге «сайты-доступные».

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

 судо нано / и т. Д. / Apache2 / сайты-доступные / по умолчанию 
 
        ServerAdmin веб-мастер @ localhost

        DocumentRoot / var / www
        <Каталог />
                Параметры FollowSymLinks
                AllowOverride Нет
        
        
                Параметры Индексы FollowSymLinks MultiViews
                AllowOverride Нет
                Заказать разрешить, запретить
                разрешить от всех
        
.. . 

Виртуальный хост по умолчанию настроен для обработки любого запроса на порт 80, стандартный порт http. Это определено в заголовке объявления, где написано «*: 80», что означает порт 80 на любом интерфейсе.

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

Конфигурация верхнего уровня виртуального хоста

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

Параметр «ServerAdmin» указывает контактный адрес электронной почты, который следует использовать при возникновении проблем с сервером.

Это может быть вставлено на страницу с ошибкой, если для параметра «ServerSignature» установлено значение «Электронная почта» в файле «/etc/apache2/conf.d/security», поэтому убедитесь, что вы готовы получать почту, если вы настроите это параметр.

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

Вы также можете применить виртуальный хост к нескольким именам с помощью определения «ServerAlias». Это обеспечивает альтернативные пути доступа к одному и тому же контенту.Хороший вариант использования для этого — добавление того же домена с префиксом www.

Параметр «DocumentRoot» указывает, где будет располагаться контент, запрашиваемый для этого виртуального хоста. Виртуальный хост по умолчанию настроен для обслуживания контента из каталога «/ var / www» в Ubuntu.

Определения каталогов

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

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

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

 
Параметры FollowSymLinks
AllowOverride Нет
Заказ запретить, разрешить
Запретить от всех
 

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

Следующее определение каталога предназначено для корня документа, поэтому в нем указывается параметр «разрешить от всех», который отменяет параметр «/» для этого каталога.

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

Псевдонимы и утверждения ScriptAlias ​​

Определениям Справочника иногда предшествуют операторы «Alias» или «ScriptAlias».Псевдоним сопоставляет путь URL-адреса с путем к каталогу.

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

Например, эта строка в виртуальном хосте, который обрабатывает запрос к «example.com», разрешит доступ к контенту в «/ path / to / content /», перейдя к «example.com/content/»:

 Псевдоним / content / / path / to / content / 

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

Включение сайтов и модулей в Apache

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

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

 sudo a2ensite имя_файла_виртуального_хоста 

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

 sudo service apache2 перезагрузить 

Также есть сопутствующая команда для отключения виртуального хоста.Он работает путем удаления символической ссылки из каталога «сайты с поддержкой»:

 sudo a2dissite имя_файла_виртуального_хоста 

Снова перезагрузите конфигурацию, чтобы изменения произошли:

 sudo service apache2 перезагрузить 

Модули

могут быть включены или отключены с помощью команд «a2enmod» и «a2dismod» соответственно. Они работают так же, как и «сайт» версии этих команд.

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

Заключение

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

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

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

Джастин Эллингвуд

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

— HTTP-сервер Apache, версия 2.4

В этом документе описаны файлы, используемые для настройки Apache HTTP.
Сервер.

См. Также

HTTP-сервер Apache настраивается путем размещения директив в виде обычного текста.
файлы конфигурации. Основной файл конфигурации обычно называется
httpd.conf . Расположение этого файла установлено в
время компиляции, но может быть отменено с помощью -f
флаг командной строки.Кроме того, другие файлы конфигурации могут быть
добавлен с помощью Include
директива, а подстановочные знаки могут использоваться для включения многих конфигураций
файлы. Любая директива может быть помещена в любую из этих конфигураций.
файлы. Изменения только в основных файлах конфигурации
распознается httpd при запуске или перезапуске.

Сервер также читает файл, содержащий типы документов mime;
имя файла задается директивой TypesConfig ,
и составляет мим.по умолчанию набирает .

Конфигурационные файлы

httpd содержат по одной директиве в каждой строке.
Обратная косая черта «\» может использоваться как последний символ в строке.
чтобы указать, что директива продолжается на следующей строке.
Между
обратная косая черта и конец строки.

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

Директивы в файлах конфигурации нечувствительны к регистру,
но аргументы директив часто чувствительны к регистру.Линии
начинающиеся с символа решетки «#» считаются
комментарии и игнорируются. Комментарии могут быть , а не .
включены в ту же строку, что и директива конфигурации.
Пробелы перед директивой игнорируются, поэтому
вы можете делать отступы в директивах для ясности. Пустые строки также игнорируются.

Значения переменных, определенных с помощью Define или переменных среды оболочки, могут
можно использовать в строках файла конфигурации с использованием синтаксиса $ {VAR} .Если «VAR» — это имя допустимой переменной, значение этой переменной равно
подставляется в это место в строке файла конфигурации, и обработка
продолжается, как если бы этот текст был найден непосредственно в файле конфигурации.
Переменные, определенные с помощью Define take
приоритет над переменными среды оболочки.
Если переменная «VAR» не найдена, символы $ {VAR}
остаются без изменений, и регистрируется предупреждение.
Имена переменных не должны содержать двоеточие «:», чтобы избежать конфликтов с
Синтаксис RewriteMap .

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

Максимальная длина строки в обычных файлах конфигурации после
подстановка переменных и присоединение любых продолжающихся строк примерно
16 МБ. В файлах .htaccess
максимальная длина — 8190 символов.

Вы можете проверить свои файлы конфигурации на наличие синтаксических ошибок.
без запуска сервера с помощью apachectl
configtest
или командная строка -t
вариант.

Вы можете использовать mod_info -DDUMP_CONFIG для
дамп конфигурации со всеми включенными файлами и средой
переменные разрешены и все комментарии и несоответствия
и
разделов
удаленный.Однако вывод не отражает слияния или переопределения
это может произойти для повторяющихся директив.

httpd — модульный сервер. Это означает, что только самые
базовые функции включены в главный сервер. Расширенный
функции доступны через модули, которые могут быть загружены
в httpd. По умолчанию базовый набор модулей
включены в сервер во время компиляции. Если сервер
скомпилирован для использования с динамической загрузкой
модули, то модули могут быть скомпилированы отдельно и добавлены в
в любое время с помощью LoadModule
директива.В противном случае httpd необходимо перекомпилировать для добавления или удаления модулей.
Директивы конфигурации могут быть включены при условии
наличие определенного модуля, заключив их в блок . Тем не мение,
блоки не
требуется, и в некоторых случаях может маскировать тот факт, что вам не хватает
важный модуль.

Чтобы увидеть, какие модули в настоящее время скомпилированы на сервере,
вы можете использовать опцию командной строки -l .Вы также можете
посмотреть, какие модули загружаются динамически с помощью -M
параметр командной строки.

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

httpd может обслуживать множество различных веб-сайтов.
одновременно. Это называется виртуальным
Хостинг. Директивы также можно ограничить, поместив их
внутри
разделов, поэтому они будут применяться только к запросам на
конкретный веб-сайт.

Хотя большинство директив можно поместить в любую из этих
разделы, некоторые директивы не имеют смысла в некоторых контекстах.
Например, директивы, управляющие созданием процесса, могут только
быть помещенным в контекст главного сервера. Чтобы узнать, какие директивы
в какие разделы можно поместить, проверьте контекст
директива. Для получения дополнительной информации мы предоставляем подробную информацию о разделах «Каталог», «Местоположение» и «Файлы».
Работа.

httpd обеспечивает децентрализованное управление конфигурацией
через специальные файлы, размещенные внутри веб-дерева.Специальные файлы
обычно называются .htaccess , но любое имя может быть
указано в AccessFileName
директива. Директивы размещены в файлах .htaccess,
применить к каталогу, в который вы помещаете файл, и все
подкаталоги. Файлы .htaccess следуют за
тот же синтаксис, что и у основных файлов конфигурации. С
.htaccess файлов читаются при каждом запросе, изменения
сделанные в этих файлах вступают в силу немедленно.

Чтобы узнать, какие директивы можно разместить в
.htaccess проверьте контекст
директива. Администратор сервера дополнительно контролирует, что
директивы могут быть помещены в файлы .htaccess с помощью
настройка AllowOverride
директива в основных файлах конфигурации.

Дополнительные сведения о файлах .htaccess см.
учебник .htaccess.

Работа с файлом конфигурации Apache

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

Расположение файла конфигурации Apache

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

  • /etc/apache2/httpd.conf
  • /etc/apache2/apache2.conf
  • / и т. Д. / Httpd / httpd.конф
  • /etc/httpd/conf/httpd.conf

Если вы установили Apache из исходного кода, он, скорее всего, находится в / usr / local или / opt , хотя файлы конфигурации могли быть перемещены в / etc , как обычно. Проверьте свой сценарий сборки для получения более подробной информации.

Кроме того, на macOS Server> = 10.8 Mountain Lion расположение файла конфигурации Apache может быть разным. Некоторые пути перечислены ниже. Полную информацию см. В документации по серверу macOS.

Не использовать веб-сайты / веб-службы по умолчанию (/etc/apache2/httpd.conf)
macOS Server 4 веб-службы /Library/Server/Web/Config/apache2/httpd_server_app.conf
macOS Server 5 веб-сайтов /Library/Server/Web/Config/apache2/server-httpd.conf

с поддержкой модов и сайтов

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

с поддержкой модов содержит символические ссылки на файлы в доступных модов . Этот последний подкаталог содержит файлы конфигурации для всех доступных модулей, тогда как с включенными модами содержит только подмножество, а именно модули, которые фактически должны быть включены. Символические ссылки создаются с помощью инструмента a2enmod . * .load файлов содержат директив LoadModule , а *.conf файлы содержат все остальные директивы конфигурации.

Хранение фрагментов конфигурации пассажира

Если вы можете, вы должны использовать с поддержкой модов / с доступными модами для хранения конфигурации пассажира. Предполагая, что ваш каталог конфигурации Apache — / etc / apache2 :

  • Создайте /etc/apache2/mods-available/passenger.load и вставьте директиву LoadModule ... , которую выводит Passenger-install-apache2-module .
  • Создайте /etc/apache2/mods-available/passenger.conf и вставьте PassengerRoot и другие параметры Passenger.
  • Включите, запустив команду sudo a2enmod пассажир .

Если механизм с поддержкой модов недоступен, вы можете напрямую вставить фрагменты конфигурации в httpd.conf или apache2.conf .

См. Также

ubuntu - Как настроить Apache (сайты доступны vs httpd.conf)

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

В Apache Wiki есть удобное руководство по именам и расположению файлов конфигурации.

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

Имя основного файла конфигурации может быть изменено во время компиляции, и в последних выпусках оно было изменено с httpd.conf на apache2.conf

С годами произошла определенная эволюция в организации включенных файлов конфигурации.

Например, я установил Apache2 в системе на основе Ubuntu, используя apt-get install apache2 - вот включенные файлы

  / и т. Д. / Apache2 $ ls
apache2.Включите apache2.conf
Включите /etc/apache2/mods-enabled/*.load
Включите /etc/apache2/mods-enabled/*.conf
Включите /etc/apache2/httpd.conf
Включите /etc/apache2/ports.conf
Включите /etc/apache2/conf.d/
Включите / etc / apache2 / sites-enabled /

/ etc / apache2 $ ls -l с поддержкой сайтов
всего 0
lrwxrwxrwx 1 root root 26 декабря 26 12:30 000-default -> ../sites-available/default
  

Итак, несколько параметров конфигурации, которые могут вас заинтересовать больше всего, теперь находятся в / etc / apache2 / sites-available / default .

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

Включить файлы в Apache HTTP Server версии 2.2 httpd.conf

Включить Дополнительно

Также вы можете использовать директиву IncludeOptional

  IncludeOptional conf / vhosts / *.конф
  

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

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

НО!

Обратите внимание, что некоторые версии Apache действительно не запускают в случаях, когда «путь к файлу не существует в файловой системе».Как в примере выше, если нет каталога conf / vhosts / .

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

Как так:

  

DocumentRoot "/var/www/example.com"
Имя сервера "example.com"
ServerAlias ​​"www.example.com" "example.com"
...

IncludeOptional /var/www/example.com/*.httpd.conf







DocumentRoot "/ var / www / other.org "
Имя сервера "other.org"
ServerAlias ​​"www.other.org" "other.org"
...

IncludeOptional /var/www/other.org/*.httpd.conf


  

Когда некоторым нравится

  IncludeOptional /var/www/other.org/*.httpd.conf
  

будет работает хорошо (есть ли у вас какой-либо файл, соответствующий заданной маске или нет), но

  IncludeOptional /var/www/other.org/config_optional_subdir/*.conf
  

завершится ошибкой , если такого подкаталога нет config_optional_subdir .

Обратите внимание, что

  IncludeOptional /var/www/other.org/extra.httpd.conf
  

также откажет , если хотя бы на одном из сайтов не будет точно указанный файл extra.httpd.conf . Подстановочные знаки - это ключ.


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

Как настроить Apache 2

Важно прочитать документацию, распространяемую вместе с сервером Apache. Эти документы обычно хранятся в каталоге « \ manual » или « \ htdocs \ manual » (где обозначает установленный каталог вашего Apache). Прочтите руководства и инструкции.

Чтобы установить Apache 2, прочтите «Как установить Apache 2».Я предполагаю, что HTTP-сервер Apache установлен в d: \ myProject \ apache2 , работающий на порту 8000. Корневой каталог документа - « \ htdocs ».

Базовая конфигурация

Apache настраивается путем помещения директив конфигурации, таких как Listen и ServerName , в файл конфигурации, который будет прочитан исполняемым файлом Apache во время запуска.

Файл конфигурации по умолчанию называется « httpd.conf "(или" apache2.conf ") в каталоге" \ conf ". Браузер через этот файл конфигурации.

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

  • Слушать: привязать Apache к определенным IP-адресам и / или портам. HTTP-сервер по умолчанию работает на порту 80 для производства. Для тестирования вы можете выбрать номер порта от 1024 до 65535, который не используется существующим приложением (вы можете запустить команду « netstat », чтобы проверить существующие соединения).Мы запустим Apache на порту 8000.
    Слушайте 8000 
  • ServerName: укажите имя хоста DNS или IP-адрес (чтобы узнать свой IP-адрес, выполните команду « ipconfig »), или имя вашего компьютера, или «localhost» (localhost предназначен только для тестирования локальной петли, вы также можете использовать IP-адрес localhost 127.0.0.1), за которым следует номер порта, выбранный выше.
    ServerName  YourHostNameOrIPAddres : 8000 
  • ServerRoot: установленный каталог Apache " ", e.грамм.,
    ServerRoot "d: / myProject / apache2" 

    Вы должны использовать косую черту в стиле Unix (/) в качестве разделителя каталогов вместо обратной косой черты в стиле Windows ( \ ) в файле конфигурации.

  • DocumentRoot: корневой каталог документов, то есть домашний каталог сервера. По умолчанию он установлен на « \ htdocs ».
    DocumentRoot " d: / myPorject / apache2   / htdocs "
        
    
    <Каталог " d: / myPorject / apache2   / htdocs ">
        
        Индексы опций FollowSymLinks
     
        
        AllowOverride Нет
     
        
        Заказать разрешить, запретить
        Разрешить от всех
     

    Внимание! Вы ДОЛЖНЫ выполнить глобальный поиск по « htdocs » перед изменением корневого каталога документов.

Контроль доступа в HTTP-сервере Apache

Управление доступом занимается управлением доступом к ресурсу, который может быть набором каталогов, файлов или местоположений. Управление доступом может быть основано на идентификаторе клиента, который называется аутентификацией , (обсуждается в разделе «HTTP-аутентификация»). Контроль доступа также может быть основан на других критериях, таких как сетевой адрес, время суток, браузер, который использует клиент, типы методов запроса и т. Д.

Управление доступом к каталогу

В этом разделе рассматривается контроль доступа к каталогам. В следующих разделах речь идет об управлении доступом к файлам и расположениям.

... : может использоваться для применения контроля доступа к набору каталогов. Синтаксис:

<Каталог , каталог >

......
 

Директива блока включает в себя набор директив управления доступом, которые будут применяться к совпадающему каталогу (ам) и его подкаталогам.Каталоги задают каталоги, применимые к этому блоку. При сопоставлении можно использовать подстановочный знак: «? » соответствует ровно одному символу; « * » соответствует нулю или более символам; [...] может использоваться для указания диапазона символов, например [c-f] . Можно использовать расширенное регулярное выражение (regexe), которое начинается с « ~ ».

Параметры: определяет, какие действия разрешены для набора контролируемых ресурсов.

 Опция [+ | -]  Опция-1  [+ | -]  Опция-2  ... 

Доступные варианты:

  • Индексы: если клиент запрашивает каталог, а в каталоге нет файла индексации (например, « Index.html »), то сервер вернет список каталога. Если опция « Indexes » отключена, сервер возвращает ошибку «403 Forbidden».
  • ExecCGI: разрешить выполнение сценария CGI.
  • Включает: Разрешить включение на стороне сервера (SSI).
  • Включает NOEXEC: разрешить SSI, но отключить команду #exec и #exec CGI.
  • FollowSymLinks: переход по символическим ссылкам.
  • SymLinksIfOwnerMatch: переходите по символическим ссылкам, только если владелец тот же самый.
  • MultiViews: разрешить согласование содержимого, например согласование языка.
  • Нет: ничего.
  • All: все параметры, кроме MultiViews . Это значение по умолчанию.
  • + (или -) добавляет (или удаляет) этот конкретный параметр относительно текущего параметра.Все остальные варианты остаются прежними. Например, директива « Option + Indexes -ExecGGI » добавляет параметр « Indexes » и удаляет параметр « ExecCGI » из текущего параметра. Остальные параметры остаются без изменений.

Если не используется директива Options , эффект будет All, кроме MultiViews . Однако, если директива Options используется без +/- , например, « Options Indexes », доступна только опция Indexes , а остальные параметры отключены.Если используется +/- , изменяется только этот конкретный параметр, остальные параметры остаются такими же (унаследованными от настройки на более высоком уровне).

Пример 1
<Справочник  / www >
   Индексы опционов ExecCGI

   
<Справочник  / www / продажи >
   Индексы опционов

   
<Справочник  / www / support >
   Параметры -Индексы
 

Поскольку соответствие применяется к подкаталогам, « / www » имеет параметры Индексы и ExexCGI , « / www / sales » имеет параметр Только индексы (настройка в родительский каталог игнорируется), а « / www / support » имеет параметр ExecCGI (унаследованный от родительского каталога).

Порядок

: указывает порядок, в котором оцениваются директивы Allow, и Deny, .

 Order Deny, Allow | Разрешить, запретить 
  • Запретить, Разрешить: доступ разрешен по умолчанию, и директивы Запретить оцениваются перед директивами Разрешить . Любому клиенту, который не соответствует директиве Deny "или" соответствует директиве Allow , будет разрешен доступ к серверу. (Клиенту разрешен доступ, если он находится в обоих списках Запретить и Разрешить , поскольку Разрешить оценивается последним.)
  • Allow, Deny: доступ запрещен по умолчанию, и директивы Allow оцениваются перед директивами Deny . Любому клиенту, который не соответствует директиве Allow или «или» соответствует директиве Deny , будет отказано в доступе к серверу. (Клиенту в обоих параметрах Allow и Deny будет отказано в доступе, поскольку Deny оценивается в последнюю очередь.)
Apache 2.4

Apache 2.4 использует новый модуль под названием mod_authz_host для управления доступом.Вместо директив Order , Allow и Deny в Apache 2.2 используется новая директива Require . Например,


Заказать отказать, разрешить
Запретить всем

Требовать все отклонено
 

Заказать разрешить, запретить
Разрешить от всех

Требовать все предоставлено


Заказ запретить, разрешить
Запретить всем
Разрешить с example.com

Требуется хост example.org 

[TODO] Приведите в порядок следующие примеры.

Пример 2
 Заказ запрещен, разрешен
Запретить всем
Разрешить с test101.com 
  1. доступ разрешен по умолчанию;
  2. все хосты запрещены;
  3. Разрешены

  4. в домене « * .test101.com ».

Следовательно, разрешены только хосты в " * .test101.com ".

Пример 3
 Заказать разрешить, запретить
Разрешить с test101.com
Запретить на sales.test101.com 
  1. доступ запрещен по умолчанию;
  2. все хосты в « *.test101.com "домен разрешен, и;
  3. хоста в субдомене «* .sales.test101.com » не принимаются.

Следовательно, разрешены все хосты в домене « * .test101.com », кроме «* .sales.test101.com ».

С другой стороны, если Order изменен на Deny, Allow , всем хостам будет разрешен доступ (по умолчанию). Это происходит потому, что, независимо от фактического порядка директив в файле конфигурации, Allow from test101.com будет оцениваться последней и переопределит Deny от sales.test101.com . Любым другим хостам разрешен доступ по умолчанию.

Пример 4
<Каталог / главная>
  Заказать разрешить, запретить
 

В соответствии с настройками по умолчанию всем хостам запрещен доступ к каталогу « / home ».

Пример 5
<Каталог / главная>
  Заказ запретить, разрешить
  Запретить всем
 

Всем хостам запрещен доступ к каталогу « / home ».Хотя доступ разрешен по умолчанию, Запретить со всех запрещает все хосты.

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

 Разрешить от всех | host | env =  переменная env  

Если указано значение Разрешить со всех , то доступ разрешен всем хостам в соответствии с конфигурацией директив Deny и Order .Чтобы разрешить доступ к серверу только определенным хостам или группам хостов, хост можно указать в любом из следующих форматов:

  • Имя домена: Хостам, имена которых совпадают или оканчиваются на эту строку, разрешен доступ. Например, Allow from test101.com будет соответствовать sales.test101.com и support.test101.com, но не будет соответствовать www.test999.com.
  • Полный / частичный IP-адрес: например, Разрешить с 10.1 предоставляет доступ ко всем IP-адресам в форме 10. \.ht ">
    Заказать разрешить, запретить
    Запретить всем
    Удовлетворить всех

    <Файлы .htaccess>
    Заказать разрешить, запретить
    Запретить всем

    Использование .htaccess может предотвратить частый перезапуск сервера. Это связано с тем, что директивы конфигурации в " httpd.conf " читаются при запуске. Любое изменение требует перезапуска. .htaccess проверяется при каждом доступе. Изменения вступят в силу при последующих доступах.Недостатком является снижение производительности, поскольку .htaccess необходимо проверять при каждом доступе к каталогу.

    <Ограничение методов > & методов >:

     <Ограничение  метод-запроса-1   метод-запроса-2 >
     

    Контроль доступа обычно эффективен для всех методов запроса (таких как GET, POST, HEAD, PUT, DELETE). Блоки и могут использоваться для ограничения контроля доступа на основе метода HTTP-запроса, используемого во входящем запросе.Это полезно, если вы реализовали запрос PUT, но хотите ограничить запросы PUT, но не запросы GET; или вы можете разрешить GET / HEAD, но ограничить PUT / DELETE.

    Для управление доступом применяется к перечисленным методам; все остальные методы не ограничены, например

    <Ограничить POST PUT DELETE>
       Заказать отказать, разрешить
       Запретить от всех
     

    Контроль доступа, применяемый к методам POST, PUT и DELETE; все другие методы не ограничены.

    Перечисленные имена методов могут быть одним или несколькими из: GET, POST, PUT, DELETE, CONNECT, OPTIONS, PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK и UNLOCK. Если используется GET, он также ограничивает запросы HEAD. Метод TRACE не может быть ограничен.

    используется для включения группы директив управления доступом, которые будут применяться к любому НЕ перечисленному методу доступа HTTP; т.е. он противоположен блоку и может использоваться для управления как стандартными, так и нестандартными / нераспознанными методами.При ограничении доступа следует использовать блок вместо блока , поскольку блок обеспечивает защиту от произвольных методов. Например,

    
       Заказать отказать, разрешить
       Запретить всем
     

    Методы запроса, отличные от GET и POST, такие как PUT, DELETE, не будут разрешены.

    Пример 7
    <Каталог "d: / myPorject / apache2 / users">
        AllowOverride FileInfo AuthConfig Limit
        Параметры MultiViews Индексы SymLinksIfOwnerMatch IncludesNoExec
        <Ограничить GET POST OPTIONS PROPFIND>
            
            Заказать разрешить, запретить
            
            Разрешить от всех
        
        
            
            Заказать отказать, разрешить
            
            Запретить всем
        
     
    Контроль доступа к файлам
     <Файлы имя-файла>
    ......
     

    В отличие от <каталог> , имя файла относится к DocumentRoot.

    (В разработке) (Приведите примеры)

    Контроль доступа к местоположению
    
    ......
     

    Ограничьте объем директив, определенных в блоке, соответствующими URL-адресами.

    (В разработке) (Приведите примеры)

    Виртуальные хосты

    Очень часто ваш веб-сервер должен поддерживать несколько имен хостов (например,g., www.test101.com, www.test102.com и т. д.), несколько IP-адресов (с несколькими сетевыми картами) или прослушивание нескольких портов. Довольно необычно и беспорядочно запускать один сервер для каждого имени хоста, IP-адреса или порта. Лучше запустить несколько «виртуальных хостов» на одном физическом веб-сервере.

    HTTP / 1.1 представляет новую функцию, называемую «виртуальный хост», которая позволяет запускать несколько имен хостов на одном физическом сервере / машине. HTTP / 1.1-совместимый сервер может поддерживать множество имен хостов / IP-адресов / портов на одном сервере.С другой стороны, сервер HTTP / 1.0 поддерживает только один адрес TCP и одно имя хоста. В HTTP / 1.1 заголовок запроса «Хост» является обязательным для выбора одного из виртуальных хостов.

    Прочтите "Virtual Host - How-to" в "htdocs \ manual \ programs \ vhosts \ index.html.html"

    Поддержка Apache (a) виртуальные хосты на основе имен, (b) виртуальные хосты на основе IP и (c) виртуальные хосты на основе портов.

    Именованные виртуальные хосты

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

    Чтобы использовать виртуальный хостинг на основе имен, вы должны указать IP-адрес (и, возможно, порт) на сервере, который будет принимать запросы для хостов. Это настраивается с помощью директивы NameVirtualHost . В обычном случае, когда необходимо использовать любые IP-адреса на сервере, вы можете использовать * в качестве аргумента для NameVirtualHost .

    Следующим шагом является создание блока для каждого отдельного хоста, который вы хотите обслуживать. Аргумент директивы должен быть таким же, как аргумент директивы NameVirtualHost (т.е. IP-адрес или * для всех адресов). Внутри каждого блока вам понадобится как минимум директива ServerName , чтобы указать, какой хост обслуживается, и директива DocumentRoot , чтобы показать, где в файловой системе находится содержимое этого хоста.

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

    Например, предположим, что вы обслуживаете домен www.test101.com, и вы хотите добавить виртуальный хост www.test102.com, который разрешается на тот же IP-адрес. Затем вы просто добавляете в « httpd.conf » следующее:

    ИмяVirtualHost *
       
    
    
    Имя сервера www.test101.com
    DocumentRoot / www101
    
       
    
    Имя сервера www.test102.com
    DocumentRoot / www102
     

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

    Многие серверы хотят быть доступными под несколькими именами. Это возможно с помощью директивы ServerAlias ​​, размещенной внутри раздела . Например, если вы добавите это в первый блок выше

     ServerAlias ​​www.test101.com * .test101.com 

    , то запросы для всех хостов в домене test101.com будут обслуживаться виртуальным хостом www.test101.com. Подстановочные знаки « * » и «? » могут использоваться для сопоставления имен.Конечно, вы не можете просто придумать имена и поместить их в ServerName или ServerAlias ​​. Сначала необходимо правильно настроить DNS-сервер для сопоставления этих имен с IP-адресом, связанным с вашим сервером.

    Теперь, когда поступает запрос, сервер сначала проверяет, использует ли он IP-адрес, соответствующий NameVirtualHost . Если это так, он будет просматривать каждый раздел с соответствующим IP-адресом и пытаться найти тот, в котором ServerName или ServerAlias ​​ совпадает с запрошенным именем хоста.Если он его находит, он использует конфигурацию для этого сервера. Если соответствующий виртуальный хост не найден, будет использован первый из перечисленных виртуальных хостов, соответствующих IP-адресу.

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

    Виртуальные хосты на основе IP

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

    Для тестирования виртуального хоста без доступа к DNS-серверу: Вы можете создать несколько имен хостов, указывающих на ваш собственный IP-адрес (или localhost) в вашей локальной таблице поиска DNS «hosts».Например:

     192.123.123.1 www.yellow.com
    192.123.123.1 www.sales.yellow.com
    192.123.123.1 www.orange.com
    127.0.0.1 локальный хост
    127.0.0.1 яблоко88
    127.0.0.1 оранжевый 99 

    В Windows локальная таблица поиска DNS называется «% SYSTEM_ROOT% \ system32 \ drivers \ etc \ Hosts ».

    Виртуальные хосты на базе IP

    Как указывает термин на основе IP, сервер должен иметь разные IP-адреса для каждого виртуального хоста на основе IP.Это может быть достигнуто с помощью машины, имеющей несколько физических сетевых подключений, или с помощью виртуальных интерфейсов, которые поддерживаются большинством современных операционных систем (подробности см. В документации по системе, они часто называются «ip aliases» и « ifconfig ») команда обычно используется для их настройки).

    Например:

     
      DocumentRoot / www201
      Имя сервера www.test201.com
    
       
    
      DocumentRoot / www202
      Имя сервера www.test202.com
     

    Host может быть _default_ , и в этом случае он соответствует чему-либо, что не соответствует .

    Виртуальные хосты на основе портов

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

    Пример выглядит следующим образом:

     Слушайте 80
    
      ServerName localhost: 80
      DocumentRoot / var / www1
      ErrorLog  /error.log
      CustomLog  /access.log объединены
      
      
      <Каталог "/ var / wwwl">
        Параметры Индексы FollowSymLinks MultiViews
        AllowOverride Нет
    
        # Apache 2.4
        Требовать все предоставлено
        # Apache 2.2
        # Заказать разрешить, запретить
        # разрешить от всех
      
    
    
    Слушай 8080
    
      Имя сервера localhost: 8080
      DocumentRoot / var / www2
      ErrorLog  / error.журнал
      CustomLog  /access.log объединены
     
      
      <Каталог "/ var / www2">
        Параметры Индексы FollowSymLinks MultiViews
        AllowOverride Нет
        
        # Apache 2.4
        Требовать все предоставлено
        # Apache 2.2
        # Заказать разрешить, запретить
        # разрешить от всех
      
     

    Директива Listen сообщает Apache, какой порт слушать. Apache может прослушивать более одного порта с помощью нескольких директив Listen.

    Настройка HTTPS для сервера Apache (Windows)

    Для Ubuntu прочтите «Настройка HTTPS для Apache (Ubuntu)».

    Шаг 1. Создайте сертификат для веб-сервера

    Первым шагом для настройки поддержки SSL является создание сертификата для вашего веб-сервера. Для этого вам понадобится OpenSSL, программное обеспечение с открытым исходным кодом, доступное на http://www.openssl.org. Бинарный пакет Apache для Windows включает OpenSSL в " \ bin ".

    Выполните следующую команду, чтобы создать самозаверяющий сертификат для сервера.Прежде всего, создается пара открытого и закрытого ключей. Закрытый ключ сохраняется в « MyServer.key » (который должен храниться в безопасном месте). Открытый ключ сохраняется в сертификате « MyServer.crt » для передачи пользователю.

    >  openssl req -x509 -days 36500 -newkey rsa: 2048 -nodes -keyout MyServer.key -out MyServer.crt
         -subj / C = SG / O = MyCompany / CN = localhost 
     
    
    >  openssl req -x509 -days 36500 -newkey rsa: 2048 -nodes -keyout MyServer.ключ -out MyServer.crt
         -subj / C = SG / O = MyCompany / CN = localhost   -config ../conf/openssl.cnf  

    Варианты:

    • -x509 : запрашивает сертификат X.509 для создания.
    • -дней 36500 : устанавливает срок действия сертификата. По умолчанию 30 дней. Я поставил 100 лет.
    • -newkey rsa: 2048 : создать новую пару ключей, используя RSA длиной 2048 бит.
    • -nodes : для файла закрытого ключа нельзя использовать парольную фразу.
    • -keyout и -out : укажите выходной файл закрытого ключа и сертификат.
    • -subj устанавливает код страны (/ C), название компании (/ O) и общее название (/ CN). Если вы не укажете их, вам будет предложено их ввести. CN (общее имя) должно совпадать с вашим ServerName в вашей конфигурации Apache, иначе сертификат не будет совпадать, и пользователи получат предупреждение при подключении.
    • -config : укажите файл конфигурации openssl.
    • См. Http://www.modssl.org/docs/2.2/ssl_reference.html для получения дополнительной информации о синтаксисе команд OpenSSL.

    Чтобы просмотреть содержимое сертификата (который содержит открытый ключ сервера), введите следующую команду openssl:

    >  openssl x509 -in server.crt -noout -text  
    Шаг 2. Настройка HTTP-сервера Apache

    Прежде всего переместите файл закрытого ключа ( MyServer.ключ ) и сертификат ( MyServer.crt ) в каталог конфигурации Apache ( / conf ).

    В основной конфигурации apache « httpd.conf » (под / conf ) проверьте следующие директивы:

    
    LoadModule модули ssl_module / mod_ssl.so
     
    
    Включите conf / extra / httpd-ssl.conf 

    LoadModule загружает модуль SSL, а директива Include включает дополнительные параметры конфигурации для поддержки SSL в " conf / extra / httpd-ssl.conf ", а именно

    
    Слушайте 443
     
    
    
    DocumentRoot " / wwwssl"
    Имя сервера localhost: 443
    ErrorLog " /logs/error.log"
    TransferLog " /logs/access.log"
    SSLEngine включен
    SSLProtocol все -SSLv2
    SSLCipherSuite ВЫСОКИЙ: СРЕДНИЙ:! ANULL:! MD5
    SSLCertificateFile " /conf/MyServer.crt"
    SSLCertificateKeyFile " / conf / MyServer.ключ"
     
    
    <Каталог " / wwwssl">
        Параметры Индексы FollowSymLinks MultiViews
        AllowOverride Нет
        Заказать разрешить, запретить
        разрешить от всех
    
    
     
     
    Проверка установки SSL

    Создайте корневой каталог документов « wwwssl » и разместите страницу приветствия (например, index.html ).

    Запустите сервер Apache. Запустите браузер и введите https: // localhost .

    Поскольку сертификат сервера самоподписан и не подписан доверенным ЦС (центром сертификации), браузер выдает предупреждение. Примите предупреждение и продолжайте ...

    Что если ...

    В случае ошибки при установке:

    Файл закрытого ключа, защищенный паролем

    Вы можете прикрепить парольную фразу (т. Е. Пароль) к файлу закрытого ключа. Однако, чтобы запустить Apache, вам необходимо либо жестко закодировать парольную фразу в файле конфигурации apache (такая же степень защиты, как без парольной фразы), либо предоставить парольную фразу во время диалогового окна запуска (это означает, что вы не можете автоматизировать запуск Apache. !).

    Сертификат, подписанный ЦС

    Для создания сертификата для подписи в CA:

    1. Создайте пару ключей общего доступа и запрос сертификата:
      >  openssl req -new -newkey rsa: 2048 -nodes
        -keyout MyServer.key -out www.mysite.com.csr
        -subj /O=MyCompany/OU=MyDepartment/CN=www.mysite.com  

      мы не использовали переключатель -x509 . Таким образом, команда сгенерирует пару открытого и закрытого ключей и запрос сертификата в .csr , но не сертификат ( файл .crt ).

    2. Отправьте этот файл запроса сертификата « www.mysite.com.csr » в центр сертификации (вместе с оплатой). Вы можете получить бесплатный сертификат на сайте CAcert.org .
    3. Переименуйте полученный сертификат в MyServer.crt и проверьте его содержимое:
      >  openssl verify -CAfile /path/to/trusted_ca.crt -purpose sslserver server.crt  

      Убедитесь, что сертификат соответствует вашему закрытому ключу:

      >  openssl x509 -noout -modulus -in server.пем | openssl sha1 
      >  openssl rsa -noout -modulus -in server.key | openssl sha1  
    4. Установите свой закрытый ключ ( MyServer.key ) и сертификат ( Myserver.crt ) в свою конфигурацию apache.

    Разные конфигурации

    Файлы журнала

    Apache создает следующие файлы журнала: журнал ошибок, журнал доступа. Конфигурация по умолчанию помещает журнал ошибок в " $ APACHE_home \ logs \ error.log "и войдите в журнал" $ APACHE_home \ logs \ access.log ". Просмотрите эти файлы журнала.

    Журнал ошибок: директивы конфигурации, относящиеся к регистрации ошибок: ErrorLog и LogLevel :

    • Директива ErrorLog указывает расположение файла журнала ошибок. Например:
      Журналы ErrorLog / error.log 
    • Директива LogLevel управляет типами сообщений об ошибках, записываемых в журнал ошибок.Например:
      Предупреждение об уровне журнала 

    Примеры записей в журнале ошибок:

     [вс, 18 октября, 16:53:40 xxxx] [ошибка] [клиент 127.0.0.1] Недействительный метод в запросе get /index.html HTTP / 1.0 
    [вс, 18 октября, 18:36:20 xxxx] [ошибка] [клиент 127.0.0.1] Файл не существует: d: /myPorject/apache2/htdocs/t.html [Вс, 18 октября, 19:58:41 xxxx] [ошибка] [клиент 127.0.0.1] клиент отклонен конфигурацией сервера: d: / myPorject / apache2 / htdocs / запрещено / index.HTML

    Журнал доступа: директивы конфигурации, относящиеся к регистрации доступа: CustomLog и LogFormat :

    • Директива CustomLog определяет расположение файлов журнала доступа. Есть 3 типа журналов доступа: общий, реферер и агент. Общий журнал доступа фиксирует доступ клиентов. Журнал доступа реферера фиксирует «реферер» (как в заголовке запроса Referer) запроса. (Реферер может использоваться для контроля доступа или учета, например для электронной рекламы.) Журнал доступа агента фиксирует типы браузеров, использованных при выдаче запроса (как в заголовке запроса User-Agent). Для большинства установок не требуются журналы доступа реферера и агента. Например:
      CustomLog "журналы / access.log" общие
      #CustomLog logs / referer.log referer
      #CustomLog logs / agent.log agent 

      Вы можете объединить все 3 журнала доступа в один файл журнала, используя ключевое слово «комбинированный».

      #CustomLog "журналы / доступ.бревно "комбинированное 

      "

    • Директива LogFormat управляет форматом журналов доступа. Например:
      LogFormat "% h% l% u% t \"% r \ "%> s% b \"% {Referer} i \ "\"% {User-Agent} i \ "" вместе
      LogFormat "% h% l% u% t \"% r \ "%> s% b" общий
      LogFormat "% {Referer} i ->% U" referer
      LogFormat "% {User-agent} i" агент 

    Вот несколько примеров записей в «общем» журнале доступа:

     127.0.0.1 - - [18 октября 2009: 15: 41: 30 +0800] "GET / HTTP / 1.1" 200 44
    127.0.0.1 - - [18 октября 2009 г .: 18: 36: 20 +0800] «GET /t.html HTTP / 1.0» 404 204
    127.0.0.1 - - [18 октября 2009 г .: 18: 32: 05 +0800] "get /index.html HTTP / 1.0" 501 215 
    Ответ об ошибке

    Основная роль Apache - доставка документов. Когда apache сталкивается с проблемами и не может удовлетворить запрос клиента, он генерирует код ошибки и возвращает сообщение об ошибке, чтобы объяснить ошибку. Apache предоставляет набор сообщений об ошибках по умолчанию.Тем не менее, вы можете настроить свой собственный ответ об ошибке с помощью директивы ErrorDocument следующим образом:

    • Создайте короткое сообщение, указав текстовую строку после (").
       ErrorDocument 404 "Не удается найти запрошенный документ. 
    • Перенаправить на локальную страницу с использованием относительного URL:
       ErrorDocument 404 /missing.html
      ErrorDocument 403 //cgi-bin/forbidden.pl 
    • Перенаправить на внешнюю страницу с использованием абсолютного URL.В этом случае apache отправит клиенту сообщение «перенаправить». Клиент должен отправить еще один запрос, чтобы получить перенаправленную страницу.
       ErrorDocument 404 http://www.green.com/missing.html 
    Индексирование каталогов и листинг

    Если клиент выдает URL-адрес, выбирающий каталог, Apache возвращает список этого каталога, если Options Indexes включен; в противном случае возвращается ошибка «403 запрещено». Однако, если в каталоге есть файл с именем « index.html ", Apache вместо этого возвращает этот" index.html ". Вы можете использовать директиву DirectoryIndex , чтобы указать имя файла индексации. Например,

    
        
        DirectoryIndex index.html myindex.html
     

    Вы можете контролировать внешний вид (например, причудливую индексацию) списка каталогов с помощью директивы IndexOptions (модуля mod_autoindex ). См. Документацию Apache для получения более подробной информации.

    Чтобы отключить автоматическое индексирование каталога, вы можете использовать директиву « Options -indexes ». Apache вернет ошибку «403 Forbidden», если будет сделан запрос каталога. Например:

     <путь к каталогу>
       Параметры -Индексы
     
    Включить на стороне сервера (SSI)

    [TODO]

    СПРАВОЧНИКИ И РЕСУРСЫ

    файл apache2.conf | Apache

    В Ubuntu основным файлом конфигурации Apache2, который содержит глобальные для Apache настройки, является / etc / apache2 / apache2.conf . Этот файл содержит набор директив, которые указывают Apache, что делать. За большинством директив следует аргумент, который представляет собой данные, переданные в директиву. Вот описание директив, содержащихся в этом файле:

    • ServerRoot - указывает, где хранятся файлы конфигурации и модули Apache. Этот корневой каталог сервера затем используется в качестве префикса для других записей каталога.
    • Файл мьютекса - устанавливает механизм и расположение файла блокировки, которые httpd и модули используют для сериализации доступа к ресурсам.
    • PidFile - указывает файл идентификатора процесса (PID) сервера. В Ubuntu PID определяется переменной APACHE_PID_FILE в файле / etc / apache2 / envvars .
    • Тайм-аут - указывает количество секунд до того, как веб-сервер истечет время ожидания отправки или получения запроса.
    • KeepAlive - если установлено значение На эта опция позволит каждому соединению оставаться открытым для обработки нескольких запросов от одного и того же клиента.Если установлено значение Off (значение по умолчанию), каждый запрос должен будет устанавливать новое соединение.
    • MaxKeepAliveRequests - указывает максимальное количество запросов на постоянное соединение.
    • KeepAliveTimeout - указывает время, в течение которого данное соединение с клиентом остается открытым для получения дополнительных запросов от этого клиента.
    • Пользователь - указывает пользователя, который запускает Apache. Пользователь определяется переменной APACHE_RUN_USERS в файле / etc / apache2 / envvars (по умолчанию это www-data ).
    • Группа - указывает группу, в которой работает Apache. Группа определяется переменной APACHE_RUN_GROUP в файле / etc / apache2 / envvars (по умолчанию это www-data ).
    • HostnameLookups - указывает, следует ли включить поиск DNS, чтобы можно было регистрировать имена хостов. По умолчанию выключено.
    • ErrorLog - указывает расположение файла журнала ошибок. Расположение определяется переменной APACHE_LOG_DIR в файле / etc / apache2 / envvars .

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

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