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

Установка

Эта часть инструкции достаточно проста. Достаточно использовать штатный менеджер пакетов yum

1
yum -y install httpd

Первоначальная настройка

Я не просто так оговорился, “дошлифовка” apache - достаточно интересное дело. Тем не менее:

  • удаляем тестовую страницу. Нет, серьёзно, зачем она вам?
1
rm -f /etc/httpd/conf.d/welcome.conf
  • Конфигурируем httpd

Для этого открываем основной файл конфигурации httpd.conf

1
mcedit /etc/httpd/conf/httpd.conf

почему mcedit - вверху достаточно удобно заметить номер строки, привычка. :)

Итак

  • на строке 86 находим адрес почты и меняем на свою служебную. Народ должен знать своих…
1
ServerAdmin wikiadmin@wikiadmin.net
  • на строке 95 меняем имя сервера.
1
ServerName wikiadmin.net
  • на строке 151 None меняем на All, при неработающем mod_rewrite вспомните эту опцию
1
AllowOverride All
  • на строке 164 добавляем файл, который будет отображаться Apache по-умолчанию. В наше время часто это index.php, что и добавим:
1
DirectoryIndex index.html index.cgi index.php
  • и добавим немного в конце файла:
1
2
ServerTokens Prod
KeepAlive On
  • Выходим из редактора, перезапускаем веб-сервер и ставим его на автозапуск
1
2
systemctl start httpd
systemctl enable httpd
  • Для теста можем создать файл и проверить, будет ли он отображаться по имени сервера (надеюсь, DNS уже настроен) и по IP
1
echo test > /var/www/html/index.html

В браузере видем test

  • Что ещё следовало бы сделать…

Разумеется, отключить ненужные модули. Apache классный веб-сервер с множеством возможностей, но нужны ли вам сразу авторизация по LDAP, обратный прокси и тому подобные вкусности… А меньше модулей - быстрее работа.

Подключаем PHP

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

Установка PHP

1
yum -y install php php-mbstring php-pear

И сразу - поправьте часовой пояс. Забывает каждый второй, чесслово :)

1
mcedit /etc/php.ini

И на строке 878 (да, долго жмём PageDown) нужно чтобы было это:

1
date.timezone = "Europe/Moscow"
  • Перегружаем веб-сервер и поддержка PHP работает
1
systemctl restart httpd
  • Проверяем, создав страницу
1
mcedit /var/www/html/index.php

с текстом

1
2
3
4
5
6
7
8
9
<html>
<body>
<div style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;">
<?php
   print Date("Y/m/d");
?>
</div>
</body>
</html>

Подключаем Ruby

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

  • Установка Ruby
1
yum -y install ruby

На всякий случай: по-умолчанию, CGI разрешено на использование только из директории /var/www/cgi-bin. Если захотите поправить, это возможно на 247 строке httpd.conf

1
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

Нам ничего не мешает это немного дополнить, создав файл /etc/httpd/conf.d/cgi-enabled.conf со следующим текстом:

1
2
3
4
<Directory "/var/www/html/cgi-enabled">
    Options +ExecCGI
    AddHandler cgi-script .rb
</Directory>

Конечно, не забываем:

1
systemctl restart httpd
  • Делаем тестовую страницу ruby
1
mcedit /var/www/html/cgi-enabled/index.rb

С текстом

1
2
3
4
5
6
7
8
#!/usr/bin/ruby

print "Content-type: text/html\n\n"
print "<html>\n<body>\n"
print "<div style=\"width: 100%; font-size: 40px; font-weight: bold; text-align: center;\">\n"
print "Ruby Script Test Page"
print "\n</div>\n"
print "</body>\n</html>\n" 

Поправим немного права:

1
chmod 705 /var/www/html/cgi-enabled/index.rb 

И смотрим в браузере…

Виртуальные хосты (Virtual Hosts)

Разумеется, на одном сервере может находится не один сайт. Я лично встречал сервера, где располагались более 3000 сайтов-визиток. Итак:

  • Создаём директорию для второго сайта (который в дальнейшем назовём site2):
1
mkdir -p /var/www/site2
  • Создаём файл конфигурации для этого сайта
1
mcedit /etc/httpd/conf.d/site2.conf

следующего содержания:

1
2
3
4
5
6
7
<VirtualHost *:80>
    DocumentRoot /var/www/site2
    ServerName site2
    ServerAdmin webmaster@site2
    ErrorLog logs/site2.host-error_log
    CustomLog logs/site2.host-access_log combined
</VirtualHost>

Добавляем страницу на новый сайт:

1
cat test > /var/www/site2/index.html

Теперь перегружаем сервер httpd

1
systemctl restart httpd

И проверяем в браузере по новому URL. Если что не так, смотрим логи.

Конфигурируем сайт, который будет использовать зашифрованное соединение (Configure SSL to use secure encrypt connection.)

В последнее время сайты всё чаще располагают за https, что должно обезопасить немного пользователей. Минусы, конечно есть: повышенное потребление процессоров, невозможность кеширования на PROXY и необходимость платить и за сертификат. Но если надо - значит надо:

  • Создаём сертификат и ключ с помощью SSL

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

  • Ставим модуль для SSL
1
yum -y install mod_ssl

Редактируем конфигурацию для безопасного сайта:

1
mcedit /etc/httpd/conf.d/ssl.conf

На строке 59 раскоментируем

1
DocumentRoot "/var/www/html"

На строке 60

1
ServerName wikiadmin.net:443

На строке 100 указываем сертификат

1
SSLCertificateFile /etc/pki/tls/certs/server.crt

На строке 107 прописываем ключ

1
SSLCertificateKeyFile /etc/pki/tls/certs/server.key

И перегружаем сервер

1
systemctl restart httpd

Включаем доступ по авторизации (Enable Basic Authentication)

Предположим, на сайте есть админка или раздел (для примера auth-basic), куда посторонним вход запрещён. Самый простой способ - закрыть это авторизацией. Итак, добавляем в конфигурацию сайта ещё несколько строк (до )

1
2
3
4
5
6
<Directory /var/www/html/auth-basic>
    AuthType Basic
    AuthName "Basic Authentication"
    AuthUserFile /etc/httpd/conf/.htpasswd
    require valid-user
</Directory>

Добавляем туда тестовую страницу

1
echo "test auth" > /var/www/html/auth-basic/index.html

Теперь добавляем логин для входа

1
htpasswd -c /etc/httpd/conf/.htpasswd admin

Попутно будет запрошен дважды пароль для нашего пользователя admin. И незабываем перезапустить веб-сервер

1
systemctl restart httpd

Используем WebDAV как сетевой диск (Use WebDAV)

Технология стара и работает идеально, даже странно что используется редко. Тем не менее, попробуем. Итак, создаём директорию, которую хотим выставить наружу

1
mkdir /home/webdav

Даём права веб-серверу на эту директорию

1
chown apache. /home/webdav

Меняем права для папки

1
chmod 770 /home/webdav

И добавляем в конфиг сайта

1
2
3
4
5
6
7
8
9
10
11
12
13
DavLockDB "/tmp/DavLock"
Alias /webdav /home/webdav
<Location /webdav>
    DAV On
    Options None
    AuthType Basic
    AuthName WebDAV
    AuthUserFile /etc/httpd/conf/.htpasswd
    <RequireAny>
        Require method GET POST OPTIONS
        Require valid-user
    </RequireAny>
</Location>

Создаём пользователя для доступа

1
htpasswd -c /etc/httpd/conf/.htpasswd admin

И перегружаем веб-сервер

1
systemctl restart httpd

А теперь проверяем. В Windows можно этот URL подключить как сетевой диск.