Django(part52)--项目部署
學習筆記,僅供參考
文章目錄
- 項目部署
- 項目部署的幾個步驟
- 安裝同版本的數據庫(略)
- django項目遷移
- 安裝python
- 安裝相同版本的包
- 將當前項目源代碼復制到運程主機上(scp 命令)
- ssh遠程登錄云主機
- uWSGI 網關接口配置
- WSGI規范
- uWSGI網關接口配置
- 安裝uWSGI
- 配置uWSGI(這里我用Windows演示)
- uWSGI的運行管理(Linux)
- nginx 反射代理配置
- nginx安裝
- nginx配置(Linux)
- 修改uWSGI配置
- 重啟uWSGI服務(Linux)
- nginx的操作(Linux)
- nginx 配置靜態文件路徑(Linux)
項目部署
我們在軟件開發完畢后,會把開發版的軟件安裝到服務器上長期運行.
項目部署的幾個步驟
安裝同版本的數據庫(略)
django項目遷移
安裝python
- Linux
安裝相同版本的包
- windows
導出當前模塊數據包的信息:
pip freeze > requirements.txt導入到另一臺新主機:
pip install -r requirements.txt- Linux
導出當前模塊數據包的信息:
pip3 freeze > package_list.txt導入到另一臺新主機:
pip3 install -r package_list.txt將當前項目源代碼復制到運程主機上(scp 命令)
- Linux
ssh遠程登錄云主機
ssh root@darkgoat.cnuWSGI 網關接口配置
WSGI規范
- WSGI (Web Server Gateway Interface)是Python應用程序或框架和Web服務器之間的一種接口規范(接口就是函數或對象);
- WSGI 實現了WSGI協議、http等協議。
uWSGI網關接口配置
python manage.py runserver 通常只在開發和測試環境中使用,當開發結束后,完善的項目代碼需要在一個高效穩定的環境中運行,這時可以使用uWSGI.
uWSGI是WSGI規范的一種實現方式,它可以讓Django、Flask等開發的web站點運行在其中。
安裝uWSGI
- Linux
- Windows
在Windows下pip會報出AttributeError: module 'os' has no attribute 'uname’錯誤,這里是解決辦法Windows系統安裝uWSGI報錯
配置uWSGI(這里我用Windows演示)
在我們的項目文件夾下創建一個uwsgi.ini 文件,在這個文件中敲入如下代碼:
[uwsgi] #套接字方式的 IP地址:端口號 socket=127.0.0.1:8000#Http通信方式的 IP地址:端口號 http=127.0.0.1:8000#當前項目工作目錄(絕對路徑) chdir=F:/MyStudio/PythonStudio/goatbishop.project01/Django/mywebsite_bookstore#項目中wsgi.py文件的目錄,相對路徑,相對于當前工作目錄 wsgi-file=mywebsite_bookstore/wsgi.py#進程個數 process=4#每個進程的線程個數 threads=2#服務的pid記錄文件 pidfile=uwsgi.pid#服務的目志文件位置(在代碼中用print打印的信息) daemonize=uwsgi.log配置完uwsgi.ini,我們再配置settings.py,將DEBUG改為False,并將ALLOWED_HOSTS列表中增加'*':
DEBUG = False ALLOWED_HOSTS = ['*'] #表示允許所有人訪問網站 #若列表中只填入'192.168.1.*'則表示只有這個網段才能訪問咱們的網站 #注意這個*有點正則的意思進行上面一系列配置之后,我們再用python manage.py runserver開啟服務,并向網站發起請求(故意填一個無法訪問的url),就看不到調試信息了:
如果我們沒有對settings.py進行配置,也就是處于開發調試階段,那么我們向http://127.0.0.1:8000/asdfg發出請求,我們是會看到如下頁面的:
uWSGI的運行管理(Linux)
- Linux
啟動uwsgi:
cd 項目文件夾 sudo uwsgi --ini 項目文件夾/uwsgi.ini停止uwsgi:
cd 項目文件夾 sudo uwsgi --stop uwsgi.pid- Windows
啟動uwsgi:
cd 項目文件夾 uwsgi --ini 項目文件夾/uwsgi.ini停止uwsgi:
cd 項目文件夾 uwsgi --stop uwsgi.pid- 注意事項
當uwsgi 啟動后,當前django項目的程序就會變成后臺守護進程,關閉當前終端時,此進程也不會停止。
nginx 反射代理配置
nginx是輕量級的高性能Web服務器,提供了諸如HTTP代理和反向代理、負載均衡、緩存等一系列重要特性,在實踐之中使用廣泛,它是使用C語言編寫,執行效率高
- nginx作用
- 負載均衡, 多臺服務器輪流處理請求
- 反射代理
- 反射代理圖示(nginx服務器可以通過區分路由類型,把路由指向不同的服務器進行處理)
nginx安裝
- Linux
- windows
安裝配置教程:Nginx Windows詳細安裝部署教程
nginx配置(Linux)
現在,我們要修改nginx 的配置文件/etc/nginx/sites-available/default
打開配置文件:
sudo vim /etc/nginx/sites-available/default修改配置文件:
#在server節點下添加新的location項,指向uwsgi的ip與端口 server {...location / {uwsgi_pass 127.0.0.1:8000; # 將/路由,映射到uwsgi的127.0.0.1:8000include /etc/nginx/uwsgi_params; #將所有的參數轉到uwsgi下}... }每次修改完該文件后,我們都需要重啟nginx
重啟nginx:
sudo /etc/init.d/nginx restart修改uWSGI配置
修改項目文件夾/uwsgi.ini下的http通信方式改為socket通信方式:
[uwsgi] # 去掉如下 # http=127.0.0.1:8000 # 改為 socket=127.0.0.1:8000重啟uWSGI服務(Linux)
sudo uwsgi --stop uwsgi.pid sudo uwsgi --ini 項目文件夾/uwsgi.ini
nginx的操作(Linux)
- 啟動 nginx
- sudo /etc/init.d/nginx start
- sudo service nginx restart
- 查看nginx進程
- ps aux | grep nginx
- sudo /etc/init.d/nginx status
- sudo service nginx status
- 停止nginx
- sudo /etc/init.d/nginx stop
- sudo service nginx stop
- 重啟nginx
- sudo /etc/init.d/nginx restart
- sudo service nginx restart
nginx 配置靜態文件路徑(Linux)
對于settings.py中靜態文件的路徑STATICFILES_DIRS,只在調試階段有效,在網站運行模式(DEBUF=False)下無效,這時,我們需要再次進行配置。
在/etc/nginx/sites-available/default文件中,我們進行如下配置:
# file : /etc/nginx/sites-available/defaultserver {...location /static {root 項目文件夾的絕對路徑;# 將/static路由, 映射到本地主機的項目文件夾下(絕對路徑)}... }記得修改完該文件,重啟nginx
總結
以上是生活随笔為你收集整理的Django(part52)--项目部署的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【移动端】手机界面的设计尺寸(中国移动官
- 下一篇: Django(part53)--404模