====== Apache ======
===== Общее =====
Доступные сайты хранятся в **/etc/apache2/sites-available**, активные в **-||-/sites-enabled**\\
Управление сайтами:
# {a2ensite, a2dissite}
Для работы в моей вики почему то потребовалось ставить **модуль "php"***, хотя он вроде как включен уже должен быть.., хз\\
$ apt install libapache2-mod-phpX.X
:!: Пример конфига сайта вики
ServerName zxcx.ru
DocumentRoot /var/www/zxcx.ru
order deny,allow
allow from all
order allow,deny
deny from all
satisfy all
Redirect / https://zxcx.ru/
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
order deny,allow
allow from all
order allow,deny
deny from all
satisfy all
**Команды**\\
service apache2 reload
apache2ctl configtest
=== Реинсталяция вики ===
Перенос вики на другой сайт:\\
* перенес папку **/var/www/* ** со всем содержимым
* на новом сервере поставил **certbot** и папку **/etc/letscrypt/** полностью скопировал со старого
* скопировал **/etc/apache2/sites-available** и включил все сайты
* **a2enmod ssl && apt install libapache2-mod-php7.3**
===== 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**.\\
В конфиг сайта добавляем следующее:
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
Проверяем корректность настроек:
# apachectl configtest
Применяем новую конфигурацию
# apachectl graceful
Не забываем **разрешить 443 порт** в файерволе.\\
На данном этапе сайт **уже должен быть доступен по https**.\\
=== Редирект ===
Со старого сайта (блока ) делаем редирект на новый, в итоге должно получится типа того:
ServerName my-site.ru
DocumentRoot /var/www/html/my-sitq.ru
Redirect / https://my-site.ru
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