日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

linux项目部署(非前后端分离crm)

發(fā)布時間:2023/12/15 综合教程 24 生活家
生活随笔 收集整理的這篇文章主要介紹了 linux项目部署(非前后端分离crm) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考博客

參考博客2---部署過程

導論:看參考博客1

WSGI是Web服務器網關接口。它是一個規(guī)范,描述了Web服務器如何與Web應用程序通信,以及Web應用程序如何鏈接在一起以處理一個請求,(接收請求,處理請求,響應請求)

一.crm項目部署(非前后端分離項目)

1.項目部署技術棧

nginx + uwsgi + django + 虛擬環(huán)境 + supervisor + mysql

2.面試題1

django的啟動方式 python3 manage.py runserver 為什么不能在生產環(huán)境用?

django只是一個web邏輯框架,它通過python3 manage.py runserver命令啟動的socket服務端
是借助python內置的wsgi框架 wsgiref框架實現的
wsgi是一個單機模塊,單進程模塊,性能很低,用wsgi來啟動一個多線程、多進程的項目是不合適的

因此在線上需要借助通過c語言編寫的uwsgi這個web服務器軟件,啟動django
uwsgi支持多進程 多線程的方式,性能很高,啟動django性能更好,但是uwsgi不解析django的靜態(tài)文件

3.面試題2

為什么要用nginx  和uwsgi?
nginx  可以解決uwsgi的靜態(tài)文件問題,并且支持高并發(fā)請求,還能限流,保障后臺服務器安全等等

為什么要用uwsgi
因為uwsgi支持多進程 多線程的方式,性能很高,啟動django性能更好,但是uwsgi不解析django的靜態(tài)文件

我們以后會收集所有的django項目靜態(tài)文件,丟給nginx去處理

4.準備crm代碼

5.進入第一層路徑,查看wsgi.py文件

vim wsgi.py

從這個文件可以看出是調用django的wsgi,獲取函數get_wsgi_application
然后通過調用這個函數生成一個application對象

在進行uwsgi啟動django的時候,是需要找到wsgi.py這個文件模塊的
如果你報錯提示 找不到application ,就是因為uwsgi  找不到wsgi.py 

6.創(chuàng)建虛擬環(huán)境

準備一個新的虛擬環(huán)境,去啟動crm,使用virtualenvwrapper創(chuàng)建新的虛擬環(huán)境

   virtualenvwrapper工具的命令
        1.創(chuàng)建新的虛擬環(huán)境
        mkvirtualenv mycrm
        
        2.切換多個虛擬環(huán)境
        workon 虛擬環(huán)境的名字
        
        3.列出所有的虛擬環(huán)境目錄
        lsvirtualenv 
        
        4.進入當前激活的虛擬環(huán)境的目錄
        cdvirtualenv

View Code

1.解決虛擬環(huán)境依賴的問題,也就是保障本地開發(fā)環(huán)境和線上一致性的問題
    在windows本地 通過cmd窗口輸入

    pip3 freeze > requirements.txt

    #就能將python3解釋器中所有的模塊導出到requirements.txt這個文件中 
    

    2.將這個 requirements.txt  文件傳輸到服務器上,虛擬環(huán)境下進行安裝,就可以自動解決所有模塊問題
    pip3 install -r requirements.txt  

7.虛擬環(huán)境下安裝uwsgi

確保進入虛擬環(huán)境,然后安裝uwsgi
workon nginx_crm

下載uwsgi
pip3 install uwsgi 

8.使用uwsgi命令啟動django項目以及熱加載

uwsgi支持熱加載的啟動方式命令如下
uwsgi --http :8000 --module mysite.wsgi --py-autoreload=1 

uwsgi啟動django項目的命令如下:
uwsgi --http :8088 --module Crm_Project.wsgi 
    --http指定http協(xié)議啟動在 8088端口
    --module 找到項目第二層的目錄,里面的wsgi.py文件

如果你想啟動一個http頁面,提供測試訪問,就用--http參數

如果你結合了nginx反向代理,必須用--socket參數 
uwsgi --socket :8000 --module Crm_Project.wsgi

9.uwsgi.ini配置文件的引入

由于參數過多,這里引入配置文件的概念 叫做 uwsgi.ini     這個文件放在項目的第一層路徑下

啟動crm的配置文件如下 uwsgi.ini內容如下
[uwsgi]
# Django-related settings
# the base directory (full path)
#填寫項目的絕對路徑(第一層路徑)
chdir           = /opt/Crm_Project
# Django's wsgi file
#填寫crm第二層目錄下的wsgi.py文件的路徑
module          = Crm_Project.wsgi
# the virtualenv (full path)
#填寫虛擬環(huán)境的絕對路徑
home            = /root/Envs/nginx_crm

# process-related settings
# master
master          = true
# maximum number of worker processes
#基于uwsgi的多進程,根據cpu來優(yōu)化 
processes       = 4
# the socket (use the full path to be safe

#如果你用了nginx反向代理,就填寫socket參數
#如果你用了nginx反向代理,就填寫socket參數
#如果你用了nginx反向代理,就填寫socket參數
#如果你用了nginx反向代理,就填寫socket參數
#如果你用了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

uwsgi支持ini、xml等多種配置方式,本文以 ini 為例, 在/etc/目錄下新建uwsgi_nginx.ini,添加如下配置:

# mysite_uwsgi.ini file
[uwsgi]

# Django-related settings
# the base directory (full path)
chdir           = /opt/mysite
# Django's wsgi file
module          = mysite.wsgi
# the virtualenv (full path)
home            = /opt/venv
# process-related settings
# master
master          = true
# maximum number of worker processes
processes       = 1
# the socket (use the full path to be safe
socket          = 0.0.0.0:8000
# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true

uwsgi.ini

uwsgi.ini

10.此時通過uwsgi --ini uwsgi.ini方式啟動代碼

11.django的靜態(tài)文件與nginx配置

虛擬環(huán)境下
編輯項目的settings.py 寫入如下參數
STATIC_ROOT= '/opt/crmstatic'

12.執(zhí)行命令,收集crm所有的靜態(tài)文件

命令如下
python3 manage.py collectstatic

#此時后端的配置完畢!!!!開始搞nginx
#此時后端的配置完畢!!!!開始搞nginx
#此時后端的配置完畢!!!!開始搞nginx
#此時后端的配置完畢!!!!開始搞nginx
#此時后端的配置完畢!!!!開始搞nginx

13.配置nginx,一是支持反向代理,二是支持靜態(tài)文件加載

配置nginx,一是支持反向代理,二是支持靜態(tài)文件加載
修改nginx.conf 

代碼如下
        #當用戶訪問 www.s18dnf.com的時候,就進入這個虛擬主機
        location / {
          uwsgi_pass  0.0.0.0:8000;  #8000為django運行的端口
          include uwsgi_params;  #固定寫法
        }

        #這個location是解決crm的靜態(tài)文件的問題的
location /static  {
    #alias參數 就是將/static轉化為/opt/crmstatic ,也就找到了我們所有的靜態(tài)文件
    alias   /opt/crmstatic;  #這里的crmstatic就是STATIC_ROOT= '/opt/crmstatic'這個
}

14.重啟nginx,由于有熱加載,項目已經啟動

15.批量管理軟件的啟停supervisor

supervisor 是基于 python 的任務管理工具,用來自動運行各種后臺任務,當然你也能直接利用 nohup 命令使任務自動后臺運行,但如果要重啟任務,每次都自己手動 kill 掉任務進程,這樣很繁瑣,
而且一旦程序錯誤導致進程退出的話,系統(tǒng)也無法自動重載任務。

16.安裝supervisor

在非虛擬環(huán)境下安裝supervisor

supervisor只能用python2來安裝,不能用python3來安裝
1.安裝easy_install pip3是python3的軟件包管理工具 easy_install 是python2的軟件包管理工具 yum install python-setuptools 2.安裝supervisor easy_install supervisor

17.supervisor的配置文件

1.創(chuàng)建supervisor的配置文件,在項目第一層路徑下面輸入下面代碼
    
    echo_supervisord_conf >  /etc/supervisor.conf 

2.修改supervisor的配置文件,添加啟動uwsgi的命令
    
    supervisor其實就是幫咱們執(zhí)行了,需要手動執(zhí)行的命令而已 
    vim /etc/supervisor.conf
    寫入如下內容,在最底部寫
[program:s18crm]
command=/root/Envs/nginx_crm/bin/uwsgi  --ini /opt/Crm_Project/uwsgi.ini
stopasgroup=true
killasgroup=true

18.測試用supervisor啟動uwsgi

測試用supervisor啟動uwsgi ,注意要確保此時uwsgi已經退出
.測試用supervisor啟動uwsgi ,注意要確保此時uwsgi已經退出
.測試用supervisor啟動uwsgi ,注意要確保此時uwsgi已經退出
.測試用supervisor啟動uwsgi ,注意要確保此時uwsgi已經退出


虛擬環(huán)境下,輸入下面兩條命令    
supervisord -c  /etc/supervisor.conf   #這是啟動supervisor服務端命令

supervisorctl -c /etc/supervisor.conf     #這是supervisor客戶端管理命令


學習supervisor的命令
    
    status s18crm #查看狀態(tài)  #s18crm來自[program:s18crm]
    start s18crm  #啟動任務
    stop  s18crm #停止任務
    
    start all  
    stop  all  #啟停所有的任務

1.crm部署 nginx + uwsgi + django + mysql 

crm是一個單體的應用,前端代碼和后端代碼,融合在了一起

linux默認終端有7個 
按住ctrl + alt 從 f1-f7是7個終端   f1是圖形化終端,f2-f7是黑屏
我們用的是xshell遠程連接,連接到linux,可以有N個終端

1.先去啟動后端,uwsgi + django 
2.先準備項目  xftp  lrzsz  
3.先準備虛擬環(huán)境
4.安裝uwsgi 
5.用uwsgi啟動crm項目
    -一是命令 +  參數   (不建議使用,請用配置文件 uwsgi.ini)
        uwsgi --http  :8000 --module  crm.wsgi  
        解釋:--http  就是直接可以通過瀏覽器訪問,不通過nginx
        uwsgi --socket :8000 --module crm.wsgi 
        解釋:  --socket 是必須用nginx去反向代理,才能找到,瀏覽器直接訪問找不到

    正確的方式:
        二,用配置文件uwsgi.ini 
                [uwsgi]
                # Django-related settings
                # the base directory (full path)
                #填寫項目的絕對路徑(第一層路徑)
                chdir           = /opt/Crm_Project
                # Django's wsgi file
                #填寫crm第二層目錄下的wsgi.py文件的路徑
                module          = Crm_Project.wsgi
                # the virtualenv (full path)
                #填寫虛擬環(huán)境的絕對路徑
                home            = /root/Envs/nginx_crm

                # process-related settings
                # master
                master          = true
                # maximum number of worker processes
                #基于uwsgi的多進程,根據cpu來優(yōu)化 
                processes       = 4
                # the socket (use the full path to be safe

                #如果你用了nginx反向代理,就填寫socket參數
                #如果你用了nginx反向代理,就填寫socket參數
                #如果你用了nginx反向代理,就填寫socket參數
                #如果你用了nginx反向代理,就填寫socket參數
                #如果你用了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
                
        三,通過配置文件,啟動crm,啟動后端!!!!找到項目里的uwsgi.ini后再輸入命令
        uwsgi --ini uwsgi.ini 
        
        四。關閉防火強
        iptables -F  #清空規(guī)則
        systemctl stop firewalld  #關閉防火墻服務
        systemctl disable firewalld  #禁止開機自啟
 
        五,收集crm的靜態(tài)文件
        修改settings.py 寫入
        STATIC_ROOT= '/opt/crmstatic'

        六:用命令收集靜態(tài)文件,在虛擬環(huán)境中做這個操作
        python3 manage.py collectstatic

2.準備數據庫,啟動
#保證mariadb已經安裝了  
yum install mariadb-server mariadb -y 

systemctl start mariadb   #啟動數據庫



3.準備nginx,進行反向代理
    1.安裝nginx 
    2.修改nginx的配置文件  nginx.conf 
    3.修改代碼如下,截取的片段代碼如下,參照著修改
    
upstream  mycrm {
    server  0.0.0.0:8000;
}
    #nginx的虛擬主機參數
    server {
        #第一個虛擬主機,監(jiān)聽的80端口
        listen       80;
        #填寫的是你自定義的域名 或者服務器的ip地址,或者寫locathost
        server_name  192.168.226.128;

        #當用戶訪問 www.s18dnf.com的時候,就進入這個虛擬主機
        location / {
        uwsgi_pass  http://mycrm;
        include uwsgi_params;
        }

        #這個location是解決crm的靜態(tài)文件的問題的
        #只要請求url是192.168.226.128/static/admin/admin.css
location /static  {
#alias參數 就是將/static轉化為/opt/crmstatic ,也就找到了我們所有的靜態(tài)文件
alias /opt/crmstatic;
}


4.還差一個supervisor 
    1.下載安裝
    2.修改supervisor的配置文件
    寫入任務
    3.這里有個坑,坑是必須關閉nginx才能開啟supervisor
    
    我們用supervisor,其實就是幫咱們執(zhí)行了一下啟動uwsgi的命令而已
    
    4.注意后臺不能啟動過uwsgi

crm項目部署總結

總結

以上是生活随笔為你收集整理的linux项目部署(非前后端分离crm)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。