本文已参与「新人创作礼」活动,一起开启掘金创作之路。
今天在倒腾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了。
|
|
|
|
。