понедельник, 19 мая 2025 г.

Настройка работы nginx в связке с php-fpm в Debian 12

Настройка возможности работы nginx с PHP файлами.

Работа nginx с PHP обеспечивается службой php-fpm.

Устанавливаем сервис php-fpm:
# install nginx php-fpm

Смотрим текущую версию php в системе
# php -v
PHP 8.2.28 (cli) (built: Mar 13 2025 18:21:38) (NTS)

В моем случае - это 8.2
Конфигурационный файл серввиса php-fpm: /etc/php/8.2/fpm/pool.d/www.conf
ini файл настроек PHP: /etc/php/8.2/fpm/php.ini
Заходим в конфигурацию php-fpm для версии 8.2:
# nano /etc/php/8.2/fpm/pool.d/www.conf
Здесь ищем директиву "listen", которая определяет, что будет прослушивать запущенный процесс php-fpm.
В нашей случае - указан сокет. Отлично, фиксируем путь к сокету
    listen = /run/php/php8.2-fpm.sock

Теперь находим конфигурационный файл nginx и для сервере, у которого необходимо включить PHP

# nano /etc/nginx/sites-enabled/<file>.conf
Добавляем конфигурацию для php в конец блока "server"
server {
        listen 80;
        listen 443 ssl;
...
        location ~ \.php$ {
           include snippets/fastcgi-php.conf;
           fastcgi_pass unix:/run/php/php8.2-fpm.sock;
           fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
           include fastcgi_params;

        }
}


Рестартуем NGINX и PHP-FPM:
# systemctl restart nginx
# systemctl restart php8.2-fpm


Логи ошибок php-fpm будут тут /var/log/nginx/error.log




Установка PostgreSQL на Debian 12.

Установка:
# apt install postgresql postgresql-contrib
При установке Postgresql сразу будет создан и инициирован кластер в директории:
/var/lib/postgresql/15/main
Конфигурационный файл будет тут /etc/postgresql/15/main/postgresql.conf
Файл настроек режимов доступа тут /etc/postgresql/15/main/pg_hba.conf

Запускаем сервис
# systemctl start postgresql.service
# systemctl enable postgresql.service


Подключаемся к базе так:
# sudo -i -u postgres
$ psql

После создания базы и пользователя, а так же после настройки pg_hba.conf можно подключиться к базе данных так:
# psql -h 127.0.0.1 -d <БАЗА> -U <ПОЛЬЗОВАТЕЛЬ> -W 

четверг, 15 мая 2025 г.

Использование утилиты mkcert для создания самоподписанных сертификатов без боли

mkcert - это инструмент создания локальных самоподписанных сертификатов с поддержкой доверия в системе.

Установка утилиты выполняется так:
# dnf install -y golang
# go install filippo.io/mkcert@latest

Проверка:
# /root/go/bin/mkcert  --version
v1.4.4


Создание локального корневого сертификата CA
# yum install nss-tools
# /root/go/bin/mkcert -install

Ответ должен быть такой:
Created a new local CA 💥
The local CA is already installed in the system trust store! 👍
The local CA is now installed in the Firefox and/or Chrome/Chromium trust store (requires browser restart)! 🦊


Теперь создаем сертификат для своего сервера, например для bs.server.ru.
# /root/go/bin/mkcert bs.server.ru localhost 127.0.0.1
Created a new certificate valid for the following names 📜
 - "bs.server.ru"
 - "localhost"
 - "127.0.0.1"
The certificate is at "./bs.server.ru+2.pem" and the key at "./bs.server.ru+2-key.pem" ✅
It will expire on 15 August 2027 🗓

Будет создан сертификат bs.server.ru+2.pem и приватный ключ bs.server.ru+2-key.pem для всех запрошенных имен (bs.server.ru, localhost, 127.0.0.1)

Устанавливаем сертификат SSL в web-сервер apache
# dnf install mod_ssl
# systemctl restart httpd

Резервируем настройки по умолчанию
# mv /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf_old
Создаем свой файл настроек
# nano /etc/httpd/conf.d/ssl-bs.conf
Listen 443
<VirtualHost *:443>
    ServerName bs.server.ru
    SSLEngine on
    SSLCertificateFile "/home/korolev/bs.server.ru+2.pem"
    SSLCertificateKeyFile "/home/korolev/bs.server.ru+2-key.pem"
    DocumentRoot "/var/www/html"
</VirtualHost>

Перезагружаем web-сервер:
# systemctl restart httpd
Открываем порт 443 на сервере
# firewall-cmd --permanent --add-port=443/tcp
# firewall-cmd --reload

Теперь при обращении к https://bs.server.ru/ по сети в браузере будет отображаться защищенное соединение! И до 15 августа 2027 года. То есть на 2 года! Удобно.