Запуск Python 3 на веб-сервере nginx в CentOS Stream 8

Данная инструкция описывает краткий процесс запуска Python 3 в связке с веб-сервером nginx и возможность расширения стека LEMP на ОС CentOS Stream 8.

Настройка LEMP-сервера для CentOS Stream 8 описана здесь: https://dondub.com/2021/07/zapusk-lemp-servera-na-centos-stream-8/

В первую очередь необходимо установить пакет репозитория EPEL и обновить репозитории

# yum install epel-release
# yum update

Затем устанавливаем необходимые пакеты

# yum install nginx python39 python39-pip fcgiwrap

Также необходимо будет добавить правила в файрволле

# firewall-cmd --add-service=http --zone=public --permanent
# firewall-cmd --add-service=https --zone=public --permanent
# firewall-cmd --reload

и отключить SELINUX

# vi /etc/sysconfig/selinux

поменять значение SELINUX на SELINUX=disabled

Запускаем службу nginx и включаем её в автозагрузку

# systemctl start nginx
# systemctl enable nginx

Теперь необходимо создать каталог для хранения скриптов Python

# mkdir /usr/share/nginx/scripts/
# chmod 755 /usr/share/nginx/scripts/

После этого создадим дополнительный файл конфигурации nginx для поключения fcgiwrap

# touch /etc/nginx/fcgiwrap.conf

открываем его

# vi /etc/nginx/fcgiwrap.conf

и впишем такие строки:

location /scripts/ {
    gzip off;
    
    root  /usr/share/nginx;
    
    fastcgi_pass  unix:/var/run/fcgiwrap.socket;
    include /etc/nginx/fastcgi_params;
    fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
}

Далее открываем основной файл конфигурации nginx

# vi /etc/nginx/conf/nginx.conf

и в конце секции server перед закрывающей фигурной скобкой впишем строку подключения к файлу fcgiwrap.conf:

server {
	...
	include /etc/nginx/fcgiwrap.conf;
}

Теперь создадим два файла для запуска службы fcgiwrap

# touch /usr/lib/systemd/system/{fcgiwrap.service,fcgiwrap.socket}

Открываем первый — /usr/lib/systemd/system/fcgiwrap.service

# vi /usr/lib/systemd/system/fcgiwrap.service

и пропишем в него такие строчки:

[Unit]
Description=CGI Server
After=nss-user-lookup.target
Requires=fcgiwrap.socket

[Service]
EnvironmentFile=/etc/sysconfig/fcgiwrap
ExecStart=/usr/sbin/fcgiwrap ${DAEMON_OPTS} -c ${DAEMON_PROCS}
User=nginx
Group=nginx

[Install]
Also=fcgiwrap.socket

и второй — /usr/lib/systemd/system/fcgiwrap.socket

# vi /usr/lib/systemd/system/fcgiwrap.socket

запишем в него такие строчки:

[Unit]
Description=fcgiwrap Socket

[Socket]
ListenStream=/run/fcgiwrap.socket

[Install]
WantedBy=sockets.target

Затем запускаем службу fcgiwrap и включим её в автозагрузку

# systemctl start fcgiwrap
# systemctl enable fcgiwrap

Также перезапустим и службу nginx

# systemctl restart nginx

Готово! Теперь создадим проверочный Python-скрипт welcome.py и откроем его

# touch /usr/share/nginx/scripts/welcome.py 
# chmod 755 /usr/share/nginx/scripts/welcome.py 
# vi /usr/share/nginx/scripts/welcome.py

запишем в него такие строки:

#!/usr/bin/python3

print('Content-Type: text/html; charset=utf-8')
print('')
print('<h1>Файл welcome.py работает!</h1>')

На другой машине в сети в адресной строке браузера введём http://IP_адрес_или_имя_хоста/scripts/welcome.py и увидим страницу с сообщением:

Файл welcome.py работает!

Для подключения к базам данных MariaDB (MySQL) и PostgreSQL с помощью скриптов Python 3 необходимо будет установить psycopg2

# yum install python39-psycopg2

и mysql-connector

# pip3 install mysql-connector-python39

Скрипты подключения к БД PostgreSQL можно взять отсюда: https://dondub.com/2022/03/podklyuchenie-python-3-k-bd-postgresql/ и к MariaDB (MySQL) — отсюда: https://dondub.com/2022/03/podklyuchenie-python-3-k-bd-mysql-i-mariadb/

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *