<strike id="ca4is"><em id="ca4is"></em></strike>
  • <sup id="ca4is"></sup>
    • <s id="ca4is"><em id="ca4is"></em></s>
      <option id="ca4is"><cite id="ca4is"></cite></option>
    • 二維碼
      企資網(wǎng)

      掃一掃關(guān)注

      當(dāng)前位置: 首頁 » 企資快報 » 戶外 » 正文

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

      放大字體  縮小字體 發(fā)布日期:2021-08-17 14:47:37    作者:本地管家張欣音    瀏覽次數(shù):21
      導(dǎo)讀

      我們的相冊雖然還有不完善的地方,但是沒關(guān)系,越早把她部署到互聯(lián)網(wǎng)上,才能越早發(fā)現(xiàn)線上特有的問題,讓產(chǎn)品在迭代中成長。注意:以下流程經(jīng)過筆者驗證,能夠保證順利部署項目。如果你不知道每一步都是干嘛的,那么

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

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

      配置服務(wù)器

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

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

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

      首先進(jìn)入阿里云ECS的購買頁面

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

      挑重點說一下:

    • 實例從入門級里選一款便宜的(比如2核2G的),以后流量高了再升級也不遲(土豪請無視這條)。
    • 鏡像選擇 Ubuntu 。其他 Linux 版本也是可以的,根據(jù)你的使用習(xí)慣確定。
    • 系統(tǒng)盤先選個 20G,夠你用一陣了。數(shù)據(jù)盤暫時用不上,不用勾選。

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

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

      如果有詢問是否購買公網(wǎng) IP 的選項,記得勾上。沒公網(wǎng) IP 就沒辦法連接到互聯(lián)網(wǎng)了。

      點擊下一步,到系統(tǒng)配置頁面:

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

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

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

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

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

      這一步很重要,如果不打開后續(xù)會始終連接不上站點。如果沒有黃字提醒,那就一定要到安全組中確認(rèn)端口已打開。

      至此服務(wù)器的購買、配置就完成啦。稍等幾分鐘后等待初始化完成,就可以得到服務(wù)器的公網(wǎng) IP 地址,筆者的是 47.104.227.185 ,后面會用到。

      準(zhǔn)備工作

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

      修改后端配置

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

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

      然后在虛擬環(huán)境中執(zhí)行:

      (env)> pip freeze > requirements.txt

      將后端所有的依賴庫記錄到 requirements.txt 中。

      代碼上傳Github

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

      Github 經(jīng)常會速度很慢或無法登錄。這時候你也可以嘗試用國內(nèi)的 Gitee,或者直接點對點本地上傳服務(wù)器。

      如何上傳這里就不細(xì)講了,請自行學(xué)習(xí) Git 相關(guān)知識,注冊 Github 賬號等。

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

      這就是前面生成的 requirements.txt 的作用。

      接下來就是正式部署了。

      遠(yuǎn)程連接

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

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

      使用相當(dāng)簡單,基本就是把主機(jī) IP、端口號(22)以及登錄驗證填好就能連接了。

      連接成功后,就能在 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ī)名),輸入命令時不需要你輸入這個。

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

      安裝項目及依賴

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

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

      ~$ apt-get update~$ apt-get upgrade

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

    • 客戶端發(fā)來 http 請求,Nginx 作為直接對外的接口,對 http 請求進(jìn)行分析;
    • 如果是靜態(tài)資源請求,則由Nginx自己處理(效率極高);
    • 如果是動態(tài)資源請求,則把她轉(zhuǎn)發(fā)給 Gunicorn 進(jìn)行預(yù)處理后,再轉(zhuǎn)發(fā)給 Django,最終完成資源的返回。

      除此之外,還要確保 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)到項目目錄:

      ~$ mkdir -p /home/sites/album~$ cd /home/sites/album# 進(jìn)入的路徑如下所示/home/sites/album$

      接下來就可以從 Github 下載項目了:

      # 以教程倉庫為例 django-vue-tutorial../album$ git clone https://github.com/stacklens/django-album-tutorial.git

      這里就以教程的倉庫為例,讀者用自己項目時一定要注意路徑名稱正確。

      如果你是從非公開項目下載,用戶名密碼的認(rèn)證方式 Github 已經(jīng)準(zhǔn)備廢棄了。如遇報錯請以密鑰認(rèn)證的形式下載。

      下載好項目后,在同級路徑創(chuàng)建并進(jìn)入虛擬環(huán)境:

      ../album$ virtualenv --python=3.8 venv../album$ source venv/bin/activate# 看到 (venv) 開頭就對了(venv) ../album$ 

      進(jìn)入項目目錄,安裝依賴、收集靜態(tài)資源并遷移數(shù)據(jù)庫:

      # 這里的 django-album-tutorial 路徑是從 Github 拉取下來的項目路徑# 記得改成你自己的(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

      最后啟動 nginx:

      # 為了閱讀方便,后續(xù)命令行均省略 $ 前面的路徑部分(venv) ~$ service nginx start

      在瀏覽器中訪問你的云服務(wù)器的公網(wǎng) IP ,看看效果:

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

      配置nginx

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

      (venv) ~$ vim /etc/nginx/sites-available/album

      關(guān)于 vim 編輯器如何使用也不多說了,這里只說兩個最基本的操作:

    • i 鍵切換到編輯模式,這時候才可以進(jìn)行輸入、刪除、修改等操作
    • Ctrl + c 退回到命令模式,然后輸入 :wq + Enter 保存文件修改并退回到服務(wù)器命令行

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

      server {  charset utf-8;  listen 80;  server_name 47.104.227.185;  # 改成你的 IP  location /static {    # 這里的 django-album-tutorial 路徑是從 Github 拉取下來的項目路徑    # 記得改成你自己的    alias /home/sites/album/django-album-tutorial/collected_static;  }  location /media {    # 這里的 django-album-tutorial 路徑是從 Github 拉取下來的項目路徑    # 記得改成你自己的    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  }}

      此配置會監(jiān)聽 80 端口(通常 http 請求的端口),監(jiān)聽的 IP 地址寫你自己的服務(wù)器公網(wǎng) IP

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

    • 如果請求靜態(tài)資源,則直接轉(zhuǎn)發(fā)到對應(yīng)目錄中尋找
    • 其他請求則轉(zhuǎn)發(fā)給 Gunicorn(再轉(zhuǎn)交給 Django)

      如果你已經(jīng)申請好域名了,就把配置中有 IP 的地方都修改為域名,比如:server_name www.dusaiphoto.com。

      寫好后就退出 vim 編輯器,回到命令行。因為我們寫的只是 Nginx 的可用配置,所以還需要把這個配置文件鏈接到在用配置上去:

      (venv) ~$ ln -s /etc/nginx/sites-available/album /etc/nginx/sites-enabled

      測試下 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及測試

      Nginx 搞定后就只剩 Gunicorn 了。

      下面的三條命令分別是安裝 Gunicorn 、 重啟 Nginx 和 啟動 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 成功啟動后命令行提示如下[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 就啟動成功了。(注意啟動時命令行所在的路徑)

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

      大功告成,撒花慶祝!

      此時你就可以對比本地存儲和 OSS 存儲的巨大鴻溝了。

      收尾工作

      后期運(yùn)維

      你的網(wǎng)站是需要不斷更新優(yōu)化代碼的。每次修改代碼后,更新到服務(wù)器上也很簡單。在虛擬環(huán)境中并進(jìn)入項目目錄,依次(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 更改目錄的指令,部署過程有十幾條指令,手動輸入也太麻煩了。簡單粗暴的辦法是利用 XShell 的宏,把部署指令寫成順序執(zhí)行的腳本,點幾個按鈕就完成了,非常方便。

      更高級的做法是在服務(wù)器上編寫自動化部署的腳本,這個就讀者以后慢慢研究吧。

      如果你更改了 Nginx 的配置文件,還需要重啟 Nginx 服務(wù):

      service nginx restart

      域名及優(yōu)化

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

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

    • Nginx 中與 IP/域名 有關(guān)的位置
    • Gunicorn 中與 IP/域名 有關(guān)的位置

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

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

      進(jìn)程托管

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

      總結(jié)

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

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

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

      點贊 or 吐槽?來評論區(qū)!




    •  
      (文/本地管家張欣音)
      免責(zé)聲明
      本文僅代表作發(fā)布者:本地管家張欣音個人觀點,本站未對其內(nèi)容進(jìn)行核實,請讀者僅做參考,如若文中涉及有違公德、觸犯法律的內(nèi)容,一經(jīng)發(fā)現(xiàn),立即刪除,需自行承擔(dān)相應(yīng)責(zé)任。涉及到版權(quán)或其他問題,請及時聯(lián)系我們刪除處理郵件:weilaitui@qq.com。
       

      Copyright ? 2016 - 2025 - 企資網(wǎng) 48903.COM All Rights Reserved 粵公網(wǎng)安備 44030702000589號

      粵ICP備16078936號

      微信

      關(guān)注
      微信

      微信二維碼

      WAP二維碼

      客服

      聯(lián)系
      客服

      聯(lián)系客服:

      在線QQ: 303377504

      客服電話: 020-82301567

      E_mail郵箱: weilaitui@qq.com

      微信公眾號: weishitui

      客服001 客服002 客服003

      工作時間:

      周一至周五: 09:00 - 18:00

      反饋

      用戶
      反饋

      午夜久久久久久网站,99久久www免费,欧美日本日韩aⅴ在线视频,东京干手机福利视频
        <strike id="ca4is"><em id="ca4is"></em></strike>
      • <sup id="ca4is"></sup>
        • <s id="ca4is"><em id="ca4is"></em></s>
          <option id="ca4is"><cite id="ca4is"></cite></option>
        • 主站蜘蛛池模板: se94se欧美综合色| 久久久久亚洲AV无码专区首JN| 黄色a级片免费看| 日韩av激情在线观看| 又粗又大又猛又爽免费视频| mm131嫩王语纯翘臀| 欧美日韩国产码高清综合人成| 国产成人精品久久综合| 中文精品无码中文字幕无码专区| 皇后羞辱打开双腿调教h孕| 国产高清在线精品一区| 九九全国免费视频| 美女被免费网站91色| 在线|一区二区三区| 亚洲av午夜国产精品无码中文字| 色妞色视频一区二区三区四区| 好朋友4韩国完整版观看| 亚洲日本一区二区三区在线不卡| 国产三级精品三级在专区中文| 成人性生交视频免费观看| 亚洲码一区二区三区| 黄网站免费在线观看| 嫩BBB槡BBBB槡BBBB| 亚洲国产成人精品无码区二本 | 中日韩国语视频在线观看| 男女啪啪漫画无遮挡全彩 | 亚洲成综合人影院在院播放| 黄网在线免费观看| 女人张开腿让男人桶个爽| 亚洲五月六月丁香激情| 老子影院午夜伦手机不卡6080| 在线天堂资源www在线中文| 久久精品无码一区二区三区| 精品一区二区三区在线观看l| 国产精品人成在线观看| 中文字幕一区二区精品区| 欧美牲交a欧美牲交aⅴ图片| 国产乱码精品一区二区三区四川人| a级片免费电影| 日韩一级片网址| 亚洲美女视频一区|