django部署
利用Nginx部署django網站
- 伺服器: Centos
- 工具:XShell
系統配置
系統環境
yum update
:更新系統yum install yum-utils
:安裝工具與開發相關元件yum groupinstall development
: 打包安裝開發相關元件
Python 環境
yum install https://centos7.iuscommunity.org/ius-release.rpm
軟體資源庫yum install python36u
:安裝Python3.6yum install python36u-pip
:安裝Python3.6的pip包yum install python36u-devel
- 修改預設開啟的python版本
centos預設的python版本是python2.7,如果要使用3.6版本,可以用
python3.6
來執行,也可以直接修改預設的python版本
vi ~/.bashrc
- 新增
alias python='/usr/bin/python3.6'
- Esc
:wq
儲存退出 -. .bashrc
應用修改
上傳站點配置虛擬環境
liunx命令
ls
檢視當前目錄下的檔案cd
進入某個目錄mkdir
建立目錄
python 匯入匯出依賴包
pip freeze > requirements.txt
pip install -r requirements.txt
安裝requirements.txt中的所以庫
上傳站點
- 選擇ftp工具上傳
- 使用git上傳
配置虛擬環境
-
python3.6 -m venv venv_myspace
建立虛擬環境 -
source venv_myspace/bin/activate
啟用虛擬環境 -
pip install -r requirements.txt
匯入站點的依賴庫
Web 伺服器
uwsgi 安裝使用
pip3 install uwsgi
安裝uwsgi閘道器介面- 測試閘道器介面
-
使用
vi test.py
-
使用
uwsgi --http :8000 --wsgi-file test.py
執行測試檔案
測試 如果沒開啟不開上述頁面,請檢查伺服器是否啟用8000埠
-
Nginx安裝啟動
-. 安裝:yum install nginx
-. 操作
-
啟動 :
systemctl start nginx.service
“Centos 7系統”Centos 6及以下版本:
service start nginx
-
重啟 :
systemctl restart nginx.service
-
停止 :
systemctl stop nginx.service
-
安裝完成後在/etc/nginx/nginx.conf 檔案中可以看到一個配置節
inxlude /etc/nginx/conf.d/*.conf
,它的含義是匯入/etc/nginx/conf.d/下的所有.conf檔案。這樣我們在配置nginx的時候就不用去操作nginx.conf主檔案,保證了主配置檔案的完整性也給我們提供了最大的靈活性。
Nginx特定站點配置
- 在
/etc/nginx/
目錄下有一個uwsgi_params配置檔案,這個檔案是nginx於uwsgi銜接的一個主要配置檔案,我們需要將這個檔案拷貝到站點跟中cp /etc/nginx/uwsgi_params /站點根/uwsgi_params
- 建立站點的Nginx配置檔案在
/etc/nginx/conf.d/
upstream django {
server unix:///var/run/myspace.sock; # 指定uwsgi的sock檔案所有動態請求就會直接丟給他
}
server {
listen 80; # 監聽的埠
server_name jung.wang; # 配置域名
charset utf-8; # 字符集
client_max_body_size 75M; # 客戶端請求傳送的內容最大不要超過多少M
# 指定靜態檔案路徑
location /static {
alias /var/www/MySpace/static;
}
# 指定專案路徑uwsgi
# 這個location就和咱們Django的url類似,
location / {
uwsgi_pass django;
include /var/www/MySpace/uwsgi_params; # 匯入一個Nginx模組他是用來和uWSGI進行通訊的
}
}
uwsgi特定站點配置
- 在站點下建立.ini的uwsgi配置檔案
vi myspace.ini
[uwsgi]
chdir = /var/www/MySpace # 指定專案的根目錄
module = MySpace.wsgi # 指定專案的wsgi
home = /var/www/venvs/venv_myspace # 指定虛擬環境的位置
master = true # 是否主程序
processes = 20 # 工作程序
socket = /var/run/myspace.sock # socket 在程式執行時會自動建立
chmod-socket = 666 # socket檔案許可權
vaccum = true # 每次啟動時清除之前配置
2.在專案下的settings.py中配置ALLOWED_HOSTS(允許的主機)
ALLOWED_HOSTS = ['118.***.***.156','junh.wang',]
注意檢查是否關閉除錯模式
DEBUG = False
3.因為新增了.ini配置檔案,所以要重啟ngnix
4.在虛擬環境中執行uwsgi --ini /var/www/MySpace/myspace.ini
5.如果站點訪問有問題,可以檢視nginx的日誌檔案,查詢問題原因cat /var/log/nginx/error.log