2016-06-11 47 views
0

我在Django中構建了一個網站,但我想將它作爲「HTTPS」(通過端口443加密)提供。通過HTTPS服務Django站點

我已經有了證書,但是如何配置Django來使用它?它可能真的是Django不支持這個開箱即用,如果是的話,我應該如何去作爲HTTPS服務的網站?

服務器是Ubuntu 14.04

+3

這與Django無關。您必須將您的Web服務器配置爲通過HTTPS提供服務。 – Selcuk

+0

是w Selcuk。不要將Django的便捷開發服務器與生產預期的Web服務器相混淆。舉例來說,nginx就可以做到這一點,並且有很多關於https的指南。希望擁有https的開發者的一個明顯有效的原因可能是更密切地匹配產品。然而,nginx-django https雖然簡單,但僅僅是不同而已,同時也是透明的,而不是讓麻煩值得,恕我直言。 –

回答

5

它與Django無關,但它實際上被支持。請按照下列步驟操作:

1.獲得證書 使用letsencrypt,因爲它是免費的!

2.更新資料庫和安裝工具 在終端輸入以下命令:

sudo apt-get install git 

sudo apt-get update 

,如果你不具備的git已經通過這個命令進行安裝3.設置,

  1. 目錄更改爲Django項目目錄中cd

    cd django_project 
    
  2. 運行這些命令:

    git clone https //github.com/letsencrypt/letsencrypt 
    

    然後

    cd letsencrypt 
    
    ./letsencrypt-auto --help 
    

如果你在這裏,它意味着一切工作正常!因此進入下一個步驟:

service nginx stop 

(如果使用其他Web服務器試圖阻止他們)

使用您的域名替換example.com:

./letsencrypt-auto certonly --standalone -d example.com 

sudo nano /etc/nginx/sites-available/django 

編輯文件一樣這樣的:

server { 
#listen 80 default_server; 
#listen [::]:80 default_server ipv6only=on; 
listen 443 ssl; 
server_name example.com; 
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; 
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; 

server { 
listen 80; 
server_name example.com; 
return 301 https://$host$request_uri; 
} 

現在只需重新啓動服務器即可。

+0

@Stuffe如果我的回答很有用,請檢查它。 – Uncle

+0

感謝您花時間回覆。其實我已經有了一個證書(letsencrypt)。我沒有在我的服務器上安裝nginx,但是看看它現在是什麼。 – Stuffe

+0

好吧,你會得到勾號,查看nginx後找出並不難。 – Stuffe