python web項目部署


python web項目部署

python django默認啟動
python3 manage.py runserver 0.0.0.0:8000這種方式調用wsgiref單機模塊,性能較低,生產環境不用

線上使用uwsgi工具(由c語言編寫的工具,性能強悍)啟動django,
使用方式:

在激活虛擬環境的前提下,使用uwsgi
安裝配置好virtualenvwrapper工具,或者virtualenv皆可

 

1.准備django項目 NB_crm  

 

2.安裝虛擬環境,在虛擬環境下,安裝uwsgi,進行部署
workon nbcrm
pip3 install -i https://pypi.douban.com/simple uwsgi

 


3.利用uwsgi運行一個python web腳本文件
新建一個py腳本文件,寫入如下內容
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"] # python3
啟動命令如下
uwsgi --http :8000 --wsgi-file test.py
--http參數意思是,基於http協議運行 在 8000端口
--socket
--wsgi-file 找到wsgi.py文件

 

4.利用uwsgi運行django項目
(以參數形式運行項目),(還有以配置文件形式運行,把運行的參數寫入到一個文件里面,基於這個文件運行)

命令如下
uwsgi --http :8088 --module mysite.wsgi
--module 找到django項目的第二層里面的wsgi.py文件

uwsgi默認不支持靜態文件解析,使用nginx去解析靜態文件

 

 


5.熱加載django項目,uwsig自動重啟django

uwsgi --http :9000 --module NBcrm.wsgi --py-autoreload=1

 

 

6.基於配置文件的形式,運行nbcrm

# uwsgi的配置文件

[uwsgi]
# Django-related settings
# the base directory (full path)
#項目的絕對路徑,定位到nbcrm的第一層
chdir = /opt/NBcrm
# Django's wsgi file
# 找到項目第二層的wsgi文件
module = NBcrm.wsgi
# the virtualenv (full path)
# 找到虛擬環境的絕對路徑
home = /root/Envs/nbcrm
# process-related settings
# master
# 主進程
master = true
# maximum number of worker processes
# 開啟uwsgi的多進程數,根據cpu核數來定義
processes = 16
# the socket (use the full path to be safe
# 基於socket鏈接運行crm,只有與nginx結合的時候,才使用socket形式
socket = 0.0.0.0:8000
# 當你沒用nginx,調試項目的時候,使用http形式
#http = 0.0.0.0:8000
# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true

#指定一個參數,日志放在哪

 

#如果你使用了supervisor,請注釋掉這個參數
#守護進程在后台運行,且將日志信息,輸出到uwsgi.log日志中
#daemonize = uwsgi.log

 


啟動配置文件的命令
/root/Envs/nbcrm/bin/uwsgi --ini uwsgi.ini

/root/Envs/django1/bin/uwsgi --ini uwsgi.ini
7.配置nginx,結合uwsgi,以及處理靜態文件的配置
nginx.conf請求轉發配置如下

server {
listen 80;
server_name localhost;
location / {
include uwsgi_params;
uwsgi_pass 0.0.0.0:8000;

}
}


nginx處理crm的靜態文件方式
1.修改django的settings.py靜態文件
添加如下參數
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/
STATIC_ROOT='/opt/s20static'
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'statics'),
]

2.執行命令,收集crm的靜態文件
python3 /opt/NBcrm/manage.py collectstatic
python3 /opt/DjangoProject/XXCRM/manage.py collectstatic

3.配置nginx的location路徑匹配,找到crm這些靜態文件
在nginx.conf中找到server{}標簽,添加如下參數
#當我的請求url是 192.168.16.142:80/static/xxxxxxxx
location /static {
alias /opt/s20static/;
}

4.啟動nginx,訪問nginx的80,是否可以轉發到crm


8.使用supervisor進程管理工具,管理你的項目
其實,supervisor就是在幫你執行命令而已
使用supervisor管理進程,這個進程不得在后台運行,

 

退出虛擬環境,在物理環境下安裝supervisor
1.安裝命令
pip3 install -i https://pypi.douban.com/simple supervisor
2.創建supervisor的配置文件
echo_supervisord_conf > /etc/supervisor.conf
3.編輯配置文件,寫入管理nbcrm的任務參數
[program:s20nbcrm]
command=/root/Envs/nbcrm/bin/uwsgi --ini uwsgi.ini
stopasgroup=true ;默認為false,進程被殺死時,是否向這個進程組發送stop信號,包括子進程
killasgroup=true ;默認為false,向進程組發送kill信號,包括子進程

 

[program:s20XXCRM]
command=/root/Envs/django1/bin/uwsgi --ini /opt/DjangoProject/XXCRM/uwsgi.ini
stopasgroup=true ;默認為false,進程被殺死時,是否向這個進程組發送stop信號,包括子進程
killasgroup=true ;默認為false,向進程組發送kill信號,包括子進程

4.啟動supervisor,去管理uwsgi

supervisord -c /etc/supervisor.conf #指定配置文件,啟動這個服務

5.通過supervisorctl管理命令,管理uwsgi
supervisorctl -c /etc/supervisor.conf

命令如下
status all
start s20nbcrm
stop s20nbcrm
stop all

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM