承接上一節,給ubuntu上的django更新一下:
./manage.py migrate
好了,我連公網ip都有了,我可不想每次都以ip來訪問我的網站,那怎麼弄一個域名呢?
(一)申請域名
不必研來研去了,直接在阿里雲提供的服務中購買域名吧,但在下單前,你先要完成域名的信息模板的審覈,意思是,你要填完你的真實信息(包括上傳你的證件),通過審覈後,才能繼續域名的購買。域名信息模板在這個地方創建與管理:https://dc.console.aliyun.com/next/index?#/info-template/InfoTemplate
填寫信息,然後郵箱驗證、實名認證,請等待。
之後,在這個地方:https://mi.aliyun.com/ ,找到你想要的域名,下單掏錢。簡單來說,以上兩個操作的入口都在這裏:
域名到手而且通過實名驗證後,可以看到這樣的信息:
那麼,問題來了,怎麼把這個域名跟服務器的ip綁定起來呢? 按下面的截圖一步步操作即可:
然後,就可以通過域名來訪問django了,如截圖:
然後,你就會提問:還要端口?我輸入網址從來都不寫端口的!
(二)開放端口
是的,一般瀏覽器以域名訪問都不需要你輸入端口,因爲瀏覽器自己加了端口,而且一般是默認的端口,比如80,這些端口是web服務器所特有的,可以固化下來,不需要你輸入。但我這裏還要輸入,爲什麼?很明顯是因爲我的django用的端口不是默認的端口,而是3389,這麼一個無厘頭的端口,那怎麼解決?
很自然,讓django使用默認的端口唄,不要用3389了。可以,那前提就是,在阿里雲管理頁面,先添加默認的端口,如下面的截圖操作:
這樣,80端口已經可以使用了,重新啓動django:
py manage.py runserver 0.0.0.0:80
如果你發現80給佔用了,一般都是因爲nginx啓動而且佔用了80,那可以先停掉nginx:
nginx -s stop 或: /etc/init.d/nginx stop
./manage.py runserver 0.0.0.0:80
知識點,發現端口給佔用了,如果想知道是誰,可以使用命令lsof -i,比如看誰用了8000端口:
lsof -i:8000
然後,真的可以只用域名來訪問網站了,如截圖:
可是,你多操作幾次,或者在微信上分享 www.freep2p.cn 給別人時,會發現,這個網站給監控到了,並且給出這樣的提示:
那是因爲這個網站還沒有備案。
(三)網站備案
轉到備案問題的處理,在 https://beian.aliyun.com/ 入手,如截圖:
然後就是根據提示認真寫好各項信息,其中,產品類型選擇ECS(我的情況),並使用阿里雲app進行人臉記錄並上傳證件拍照。最終,備案通過後(我的是6天后通過),可以看到這樣的信息:
這時你dig一下網站,也能看到ip(備案前是查不到的):
dig +short www.freep2p.cn
現在,瀏覽器請求我這個網站的完整地址是: http://www.freep2p.cn ,你可能已經想到,不帶https的鏈接會被提示不安全的。那麼,怎麼變成https呢?
(四)https證書的申請與使用
申請一個https的證書即ssl證書即可,如下圖操作:
https://www.aliyun.com/product/cas?spm=5176.2020520163.cas.2.571656a7EIdyRc
審覈通過後,把證書下載並保存好。解壓證書zip,可以兩個文件,一個是xx.pem,一個是xx.key。
然後就是使用證書的環節了,把這兩個文件拷貝到服務器的某個目錄(比如用ssh的話,scp到~/),然後找到ningx的安裝目錄(/etc/nginx/),在裏面創建cert目錄,再把pem與key移至cert目錄,比如我的兩個文件最後是這樣的:
在修改nignx配置之前,先要解決一個問題,nginx對於ssl要使用443端口,你要保證服務器對外開放了這個端口,比如按上面的介紹,在“安全組”開放443端口。
接着就是修改nginx的配置,讓它使用證書了,爲了驗證證書是不是可行,先寫一個最簡單的配置吧:
server {
server_name www.freep2p.cn;
root /root/html;
listen 443;
ssl on;
ssl_certificate cert/2762984_freep2p.cn.pem;
ssl_certificate_key cert/2762984_freep2p.cn.key;
}
下圖對配置的各項進行了解釋:
網站根目錄是/root/html,創建這個目錄,然後再創建一個index.html首頁,index.html裏面寫一句即可:
<h2>welcome to freep2p.cn
然後service nginx restart一下,再用瀏覽器請求: https://www.free2p2.cn ,可以看到返回內容了:
那如果想要之前的http的請求也切換回至https,怎麼辦呢? 加一個轉換唄:
server {
listen 80;
server_name freep2p.cn;
rewrite ^(.*)$ https://$host$1 permanent;
}
至此,你已經可以用通過url來訪問我的網站了。
總結一下,本文介紹了怎麼獲取域名與綁定ip,也講了怎麼備案網站、怎麼使用https證書,這些都是網站開發的基本東西。 接下來就是豐富網站,並且加入web服務器的問題。