Архив рубрики: WEB

Пачкой обновляем сертификаты SSL на сервере

Как известно сертификаты LetsEncrypt живут только 3 месяца, и соответственно их нужно регулярно обновлять. Самый хороший и простой способ обновления сертификатов — по записи DNS, однако это подходит не всем. Обновление же сертификата записью файла в «корне» сайта тоже не всегда работает по разным причинам. Выходом может стать следующий «финт ушами»: создаем альтернативный файл виртуальных хостов (рассматриваю вариант с apache, nginx практически не использую), который используется исключительно под получение сертификатов. Т.е. логика следующая: скрипт «подменяет» файл с виртуальными хостами на временный «облегченный», apache перестартовываем, спокойно обновляем сертификаты, затем возвращаем оригинальный файл с виртуальными хостами и снова перестартовываем apache. Особенностью «временного» файла является то что задана единая точка хранения файлов которые требуется создать для обновления сертификатов.

Итак получается скрипт обновления, что-то вроде:

«Временный» файл хостов:

<VirtualHost *:80>
    ServerAdmin pawfvwervwe@mail.ru
    DocumentRoot "/usr/local/www/apache24/sites/lets"
    ServerName ewfer.tv
    ServerAlias www.werfer.tv wer.ru werf.ru rwefwerf.ru # перечисляем все домены которые нужно обновить
    <Directory "/usr/local/www/apache24/sites/lets">
    Options Indexes FollowSymLinks MultiViews
        AllowOverride All
    allow from all
    Require all granted	
    </Directory>    
</VirtualHost>

bash скрипт обновления:

#!/bin/sh
echo "- Подменяю текущий конфиг виртуальных хостов apache"
cp /usr/local/etc/apache24/extra/httpd-vhosts.conf /usr/local/etc/apache24/extra/httpd-vhosts.conf.backup
cp /usr/local/etc/apache24/extra/httpd-vhosts.conf.lets /usr/local/etc/apache24/extra/httpd-vhosts.conf
/usr/local/etc/rc.d/apache24 restart
echo "- Получаю сертификаты"
certbot certonly --agree-tos --email rfer@mail.ru --webroot -w /usr/local/www/apache24/sites/lets/ -d refwer.tv
certbot certonly --agree-tos --email erferf@mail.ru --webroot -w /usr/local/www/apache24/sites/lets/ -d www.ewferf.tv
echo " - Возвращаю конфигурацию виртуальных хостов как было"
cp /usr/local/etc/apache24/extra/httpd-vhosts.conf.backup /usr/local/etc/apache24/extra/httpd-vhosts.conf
/usr/local/etc/rc.d/apache24 restart

 

Да, при таком способе получается некий простой в работе сайтов. Но раз в 3 месяца, ночью это для меня приемлимый вариант.

Nginx как front-end к apache (апач через прокси nginx) FreeBsd

На одном из серверов пробую ускорить сайт на drupal + модуль Commerce. Mysql уже потюнил. Memcached установлен. Закешировано почти всё что можно. Но! тормозит.. Как жест отчаянья, попробую еще и через nginx пустить статику. Вдруг хоть чуток но полегчает..

1. В httpd.conf меням порт Listen с 80 на 8080. Тоже самое меняем в вирутальных хостах <VirtualHost *:8080>

2. Ставим nginx, ставим в автостарт

pkg install nginx
sysrc nginx_enable=yes

3. Правим файл конфигурации nginx (/usr/local/etc/nginx/nginx.conf)

server {
        listen       80;
        server_name  www.domen.ru;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
#вот это динамика, пусть её занимается апач
        location / {
	    proxy_pass http://domen:8080;
	    proxy_set_header Host $host;
	    proxy_set_header X-Real-IP $remote_addr;
	    proxy_set_header X-Forwarded-For $remote_addr;
	    proxy_connect_timeout 120;
	    proxy_send_timeout 120;
	    proxy_read_timeout 180;
        }
# Вот это считаем статикой
        location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|swf|js|html|txt)$ {
	    root /usr/local/www/apache24/sites/centrtricolor;
	}
...
/usr/local/etc/rc.d/apache2 restart
/usr/local/etc/rc.d/ngnix restart

LAMP для FreeBSD 12 (Drupal 8-WordPress 5)

Apache:

pkg install apache24
sysrc apache24_enable=yes

Правим /usr/local/etc/apache24/httpd.conf, устанавливая ServerName и ServerAdmin. Далее можно запускать:

service apache24 start

Mysql 8:

pkg install mysql81-server
sysrc mysql_enable=yes
service mysql-server start
mysql_secure_installation

для того чтобы работало старое ПО (новая схема аутенфикации), можно выставить режим совместимости:

mcedit /usr/local/etc/mysql/my.cnf
<code>[mysqld]
...
default_authentication_plugin   = mysql_native_password
...</code>
/usr/local/etc/rc.d/mysql-server restart

Memcached:

pkg install memcached_enable
sysrc memcached_enable=yes
service memcached start

PHP:

pkg install php73-bcmath php73-tokenizer php73-memcache php73-pdo php73-pdo_mysql mod_php73 php73-hash php73-mysqli php73-zip php73-openssl php73-mbstring php73-mysqli php73-json php73-iconv php73-gd php73-curl php73-dom php73-curl

В /usr/local/etc/apache24/httpd.conf добавим:

<FilesMatch "\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
    SetHandler application/x-httpd-php-source
</FilesMatch>
/usr/local/etc/rc.d/apache24 restart