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
- Для загрузки модуля mod_rewrite найдите и раскомментируйте (уберите в начале строки символ «#») данную строку:
LoadModule rewrite_module modules/mod_rewrite.so - Для загрузки PHP интерпретатора, в конец блока загрузки модулей необходимо добавить строку:
LoadModule php5_module «C:/php/php5apache2_2.dll» - Определите каталог содержащий конфигурационный файл PHP, добавив ниже следующую строку:
PHPIniDir «C:/php» - Найдите и раскомментируйте строку:
ServerName www.example.com:80
Отредактируйте ее следующим образом установив изначальное имя сервера:
ServerName localhost:80 - Найдите строку:
DocumentRoot «c:/Apache2/htdocs»
Назначьте корневую директорию управления сайтами (немного позже мы ее создадим):
DocumentRoot «C:/apache» - Найдите данный блок:
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
И замените его на нижеследующий:
<Directory />
Options Includes Indexes FollowSymLinks
AllowOverride All
Allow from all
</Directory> - Удалите или закомментируйте первоначальный блок управления директориями (он нам не понадобится), который без комментариев выглядит примерно так:
<Directory «c:/Apache2/htdocs»>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory> - Найдите блок:
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
Замените его на:
<IfModule dir_module>
DirectoryIndex index.html index.htm index.shtml index.php
</IfModule> - Найдите строку:
ErrorLog «logs/error.log»
Замените на нижеследующую (в этом случае просматривать глобальный файл ошибок сервера будет удобнее):
ErrorLog «C:/apache/error.log» - Найдите строку:
CustomLog «logs/access.log» common
Замените на:
CustomLog «C:/apache/access.log» common - Для работы SSI (включения на стороне сервера) следующие строки, находящийся в блоке <IfModule mime_module>, необходимо найти и раскомментировать:
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml - Добавьте ниже, в тот же блок <IfModule mime_module>, две строки:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps - И, наконец, найдите и раскомментируйте строки:
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. Эти документы обычно хранятся в каталоге «
» или «
» (где
обозначает установленный каталог вашего Apache). Прочтите руководства и инструкции.
Чтобы установить Apache 2, прочтите «Как установить Apache 2».Я предполагаю, что HTTP-сервер Apache установлен в d: \ myProject \ apache2
, работающий на порту 8000. Корневой каталог документа - «
».
Базовая конфигурация
Apache настраивается путем помещения директив конфигурации, таких как Listen
и ServerName
, в файл конфигурации, который будет прочитан исполняемым файлом Apache во время запуска.
Файл конфигурации по умолчанию называется « httpd.conf
"(или" apache2.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 "
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
- доступ разрешен по умолчанию;
- все хосты запрещены;
- в домене «
* .test101.com
».
Разрешены
Следовательно, разрешены только хосты в " * .test101.com
".
Пример 3
Заказать разрешить, запретить Разрешить с test101.com Запретить на sales.test101.com
- доступ запрещен по умолчанию;
- все хосты в «
*.test101.com
"домен разрешен, и; - хоста в субдомене «*
.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). Блоки
Для
<Ограничить POST PUT DELETE> Заказать отказать, разрешить Запретить от всех
Контроль доступа, применяемый к методам POST, PUT и DELETE; все другие методы не ограничены.
Перечисленные имена методов могут быть одним или несколькими из: GET, POST, PUT, DELETE, CONNECT, OPTIONS, PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK и UNLOCK. Если используется GET, он также ограничивает запросы HEAD. Метод TRACE не может быть ограничен.
Заказать отказать, разрешить Запретить всем Методы запроса, отличные от 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
иМногие серверы хотят быть доступными под несколькими именами. Это возможно с помощью директивы
ServerAlias
, размещенной внутри разделаServerAlias www.test101.com * .test101.com
, то запросы для всех хостов в домене test101.com будут обслуживаться виртуальным хостом www.test101.com. Подстановочные знаки «
*
» и «?
» могут использоваться для сопоставления имен.Конечно, вы не можете просто придумать имена и поместить их вServerName
илиServerAlias
. Сначала необходимо правильно настроить DNS-сервер для сопоставления этих имен с IP-адресом, связанным с вашим сервером.Теперь, когда поступает запрос, сервер сначала проверяет, использует ли он IP-адрес, соответствующий
NameVirtualHost
. Если это так, он будет просматривать каждый раздел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 Слушай 8080/error.log CustomLog /access.log объединены <Каталог "/ var / wwwl"> Параметры Индексы FollowSymLinks MultiViews AllowOverride Нет # Apache 2.4 Требовать все предоставлено # Apache 2.2 # Заказать разрешить, запретить # разрешить от всех Имя сервера 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:
- Создайте пару ключей общего доступа и запрос сертификата:
> 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
). - Отправьте этот файл запроса сертификата «
www.mysite.com.csr
» в центр сертификации (вместе с оплатой). Вы можете получить бесплатный сертификат на сайтеCAcert.org
. - Переименуйте полученный сертификат в
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
- Установите свой закрытый ключ (
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 .
-