新版本Django在Windows和Linux下的部署
伴隨著人工智慧和深度學習的火熱發展,Python也成為了一門非常熱門的語言。我們可以看到熱門的深度學習框架都提供Python的介面,有些甚至只有Python的介面,這一定程度上推動了Python的普及。當然,在我們完成模型的訓練之後,我們總是要搭建一個演示的平臺,要麼開放給使用者使用,要麼是內部進行測試。
雖然說Python是著名的膠水語言,可以和很多語言和框架進行互操作,但是要是能直接使用Python編寫的框架進行伺服器的部署的話,則可以簡化程式的編寫過程。Python下最著名的網站框架就是Django了,因此今天就介紹下新版本Django的部署方法,主要以Windows和Linux為例。那為何要寫這篇呢?因為Django這幾年也變化了很多,然而網上有很多陳舊的部署教程,會對我們的部署過程進行干擾,所以我覺得有這個必要好給你們傳授下一些部署的經驗。當然,部署前請用python manage.py runserver
我們先看看Windows下怎麼進行Django的部署,我藉助的是Azure中的Django模板中所使用wfastcgi庫以及微軟自己的伺服器平臺IIS。過程如下:
安裝IIS,請務必勾選伺服器技術中的CGI。
安裝wfastcgi
pip install wfastcgi
執行指令,獲得FastCGI的Handler引數。
wfastcgi-enable
會獲得一串類似c:\anaconda2\python.exe|c:\anaconda2\lib\site-packages\wfastcgi.pyc的字串,其實就是python的路徑和handler的路徑用|進行連線而成的字串,記錄下來,後面會用到。
在網站根目錄下新建一個web.config,填入以下內容
<configuration> <system.webServer> <handlers> <add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Python36\python.exe|C:\Python36\Lib\site-packages\wfastcgi.py"
上面一段是樣例的web.config檔案,摘自wfastcgi的官方介紹頁面,我們需要做一些更改,首先scriptProcessor改為上面我們記錄的那段字串,然後是一些必要的引數,像PYTHONPATH改為網站的根目錄的路徑,最後就是一些可選的引數,像WSGI_LOG是log檔案的路徑,還有DJANGO_SETTINGS_MODULE需要改為自己專案的名稱,像APPINSIGHTS_INSTRUMENTATIONKEY,WSGI_PTVSD_SECRET,WSGI_PTVSD_ADDRESS這些都是Azure上的引數,我們可以將其刪除。
在IIS新建一個站點,指向網站的根目錄,注意埠不要重複。
開啟瀏覽器進行訪問,不出意外已經就OK了。
- 如果還是有問題,一般是許可權問題,檢查下Anaconda的目錄對於IIS_IUSRS是否有可讀、可執行、列出目錄許可權。
上面的部署過程在IIS 6及以上都測試通過了,基本沒啥大問題。而且通過上面設定的WSGI_RESTART_FILE_REGEX引數,可以實現自動重啟,簡直不要太爽。
之後是在Linux下的部署,我原本想著會比Windows簡單的多,但是自從體驗過了DigitalOcean的一鍵部署的映象後,我感覺我還是too simple了。提醒大家千萬別用DO中Ubuntu16.04的Django的一鍵映象,不知道為什麼突然就掛了,而且一上來還不能用域名訪問。Ubuntu14.04的Django的一鍵映象還行,就是Django版本太老了,一升級又掛了。所以我還是從頭開始吧,這次主要是使用nginx和uwsgi來進行部署的,過程如下:
遵照nginx官方教程進行nginx的安裝,一般是下載證書,並新增到本機,重新整理庫安裝軟體的快取,再進行安裝這樣一個流程。此處以Ubuntu/Debian為例,在bash中敲入:
wget http://nginx.org/keys/nginx_signing.key sudo apt-key add nginx_signing.key
再修改/etc/apt/sources.list,新增以下兩行
deb http://nginx.org/packages/system/ codename nginx deb-src http://nginx.org/packages/system/ codename nginx
system按情況替換為debian或ubuntu,codename可通過
lsb_release -a
獲得,然後繼續執行apt-get update apt-get install nginx
確保Python及pip已經安裝,可以通過以下指令安裝。
apt-get install python-dev python-pip
安裝uwsgi
pip install uwsgi
像上面一樣,在根目錄下面新建一個配置檔案uwsgi.ini,填入以下內容。
[uwsgi] socket = 127.0.0.1:8001 chdir = /path/to/your/project/ wsgi-file = project_name/wsgi.py master = true processes = 1 vacuum = true optimize = 2 stats = 127.0.0.1:9191 daemonize = /var/log/uwsgi/myapp.log
chdir修改為專案的根目錄,project_name修改為自己的專案名稱,daemonize則是日誌檔案的路徑,socket的埠可以靈活進行調整。
執行命令將uwsgi伺服器跑起來
uwsgi uwsgi.ini
按照nginx的教程,我們修改nginx的配置檔案,新版本的路徑一般在/etc/nginx/conf.d/default.conf。
upstream django { server 127.0.0.1:8001; } server { listen 80; server_name myapp.example.com; root /var/www/myapp/html; location / { index index.html; } location /static/ { alias /var/django/projects/myapp/static/; } location /main { include uwsgi_params; uwsgi_pass django; uwsgi_param Host $host; uwsgi_param X-Real-IP $remote_addr; uwsgi_param X-Forwarded-For $proxy_add_x_forwarded_for; uwsgi_param X-Forwarded-Proto $http_x_forwarded_proto; } }
請保證上游django路由的埠與之前socket設定的一致,static目錄和其他配置等可以靈活進行調整。
- 如果你現在直接跑的話,可以發現網站可以正常跑,但是靜態檔案卻是有問題的。這還是許可權問題,因為nginx預設不是用root使用者跑的,他沒有訪問靜態目錄的許可權。這有兩種解決方法,一個是給nginx使用者靜態目錄的訪問許可權,還有一種就是讓nginx以root使用者來跑。以第二種為例,那就是將/etc/nginx/nginx.conf中的
user nginx
修改為user root
,再用service nginx restart
重啟服務即可。 - 如果對專案做了更改,他並不會自動生效,需要先將之前的uwsgi程序kill掉,再次執行步驟5即可。
以上,就是文章的全部內容啦,如果感覺還意猶未盡的話,可以給我的Github 主頁 加個follow之類的(滑稽),以後說不定還會再分享一些相關的經驗。
相關推薦
新版本Django在Windows和Linux下的部署
伴隨著人工智慧和深度學習的火熱發展,Python也成為了一門非常熱門的語言。我們可以看到熱門的深度學習框架都提供Python的介面,有些甚至只有Python的介面,這一定程度上推動了Python的普及。當然,在我們完成模型的訓練之後,我們總是要搭建一個演示的
SpringBoot熱部署和linux下通過vim修改jar裡面的檔案
解決問題: 1、在專案測試或者部署後,經常會遇到需要更改一些配置檔案或者java類,這時使用SpringBoot熱部署可以快速的修改後重啟,方便開發測試; 2、在專案上線後,會遇到一些需要修改的地方,使用linux下的vim工具可以快速的修改已部署好的專案。 一、引入熱部署依賴 &l
mac和linux下使用Docker,部署SpringBoot專案到docker
主要是看一下如何在linux及mac上安裝docker,建立docker映象,部署SpringBoot專案到docker,並藉助於DaoCloud進行docker映象下載加速等。我用的電腦是mac,本身並不支援docker,需要安裝Docker ToolBox才能使用Dock
關於Linux和Windows下部署mysql.data.dll的註冊問題
mysql ado.net connector下載地址: http://dev.mysql.com/downloads/connector/net/ 選擇版本: Generally Available Releases(1)是釋出版(bug什麼的較少的版本吧),而Development Releas
linux下部署和執行kettle——(配置檔案、動態獲取、後臺執行)
一.部署準備 1.1 java安裝(略) 1.2 JDK配置 1.命令列鍵入“cd /etc”進入etc目錄 2.命令列鍵入“vi profile”開啟profile檔案 3.敲擊鍵盤ctrl+F到檔案末尾 4.在末尾處,即第一個~的地方,敲擊鍵盤
windows和Linux下定時啟動或關閉服務
ref sta article start 處理程序 window pin blog win http://blog.csdn.net/clare504/article/details/17410643 1、Windows下的定時啟動程序可以采用系統的計劃和任務,定時
Linux下部署grafana + influxdb + telegraf , 構建性能監控平臺
grafana 監控 Grafana+telegraf+InfluxDB,采用客戶端->服務端存儲->WEB界面顯示的工作模式,使用UTP傳輸數據,並且支持自定義圖表,有良好的擴展性,重要的是Grafana頁面展示比較美觀,更關鍵的是InfluxDB提供了Python的API,Influx
linux下部署一個JavaEE項目的簡單步驟
per cat source div read manage 沒有 scp git 部署項目的前提是準備好環境,包括:Java運行環境(JDK),Tomcat,Mysql數據庫 1.首先將東西上傳到服務器,我是在windows安裝ssh工具(下載安裝git即可http:
linux下部署程序,tomcat啟動正常,但網頁無法訪問
tom 環境部署 firewalld png 開啟 但是 system emctl 圖片 問題背景:測試環境部署程序,之前是可以的。但是在安裝rabbitmq的時候,再來打開網頁的時候就出現一直轉圈圈,網頁無法打開。 經過檢查發現是由於開啟了防火墻。 系統是cento
windows和linux下的抓包工具
gpo tcpdump linu window clas dst post blog windows Linux 抓包工具 tcpdump 示例 tcpdump -i bond0 host 10.70.11.182 -w ./sms.cap windows抓包
Linux下部署Samba服務環境的操作記錄
command 解決辦法如下 some var sco most get -c can 關於Linux和Windows系統之間的文件傳輸,很多人選擇使用FTP,相對較安全,但是有時還是會出現一些問題,比如上傳文件時,文件名莫名出現亂碼,文件大小改變等問題。相比較來說,使
linux 下部署單片 elasticsearch 服務
es本文是部署單機elasticsearch 服務。是通過yum進行安裝。elasticsearch 需要java環境。另一篇文章有配置java8環境說明。1: 首先下載 gpg簽名文件:rpm --import https://packages.elastic.co/GPG-KEY-elasticsearc
安裝Python-3.7和linux下網速測試工具
網速測試工具 Python-3.7 wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0b4.tar.xz tar -xvJf Python-3.7.0b4.tar.xz cd Python-3.7.0b4/ ./configure --p
Caffe使用新版本CUDA和CuDNN
版本 time ted TP CA sigmoid 文件替換 caffe 腳本 因為一些原因還是需要使用別人基於Caffe的代碼,但是代碼比較老,默認不支持高版本的cuda或者cudnn 怎麽辦呢?基本上就是把最新官方Caffe-BVLC的幾個關鍵文件拿過來替換即可。 腳本
Linux 下部署Django項目
重啟nginx system files 退出 box 協議類型 nec ret views Linux 下部署Django項目 說明:本文所使用的環境為CentOS 6+Python2.7+Django1.11 安裝Django、Nginx和uWSGI 1
Linux下部署Tomcat ,然後部署WS信用盤平臺搭建web項目
bbs star 項目 shu pro .com .sh com 壓縮包 解壓tomcat服務器壓縮包 配置環境變量 tomcat服務器運行時是需要JDK支持的,所以必須配置好JDK用到的那些環境變量 編輯/etc下的profile文件,加上如下內容: 修改tomcat
xshell遠程連接服務器和Linux下磁盤分區方案
telnet 配置文件 但是 type rom pre 虛擬 分區 引導 一,設置xshell進入xshell,選擇文件,打開,新建。改會話名稱,並改主意主機ip;二,遠程連接服務器故障排查1,ip地址,也就是服務器的位置,地址;1)公網ip:指所有人都可以訪問的ip,但是
在windows和Linux下安裝nodejs
兩個文件 tro window 顯示 name 測試 分享 如圖所示 運行 在windows下安裝nodejs 1.首先下載nodejs安裝包, https://nodejs.org/en/download/ 點擊下載相應的版本 然後將文件夾解壓到安裝目錄(任
linux下部署Nginx以及相關簡介
配置 quest 上傳文件 reload 就是 conn 動靜 config html 1、安裝工具包 yum install -y wget 下載工具 yum install -y vim-enhanced vim編輯器 yum install -y ma
python在windows和linux下的安裝和配置
str net .net cat ria 技術 連接 top 成功 一、windows下安裝python3.6 安裝編輯器:Ecplise+pydev插件 Eclipse是寫JAVA的IDE, 這樣就可以通用了,學習代價小。 學會了Eclipse, 以後寫Pytho