12 部署到Linux上

2021-10-21 11:34:50 字數 3601 閱讀 5192

作業系統:linux (centos 7 )

處於開發階段的時候,大都是在個人電腦(通常是windows作業系統)上面執行的。

完成乙個階段的開發任務後,就需要把我們開發的**服務,需要我們的**部署在公網上,這個給真正使用者使用的**伺服器也被稱之為生產環境。

通常,我們的web服務是部署在雲服務廠商的雲主機上,比如阿里雲的ecs雲主機

現在的web服務,基本都是採用linux 作業系統。 而且生產環境不應該使用 sqlite 資料庫,通常是mysqlpostgresqloracle等。

把基於django的web系統部署到生產環境,就是在linux作業系統上安裝**系統,包括**和mysql資料庫服務。

乙個大型的**系統,架構通常非常的複雜,包括很多的功能節點。當**基本寫完,部署是不是只需要把系統從 windows 轉移到linux上了,把sqlite 改為 mysql就行了?實際上肯定不是這麼簡單。

注意:django 在生產環境不應該處理靜態資源(比如網頁、等)的請求。開發階段讓django來處理靜態資源的請求是為了是環境搭建容易。

這裡使用nginx來處理靜態資源的請求

而且,即使有了 uwsgi 或者 gunicorn,最好還要在前面設定 nginx 。所有的客戶請求由它先接受,再進行相應的**。

因為 nginx 在整個後端的最前方, 可以實現負載均衡反向**請求快取響應快取負荷控制等等一系列功能。可以大大的提高整個後端的效能和穩定性。

為了簡單,把整個後端系統都部署在同一臺linux主機上,包括:nginxgunicorndjango(包括**)、mysql服務

在實際專案中,如果系統的負荷比較大,通常是部署在多台主機上(分布式)

nginx:

它會根據請求的url 進行判斷:

gunicorn+django:

gunicorn 和 django 是執行在同乙個 python程序裡面的。 它們都是用python**寫的程式。

啟動gunicorn的時候,它會根據配置載入django的入口模組,這個入口模組裡面提供了wsgi介面。

當 gunicorn 接收到 nginx **的 http請求後,就會呼叫 django的 wsgi入口函式,將請求給django進行處理。

django再根據請求的url和我們專案配置的 url 路由表,找到編寫好的對應的訊息處理函式進行處理。

編寫的訊息處理函式,就是處理前端請求。如果需要讀寫資料庫,就從mysql資料庫讀寫資料。

產品的發布包,是不是只是需要把你的**用zip打個包?哪有那麼簡單

稍微複雜些的產品都會涉及到好多子系統:

為了保證這些子系統能在生產環境 友好配合 , 需要仔細的規劃、配置、產生發布包。

現在的系統 包括 web前端系統(包括web前端的html、css、、js業務**、js庫等檔案)、後端業務處理系統、資料庫系統。

需要做到產品發布包裡面的 包括web前端系統業務處理系統的**。

不同的運營架構,部署的方式不同,需要構建發布包的方式也不同。

這裡,把前端系統**做在乙個發布包中, 後端系統做在另乙個發布包中。

完全可以把前後端系統分別部署到兩台 linux主機上。當有請求需要django後端業務系統處理的時候,**給django所在的主機即可。 如果請求只是獲取一些靜態資源,比如html、等,在前端主機處理完即可。 這樣做到部署的前後端分離。目前先按簡單的來,都部署在同一臺機器上。

首先,我們需要為當前版本的發布,準備 web前端發布包,和web後端發布包。

現在我們假定發布的 版本號為 1.5

前端發布包,由前端開發人員提供。

後端開發人員準備後端的發布包。

基於django開發的後端系統,要發布正式版本。

一、首先應該修改專案配置檔案中的配置項debug值為 false。

修改 settings.py :

# security warning: don't run with debug turned on in production!

debug =

false

二、修改資料庫開發過程中,一直用的sqlite資料庫,需要改為生產環境的mysql資料庫。

修改 settings.py :

#databases = 

#}databases =

}

配置的 mysql連線的 使用者名稱、密碼、資料庫名、資料庫服務主機名、埠都要和自己的環境匹配。

三、新增 linux 啟動shell指令碼

生產環境,我們使用 gunicorn 作為 django的wsgi前端,首先在專案同名目錄表下建立乙個 gunicorn啟動配置檔案 gunicorn_conf.py ,內容如下:

# gunicorn/django  服務監聽位址、埠

bind =

'127.0.0.1:8080'

# gunicorn worker 程序個數,建議為: cpu核心個數 * 2 + 1

workers =

3# gunicorn worker 型別, 使用非同步的event型別io效率比較高

worker_class =

"gevent"

# 日誌檔案路徑

errorlog =

"/home/byhy/gunicorn.log"

loglevel =

"info"

import sys,os

cwd = os.getcwd(

)

#!/bin/bash

dir="$( cd "$( dirname "$0" )" && pwd )"

echo $dir

cd $dir

# ulimit -n 50000

nohup gunicorn --config=bysms/gunicorn_conf.py bysms.wsgi &> /dev/null &

version = '1.5'

然後把整個django後端的**打包,包名為 bysms_back_v1.5.zi

Linux部署Node服務 2 部署過程

在已經有前端專案的前提下,走部署這一步 即 最後上線 將網域名稱分為多個二級網域名稱 網域名稱備案 國內網域名稱都需要備案使用,雖然國外網域名稱不用備案,但功能受限或不能上線,所以建議使用國內網域名稱並備案 在自己的電腦 開發主機 上通過ssh來連線上伺服器 通過遠端命令來控制遠端伺服器,配置nod...

linux8 4 部署 nginx服務

1 安裝gcc yum install gcc c 2 安裝pcre pcre devel nginx的rewrite模組和http核心模組會使用到pcre正規表示式語法。這裡需要安裝兩個安裝包pcre和pcre devel。第乙個安裝包提供編譯版本的庫,而第二個提供開發階段的標頭檔案和編譯專案的源...

win7部署專案到Linux伺服器

加入以下 tomcat路徑要配置自己實際的tomcat安裝目錄 first tomcat catalina base usr local tomcat catalina home usr local tomcat tomcat home usr local tomcat export catalin...