Доступные сайты хранятся в /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
# a2enmod ssl
При запросе, нужно подтвердить владение доменом, с помощью ТХТ-записи в 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>