linux--後端項目部署

nginx + uwsgi + crm + mysql + virtualenv + supervisor項目部署

1.後端整起,用uwsgi啓動crm

2.建立一個新的虛擬環境,用於運行crm新業務
    mkvirtualenv crm_env

    (crmenv) [root@localhost Envs]# which python3
    /root/Envs/crmenv/bin/python3
    確認python3來自虛擬環境下

3.上傳crm代碼到服務器

4.解決代碼的模塊依賴
以前在一個env1的虛擬環境中安裝過這些模塊,因此先切換到env1:  workon env1
模塊導出
    pip3 freeze >  requirements.txt 

再次切換到當前新建的虛擬環境,導入下載安裝項目依賴模塊
    pip3 install -i https://pypi.douban.com/simple  -r requirements.txt 

5.安裝uwsgi工具,啓動crm
    pip3 install -i https://pypi.douban.com/simple uwsgi  #uwsgi能讓你的項目支持多進程,多線程,提升性能

6.使用uwsgi的配置文件,啓動crm項目
在CRM項目目錄下(與項目的settings.py同級的目錄文件)手動建立uwsgi的配置文件

    touch uwsgi.ini  

在uwsgi.ini寫入一下配置內容:
    [uwsgi]
    # Django-related settings
    # the base directory (full path)
    # 填寫項目的完整絕對路徑,第一層
    chdir           =/root/CRM
    # Django's wsgi file
    #指定django的wsgi文件路徑,填寫相對路徑
    在項目的第二層目錄下
    module          = CRM.wsgi  
    # the virtualenv (full path)
    #填寫虛擬環境的絕對路徑
    #查看虛擬環境路徑
    #   cdvirtualenv
    #   pwd
    home            = /root/Envs/crm_env
    # process-related settings
    # master
    master          = true
    # maximum number of worker processes
    #定義程序的多進程數量的,以cpu核數的2倍+1數量填寫   2n+1 數量 
    processes       = 3
    # the socket (use the full path to be safe
    #把uwsgi啓動在socket協議上,的8000端口
    socket          = 0.0.0.0:8000
    #指定http協議的話,用戶是能夠直接訪問到的,不安全的,所以使用socket協議,交給nginx去處理,能夠進行併發處理,也能夠進行限流,防止惡意攻擊
    #http =0.0.0.0:8000

    # ... with appropriate permissions - may be needed
    # chmod-socket    = 664
    # clear environment on exit
    vacuum          = true

7.啓動uwsgi的命令
    uwsgi --ini  uwsgi.ini    #指定配置文件啓動 

8.配置nginx,進行靜態文件解析,以及反向代理crm的動態請求
    server {
        listen       80;   
        server_name  _;
        #只要在server{}標籤中看到root關鍵字,說明這個虛擬主機是一個靜態文件服務器
        #將www.crm_env.com 這個域名全部的請求,都分發給uwsgi
        #uwsi的地址,把接收到的請求交給uwsgi處理,進行反向代理,父載均衡
        #能夠再次vim uwsgi.ini查看socket的ip:port
       .......
        location / {
        uwsgi_pass  127.0.0.1:8000;
        include uwsgi_params;
        }
    }

    從新加載nginx,讓配置生效 :nginx -s reload
    若是報錯:nginx: [error] open() "/usr/local/var/run/nginx.pid" failed (2: No such file or directory)
    啓動nginx 輸入命令:nginx

9.把ip作一個本地的hosts解析,添加一個假的域名
    找到本地機器的hosts文件C:\Windows\System32\drivers\etc
    192.168.16.85  www.pycrm.com  
    以前寫的是192.168.16.85  www.crm_env.com報錯了,多是由於帶下劃線吧,我猜的

    訪問以後,成功了一半,一些靜態文件沒加載出來,css樣式,js,圖片都沒有

10.收集crm全部的靜態文件,交給nginx去處理
    修改django的settings.py配置文件,
    進到settings.py這個目錄中
    vim settings.py

    添加以下配置
        STATIC_URL = '/static/'  #原來django中的配置文件中已經存在配置
        STATIC_ROOT='/opt/pycrmstatic'  #新添加的配置文件

    經過命令收集django全部的靜態文件
        python3  manage.py collectstatic

11.配置nginx找到crm的靜態文件
    vim /etc/nginx/nginx.conf
        #修改配置以下形式
        #配置nginx找到crm全部的靜態文件
        #只要是以/static開頭的請求,就走以下配置
        location  /static {
            alias  /opt/pycrmstatic/;
        }

12.重啓nginx,查看crm項目
    nginx -s reload
    http://www.pycrm.com/login/#

13.經過supervisor進程管理工具,管理uwsgi的後臺,這個工具,其實就是在幫咱們執行啓動命令
    須要下載安裝便可 
    yum install supervisor

14.配置supervisor的配置文件
    [root@s24_linux css]# echo_supervisord_conf >  /etc/supervisor.conf  #生成配置文件的目錄

    修改配置文件supervisord : vim /etc/supervisord.conf

    將這些內容添加到supervisord.conf的下面
    [program:CRM]  #CRM要管理的進程,也就是項目名
    command=/root/Envs/crm_env/bin/uwsgi --ini  /root/CRM/CRM/uwsgi.ini       ; 程序啓動命令
    autostart=true          ; 在supervisord啓動的時候也自動啓動
    stopasgroup=true    ;默認爲false,進程被殺死時,是否向這個進程組發送stop信號,包括子進程
    killasgroup=true   ;默認爲false,向進程組發送kill信號,包括子進程

15.啓動supervisord服務端
    # 再次修改配置文件後,須要重啓supervisorctl  命令:supervisorctl reload
    supervisord -c  /etc/supervisord.conf # 啓動supervisorctl

    進入supervisor的管理交互式終端,管理任務
    [root@localhost ~]# supervisorctl -c /etc/supervisord.conf
    CRM    RUNNING   pid 37756, uptime 0:00:04

16.supervisor的管理命令
    status #查看狀態
    start all #啓動全部任務
    restart all #重啓全部任務
相關文章
相關標籤/搜索