99热99这里只有精品6国产,亚洲中文字幕在线天天更新,在线观看亚洲精品国产福利片 ,久久久久综合网

歡迎加入QQ討論群258996829
麥子學(xué)院 頭像
蘋果6袋
6
麥子學(xué)院

基于django架構(gòu)如何部署網(wǎng)站?

發(fā)布時(shí)間:2017-03-03 21:07  回復(fù):0  查看:2221   最后回復(fù):2017-03-03 21:07  
對(duì)于 django入門 的同學(xué),當(dāng)完成了項(xiàng)目代碼,在本地localhost的調(diào)試沒(méi)問(wèn)題后,會(huì)遇到如何讓項(xiàng)目上線的問(wèn)題。
  網(wǎng)上的資料過(guò)于繁雜,因此希望這篇能簡(jiǎn)單地為剛?cè)腴T的同學(xué)解惑。
  1.域名
  首先,當(dāng)我們輸入一個(gè)網(wǎng)址時(shí),首先經(jīng)過(guò)DNS解析到對(duì)應(yīng)的IP地址,從而對(duì)該IP實(shí)現(xiàn)訪問(wèn)。所以,要讓別人訪問(wèn)我們項(xiàng)目的第一步,就是需要擁有兩樣?xùn)|西,域名和公網(wǎng)ip。
  域名的獲得很簡(jiǎn)單,隨便注冊(cè)購(gòu)買一個(gè)就好了。然后需要的是將域名解析到你的公網(wǎng)ip。而公網(wǎng)ip,一般在購(gòu)買云服務(wù)器的時(shí)候能獲得。
  經(jīng)過(guò)這一步,我們實(shí)現(xiàn)了:請(qǐng)求-->DNS-->服務(wù)器ip,而我們的最終目的就是:請(qǐng)求-->DNS-->服務(wù)器ip-->黑盒子-->項(xiàng)目wsgi應(yīng)用
  2.使用gunicorn運(yùn)行項(xiàng)目
  在此,我們使用django搭建項(xiàng)目,當(dāng)你的項(xiàng)目完成后。我們需要運(yùn)行監(jiān)聽請(qǐng)求,接收請(qǐng)求并調(diào)用相應(yīng)的wsgi應(yīng)用的服務(wù)程序。例如執(zhí)行python manage.py runserver 0.0.0.0:8000,runserver 就是django 自帶的用于調(diào)試的基于wsgi的服務(wù)程序。
  在云服務(wù)器上我們創(chuàng)建一個(gè)項(xiàng)目
  django-admin.py startproject blog
  其中wsgi.py
  import osimport sys# 當(dāng)使用virtualenv等隔離項(xiàng)目環(huán)境時(shí),需要將項(xiàng)目的路徑添加添加到查找路徑中
  path = os.getcwd()if path not in sys.path:
  sys.path.append(path)
  os.environ.setdefault("DJANGO_SETTINGS_MODULE", "blog.settings")from django.core.wsgi import get_wsgi_application
  application = get_wsgi_application()
  我們?cè)陧?xiàng)目下執(zhí)行以下命令
  gunicorn wsgi:application
  默認(rèn)綁定127.0.0.1:8000,具體gunicorn 的使用可以自行g(shù)oogle一下
  此時(shí),我們能就能通過(guò)本地8000端口來(lái)訪問(wèn)我們的項(xiàng)目?jī)?nèi)容了。實(shí)現(xiàn)了:請(qǐng)求-->DNS-->服務(wù)器ip-->黑盒子-->127.0.0.1:8000-->項(xiàng)目wsgi應(yīng)用
  3.nginx接收外部請(qǐng)求,內(nèi)部轉(zhuǎn)發(fā)
  在/etc/nginx/sites-available/文件夾下,新建一個(gè)文件blog,并添加如下簡(jiǎn)單設(shè)置
  server {
  listen 80;
  server_name  你的域名 你的公網(wǎng)ip(可選);
  access_log  /var/log/nginx/blog.log;
  location /static {
  #靜態(tài)文件如js,css的存放目錄
  root /project/blog;
  }
  location / {
  include proxy_params;
  # 從外部接收請(qǐng)求后轉(zhuǎn)發(fā)到本地的8000端口
  proxy_pass  http://127.0.0.1:8000;
  }
  }
  從上面我們就可以明白,nginx 接收到請(qǐng)求后,轉(zhuǎn)發(fā)給gunicorn正在監(jiān)聽的本地8000端口,gunicorn根據(jù)請(qǐng)求調(diào)用項(xiàng)目中相應(yīng)的應(yīng)用函數(shù)后返回結(jié)果。
  自此我們就基本實(shí)現(xiàn)了請(qǐng)求-->DNS-->服務(wù)器ip-->nginx(80端口)-->127.0.0.1:8000-->項(xiàng)目wsgi應(yīng)用
  而關(guān)于nginx和gunicorn的具體配置還有許多,不妨多google一下延伸學(xué)習(xí)
  4.總結(jié)
  gunicorn讓項(xiàng)目跑起來(lái)
  nginx負(fù)責(zé)接收請(qǐng)求和轉(zhuǎn)發(fā)請(qǐng)求到運(yùn)行中項(xiàng)目監(jiān)聽請(qǐng)求的端口
  部署到線上,主要需要域名,公網(wǎng)ip,二者均可以通過(guò)云服務(wù)器來(lái)解決,所以最好還是直接買個(gè)云服務(wù)器實(shí)踐一下,just do it

來(lái)源:SegmentFault
您還未登錄,請(qǐng)先登錄

熱門帖子

最新帖子

?