坑1:沒有python3環境
從部門申請了一個centos系統的虛擬機,然而這個虛擬機的系統有點老,自帶只有python2.7.4的系統,沒有python3的系統,因爲項目都是用python3寫的,所以無奈開始安裝python3,好在網上的教程比較多。
https://www.cnblogs.com/FZfangzheng/p/7588944.html
跟着教程,順利的完成了python3的環境
坑2:安裝uwsgi之後找不到了
說起來有點好笑,安裝完uwsgi之後竟然找不到了
使用pip3安裝uwsgi
pip3 install uwsgi
提示安裝成功,但在終端輸入uwsgi命令時卻提示沒有該命令。
原因:因爲在安裝python3的時候是安裝在/usr/local/python3路徑中,所以uwsgi的啓動文件和python3一個路徑中,在/usr/local/python3/bin/uwsgi.
所以這裏做一個軟鏈接就可以
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
再輸入uwsgi就可以找到命令了,對了,要確認uwsgi的版本,是python2還是python3的版本
uwsgi --python-version
坑3:配置uwsgi和nginx
網上的好多教程都是用最簡單flask程序,自己使用使用manager.py啓動腳本,uwsgi的配置基本上用戶到,所以只能各種摸索,貼上自己uwsgi的配置, app.ini
[uwsgi]
base_dir = /home/chat1.0
chdir = /home/chat1.0/chat
wsgi-file = manager.py
callable = app
socket = %(base_dir)/chat.sock
#http-socket = 172.26.1.193:8080
chmod-socket = 666
processes = 4
threads = 2
master = true
daemonize = %(base_dir)/chat.log
pidfile = %(base_dir)/chat.pid
創建自己的 app.ini uwsgi啓動文件
base_dir: 用於存儲app.ini, app.pid, app.log的目錄
chdir: 項目所在根目錄,也就是manager.py所在的位置
wsgi-file: flask項目的啓動腳本
callable: Flask()實例的名稱
socket: 用於與nginx通信的socket
http-socket: 未與nginx鏈接時的測試用地址
chmod-socket: 保證socket的權限
master: 保留uwsgi的主進程,便於寫自啓動服務
daemonize: 後臺啓動時的log文件位置
pidfile: 存放uwsgi主進程的pid地址
nginx的配置就相比比較簡單了,通過yum安裝完nginx, 進入到nginx的安裝文件夾
cd /etc/nginx/conf.d/
sudo vim app.conf
新建一個自己的配置文件app.conf,貼上自己的代碼
server {
listen 80;
server_name 172.26.1.193;
location / {
include uwsgi_params;
uwsgi_pass unix:/home/chat1.0/chat.sock;
}
}
listen: 監聽的端口號
server_name: ip地址
uwsgi_pass: 上面定義app.ini中設定的.sock文件,絕對路徑
坑4:都配置好了,還是不行
uwsgi與nginx都如上配置完畢,然後還是報502錯誤,查看nginx的日誌
sudo vim /var/log/nginx/error.log
提示:failed (13: Permission denied) while connecting to upstream
原來selinux的配置問題,將selinux關閉,重啓系統就可以了
sudo vim /etc/selinux/config
改爲 SELINUX=disabled
然後保存重啓系統就可以了