Данная инструкция описывает краткий процесс запуска 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/