寫Django項目一段時間了,但是因為沒有怎么操作過linux,所以自己沒有嘗試過上線,現在是時候Get 部署技能了!
首先介紹一下技術棧:
Centos7、python3、Django、uwsgi、Nginx、FileZilla
具體如何在安裝Centos7,python3、FileZilla這里就不介紹了,跟著網上的教程,基本不會出錯。
接下來就是部署uWSGI服務器:
uWSGI是一個Web服務器,它實現WSGI、uWSGI和HTTP等網絡協議,而且Nginx的HttpUwsgiModule能與uWSGI服務器進行交互。WSGI是一種Web服務器網關接口,它是web服務器(如Nginx服務器)與Web應用(如Django框架實現的應用)通信的一種規范。
在部署uWSGI服務器之前,需要在Python3中安裝相應的模塊,直接用pip3安裝就可以了:
這里需要注意一下,由于Centos7系統默認安裝了python2,所以如果直接通過uwsgi指令啟動的話,則會調用python2的uwsgi,從而導致報錯,所以這里先要為python3對應的uwsgi創建軟連接,具體操作如下。
? ? ? ?1. 首先查看uwsgi的安裝路徑:
? ? ? ?2.創建軟鏈接:
此時再執行uwsgi就是啟動的python3所安裝的uwsgi
下面是對上圖指令所使用的參數的解釋:
--http 是使用uWSGI自帶的http協議(這種情況下不需要nginx可以直接訪問)。當和nginx一起使用時,指定socket或http-socket即可。
--chdir 是指Django項目所在的目錄,要使用絕對路徑。
--wsgi-file project/wsgi.py 指的是WSGI規范文件所在的位置,這個文件在創建項目時自動生成。project表示項目名稱,在我的實例中為cloudms。
指令運行后,可以在本地的瀏覽器中輸入虛擬系統的IP地址+8080端口查看測試結果,在瀏覽器上訪問虛擬機ip(如http://192.168.88.120:8080/),我們可以看到cloudms的首頁信息。至于怎么看自己虛擬機的ip,ifconfig就可以啦。
特別提醒:如果此時你訪問瀏覽器,彈出:
不要慌,在自己的項目文件中的setting里將ALLOWED_HOSTS = [ ] 改成 ALLOWED_HOSTS = ["*"]即可。然后重新上傳到Centos7。
uWSGI測試成功之后,下一步就是為項目cloudms編寫配置文件。當項目運行上線時,只需執行uWSGI配置文件即可運行項目cloudms的uWSGI服務器。在項目cloudms的根目錄下創建cloudms_uwsgi.ini配置文件,文件代碼如下:
然后輸入uwsgi(uwsgi --ini cloudms_uwsgi.ini)指令,通過配置文件啟動uWSGI服務器,如下圖所示:
注意:由于配置屬性socket = :8080與只能用于UWSGI服務器與Nginx服務器之間的通信,所以不能通過訪問瀏覽器檢測是否成功。
最后安裝Nginx部署項目
不多說看圖,不會出錯。
下一步就是設置Nginx的配置文件,經Nginx服務器與uWSGI服務器實現通信連接。將虛擬系統Centos的路徑切換到/etc/nginx/conf.d,在當前路徑中創建并編輯cloudms.conf配置文件,代碼如下:
注意:部分地方改成自己項目的路徑,靈活一點哈!
好啦!部署上線完成啦!快去瀏覽器訪問虛擬機ip(如http://192.168.88.120:8090/)看看(這里8090是由Nginx的配置文件cloudms.conf設置的)