uwsgi啓動項目流程

今日內容: 博客地址: https://www.cnblogs.com/pyyu/p/9481344.html
 linux基本管理命令 服務器上安裝服務,python3.6(宿主機上的物理解釋器) 1.虛擬解釋器 virtualenv 虛擬出多個乾淨、隔離的python解釋器環境 問題:管理上較爲麻煩,須要找到venv的路徑,而且source activate 才能激活虛擬環境 2. virtualenvwrapper工具 更爲方便的使用以及管理virtualenv 1.配置好環境變量以後,每次開機就加載這個軟件 2.workon 激活而且切換多個虛擬環境 mkvirtualenv 建立 lsvirtualenv cdvirtualenv rmvirtualenv mariadb(mysql),與django鏈接,存儲數據(yum install mariadb-server mariadb-client) 初始化鏈接數據庫 __init.py__ import pymysql pymysql.install() 本地django鏈接linux上的數據庫注意事項: 1.防火牆問題,需配置規則,或者關閉防火牆 使用雲服務器的同窗,須要注意開通3306端口(安全組功能) 2.遠程鏈接mysql,須要受權,遠程鏈接 grant all privileges ..... redis import redis 準備django項目 > crm 在服務器上運行crm 1.把本地代碼,傳至linux -scp(linux與linux網絡傳輸) -xshell(yum install lrzsz) (windows) lrzsz 能夠經過以下倆命令管理文件,也能夠直接拖拽文件 rz 接收 sz 發送 lrzsz只適用於小文件,大文件,請用xftp -xftp (更爲高效的企業級文件傳輸協議軟件) 2.django項目須要配置allow_hosts=['*'],容許全部主機訪問 debug=True #返回給項目一個debug信息,暴露了項目配置信息,所以在線上要關閉 Nginx 1.web服務器,用戶的統一入口, 咱們的想法是,讓用戶經過nginx這個入口,就能訪問到咱們的應用服務器的功能 www.pythonav.cn 入口 < 80端口 端口轉發,反向代理 80端口的請求 > 8000的端口應用 server{}虛擬主機 2.反向代理服務器 proxy_pass 後端應用服務器的ip:port (轉發給一個單點機器) proxy_pass upstream負載均衡池 3.負載均衡服務器 nginx接收到了基於wsgi協議的動態請求,而後經過uwsgi_pass轉發給uwsgi服務器 uwsgi_pass mydjango; upstream mydjango { server 192.168.12.1:8000 weight=1; server 192.168.12.2:8000 weight=5; server 192.168.12.3:8000 weight=10; } 4.處理靜態文件,者是nginx的自然優點,處理靜態文件的高併發性性能 www.pythonav.com/static/xxx.js 文件存放目錄/data/static/xxx.js www.pythonav.com/static/xxx.css 文件存放目錄/data/static/xxx.css www.pythonav.com/static/xxx.jpg 文件存放目錄/data/static/xxx.jpg location /static { alias /data/static; } uwsgi uwsgi服務器: 經過uwsgi這個軟件啓動crm項目,且是一個支持高併發,多進程的一個應用服務器 uwsgi --module crm python3 manage.py runserver 0.0.0.0:8000 ×× 再也不用這種單機形式啓動crm django-admin startproject crm django-admin startapp app01 crm -crm -wsgi.py (重點級的文件,django啓動,實現wsgi協議的文件) -manage.py 常見問題: uwsgi 啓動crm的時候,很是有可能報錯一個 no application(找不到應用) uwsgi找不到你的crm的wsgi.py 其實uwsgi是經過這個application對象加載crm的 application = get_wsgi_application() 進程管理工具: 啓動進程後,經過命令 手動管理 ps -ef |grep uwsgi #啓停uwsgi kill -9 pid pkill uwsgi killall uwsgi #管理nginx ps -ef kill #管理mysql ps -ef kill #進程管理工具 supervisor 服務啓動後 supervisorctl ,能夠經過這個命令,很是方便的管理進程,也能夠統一啓動,中止全部的進程 批量管理進程 mysql : running/stop nginx : running/stop uwsgi:running/stop 項目發佈配置手冊: (更換不一樣的服務器環境,首先就要解決環境依賴的問題) 1.pip3 frezz > requirements.py 2. pip3 install -r requirements.py 3.docker 1.準備python環境,準備虛擬環境,激活了虛擬環境 mkvirtualenv nbcrm 檢測是否虛擬環境正常 which pip3 which python3 2.安裝django模塊(此時的操做都是在nbcrm這個虛擬環境下了) pip3 install django==1.11.11

3.安裝pymysql鏈接mysql數據庫 pip3 install pymysql 4.安裝django的一個django-multiselectfield pip3 install django-multiselectfield 5.解決項目的數據庫鏈接問題,修改settings.py 1.啓動linux的數據庫,建立對應的數據庫,密碼設置等等 create database nb_crm; 2.更改settings.py DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'nb_crm', #數據庫名 'HOST': '127.0.0.1', #這裏服務器的ip地址 'PORT': 3306, #端口 'USER': 'root', #用戶名 'PASSWORD': 'redhat123', #用戶密碼 } } 3.更改容許主機 ALLOWED_HOSTS = ['*'] 4.線上關閉debug(肖鋒的這個nb_crm先別改debug了),默認先用True debug=True 使用uwsgi啓動django 1.安裝uwsgi pip3 install -i https://pypi.douban.com/simple uwsgi

2.經過uwsgi命令啓動python應用 uwsgi --http   0.0.0.0:8888  --wsgi-file test1.py --http 指明是http協議 --socket 啓動一個socket 連接 --wsgi-file 指明一個python應用文件 3.經過uwsgi啓動django項目(問題是,uwsgi不處理static靜態文件的配置) uwsgi --http :8888  --module Nb_crm.wsgi 4.uwsgi能夠熱加載項目 uwsgi --http :9999  --module mycrm.wsgi --py-autoreload=1 
--py-autoreload是告訴uwsgi自動重啓加載django項目 5.經過uwsgi的配置文件啓動項目 1.手動建立uwsgi.ini文件 touch uwsgi.ini 2.寫入以下配置 [uwsgi] #項目的絕對路徑,定位到項目的第一層 chdir = /opt/NB_crm #指明項目的wsgi文件路徑 module = NB_crm.wsgi #指明你的虛擬解釋器的第一層路徑 home = /root/Envs/nbcrm #指明經過uwsgi,啓動多少個進程 processes = 5 #很是重要 #很是重要 #很是重要 #若是你已經配置了nginx(啓動了nginx服務,配置了uwsgi_pass),請用這個socket鏈接 #socket = 0.0.0.0:8000 #若是你沒用nginx,想經過uwsgi直接啓動web服務,指明http協議 http = 0.0.0.0:9999 #在退出uwsgi環境後,清空環境變量 vacuum = true


6.經過配置文件啓動NB_crm(注意uwsgi不會處理靜態文件,若是有,也是瀏覽器的緩存!!!!) uwsgi --ini uwsgi.ini 7.配置django的settings.py,收集全部NB_crm項目所需的靜態文件 1.#經過命令,收集整個項目全部的靜態文件,放入到/opt/static/ STATIC_ROOT='/opt/static/'
    2.執行命令 python3 manage.py collectstatic 3.此時NB_crm的全部靜態文件,都跑到/opt/static/底下了 (nbcrm) [root@node1 /opt/NB_crm 11:09:33]#ls /opt/static/ admin css imgs js plugins 8.配置nginx 1.配置一個網站入口,當用戶訪問192.168.12.96:80 這個web應用時,自動將請求轉發給uwsgi,uwsgi處理後,返回給nginx,返回給用戶 當請求是192.168.12.96:80的時候,其實訪問的是192.168.12.96:9999 這是動態請求,由於我是找到的uwsgi #匹配度最低的寫法,所以就是任何的請求都訪問到這裏 2.經過nginx去處理靜態文件 3.nginx.conf配置以下 #定義負載均衡池,裏面放入uwsgi的地址 upstream nbcrm { server 127.0.0.1:8000; } server { listen 80; server_name www.s14huoying.com; #講nginx入口的請求,直接反向代理給uwsgi location / { uwsgi_pass nbcrm; include /opt/nginx1-12/conf/uwsgi_params; } #經過nginx處理nbcrm的靜態文件 location /static { alias /opt/static/; } } 9.更改uwsgi.ini ,指明socket鏈接,結合uwsgi 和nginx #若是你已經配置了nginx,請用這個socket鏈接 socket = 0.0.0.0:8000


10.啓動uwsgi.ini uwsgi --ini uwsgi.ini 啓動nginx ./nginx 而且訪問nginx的域名入口,查看是否能訪問到uwsgi項目,而且靜態文件是否正常 www.s14huoying.com 查看瀏覽器狀態 11.配置supversior,管理uwsgi進程 注意,請退出虛擬環境,在宿主機環境下,安裝supvervisor 1.安裝easy_install ,python2的軟件包管理工具 ,若是有了能夠忽略 yum install python-setuptools #安裝軟件 easy_install supervisor 2.使用supervisor命令,經常使用命令以下 生成配置文件 echo_supervisord_conf >  /etc/supervisord.conf 3.修改配置文件,添加任務,按照本身的機器環境修改此命令 [program:s14nbcrm] #啓動uwsgi的命令就是這個 command=/root/Envs/nbcrm/bin/uwsgi  --ini /opt/NB_crm/uwsgi.ini #自動啓動uwsgi,掛了以後自動加載 autorestart=true

    
4.啓動supvervisord服務,啓動uwsgi #服務端命令,用於啓動這個服務 supervisord -c  /etc/supervisord.conf 5.經過命令管理uwsgi supervisorctl 直接回車,進入交互式管理狀態 [root@node1 ~ 11:53:32]#supervisorctl s14nbcrm RUNNING pid 2008, uptime 0:01:56 也能夠經過命令交互式的管理uwsgi #服務端啓動後,經過命令管理軟件 supervisorctl start s14nbcrm supervisorctl stop s14nbcrm supervisorctl status s14nbcrm 
相關文章
相關標籤/搜索