Apache — http сервер или просто веб сервер апач. Является кросплатформенным ПО, поддерживающим практически все популярные операционные системы, в том числе и Windows. Ценится прежде всего за свою надежность и гибкость конфигурации, которую можно существенно расширить благодаря подключаемым модулям, которых существует великое множество. Из недостатков отмечают большую требовательность к ресурсам, по сравнению с другими серверами. Держать такую же нагрузку, как, к примеру, nginx, apache не сможет при схожих параметрах железа.

В CentOS служба apache называется httpd. Когда я только знакомился с этим дистрибутивом, мне было непривычно. В Freebsd и Debian, с которыми я до этого работал служба веб сервера называлась apache, хотя где-то я замечал, кажется во фрюхе, что файл конфигурации имеет имя httpd.conf. До сих пор я не знаю, почему распространились оба эти названия. Был бы рад, если бы со мной кто-то поделился информацией на этот счет в комментариях.

Теперь приступим к установке apache. В CentOS 7 это делается очень просто:

yum install -y httpd

Добавляем apache в автозагрузку:

systemctl enable httpd

Запускаем apache в CentOS 7:

systemctl start httpd

Сейчас можно зайти по адресу http://ip-адрес-вашего-сервера и увидеть картинку:

Займемся настройкой apache. У нас будет следующая структура веб хостинга:

/home раздел для размещения сайтов
/home/site1.com/www директория для содержимого сайта
/home/site1.com/logs директория для логов сайта

mkdir /home/site1.ru && mkdir /home/site1.ru/www && mkdir /home/site1.ru/logs
chown -R apache. /home

Дальше редактируем файл конфигурации apache — httpd.conf по адресу /etc/httpd/conf. Первым делом проверим, раскомментированна ли строчка в самом конце:

IncludeOptional conf.d/*.conf

Если нет, раскомментируем и идем в каталог /etc/httpd/conf.d.
Создаем там файл site1.com.conf:

mcedit /etc/httpd/conf.d/site1.com.conf
<VirtualHost *:80>
 ServerName site1.com
 ServerAlias www.site1.com
 DocumentRoot /home/site1.com/www
 <Directory /home/site1.com/www>
 Options FollowSymLinks
 AllowOverride All
 Require all granted
 </Directory>
 ErrorLog /home/site1.com/logs/error.log
 CustomLog /home/site1.com/logs/access.log common
</VirtualHost>

Перезапуск apache в centos

systemctl restart httpd

Если возникли какие-то ошибки — смотрим лог apache /var/log/httpd/error_log.
Если все в порядке, то проверим, нормально ли настроен наш виртуальный хост.
Для этого создадим в папке /home/site1.com/www файл index.html следующего содержания:

mcedit /home/site1.com/www/index.html
Апач настроен!
chown apache. /home/site1.com/www/index.html

Теперь в браузере набираем адрес http://ip-адрес-вашего-сервера . Если видим текст: «Апач настроен!»

значит все правильно настроили. Если какие-то ошибки, то идем смотреть логи. Причем в данном случае не общий лог httpd, а лог ошибок конкретного виртуального хоста по адресу /web/site1.ru/logs/error.log.

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

Чтобы настроить ротацию логов виртуальных хостов, необходимо отредактировать файл /etc/logrotate.d/httpd. Он создается во время установки apache и включает в себя настройку ротации стандартного расположения логов. А так как мы перенесли логи каждого виртуального хоста в индивидуальную папку, необходимо добавить эти папки в этот файл:

mcedit /etc/logrotate.d/httpd
/home/*/logs/*.log
/var/log/httpd/*log {
 missingok
 notifempty
 sharedscripts
 delaycompress
 postrotate
 /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
 endscript
}

Мы добавили одну строку в самое начала файла. Теперь логи всех виртуальных хостов в папке /web будут ротироваться по общему правилу.

В принципе, простейший веб сервер уже готов и им можно пользоваться.