/ #linux #web 

Встановлення та налаштування сertbot для роботи з OpenResty

Шлях покращення продуктивності магазину на Magento 2 привів мене до веб-серверу OpenResty. Що воно таке? Це повноцінний сервер веб-додатків, який об’єднує веб-сервер ​​nginx з мовою програмування Lua. Іншими словами покращенний nginx, який у своїй інсталяції навіть має відповідний бінарник. Але тут таки і проблема, менеджер пакетів apt в Debian не бачить встановленого nginx, але має його в залежностях наприклад для системи отримання SSL-сертифікатів certbot (точніше для додаткового функціоналу у вигляді python-certbot-nginx). При спробі встановлювати або оновлювати certbot, система буде намагатись встановити оригінальний nginx з репозиторію, чого б нам зовсім не хотілось. Офіційно, якщо шо, OpenResty не підтримується certbot-ом, але ми спробуємо розрулити ситуацію. Go.

Cпочатку встановимо certbot без встановлення nginx. Ідея проста - спочатку створюємо фейковий пакет nginx і прописуємо йому версію, якої оригінальний пакет не досягне ще досить довго. Встановлюємо фейковий nginx і при подальших спробах його оновити будемо отримувати повідомлення, що найновіша версія вже встановлена. Вуаля.

Для створення фейкових пакетів використовуємо equivs.

apt install equivs

Тепер створюємо шаблон для фейкового пакету:

equivs-control nginx

В поточній директорії повинен з’явитись файл nginx, який після редагування набуде наступного виду (зайві рядки можна залишити закоментованими або ж видалити):

Section: misc
Priority: optional
Standards-Version: 3.9.2

Package: nginx
Version: 9.99
Maintainer: Your Name <yourname@example.com>
Architecture: all
Description: A fake package that doesn't really install NGINX.

Звертаю увагу на версію 9.99 завдяки якій і буде відбуватись магія з ігноруванням оновлень.

Після цього створюємо пакет

equivs-build nginx

Тепер встановлюємо наш фейковий nginx

dpkg -i nginx_9.99_all.deb

Нарешті спробуємо встановити certbot

apt install certbot python-certbot-nginx

Якщо на попередніх етапах все зроблено вірно, то інсталяція завершиться успішно, додаткову установку nginx буде проігноровано.

Далі ви ймовірно захочете оновити або отримати ssl-сертифікати (тут написано як це зробити), але отримаєте помилку nginx restart failed. Це тому, що certbot-у невідомо, де шукати nginx і його конфігураційні файли. Виправити це доволі легко в файлі /etc/letsencrypt/cli.ini

#nginx-server-root = /usr/local/openresty/nginx/conf
nginx-ctl = /usr/local/openresty/nginx/sbin/nginx

В моєму випадку конфіги залишилися в типовій директорії /etc/nginx, тому я закоментував nginx-server-root, але може бути інакше, тому зважайте на це.

Після цього можна оновлювати сертифікати (хоча ви і надалі будете отримувати попередження, що OpenResty офіційно не підтримується розробником).

Посилання

Author

Олександр Бобилєв

Залишаю собі право використовувати ненормативну (але інформативну) лексику там, де звичайні слова втрачають сенс і не відображають всієї палітри почуттів, від споглядання навколишньої дійсності.