...
WorkingDirectory=/home/pi/www
Environment="PYTHONPATH=/home/pi/www/env/lib/python3.12/site-packages"
ExecStart=/home/pi/www/env/bin/python3 /home/pi/www/run.py
...
Добавление PYTHONPATH в конфигурацию systemd гарантировало, что Python всегда видит путь к модулям в виртуальном окружении, даже при запуске через systemd.
Проще говоря, без этого пути Python "не знал", где искать установленные библиотеки, поэтому и возникала ошибка ModuleNotFoundError.
[Unit]
Description=my_prog
After=network-online.target nss-user-lookup.target
[Service]
User=pi
Group=pi
WorkingDirectory=/home/pi/www
Environment="PYTHONPATH=/home/pi/www/env/lib/python3.12/site-packages"
ExecStart=/home/pi/www/env/bin/python3.12 /home/pi/www/run.py
RestartSec=10
Restart=always
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
[Unit]
Description=www-Nero
After=network-online.target nss-user-lookup.target
[Service]
User=pi # Имя пользователя, от имени которого будет запускаться команда, указанная в ExecStart
Group=pi
WorkingDirectory=/home/pi/www # Директория, в которую будет осуществлён переход перед запуском
Environment=VIRTUAL_ENV=/home/pi/www/env
Environment=PYTHONPATH=/home/pi/www
ExecStart=/home/pi/www/env/bin/python3 /home/pi/www/run.py
RestartSec=10
Restart=always # Всегда перезапускать скрипт при его падениях
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
× my_prog.service - my_prog
Loaded: loaded (/etc/systemd/system/my_prog.service; enabled; preset: enabled)
Active: failed (Result: exit-code) since Thu 2024-09-19 13:54:17 MSK; 6s ago
Duration: 16ms
Process: 1665 ExecStart=/home/pi/www/env/bin/python3 /home/pi/www/run.py (code=exited, status=217/USER)
Main PID: 1665 (code=exited, status=217/USER)
CPU: 8ms
sudo -u pi PYTHONPATH=/home/pi/www/env/lib/python3.12/site-packages /home/pi/www/env/bin/python3 /home/pi/www/run.py
78.100.22.186 - - [19/Sep/2024 13:56:15] "GET /cgi-bin/index.py HTTP/1.1" 200
sudo -u pi /home/pi/www/env/bin/python3 /home/pi/www/run.py
ModuleNotFoundError: No module named 'mysql'
78.100.22.186 - - [19/Sep/2024 13:40:03] CGI script exit code 1
pi@server3:~$ ls -l
drwxr-xr-x 5 pi pi 4096 Sep 19 11:35 www
[Unit]
Description=my_prog
After=network-online.target nss-user-lookup.target
[Service]
User=root # Имя пользователя, от имени которого будет запускаться команда, указанная в ExecStart
Group=root
WorkingDirectory=/home/pi/www # Директория, в которую будет осуществлён переход перед запуском
Environment="PATH=/home/pi/www/env/bin:/usr/bin:/bin"
ExecStart=/home/pi/www/env/bin/python3 /home/pi/www/run.py
RestartSec=10
Restart=always # Всегда перезапускать скрипт при его падениях
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
× my_prog.service - my_prog
Loaded: loaded (/etc/systemd/system/my_prog.service; enabled; preset: enabled)
Active: failed (Result: exit-code) since Thu 2024-09-19 13:44:05 MSK; 6s ago
Duration: 12ms
Process: 1518 ExecStart=/home/pi/www/env/bin/python3 /home/pi/www/run.py (code=exited, status=217/USER)
Main PID: 1518 (code=exited, status=217/USER)
CPU: 6ms
[Unit]
Description=my_prog
After=network-online.target nss-user-lookup.target
[Service]
User=pi # Имя пользователя, от имени которого будет запускаться команда, указанная в ExecStart
Group=pi
WorkingDirectory=/home/pi/www # Директория, в которую будет осуществлён переход перед запуском
Environment="PATH=/home/pi/www/env/bin:/usr/bin:/bin"
ExecStart=/home/pi/www/env/bin/python3 /home/pi/www/run.py
RestartSec=10
Restart=always # Всегда перезапускать скрипт при его падениях
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
https://mysite.org/bugs - выдает ошибку 404
https://mysites.org/bugs/ - нормально отрабатывает индексный файл
Так и должно быть?