如何在django,uwsgi和nginx设置中反映python的变化

问题描述 投票:0回答:2

嗨我使用UWSGI和Nginx使用以下教程http://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html部署了Django一切正常。我在更新python代码时遇到了挑战。我不知道部署新更改的有效方法。在点击和试用后,我使用以下命令进行部署

git pull; sudo service uwsgi stop; sudo service nginx restart; sudo service uwsgi restart; /usr/local/bin/uwsgi --emperor /etc/uwsgi/vassals

这个命令工作正常。但我面临以下问题

  1. Usagi在前台跑。每次进行更改时,新的UWSGI实例都会开始运行。
  2. 由于多个UWSGI实例,My AWS服务器因内存耗尽而崩溃。

我想知道我应该运行什么命令来反映python代码中的更改。 PS:在我以前的APACHE Django设置中,我只是用来重启apache,是否可以通过重启nginx来反映更改。

python django nginx uwsgi
2个回答
1
投票

请看一下在后台运行uwsgi。创建.ini文件/etc/uwsgi/sites/projectname.ini。该脚本看起来像这样(对于ubuntu 16.04):

[uwsgi]
project = projectname
base = projectpath

chdir = %(base)/%(project)
home = %(base)/Env/%(project)
module = %(project).wsgi:application

master = true
processes = 5

socket = %(base)/%(project)/%(project).sock
chmod-socket = 666
vacuum = true

(对于ubuntu 16.04):

然后在/etc/systemd/system/uwsgi.service上创建以下systemd脚本:

[Unit]
Description=uWSGI Emperor service
After=syslog.target

[Service]
ExecStart=/usr/local/bin/uwsgi --emperor /etc/uwsgi/sites
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all

[Install]
WantedBy=multi-user.target

使用这个新的uWSGI服务刷新systemd init系统的状态

sudo systemctl daemon-reload

要启动脚本,您需要运行以下命令:

sudo systemctl start uwsgi

为了在重启时启动uWSGI,您还需要:

sudo systemctl enable uwsgi

您可以使用以下内容检查其状态:

systemctl status uwsgi

(对于ubuntu 14.04):

为uWSGI创建一个upstart脚本:

sudo nano /etc/init/uwsgi.conf

然后在上面创建的文件中添加以下行:

description "uWSGI application server in Emperor mode"

start on runlevel [2345]
stop on runlevel [!2345]

setuid user
setgid www-data

exec /usr/local/bin/uwsgi --emperor /etc/uwsgi/sites

0
投票

试试这个:

git pull
python manage.py migrate  # to run any migrations
sudo service uwsgi restart

按Ctrl + Z然后按bg + enter这应该在后台运行该过程。

如果有效,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.