超實用Nginx+Uwsgi+Django+Python真實環境服務器部署

環境:Ubuntu18.04 x64,基於root用戶

阿里雲服務器:https://www.aliyun.com/

1.python開發環境

a.pyenv安裝配置

apt-get install git
apt-get install curl
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

在home根目錄下ls -alll查看.bashrc ,執行sudo vim .bashrc,將以下三行代碼加入末尾

export PATH="/root/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

讓配置文件立即生效

source /root/.bashrc

查看是否安裝成功

echo $PATH;

結果中有shims說明成功

/root/.pyenv/plugins/pyenv-virtualenv/shims:/root/.pyenv/shims:/root/.pyenv/bin:/root/bin:/root/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

更新

pyenv update

b.python安裝配置

備份文件

cd /var/lib/dpkg
mv info info.bak
mkdir info

安裝依賴包

apt-get install libc6-dev
apt-get install gcc
apt-get install -y make build-essential
apt-get install -y make libssl-dev
apt-get install -y make zlib1g-dev
apt-get install -y make wget curl llvm
apt-get install -y make libnss3-tools
apt-get install -y make python3-venv
apt-get install libbz2-dev
apt-get install libreadline-dev
apt-get install libsqlite3-dev

使用pyenv安裝python

pyenv install 3.6.6 -v

更新 pyenv的數據庫

pyenv rehash

選中3.6.6作爲全局默認版本

pyenv global 3.6.6

測試

python 	#進入
exit()  #退出

c.virtualenv安裝配置

安裝virtualenv

pip install --upgrade pip
pip install virtualenv
pip install --upgrade virtualenv

創建項目的虛擬環境

pyenv virtualenv 3.6.6 env366    #注意 : 必須是通過pyenv安裝的版本否則會報錯

切換虛擬環境

# 進入:
pyenv activate env366
# 退出:
pyenv deactivate env366

當顯示(env365) 表示你現在處在 env36 環境中

2.nginx安裝配置

阿里雲開啓SSL證書:控制檯>>域名>>域名後的管理>>免費開啓SSL證書>>選擇免費版證書>>申請證書(等帶一會兒完成簽發,中間需要手動驗證)>>進入證書列表>>在已簽發中下載證書(.key和.pem文件)>>將證書上傳到服務器的nginx安裝目錄中新建的cert目錄中

nginx配置及https域名配置:

# 安裝
apt-get install nginx
# 配置
cd /etc/nginx/sites-available
cp default www.xingjidemimi.cn
vim www.xingjidemimi.cn
# 修改www.xingjidemimi.cn的代碼並保存,僅保留如下,其他無用代碼可注掉:
"""
server {
        listen 80;
        listen 443; # https端口
        server_name www.xingjidemimi.cn;
        charset utf-8; # https配置
        ssl on;
        ssl_certificate   cert/1790637_www.xingjidemimi.cn.pem; # https配置
        ssl_certificate_key  cert/1790637_www.xingjidemimi.cn.key; # https配置
        ssl_session_timeout 5m; # https配置
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; # https配置
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # https配置
        ssl_prefer_server_ciphers on; # https配置
		location / {
			uwsgi_pass      127.0.0.1:8000;
            include uwsgi_params;
        }
        location /static{
            alias 	/var/www/PersonalWebsite/all_static;
        }
}
"""
cd /etc/nginx/sites-enabled
ll
ln -s ../sites-available/www.xingjidemimi.cn
ll
# 重啓nginx
service nginx restart

3.安裝配置uwsgi

收集項目中的靜態資源

在項目根目錄中新建靜態資源收集目錄all_static

配置項目中的setting.py文件

STATIC_URL = '/static/'
# 靜態資源收集配置
STATIC_ROOT = os.path.join(BASE_DIR, 'all_static')
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'all_static'),
]

執行靜態資源收集

python manage.py collectstatic

進入到python創建的env366虛擬環境

# 安裝
pip install uwsgi
# 配置
進入到django項目根目錄內
vim uwsgi.ini
# 加入以下代碼:
"""
[uwsgi]
#使用nginx連接時使用
socket = 0.0.0.0:8000
#直接做web服務器使用
#http=127.0.0.1:8080
#項目目錄
chdir =  /var/www/PersonalWebsite
#項目中wsgi.py文件的目錄,相對於項目目錄
wsgi-file = PersonalWebsite/wsgi.py
module = PersonalWebsite.wsgi
# 配置虛擬環境
virtualenv = /root/.pyenv/versions/env366
#plugins = python
#主進程
master = true
#處理器核心
processes = 1
#線程
threads = 2
"""

4.安裝項目需要的包

在python虛擬環境env366下導入或安裝開發所需要的包

pip install django==2.1.5
pip install djangorestframework

5.上傳項目

# django項目一般放在以下目錄內
cd /var/www/

6.運行

# 在項目根目錄內執行:
uwsgi uwsgi.ini

7.說明

nginx和uwsgi服務不能終止,否則服務器停止服務。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章