更新ubuntu系統(tǒng)
sudo apt-get update
sudo apt-get upgrade
安裝nginx
- 安裝
apt-get install nginx
- 查看版本
nginx -V
創(chuàng)建虛擬環(huán)境
- 安裝pip
sudo apt-get install python3-pip
- 升級pip
sudo pip3 install --upgrade pip
- 安裝virtualenv虛擬環(huán)境
sudo pip3 install virtualenv
- 安裝virtualenvwrapper
sudo pip3 install virtualenvwrapper
- 創(chuàng)建目錄保存虛擬環(huán)境
mkdir $HOME/.virtualenvs
- 如果在更新pip3后使用出現(xiàn)
ImportError: cannot import name main
解決方法:進(jìn)入/usr/bin/pip3 進(jìn)行修改修改
將這三行
from pip import main
if __name__ == '__main__':
sys.exit(main())
修改為下面內(nèi)容后就可以了(ps:如果還是不行,可以嘗試退出重新連接一下)
from pip import __main__
if __name__ == '__main__':
sys.exit(__main__.main())
- 接下來在~/.bashrc中添加以下內(nèi)容
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
source /usr/local/bin/virtualenvwrapper.sh
- 運行
source ~/.bashrc
- 創(chuàng)建虛擬環(huán)境
mkvirtualenv [虛擬環(huán)境名]
- 進(jìn)入虛擬環(huán)境
workon myblog_env/bin/activate
安裝uwsgi
- 安裝
pip install uwsgi
- 查看uwsgi版本
uwsgi --version
- 測試uwsgi螟蝙,創(chuàng)建test.py
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"] # python3
- 用uwsgi運行test.py
uwsgi --http :8000 --wsgi-file test.py
- 訪問服務(wù)器ip:8000日熬,如果出現(xiàn)hello world則說明uwsgi已經(jīng)能夠正常使用了
配置nginx和uwsgi
- 在/home/ubuntu/中創(chuàng)建nginx.conf并在文件中添加以下內(nèi)容
upstream django{
server 127.0.0.1:8001; # 設(shè)置socket端口
}
server {
listen 80; # 監(jiān)聽端口
server_name .hluner.cn;# 自己的域名
charset utf-8;
client_max_body_size 75M; # 最大上傳
location /media {
alias /home/ubuntu/myblog/media; # Django項目的media
}
location /static {
alias /home/ubuntu/myblog/static; # Django項目的靜態(tài)目錄
}
location / {
include /home/ubuntu/uwsgi_params; # uwsgi_params絕對路徑
uwsgi_pass django; # 對應(yīng)最上面設(shè)置的socket套接字
}
}
創(chuàng)建uwsgi.ini添加
[uwsgi]
# 項目目錄
chdir=/home/ubuntu/myblog/
# 指定項目的application
module=myblog.wsgi:application
# 進(jìn)程個數(shù)
workers=5
# 指定靜態(tài)文件
static-map=/static=/home/ubuntu/myblog/static
# 啟用主進(jìn)程巾表,對應(yīng)使用的虛擬環(huán)境
home=/root/.virtualenvs/myblog_env
master=true
# 啟用線程
enable-threads=true
# 設(shè)置自中斷時間
harakiri=30
# 設(shè)置緩沖
post-buffering=4096
# 指定socket的文件路徑
socket=:8001
vacuum = true
創(chuàng)建uwsgi_params 添加
uwsgi_param QUERY_STRING $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length;
uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param REQUEST_SCHEME $scheme;
uwsgi_param HTTPS $https if_not_empty;
uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;
其中uwsgi_params的內(nèi)容是固定的晓淀,其余兩個要根據(jù)項目自己編寫
在setting.py中添加
STATIC_ROOT ='靜態(tài)文件的存儲位置'
然后需要收集靜態(tài)文件
python manage.py collectstatic
讓nginx.conf生效
- 進(jìn)入目錄
cd /etc/nginx/sites-enabled/
- 刪除其中默認(rèn)的文件
rm default
- 創(chuàng)建軟鏈接
ln -s /home/ubuntu/nginx.conf [重命名名稱]
- 重啟nginx服務(wù)
/etc/init.d/nginx restart
- 進(jìn)入到/home/ubuntu啟動uwsgi
uwsgi --ini uwsgi.ini
輸入ip:80查看如果項目啟動成功就可以了
- 退出虛擬環(huán)境,在真實環(huán)境中安裝uwsgi,通過外部的uwsgi連接到虛擬環(huán)境中的uwsgi
pip3 install uwsgi
- 為了讓項目在后臺直接運行可以將啟動命令寫到 /etc/rc.local中
cd /etc/rc.local
在其中添加
/usr/local/bin/uwsgi --ini /home/ubuntu/uwsgi.ini
- 重啟服務(wù)器
reboot
如果重啟成功后訪問ip就可以看到項目正常運行則說明已經(jīng)部署成功