[CentOS Python系列] 六.阿里雲搭建Django網站詳解

Eastmount發表於2018-03-13

本篇文章主要介紹講述部署阿里雲伺服器Django網站環境,並通過IP地址訪問網頁的過程。寫程式碼過程中往往第一步需要解決的就是配置開發環境,對於新手來說,這是非常頭疼的事情,而當配置好之後或者對於老手來說,我們才能去實現理想的功能。基礎性文章,希望對您有所幫助,同時文章中存在錯誤或不足之處,還請海涵~
同時推薦前面作者另外三個Python系列文章。


從2014年開始,作者主要寫了三個Python系列文章,分別是基礎知識、網路爬蟲和資料分析。

這裡寫圖片描述 這裡寫圖片描述 這裡寫圖片描述

系列文章:
[CentOS Python系列] 一.阿里雲伺服器安裝部署及第一個Python爬蟲程式碼實現
[CentOS Python系列] 二.pscp上傳下載伺服器檔案及phantomjs安裝詳解
[CentOS Python系列] 三.阿里雲MySQL資料庫開啟配置及SQL語句基礎知識
[CentOS Python系列] 四.阿里雲伺服器CentOS連線遠端MySQL資料庫及pymsql
[CentOS Python系列] 五.阿里雲部署web環境及通過IP地址訪問伺服器網頁


一. 建立第一個Django網站


首先開啟Putty軟體,填寫遠端IP地址“39.107.105.166”,然後root使用者登入,如下圖所示。

 

輸入"pip list"指令可以看到已經安裝的Django 1.10.6版本,如果您的系統沒有安裝,則使用pip安裝。



第一步 建立Django專案Yangxz

命令:django-admin.py startproject Yangxz
建立Yangxz網站工程,同時使用ls檢視工程中所包括的內容,如下圖所示。

參考:[python網站開發] 一.Django入門知識及建立第一個網站




第二步 啟動專案服務
命令:python manage.py runserver 8090
開啟8090埠號,但是報錯如下圖所示,它提示我們還有配置沒有完成,需要我們再配置一下。

[root@iZ2ze9134z8zlqupc9t6mzZ Yangxz]# ls
manage.py  Yangxz
[root@iZ2ze9134z8zlqupc9t6mzZ Yangxz]# python manage.py runserver 8090
Performing system checks...

System check identified no issues (0 silenced).

You have 13 unapplied migration(s). Your project may not work properly until you apply 
the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

March 13, 2018 - 07:56:34
Django version 1.10.6, using settings 'Yangxz.settings'
Starting development server at http://127.0.0.1:8090/
Quit the server with CONTROL-C.

第三步 解決上述錯誤
命令:python manage.py migrate
migrate可以讓我們在修改Model後可以在不影響現有資料的前提下重建表結構。



這時你會發現在上一層的hello目錄下面多了一個檔案dg.sqlite3,此時再呼叫“python manage.py runserver 8090”命令開啟8090埠則成功,如下圖所示。


此時,我們通過“http://39.107.105.166:8090/”訪問網站卻無法訪問,如下圖所示。





二. 配置服務埠號


接下來在CentOS伺服器端開通埠號8080,步驟如下:
1.vi /etc/sysconfig/iptables

2.輸入字元“i”,進入編輯模式(Insert)

3.加入如下程式碼,核心: -I INPUT -m state --state NEW -m tcp -p tcp --dport 8090 -j ACCEPT

#Firewall configuration written by system-config-firewall
#Manual customization of this file is not recommanded.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9090 -j ACCEPT
-I INPUT -m state --state NEW -m tcp -p tcp --dport 8090 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT


3.輸入“:wq!”儲存並退出

4.重啟防火牆:service iptables restart





注意,開放的埠一定要新增到 REJECT 之前。同時,有的教程會讓你臨時關閉防火牆(如果不關閉,則只能本機訪問apache服務),service iptables stop,但作者更推薦重啟防火牆即可。




三. 配置阿里雲埠號


如果您還是無法訪問如下圖所示,則需要設定阿里雲的安全組規則,而網上更多的資料忽略了該步驟。下面進行簡單敘述:




第一步:開啟阿里雲伺服器管理控制檯頁面,點選“控制檯”按鈕





第二步:在彈出的頁面中,選擇“雲伺服器ECS”,然後點選我們執行中的伺服器




第三步:在彈出如下介面中點選“更多”,選擇低端的“安全組配置”




第四步:在“本例項安全組”介面選擇“配置規則”。




第五步:點選“新增安全組規則”。




第六步:在“新增安全組規則”中選擇自定義TCP協議,埠號為8090埠,授權物件為“0.0.0.0/0”,表示允許任意公網IP登入。



設定成功如下圖所示:





第七步:輸入命令“python manage.py runserver 0.0.0.0:8090 &”,最後的 & 符號表示在後臺執行該程式。這裡的IP地址如果用公網IP會執行不了,而用0.0.0.0則外網和127.0.0.1都能訪問。

重點命令:python manage.py runserver 0.0.0.0:8090 &
而此時會報錯如下所示,讓我們修改Yangxz.settings檔案。



第八步:修改Yangxz.settings.py檔案,在 ALLOWED_HOSTS=['*'] 中增加 *。
命令:vim settings.py



第九步:最後再次輸入命令“python manage.py runserver 0.0.0.0:8090 &”安裝服務。


此時我們訪問地址“http://39.107.105.166:8090/”能成功訪問,表示我們的Django安裝成




四. 修改Django網站原始碼


Django網站目錄如下:

|-- Yangxz
|   |-- __init__.py
|   |-- settings.py
|   |-- urls.py
|   `-- wsgi.py
|
`-- db.sqlite3
`-- manage.py

說明如下:
  • Yangxz: 專案的容器。
  • manage.py: Django管理主程式。一個實用的命令列工具,可讓你以各種方式與該 Django 專案進行互動。
  • __init__.py: 空檔案。告訴Python該目錄是一個Python包。
  • settings.py: 主配置檔案。該Django專案的設定/配置。
  • urls.py: URL路由檔案。Django專案的URL宣告,一份由Django驅動的網站"目錄"。
  • wsgi.py: 網路通訊介面。一個WSGI相容的Web伺服器的入口,以便執行你的專案。


第一步 建立檢視views.py檔案
在Yangxz目錄下建立一個views.py檔案,用於書寫業務處理邏輯。
命令:touch views.py
          vim views.py

#-*- coding:utf-8 -*-
from django.http import HttpResponse
 
def hello(request):
    return HttpResponse("Hello CSDN, My name is Eastmount!")

自定義hello方法,引數request固定的,用於返回HttpResponse。



第二步 配置URL
修改urls.py檔案內容,將訪問的內容改為views.py檔案中的hello函式。
命令:vim urls.py

from django.conf.urls import url
from django.contrib import admin
from Yangxz.views import *

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'yangxz/', hello)
]
程式碼如下所示:


第三步 網站展示
程式碼需要匯入views檔案內容,才能引用hello方法。views.py檢視檔案在編譯後會產生對應的views.pyc檔案。
然後啟動Django伺服器,在瀏覽器中訪問即可,如下圖所示:


如果沒有該資源也不會報錯“無法訪問”,而是提示無法找到該資源,如下所示。



最後希望這篇文章對您有所幫助,在配置Django時需要注意以下幾個常見錯誤:
    1.需要呼叫 "vi /etc/sysconfig/iptables" 增加服務埠號;
    2.需要在阿里雲管理安全組中增加8090埠,如果未配置會提示無法訪問;
    3.通過“python manage.py runserver 0.0.0.0:8090 &”開啟服務埠,注意&符號;
    4.配置py檔案時,需要先匯入再使用,如“from Yangxz.views import *”;
    5.注意在Yangxz.settings.py檔案中修改程式碼 "ALLOWED_HOSTS=['*']",增加 *;

    6.最後訪問的時候注意資源及檔名是否正確即可。


希望文章對你有所幫,如果文章中存在不足或錯誤的地方,還請海涵~
(By:Eastmount 2018-03-13 下午6點  http://blog.csdn.net/eastmount/ )



相關文章