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

时间:2016-12-22 08:47:07

标签: python django nginx uwsgi

您好我使用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服务器崩溃了。
  3. 我想知道应该运行哪些命令来反映python代码中的更改。 PS:在我以前的APACHE Django设置中,我只是用来重启apache,是否可以通过重启nginx来反映更改。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

试试这个:

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

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

如果有效,请告诉我。