Apache Virtual Host в CentOS (виртуальные хосты Apache)
В данной статье будет рассказано о том, как настроить Apache в CentOS и разместить несколько сайтов, используя виртуальные хосты. Все операции имеет право делать только root.
Начнем с того, что в CentOS Apache называется httpd, и, соответственно, команда для установки имеет следующий вид:
yum install httpd
Нас спросят, действительно ли мы хотим этим заняться. Отвечаем y (Yes). Можно было написать и так:
yum install httpd -i
Добавим его в автозагрузку:
chkconfig httpd on
Все операции с демоном httpd осуществляются командой
/etc/init.d/httpd %команда%
или так
service httpd %команда%
Например, так можно перезапустить сервис:
service httpd restart
Список доступных команд можно посмотреть вот так:
service httpd
Все настройки Apache в CentOS хранятся в подкаталогах каталога /etc/httpd
В каталоге conf
находится главный конфигурационный файл - httpd.conf
.
Рассмотрим только основные опции, которые необходимы. Все, о чем здесь не будет сказано, оставляем по-умолчанию.
Директива Listen
указывает, какие порты будет слушать сервер. По умолчанию там стоит значение 80, т. е. все соединения идут с 80-го порта (мировой стандарт, если что). Если у нас специфическая ситуация, то можно поменять это значение, либо добавить другие порты, написав, например, следующее:
Listen 80
Listen 81
Listen 192.168.1.25:82
Что, собственно, здесь происходит? Listen 81
указывает, что нужно слушать также и 81 порт. Строка Listen 192.168.1.25:82
заставляет сервер прослушивать запросы, приходящие с сетевого интерфейса с адресом 192.168.1.25 через 82-ой порт.
В строке
Include conf.d/*.conf
говорится, что нужно также загрузить параметры из всех файлов с расширением .conf
, находящихся в каталоге conf.d
. Забегая вперед замечу, что файлы конфигураций сайтов мы будем размещать именно там.
ServerAdmin root@localhost
указывает, кто будет получать сообщения об ошибках сервера на почту. Для каждого сайта это значение потом можно будет переопределить (типичная ситуация, когда на одном физическом сервере находится несколько сайтов разных владельцев).
DirectoryIndex index.html index.html.var
указывает, в каком порядке искать страницы сайта, если пользователь ввел только адрес. Немного модифицируем эту строку для разработки на php:
DirectoryIndex index.php index.html index.html.var
Строки для языков у меня стерты все, за исключением двух:
AddLanguage en .en
AddLAnguage ru .ru
и соответственно
LanguagePriority ru en
Снимаем комментарий вот тут:
AddDefaultCharset UTF-8
и вот тут
NameVirtualHost *:80
Для тех, кто собирается программировать на Python, используя Django, рекомендую добавить в самом конце строку
WSGIRescrictStdout Off
Перейдем в каталог /etc/httpd/conf.d/
.
Здесь мы видим несколько файлов с расширением .conf
. Обычно там лежат default.conf
, welcome.conf
и php.conf
(если уже установили PHP). Для добавления нового сайта достаточно скопировать
default.conf
и немного изменить его:cp default.conf mysite.conf
vim mysite.conf
Внутри файла достаточно написать следующее:
<VirtualHost *:80>
ServerName www.demo1.ru
ServerAlias demo1.ru
ServerAdmin admin@otheremail.com #Указываем адрес администратора этого сайта
DocumentRoot "/var/www/demo1"
<Directory "/var/www/demo1">
Order allow,deny
Allow from all
</Directory>
LogLevel debug #По умолчанию для всего сервера стоит значение warn, т. е. писать в лог только события не ниже предупреждения. Для разработчиков сайтов я рекомендую ставить именно debug
ErrorLog "/var/www/demo1/log/apache_error.log" #Эти две директивы необязательны, но они помогут разобраться, какие ошибки происходят на сайте
CustomLog "/var/www/demo1/log/apache_access.log" combined #Лог с запросами к серверу: страницы, ресурсы и т. д.
#FileETag none
</VirtualHost>
Также рекомендую добавить следующую запись в настройки виртуального хоста:
Alias / "/var/www/demo1"
Тем самым мы указываем, какую директорию считать корнем сайта.
Внимание! Каталог /var/www/demo1/log/
должен существовать, иначе при перезапуске apache выдаст сообщение об ошибке и откажется стартовать!
После всего этого перезагружаем конфигурацию apache (быстрее, чем полный перезапуск с параметром restart
, особенно если с сайтом работают клиентские машины):
/etc/init.d/httpd reload
Теперь, чтобы обратиться к данному сайту по адресу, необходимо прописать сопоставление в файле hosts
Linux: /etc/hosts
Windows: C:\Windows\System32\Drivers\etc\hosts
Любым текстовым редактором добавляем туда строки (у меня адрес сервера 192.168.1.1):
192.168.1.1 demo1.lo
192.168.1.1 www.demo1.lo
Теперь, когда я буду вводить в строке браузера demo1.lo, он будет автоматически запрашивать на сервере нужное содержимое.
Обратите внимание, по умолчанию apache ищет в каталоге сайта файл index.html
.
Комментариев нет :
Отправить комментарий