Pythonで書かれ、gunicornサービスとして公開されたフラスコアプリがありますが、サービスが端末と通信していないため、pexpectモジュールが利用できないことがわかりました。サービスが端末に到達する方法はありますか? GunicornサービスファイルとPythonコードは、次の場所で利用できます。このスタックオーバーフローリンク。
Nginxセッション;
server{
server_name panel.xxxx.com;
location / {
proxy_pass http://unix:/root/flaskapp/flaskapp.sock;
#proxy_pass http://127.0.0.1:8000;
include proxy_params;
}
location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/panel.xxx.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/panel.xxx.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}server{
if ($host = panel.xxxx.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name panel.xxxx.com;
return 404; # managed by Certbot
}
Gunicorn3カンファレンス。
[Unit]
Description=Gunicorn service
After=network.target
[Service]
User=root
Group=www-data
WorkingDirectory=/root/flaskapp
ExecStart=/usr/bin/gunicorn3 --workers 3 --bind unix:flaskapp.sock -m 007 app:app --timeout 300 --config /root/flaskapp/gunicorn.conf.py
[Install]
WantedBy=multi-user.target
答え1
screen
tmux
「外部」端末では、この仮想端末内でアプリケーションを実行して接続できます。
ExecStart=/usr/bin/screen -d -m -S gunicorn3 /usr/bin/gunicorn3 --workers 3 --bind unix:flaskapp.sock -m 007 app:app --timeout 300 --config /root/flaskapp/gunicorn.conf.py
systemd-run
このオプションは、アプリケーションを手動で起動できる場合に--pty
便利です。