1. 程式人生 > >Django程式碼部署

Django程式碼部署

作業系統:Centos7.2
一、釋出Django專案用到的軟體
0. python3
- 開發環境
1. virtualenv
- 在python開發中,如果出現多個專案共用一臺伺服器。難免碰到不同的工程依賴不同的版本庫問題。
或者在開發過程中不像讓物理環境充斥各種各樣的庫,引發未來的依賴災難。virtualenv可以在系統
中建立多個不同並且互不干擾的虛擬環境
2. virtualenvwrapper
- virtualenv的一個最大缺點是 每次開啟虛擬環境前要去虛擬環境所在目錄下的bin目錄下source一下
activate,這就需要我們記住每個虛擬機器環境所在的目錄。
3. uwsig
- 想比較django自帶的web服務wsigref支援高併發,高效能。
4. nginx
- 提供負載功能
- 處理靜態檔案要比uwsig效能好,因為uwsgi啟動django專案,
不會讀取一個靜態檔案的配置引數(不像wigiref會自動讀取配置檔案的static配置)
- 效能更加
5. supervisor
- 是基於python開發的任務管理工具,用來管理和自動執行各種後臺任務。


二、python3的安裝(編譯安裝)

1. 安裝相關依賴包
# 安裝所有的開放包
yum groupinstall "Development tools"
yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y

2. 安裝python3
- cd /opt/
- wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
- tar xf Python-3.6.2.tgz
- ./configure --prefix=/opt/python3.6
- make && make install

3. 配置環境變數
- echo "# python 環境變數" >>/etc/profile
echo "PATH=/opt/python3.6/bin/:\$PATH" >>/etc/profile
- source /etc/profile # 生效環境變數

4. 測試方法
- python3

三、安裝virtualenv

1. 指定pip源安裝安裝virtualenv
- pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv

2. 虛擬環境管理
- 建立虛擬環境統一目錄:mkdir /home/MyProject
- 進入虛擬環境統一目錄:cd /home/MyProject/
- 建立虛擬環境:virtualenv --no-site-packages --python=python3 p1 # --python:指定直譯器版本 p1:環境名稱
- 進入虛擬環境:source p1/bin/activate
- 安裝第三方包:pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django==1.11.15
- 退出虛擬環境:deactivate

3. virtualenv是如何建立“獨立”的Python執行環境的呢?
- 原理很簡單,就是把系統Python複製一份到virtualenv的環境,用命令source venv/bin/activate進入一個virtualenv環境時,
virtualenv會修改相關環境變數,讓命令python和pip均指向當前的virtualenv環境。

4. 如何保證專案上線環境包保持一致性?
- 通過命令保證環境的一致性,匯出當前開發環境python環境的包。requirements.txt 包含環境所需的包和版本列表
pip3 freeze > requirements.txt
- 把requirements.txt上傳到伺服器,進行安裝
pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

四、安裝virtualenvwrapper

1.指定pip源安裝virtualenvwrapper
- pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenvwrapper

2. 修改環境變數
- 開啟:vim ~/.bashrc
- 新增一下內容:
#設定virtualenv的統一管理目錄
export WORKON_HOME=/home/Envs
#新增virtualenvwrapper的引數,生成乾淨隔絕的環境
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'
#指定宿主機python3直譯器絕對路徑
export VIRTUALENVWRAPPER_PYTHON=/opt/python3.6/bin/python3
#執行virtualenvwrapper安裝指令碼
source /opt/python3.6/bin/virtualenvwrapper.sh
- 重新登入當前linux使用者

3. 基本使用virtualenvwrapper
- 建立虛擬環境:mkvirtualenv p2
- 啟用進入虛擬環境:workon p2
- 建立第二個虛擬環境(任意位置執行命令即可):mkvirtualenv p3
- 啟用進入虛擬環境:workon p3
- 切換虛擬環境:workon p2
- 退出虛擬環境:deactivate
- 刪除虛擬環境:rmvirtualenv p2
- 列出所有的虛擬環境:lsvirtualenv
- 導航到當前啟用的虛擬環境目錄中:cdvirtualenv
- 導航到site-packages:cdsitepackages

4. 使用virtualenvwrapper建立並允許一個django專案
- 建立虛擬環境:mkvirtualenv p5
- 啟用:workon p5
- 安裝django:pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django==1.11.15
- 檢視django是否安裝成功:pip3 list
- 建立django專案:django-admin startproject mysite(可以上傳一個已經寫好的專案到此目錄)
- 進入到專案路徑:cd mysite
- 建立APP:python3 manage.py startapp app01
- 配置 vim mysite/settings.py
註冊app:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',
]
修改允許訪問主機:
ALLOWED_HOSTS = ['*']
- 配置url:vim mysite/urls.py
from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^hello_django/', views.hello),
]
- 配置檢視:vim app01/views.py
from django.shortcuts import render,HttpResponse
def hello(request):
print('request is :',request)
return HttpResponse('django is ok ')
- 不需要啟動,一會使用uwsgi啟動

五、安裝uwsgi
0. 進入虛擬環境:workon p5

1. 指定pip源,安裝uwsig
- pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple uwsgi

2. 執行簡單的uwsgi
- uwsgi --http :8000 --wsgi-file test.py
- # test.py
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"] # python3
- http://IP:8000

3. uwsgi熱載入python程式,啟動p5專案(需要進入到專案目錄下)
- uwsgi --http :8088 --module mysite.wsgi --py-autoreload=1

4. 測試頁面:http://IP:8088/hello_django/

5. 配置檔案方式啟動uwsgi
- 進入虛擬環境:workon p5
- 進入:cdvirtualenv
- 開啟檔案寫入一下內容:vim uwsgi.ini
# mysite_uwsgi.ini file
[uwsgi]
# 專案絕對路徑
chdir = /home/Envs/p5/mysite
# Django's wsgi file
module = mysite.wsgi
# 虛擬環境路徑
home = /home/Envs/p5
# master
master = true
# 程序數
processes = 4
# 直接訪問的時候使用http
http = 0.0.0.0:8088
# 使用nginx代理的時候使用socket
#socket = 0.0.0.0:8088
# chmod-socket = 664
# clear environment on exit
vacuum = true

- 啟動:uwsgi --ini uwsgi.ini
- 訪問測試頁面即可

六、安裝nginx
1. 使用yum安裝nginx
- yum install epel-* -y
- yum install nginx -y
2. 啟動nginx
- nginx
3. 配置nginx.conf
- vim /etc/nginx/nginx.conf 修改如下內容
location / {
include /etc/nginx/uwsgi_params;
uwsgi_pass 127.0.0.1:8088;
}
# 靜態檔案入口
location /static {
alias /home/Envs/p5/static;
}

- 檢測nginx是否正確:nginx -t
- 重啟nginx:nginx -s reload

4. 收集靜態檔案到 /home/Envs/p5/static
- 配置django的settings.py
#指定靜態檔案存放路徑
STATIC_ROOT='/home/Envs/p5/static'
#指定靜態資源,請求入口
STATIC_URL = '/static/'
STATICFILES_DIRS=[
os.path.join(BASE_DIR,"static"),
]
- 建立靜態檔案目錄:mkdir /home/Envs/p5/mysite/static
- 到專案的根目錄執行:python3 manage.py collectstatic

5. 訪問http://IP/admin 測試靜態頁面是否載入


七、安裝supervisor
1. 安裝supervisor(注意一下操作退出虛擬環境執行)
- yum install python-setuptools
easy_install supervisor

2. 通過命令生成supervisor的配支檔案
- echo_supervisord_conf > /etc/supervisord.conf

3. 然後再/etc/supervisord.conf末尾新增上如下程式碼
[program:p5]
; 是被管理的程序配置引數,xx是程序的名稱
command= /home/Envs/p5/bin/uwsgi --ini /home/Envs/p5/uwsgi.ini
; 程式啟動命令
autostart=true
; 在supervisord啟動的時候也自動啟動

4. 啟動supervisor:supervisord -c /etc/supervisord.conf

5. supervisor的基本操作
- 更新新的配置到supervisord:supervisorctl update
- 重新啟動配置中的所有程式:supervisorctl reload
- 啟動某個程序(program_name=你配置中寫的程式名稱):supervisorctl start program_name
- 檢視正在守候的程序:supervisorctl
- 停止某一程序 (program_name=你配置中寫的程式名稱):spervisorctl stop program_name
- 重啟某一程序 (program_name=你配置中寫的程式名稱):supervisorctl restart program_name
- 停止全部程序:supervisorctl stop all (顯示用stop停止掉的程序,用reload或者update都不會自動重啟。)