Содержание

Apache

Общее

Доступные сайты хранятся в /etc/apache2/sites-available, активные в -||-/sites-enabled
Управление сайтами:

# {a2ensite, a2dissite} <site-name>

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

$ apt install libapache2-mod-phpX.X
:!: Пример конфига сайта вики
<VirtualHost *:80>
        ServerName zxcx.ru
        DocumentRoot /var/www/zxcx.ru
 
        <Directory /var/www/zxcx.ru>
            order deny,allow
            allow from all
        </Directory>
 
        <LocationMatch "/(data|conf|bin|inc|vendor)/">
            order allow,deny
            deny from all
            satisfy all
        </LocationMatch>
 
        Redirect / https://zxcx.ru/
</VirtualHost>
 
<VirtualHost *:443>
        ServerName zxcx.ru
        DocumentRoot /var/www/zxcx.ru
        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/zxcx.ru/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/zxcx.ru/privkey.pem
 
        <Directory /var/www/zxcx.ru>
            order deny,allow
            allow from all
        </Directory>
 
        <LocationMatch "/(data|conf|bin|inc|vendor)/">
            order allow,deny
            deny from all
            satisfy all
        </LocationMatch>
</VirtualHost>

Команды

service apache2 reload
apache2ctl configtest

Реинсталяция вики

Перенос вики на другой сайт:

SSL

Возможно требуется включение модуля SSL

# a2enmod ssl

Получение сертификата

Настройка apache

При запросе, нужно подтвердить владение доменом, с помощью ТХТ-записи в DNS либо с самого веб сервера, рассматривается второй вариант т.к. есть возможность автопродления. Сертификат выдается на 90 дней.

:!: Этот момент под вопросом, с несколькими сайтами были проблемы :!: Создаем общий конфигурационный файл (/etc/apache2/conf-enabled/lets.conf), в котором пропишем алиас

Alias /.well-known/acme-challenge/ /var/www/html/.well-known/acme-challenge/

в данном примере, запросы для страниц /.well-known/acme-challenge всех сайтов мы переводим в каталог /var/www/html/.well-known/acme-challenge

Проверяем корректность конфигурационного файла и ребутим если все норм:

# apachectl configtest
# systemctl restart apache2

Далее ставим утилиту certbot, с помощью нее процесс работы с сертификатами максимально автоматизирован.

# apt install certbot

Получение

Получение сертификата:
:!: При первом получении, сайт должен быть доступен по http !!!

# certbot certonly --webroot --agree-tos --email admin@my-site.ru --webroot-path /var/www/html/my-site.ru/ -d my-site.ru -d www.my-site.ru

Создаются 2 файла в /etc/letsencrypt/live/my-site.ru.
Публичный ключ будет с именем cert.pem, а приватный — privkey.pem

Автопродление

Для автопродления создаем задачу в планировщике (crontab -e). Уточните точный путь (which certbot)

# 0 0 * * 1,4 /usr/bin/certbot renew

Настройка сайтов

Необходимо проверить наличие модуля ssl_module

# apachectl -M | grep ssl

Команда должна вернуть ssl_module (shared), если нет, тогда включаем командой a2enmod ssl.

В конфиг сайта добавляем следующее:

<VirtualHost *:443>
    ServerName my-site.ru
    DocumentRoot /var/www/html/my-sitq.ru
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/my-site.ru/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/my-site.ru/privkey.key
</VirtualHost>

Проверяем корректность настроек:

# apachectl configtest

Применяем новую конфигурацию

# apachectl graceful

Не забываем разрешить 443 порт в файерволе.
На данном этапе сайт уже должен быть доступен по https.

Редирект

Со старого сайта (блока <VirtualHost *:80>) делаем редирект на новый, в итоге должно получится типа того:

<VirtualHost *:80>
    ServerName my-site.ru
    DocumentRoot /var/www/html/my-sitq.ru
    Redirect / https://my-site.ru
</VirtualHost>
 
<VirtualHost *:443>
    ServerName my-site.ru
    DocumentRoot /var/www/html/my-sitq.ru
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/my-site.ru/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/my-site.ru/privkey.key
</VirtualHost>