今天在倒腾django项目的时候突然遇到一个bug,一开始报的是内部服务器错误:“Internal Server Error”,此时服务器的状态是Nginx开启了8000端口,uWSGI服务也在启动中,然后开始排查,首先从Nginx下手,逐行检查Nginx配置没问题后,又重新启动了一下,结果还是这样的问题,看来跟Nginx没有关系;然后开始找uwsgi配置的问题,无论是修改socket端口还是增加module参数,都无法解决问题,但是如果关闭uwsgi的话,会报”502 Bad Gateway“的错误,而这个错误代表nginx反向代理配置成功,但是对应的uWSGI未启动,所以也排除uWSGI配置的问题。。。。。。。
这时候才意识到查看uwsgi.log日志,于是 sudo vim uwsgi.log 走起,果然看到了报错信息:
在这里插入图片描述

no python application found, check your startup logs for errors
翻译是:找不到python应用程序,请检查启动日志中的错误

结合最上面的“No module named django”,看来应该是python环境的问题,因为我在服务器中安装的有anaconda版本的python3,里面是有django这些模块的,而我启动的django服务应该是用了服务器自带的python2,所以下一步就是修改python的环境变量了。
一开始我用的是 sudo vim /etc/profile ,在文件末尾添加一行:
export PATH=/home/xxx/anaconda3/bin:$PATH
然后更新一下:source /etc/profile
但是这样没有效果

期间也尝试过删除python2 和 添加软连接,如下:

sudo ln -sf /home/xxx/anaconda3/bin/python /usr/bin/python

不过还是没能改变服务器的默认python环境

然后又尝试另一种方法修改环境变量:

vi ~/.bashrc

看到的最后一行是这样的:

‘export PATH=/home/xxx/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

然后将除了anaconda3之外的其他环境变量都删掉,并修改anaconda3的内容:

‘export PATH=/home/xxx/anaconda3/bin:$PATH’

最后保存退出,再更新一下:source ~/.bashrc

回到django项目文件中,killall -s INT uwsgi 杀掉所有的uwsgi进程,uwsgi --ini uwsgi.ini 重启uwsgi,django项目就可以正常访问了。

查看python版本:python -V
或者是直接进入python控制台:
在这里插入图片描述
可以看到使用的环境已经转变到anaconda了。
|
|
|
|

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐