想看坑爹錯誤記錄的直接跳到最後一步
想看安裝步驟的跳到第二步
第一步有什麼用我也不知道
能看到這篇的多半已經看了一大摞文檔了我就不多廢話了
目錄
一、整一個流程大概這樣
二、步驟
2.1 pip install uwsgi
2.2 創建目錄
在項目根目錄下創建 deploy 目錄來裝 uwsgi 的配置文件和log
2.3 創建 uwsgi_conf.ini 文件
關於socket,很多人都講不明白還囉嗦,這裏指的是與nginx通信用的,端口與項目內配置無關,可以自行設置,並且不可以佔用nginx的 listen 端口,就這樣。
# uwsgi_conf.ini
[uwsgi]
# 選擇內網IP和端口,別搞個啥域名的出來,人家在內網通訊
socket=localhost:8001
# 項目根目錄
chdir=/home/user1/projects/classonline
#項目中wsgi.py文件的相對目錄
wsgi-file=classonline/wsgi.py
# 進程數
processes=2
# 線程數
threads=2
# uwsgi服務器的角色
master=True
# 存放進程編號的文件
pidfile=uwsgi.pid
# 日誌文件,因爲uwsgi可以脫離終端在後臺運行,日誌看不見。以前的runserver是依賴終端的
daemonize=logs/uwsgi.log
# 指定虛擬環境所在目錄,不能填相對目錄
virtualenv=/root/pythonenvs/django22
2.4 安裝 nginx
在安裝 nginx 的時候出現了錯誤,大概是跟 redis 有關,如果出現了錯誤,請安裝好並啓動 redis,如果有且啓動直接跳過,靈活一點謝謝
- 安裝redis :apt install redis-server
- 啓動redis :service redis-server start
- 安裝ngnix :apt install nginx
- 配置nginx,/etc/nginx/conf.d/default.conf
upstream classonline {
# 此處爲uwsgi運行的ip地址和端口號
server localhost:8001;
}
server {
# 監聽端口
listen 80;
# 服務器域名或者ip地址,填好了 這裏非常重要,只能寫一個,不然雲服務器不通,我也不知道原因,反正就寫着吧
server_name yejue.com;
# 編碼
charset utf-8;
# 文件最大上傳大小
client_max_body_size 75M;
# 媒體文件 你項目配置的media 絕對路徑
location /media {
alias /home/user1/projects/classonline/media;
}
# 靜態文件 你項目配置的static 絕對路徑
location /static {
alias /home/user1/projects/classonline/static;
}
# 主目錄
location / {
uwsgi_pass classonline; # 這裏跟上面一樣就ok
include /etc/nginx/uwsgi_params; #這裏不要亂動
}
}
- 測試是否可用,看清楚命令執行的路徑與name,不是上面那個default
$ nginx -t -c /etc/nginx/nginx.conf
- 運行 nginx,
$ service nginx start
- 可以重新加載配置
$ nginx -s reload -c /etc/nginx/nginx.conf
2.5 運行 uwsgi
# 這裏是指命令行執行,別回頭找我說爲什麼錯了 & 代表後臺運行,不要也沒關係
$ uwsgi uwsgi_conf.ini &
# 停止。uwsgi.pid 是自己生成的,存放了uwsgi的pid信息,看上面的uwsgi配置就知道了
$ uwsgi --stop uwsgi.pid
# 也可以 ps -ef | grep uwsgi,然後暴力kill
kill -9 pid
三、我的坑爹問題是什麼?
uwsgi + nginx 配置之後curl可以訪問,瀏覽器不可訪問,這讓我一臉懵逼啊,配置了一天一夜沒找到原因,翻了很多文檔也沒有說。
衆所周知 curl 其實就是個可以訪問域名返回網頁的東東,類似於 requests.get
後來發現該死的 Chrome 不知道爲什麼緩存了,看了一天一夜的文檔找不出毛病,換了個瀏覽器,顯示正常!!!!!
如果真要用Chrome訪問,可以嘗試一下清理各種緩存,我捨不得清理,最後用selenium召喚了一個全新的chrome,總算是完結撒花了。