今天在倒騰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了。
|
|
|
|
。