時(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)。阿里云服務(wù)器購買頁面變動(dòng)頻繁,如果圖中展示的步驟和你購買時(shí)的不一樣也沒關(guān)系,核心步驟都是差不多,稍微找一下就OK了。首先進(jìn)入阿里云ECS的購買頁面:
如果有詢問是否購買公網(wǎng) IP 的選項(xiàng),記得勾上。沒公網(wǎng) IP 就沒辦法連接到互聯(lián)網(wǎng)了。點(diǎn)擊下一步,到系統(tǒng)配置頁面:
這一步很重要,如果不打開后續(xù)會(huì)始終連接不上站點(diǎn)。如果沒有黃字提醒,那就一定要到安全組中確認(rèn)端口已打開。至此服務(wù)器的購買、配置就完成啦。稍等幾分鐘后等待初始化完成,就可以得到服務(wù)器的公網(wǎng) IP 地址,筆者的是
47.104.227.185
,后面會(huì)用到。# /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 經(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
的作用。
接下來就是正式部署了。使用相當(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:
字符省略掉,方便大家閱讀。
~$ apt-get update~$ apt-get upgrade
部署到正式環(huán)境時(shí),后端服務(wù)器就不能用 Django 自帶的開發(fā)服務(wù)器了(性能低下),而是改用 Nginx + Gunicorn + Django 配合提供網(wǎng)絡(luò)服務(wù):~$ 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 ,看看效果:/etc/nginx/sites-available
目錄是定義 Nginx 可用配置的地方。輸入指令創(chuàng)建配置文件 myblog
并打開 vim 編輯器:(venv) ~$ vim /etc/nginx/sites-available/album
關(guān)于 vim
編輯器如何使用也不多說了,這里只說兩個(gè)最基本的操作:i
鍵切換到編輯模式,這時(shí)候才可以進(jìn)行輸入、刪除、修改等操作Ctrl + c
退回到命令模式,然后輸入 :wq + Enter
保存文件修改并退回到服務(wù)器命令行vim
在 album
文件中寫入: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。如果你已經(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 文件刪掉就可以正常代理自己的配置文件了。
(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: 11947
Gunicorn 就啟動(dòng)成功了。(注意啟動(dòng)時(shí)命令行所在的路徑)此時(shí)你就可以對(duì)比本地存儲(chǔ)和 OSS 存儲(chǔ)的巨大鴻溝了。
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
Nginx
中與 IP/域名 有關(guān)的位置Gunicorn
中與 IP/域名 有關(guān)的位置settings.py
中寫入如 SECRET_KEY 、郵箱密碼等各種敏感信息,部署時(shí)千萬不要直接上傳到公開倉庫,而是把這些信息寫到服務(wù)器本地,然后在 settings.py
中讀取。點(diǎn)贊 or 吐槽?來評(píng)論區(qū)!
關(guān)鍵詞:部署,相冊(cè),網(wǎng)絡(luò)
客戶&案例
營(yíng)銷資訊
關(guān)于我們
客戶&案例
營(yíng)銷資訊
關(guān)于我們
微信公眾號(hào)
版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。