在使用 nginx+uwsgi+django的部署流程中,经常会有这样一种问题,那就是。当主机因为某些原因重启之后,发现之前的项目也挂掉了,如下图大大的502.显然,我们的nginx已经启动了,这种情况肯定是uwsgi服务器的问题。
- 于是乎,你兴高采烈的进入到项目目录下,敲下熟练的uwsgi --ini my_uwsgi.ini 命名。然后继续查看浏览器。发现依然是大大的502.
- 不说废话,直接来解决问题。当主机重启时,虽然支持项目运行的uwsgi进程已经不再了。但是之前运行中的sock文件还在,并没有删除掉。当用户再次使用 uwsgi --ini my_uwsgi.ini 来运行服务器的时候,因为有之前的sock文件的存在,所以服务器并不会产生新的sock文件。自然服务也就无法运行。此时,及时使用uwsgi --stop uwsgi.pid命令也不会删除sock文件,因为这个时候系统已经找不到这个sock文件了。
- 怎么结局? 直接进入到项目的目录中,手动 rm -rf 删除掉sock文件。然后运行uwsgi --ini my_uwsgi.ini 就可以了。