注意:以下流程經(jīng)過筆者驗(yàn)證,能夠保證順利部署項(xiàng)目。如果你不知道每一步" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營(yíng)銷資訊 > 網(wǎng)站運(yùn)營(yíng) > Django搭建網(wǎng)絡(luò)相冊(cè):部署網(wǎng)站

Django搭建網(wǎng)絡(luò)相冊(cè):部署網(wǎng)站

時(shí)間:2023-05-31 12:54:01 | 來源:網(wǎng)站運(yùn)營(yíng)

時(shí)間:2023-05-31 12:54:01 來源:網(wǎng)站運(yùn)營(yíng)

Django搭建網(wǎng)絡(luò)相冊(cè):部署網(wǎng)站:我們的相冊(cè)雖然還有不完善的地方,但是沒關(guān)系,越早把它部署到互聯(lián)網(wǎng)上,才能越早發(fā)現(xiàn)線上特有的問題,讓產(chǎn)品在迭代中成長(zhǎng)。

注意:以下流程經(jīng)過筆者驗(yàn)證,能夠保證順利部署項(xiàng)目。如果你不知道每一步都是干嘛的,那么請(qǐng)嚴(yán)格按照文章的流程順序操作。

配置服務(wù)器

要架設(shè)網(wǎng)站,首先你要有一臺(tái)連接到互聯(lián)網(wǎng)的服務(wù)器。國(guó)內(nèi)比較出名的云服務(wù)器有阿里云、騰訊云百度云,三家各有優(yōu)劣,大家自行了解比較,并選擇自己適合的購買。

和前章一樣,筆者用的是阿里云全家桶,所以教程會(huì)以阿里云ECS作為例子講解。新用戶通過此阿里云ECS推廣鏈接注冊(cè)有折扣和現(xiàn)金券;學(xué)生有優(yōu)惠服務(wù)器每月9.5元,很劃算。

阿里云服務(wù)器購買頁面變動(dòng)頻繁,如果圖中展示的步驟和你購買時(shí)的不一樣也沒關(guān)系,核心步驟都是差不多,稍微找一下就OK了。
首先進(jìn)入阿里云ECS的購買頁面







圖片字很小,看不清楚的同學(xué)將就一下放大看吧。

挑重點(diǎn)說一下:

點(diǎn)擊下一步,來到網(wǎng)絡(luò)和安全組頁面:







這頁默認(rèn)就行了,公網(wǎng)帶寬選最低的 1M ,初期夠用了。

如果有詢問是否購買公網(wǎng) IP 的選項(xiàng),記得勾上。沒公網(wǎng) IP 就沒辦法連接到互聯(lián)網(wǎng)了。
點(diǎn)擊下一步,到系統(tǒng)配置頁面:







為了后面遠(yuǎn)程連接服務(wù)器更簡(jiǎn)單,這里勾選自定義密碼,也就是輸入用戶/密碼的認(rèn)證方式了。實(shí)際上秘鑰對(duì)的認(rèn)證方式更安全些,以后摸熟了再改回來吧。

點(diǎn)擊下一步,到分組設(shè)置頁面。這個(gè)頁面全部默認(rèn)設(shè)置就好了。點(diǎn)擊下一步,確認(rèn)訂單無誤后,就可以付款啦。

付款成功后,通過控制臺(tái)就可以看到已購買的云服務(wù)器了:







這里有時(shí)候會(huì)有黃字提醒你服務(wù)器的網(wǎng)絡(luò)端口沒開,點(diǎn)擊黃字鏈接進(jìn)入安全組規(guī)則選項(xiàng)卡開通一下:







把 22(遠(yuǎn)程連接端口)、443(HTTPS端口)、80(HTTP端口)都打開,3389端口順便也開了。

這一步很重要,如果不打開后續(xù)會(huì)始終連接不上站點(diǎn)。如果沒有黃字提醒,那就一定要到安全組中確認(rèn)端口已打開。
至此服務(wù)器的購買、配置就完成啦。稍等幾分鐘后等待初始化完成,就可以得到服務(wù)器的公網(wǎng) IP 地址,筆者的是 47.104.227.185 ,后面會(huì)用到。

準(zhǔn)備工作

在正式部署前,還有些準(zhǔn)備工作需要做。

修改后端配置

首先 Django 的配置要更改為線上狀態(tài):

# /album/settings.py...# 修改項(xiàng)。關(guān)閉調(diào)試模式# 關(guān)閉后 django 不再處理靜態(tài)資源# 也不再提供錯(cuò)誤提示頁面DEBUG = False# 修改項(xiàng)。允許所有的IP訪問網(wǎng)絡(luò)服務(wù)ALLOWED_HOSTS = ['*']# 新增項(xiàng)。靜態(tài)文件收集目錄STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static')然后在虛擬環(huán)境中執(zhí)行:

(env)> pip freeze > requirements.txt將后端所有的依賴庫記錄到 requirements.txt 中。

代碼上傳Github

將項(xiàng)目代碼拷貝到云服務(wù)器的方式有幾種。比較方便的是上傳到 Github ,再由 Github 將項(xiàng)目代碼下載到服務(wù)器。因此你需要把項(xiàng)目上傳到 Github。

Github 經(jīng)常會(huì)速度很慢或無法登錄。這時(shí)候你也可以嘗試用國(guó)內(nèi)的 Gitee,或者直接點(diǎn)對(duì)點(diǎn)本地上傳服務(wù)器。
如何上傳這里就不細(xì)講了,請(qǐng)自行學(xué)習(xí) Git 相關(guān)知識(shí),注冊(cè) Github 賬號(hào)等。

需要提醒的是,所有依賴的庫都不需要上傳,比如 env 目錄,它們可以在服務(wù)器中很方便地安裝。

這就是前面生成的 requirements.txt 的作用。
接下來就是正式部署了。

遠(yuǎn)程連接

部署的第一步就是想辦法連接到云服務(wù)器上去,否則一切都免談。鑒于項(xiàng)目是在 Windows 環(huán)境開發(fā)的,推薦用 XShell 來作為遠(yuǎn)程連接的工具。XShell 有學(xué)校及家庭版本,填一下姓名和郵箱就可以免費(fèi)使用了。

XShell 怎么使用就不贅述了,以讀者的聰明才智,稍微查閱一下就明白了。

使用相當(dāng)簡(jiǎn)單,基本就是把主機(jī) IP、端口號(hào)(22)以及登錄驗(yàn)證填好就能連接了。
連接成功后,就能在 XShell 窗口中看到阿里云的歡迎字樣了:

Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-77-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantageWelcome to Alibaba Cloud Elastic Compute Service !root@dusai:~$root@dusai:~$是命令提示符(root 是用戶名,dusai 是主機(jī)名),輸入命令時(shí)不需要你輸入這個(gè)。

本文后面把 root@dusai:字符省略掉,方便大家閱讀。

安裝項(xiàng)目及依賴

接下來的部署指令均在服務(wù)器中執(zhí)行,也就是在 XShell 中操作,別搞混了。

首先更新系統(tǒng)庫:

~$ apt-get update~$ apt-get upgrade部署到正式環(huán)境時(shí),后端服務(wù)器就不能用 Django 自帶的開發(fā)服務(wù)器了(性能低下),而是改用 Nginx + Gunicorn + Django 配合提供網(wǎng)絡(luò)服務(wù):

除此之外,還要確保 Python3 、Git 和 virtualenv 也都正確安裝。

順序執(zhí)行以下指令:

~$ apt-get install nginx~$ apt-get install python3.8~$ apt-get install python3-pip~$ apt-get install git~$ pip3 install virtualenv均成功后,創(chuàng)建并跳轉(zhuǎn)到項(xiàng)目目錄:

~$ mkdir -p /home/sites/album~$ cd /home/sites/album# 進(jìn)入的路徑如下所示/home/sites/album$接下來就可以從 Github 下載項(xiàng)目了:

# 以教程倉庫為例 django-vue-tutorial../album$ git clone https://github.com/stacklens/django-album-tutorial.git這里就以教程的倉庫為例,讀者用自己項(xiàng)目時(shí)一定要注意路徑名稱正確。

如果你是從非公開項(xiàng)目下載,用戶名密碼的認(rèn)證方式 Github 已經(jīng)準(zhǔn)備廢棄了。如遇報(bào)錯(cuò)請(qǐng)以密鑰認(rèn)證的形式下載。
下載好項(xiàng)目后,在同級(jí)路徑創(chuàng)建并進(jìn)入虛擬環(huán)境:

../album$ virtualenv --python=3.8 venv../album$ source venv/bin/activate# 看到 (venv) 開頭就對(duì)了(venv) ../album$進(jìn)入項(xiàng)目目錄,安裝依賴、收集靜態(tài)資源并遷移數(shù)據(jù)庫:

# 這里的 django-album-tutorial 路徑是從 Github 拉取下來的項(xiàng)目路徑# 記得改成你自己的(venv) ../album$ cd django-album-tutorial(venv) ../django-album-tutorial$ pip3 install -r requirements.txt(venv) ../django-album-tutorial$ python3 manage.py collectstatic(venv) ../django-album-tutorial$ python3 manage.py migrate最后啟動(dòng) nginx:

# 為了閱讀方便,后續(xù)命令行均省略 $ 前面的路徑部分(venv) ~$ service nginx start在瀏覽器中訪問你的云服務(wù)器的公網(wǎng) IP ,看看效果:







看到 Nginx 的歡迎頁面則成功一半了。繼續(xù)。

配置nginx

Nginx 歡迎界面這個(gè)默認(rèn)配置顯然是不能用的,所以需要重新寫 Nginx 的配置文件。 /etc/nginx/sites-available 目錄是定義 Nginx 可用配置的地方。輸入指令創(chuàng)建配置文件 myblog 并打開 vim 編輯器

(venv) ~$ vim /etc/nginx/sites-available/album關(guān)于 vim 編輯器如何使用也不多說了,這里只說兩個(gè)最基本的操作:

回到正題,用 vimalbum 文件中寫入:

server { charset utf-8; listen 80; server_name 47.104.227.185; # 改成你的 IP location /static { # 這里的 django-album-tutorial 路徑是從 Github 拉取下來的項(xiàng)目路徑 # 記得改成你自己的 alias /home/sites/album/django-album-tutorial/collected_static; } location /media { # 這里的 django-album-tutorial 路徑是從 Github 拉取下來的項(xiàng)目路徑 # 記得改成你自己的 alias /home/sites/album/django-album-tutorial/media; } location / { proxy_set_header Host $host; proxy_pass http://unix:/tmp/47.104.227.185.socket; # 改成你的 IP }}此配置會(huì)監(jiān)聽 80 端口(通常 http 請(qǐng)求的端口),監(jiān)聽的 IP 地址寫你自己的服務(wù)器公網(wǎng) IP。

配置中有兩個(gè)核心規(guī)則:

如果你已經(jīng)申請(qǐng)好域名了,就把配置中有 IP 的地方都修改為域名,比如:server_name http://www.dusaiphoto.com。
寫好后就退出 vim 編輯器,回到命令行。因?yàn)槲覀儗懙闹皇?Nginx 的可用配置,所以還需要把這個(gè)配置文件鏈接到在用配置上去:

(venv) ~$ ln -s /etc/nginx/sites-available/album /etc/nginx/sites-enabled測(cè)試下 nginx 配置是否正常:

(venv) ~$ nginx -tnginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful至此 Nginx 就配置好了,接下來搞定 Gunicorn

有的讀者無論怎么配置都只能看到 Nginx 歡迎頁面,有可能是 sites-enabled 目錄中的 default 文件覆蓋了你寫的配置。將 default 文件刪掉就可以正常代理自己的配置文件了。

Gunicorn及測(cè)試

Nginx 搞定后就只剩 Gunicorn 了。

下面的三條命令分別是安裝 Gunicorn 、 重啟 Nginx 和 啟動(dòng) Gunicorn:

(venv) ~$ pip3 install gunicorn(venv) ~$ service nginx restart# 將 IP 改為你的公網(wǎng) IP# .wsgi 前面為 Django 配置文件所在的目錄名(venv) ~$ gunicorn --bind unix:/tmp/47.104.227.185.socket album.wsgi:application# Gunicorn 成功啟動(dòng)后命令行提示如下[2021-07-29 15:09:22 +0800] [11945] [INFO] Starting gunicorn 20.1.0[2021-07-29 15:09:22 +0800] [11945] [INFO] Listening at: unix:/tmp/47.104.227.185.socket (11945)[2021-07-29 15:09:22 +0800] [11945] [INFO] Using worker: sync[2021-07-29 15:09:22 +0800] [11947] [INFO] Booting worker with pid: 11947Gunicorn 就啟動(dòng)成功了。(注意啟動(dòng)時(shí)命令行所在的路徑)

接下來用瀏覽器訪問試試:







大功告成,撒花慶祝!

此時(shí)你就可以對(duì)比本地存儲(chǔ)和 OSS 存儲(chǔ)的巨大鴻溝了。

收尾工作

后期運(yùn)維

你的網(wǎng)站是需要不斷更新優(yōu)化代碼的。每次修改代碼后,更新到服務(wù)器上也很簡(jiǎn)單。在虛擬環(huán)境中并進(jìn)入項(xiàng)目目錄,依次(collectstatic 和 migrate 是可選的)執(zhí)行以下命令:

git pullpython3 manage.py collectstaticpython3 manage.py migrate# 重啟 gunicornpkill gunicorngunicorn --bind unix:/tmp/47.104.227.185.socket my_blog.wsgi:application加上 cd 更改目錄的指令,部署過程有十幾條指令,手動(dòng)輸入也太麻煩了。簡(jiǎn)單粗暴的辦法是利用 XShell 的宏,把部署指令寫成順序執(zhí)行的腳本,點(diǎn)幾個(gè)按鈕就完成了,非常方便。

更高級(jí)的做法是在服務(wù)器上編寫自動(dòng)化部署的腳本,這個(gè)就讀者以后慢慢研究吧。
如果你更改了 Nginx 的配置文件,還需要重啟 Nginx 服務(wù):

service nginx restart

域名及優(yōu)化

相對(duì)部署來說,域名配置就很容易了,各家云服務(wù)商都有此業(yè)務(wù)。

有了域名之后要改的地方:

域名搞定之后,接著就可以著手考慮把網(wǎng)站升級(jí)為 https 版本了。

最后,在開發(fā)時(shí)我們往 settings.py 中寫入如 SECRET_KEY 、郵箱密碼等各種敏感信息,部署時(shí)千萬不要直接上傳到公開倉庫,而是把這些信息寫到服務(wù)器本地,然后在 settings.py 中讀取。

進(jìn)程托管

部署過程中還有個(gè)新手經(jīng)常碰到的問題,就是當(dāng) SSH 終端一關(guān)閉,Web 服務(wù)也一起被關(guān)閉了,導(dǎo)致網(wǎng)站無法連接。這個(gè)問題在 @frostming 的文章 《Web 服務(wù)的進(jìn)程托管》 中用了三種常見方法解決了,并且還實(shí)現(xiàn)了異常重啟和開機(jī)自啟動(dòng)。有類似疑惑的同學(xué)可以前往圍觀。

總結(jié)

部署可以說是入門者最大的難關(guān)了,也是檢驗(yàn)成果、獲取成就感的關(guān)鍵一步。

多查資料,要相信你遇到的問題別人早就遇到過了。

路漫漫其修遠(yuǎn)兮,吾將上下而求索。

點(diǎn)贊 or 吐槽?來評(píng)論區(qū)!

關(guān)鍵詞:部署,相冊(cè),網(wǎng)絡(luò)

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉