久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx

利用Linux + Nginx + Uwsgi + Django實現多域名訪問

2021-02-16    分類: 網站建設

最近使用Django開發一個小程序和后臺管理系統 ,需要將這兩個不同的項目部署到同一個服務里面,然后使用不同的域名來訪問不同的項目。Django默認的只支持單服務訪問,要想實現不同域名,需要安裝django的第三方擴展包:django-hosts。

本文通過一個簡單的demo來給演示, 看本文的前提是需要對django有一定的認識,對項目環境的搭建以及Nginx有一定的了解。

一.搭建環境與項目:

平時習慣使用Anconda來管理Python包,所以本文也使用anconda管理環境,當然大家要是習慣使用virtuallen管理環境也沒有問題。本文主要是演示怎么完整搭建一個單服務實現多域名訪問的流程,不涉及具體的業務流程。

由于生成django項目需要先下載django包,所以我們先創建一個基本的虛擬環境,然后在虛擬環境中通過具體命令來生成項目文件。

1、環境搭建:applite_web

conda create --name applite_web

創建完虛擬環境applite_web了,現在需要下載一些依賴包。這里只需要單獨安裝django與django-hosts即可。

pip install django

pip install django-hosts

pip install uwsgi

2、創建項目:applite_web

django-admin.py startproject applite_web

3、創建app

# 這里創建4個app.

# app_1、app_2: 是用來匹配applite_web文件下,hosts.py文件分發的url

相當django原有的一級url.

# app_1_demo、app_2_demo: 是用來定義自己的API

創建app_1: django manage.py startapp app_1

創建app_2: django manage.py startapp app_2

創建app_1_demo: django manage.py startapp app_1_demo

創建app_2_demo: django manage.py startapp app_2_demo

說明2點:

1)、根據項目的需要,將原來Django項目結構做了調整

2)、至于創建4個app的用法后邊會具體涉及到

下面截圖是創建本文Demo項目結構,當然這也是比較簡單的一個項目結構,實際項目開發中,還需要配置別的參數與文件。

2. 在applite_web中配置django-hosts

創建好虛擬環境和項目之后,接下來重點就是在django中配置多域名。為了方便起見,本文只演示2個域名,多個域名按照2個域名的方式增加就行。

1、首先在settins.py同級增加一個hosts.py文件,配置如下:

from django_hosts import patterns, host

host_patterns = patterns(

host(r'app1', 'app_1.urls', name='app1'),

host(r'app2', 'app_2.urls', name='app2'),

)

2、然后在django的settings配置文件增加3處配置:

  • 在INSTALLED_APPS中增加下面幾個

INSTALLED_APPS = [

"django_hosts",

'app_1',

'app_2',

"app_1_demo",

"app_2_demo",

]

  • 需要在 MIDDLEWARE 的首行和末行增加2行配置

MIDDLEWARE = [

'django_hosts.middleware.HostsRequestMiddleware',

......

'django_hosts.middleware.HostsRequestMiddleware',

]

  • 在ROOT_URLCONF下行增加如下2行參數配置

# 客戶端的請求通過這個配置被轉發到hoss.py文件的host_patterns中匹配

ROOT_HOSTCONF = 'applite_web.hosts'

# 設置一個默認域名,在沒有匹配所有請求的域名時,默認請求這個域名

DEFAULT_HOST = 'app1'

3. 配置url和view

上邊兩步操作完成,接下來就需要去app文件夾下,編寫對應的url和view。本文是演示2個域名,同時考慮到一般單個項目會有多個模塊,所以還需要分別配置兩個url。具體的配置如下:

1、分別在app_1、app_2文件夾下創建urls.py文件,并且增加對應的url,代碼如下:

  • app_1的urls.py文件如下:

from django.urls import path, include

urlpatterns = [

path("app1/", include("app_1_demo.urls"))

]

  • app_2的urls.py文件如下

from django.urls import path, include

urlpatterns = [

path("app2/", include("app_2_demo.urls")),

]

2、然后在app_1_demo、app_2_demo中分別增加對應的url和views函數

  • 在app_1中匹配成功之后,會直接跳轉到app_1_demo的urls,再根據當前的匹配跳轉當前的views函數

1)、首先匹配app_1_demo的urls的路由:

from django.urls import path

from .views import app_1_view

urlpatterns = [

path("", app_1_view),

]

2)、urls匹配成功之后,跳轉這里的視圖函數,并返回響應

from django.http.response import HttpResponse

# Create your views here.

def app_1_view(request):

return HttpResponse("hello i'm app_1")

  • 同理,app_2匹配成功之后,會直接跳轉到app_2_demo的urls,再根據當前的匹配跳轉當前的views函數

1)、首先匹配app_2_demo的urls的路由,匹配如下:

from django.urls import path, include

from .views import app_2_view

urlpatterns = [

path("", app_2_view)

]

2)、urls匹配成功之后,跳轉這里的視圖函數,并返回響應

from django.http.response import HttpResponse

# Create your views here.

def app_2_view(request):

return HttpResponse("hello i'm app_2")

4.域名綁定與測試

經過上邊三步的操作,已經完成了一個基本的演示功能。本文目的是通過Nginx負載單服務后,在一個服務里面來實現不同域名的訪問,所以在配置uwgi和Nginx參數,還需要綁定域名

1、這里是在同一個局域網下通過兩臺機器實現用戶的訪問:

訪問機器IP: 192.168.2.17, 部署服務的IP: 192.168.2.200。在實際生產需要購買真實的域名,這里作為演示,可以通過在本機綁定服務器的ip的方式來實現對另一臺機器服務的訪問,具體修改如下:

# 需要進入到此文件中編輯增加下面兩行:sudo vim /etc/hosts

# 這里我們分別給192.168.2.200綁定app1.cc與app2.cc兩個域名

192.168.2.200 app1.cc

192.168.2.200 app2.cc

2、綁定完之后,然后將本項目放到192.168.2.200機器上,測試當前的服務配置沒有問題。

項目放置路徑為: /home/yxy/payneli/applite_web/

  • 進入app文件夾下,然后運行項目,命令如下:

python manage.py runserver 192.168.2.200:8000

  • 瀏覽器輸入:app1.cc:8000/app1/,如果瀏覽器顯示如下結果,說明項目配置與域名綁定成功

5.uwsgi參數配置與測試

前邊幾步成功之后,接下來就是配置uwsgi的參數。熟悉Python后臺開發的都應該清楚,開發的時候使用的 python manage.py runserver 來運行服務器,這只適用開發時的代碼調試,而實際項目部署的話,django內置的服務根本無法滿足需求。而Uwsgi作為Python服務器不僅可以提供穩定的服務,同時還可以提供大的并發量,所以在后臺開發中,用的比較多。

1、在項目文件夾下,創建一個uwsgi文件夾。進入該文件夾,創建uwsgi.ini文件,里面的配置參數如下:

[uwsgi]

# 項目目錄

chdir=/home/yxy/payneli/applite_web/app/

# 指定項目的application

wsgi-file=applite_web/wsgi.py

# 指定sock的文件路徑

socket=/home/yxy/payneli/applite_web/uwsgi/uwsgi.sock

# 進程個數

workers=1

pidfile=/home/yxy/payneli/applite_web/uwsgi/uwsgi.pid

# 指定IP端口

# nginx負載均衡使用socket,uwsgi啟動服務使用http

#socket=192.168.2.200:8000

http=192.168.2.200:8000

# 啟用主進程

master=true

# 自動移除unix Socket和pid文件當服務停止的時候

vacuum=true

# 序列化接受的內容,如果可能的話

thunder-lock=true

# 啟用線程

enable-threads=true

# 設置自中斷時間

harakiri=30

# 設置緩沖

post-buffering=4096

# 設置日志目錄

daemonize=/home/yxy/payneli/applite_web/logs/uwsgi.log

2、配置完成后,運行下面的命令,啟動服務。

# 在項目路徑下,啟動服務命令如下:

uwsgi --ini ./uwsgi/uwsgi.ini

啟動完成后,uwsgi文件夾里面就會多出兩個文件:uwsgi.pid uwsgi.sock

然后查看當前服務是否啟動成功:

# 命令如下

ps -ef|grep uwsgi

當顯示如下圖所示的時候,說明uwsgi已經將項目啟動成功

3、瀏覽器測試服務是否正常:

在瀏覽為直接輸入:app1.cc:8000/app1/,如果顯示如下,說明uwsgi配置成功

6. Nginx配置與測試

如果前邊5步沒有問題的話,那么恭喜你,就差最后一步就可以完成本demo的演示了。現在就開始最后一步,配置Nginx參數。

1、首先安裝Nginx,本文對nginx安裝不做講解,畢竟網上教程那么多,可以找一個好的教程照著操作就可以。小編將Nginx安裝為默認路徑,在:/usr/local/nginx,進入此文件下,直接命令行啟動。

/usr/local/nginx/sbin/nginx

查看Nginx是否啟動成功,命令如下:

ps -ef|grep nginx

顯示如下圖,說明Nginx啟動成功

瀏覽器輸入:app1.cc,顯示如下所示,說明Nginx安裝成功

2、檢查Nginx配置沒有問題之后,就是配置多域名了。

  • 注釋掉Nginx原有的配置server
  • 增加如下一行參數,主要是為了方便單獨增加配置app1.cc、與app2.cc兩個域名的文件
  • 分別在 /usr/nginx/conf/文件加下,創建一個新的multihosts文件夾,進入該文件夾分別新建 app1.cc.conf、app2.cc.conf文件,具體的配置參數如下:
  • app1.cc.conf配置如下:

server{

listen 80; # 默認監聽80端口

server_name app1.cc; # 訪問的域名

#index index.html inex.htm index.php;

#root /data/www/applite_web/;

access_log /usr/local/nginx/logs/app1.log logmain;

rewrite_log on;

#error_page 404 /404.html;

location / { # 通用匹配,任何未匹配到其它location的請求都會匹配到

include uwsgi_params; # uwsgi參數

uwsgi_pass 192.168.2.200:8000; # 負載后臺服務

uwsgi_param UWSGI_CHDIR /home/yxy/payneli/applite_web/app/;

uwsgi_param UWSGI_SCRIPT applite_web.wsgi;

client_max_body_size 35m;

uwsgi_send_timeout 1060;

uwsgi_connect_timeout 1060;

uwsgi_read_timeout 1060;

}

  • app2.cc.conf配置如下:

server{

listen 80;

server_name app2.cc;

#index index.html inex.htm index.php;

#root /home/yxy/www/applite_web/;

access_log /usr/local/nginx/logs/app2.log logmain;

rewrite_log on;

#error_page 404 /404.html;

location / {

include uwsgi_params;

uwsgi_pass 192.168.2.200:8000;

uwsgi_param UWSGI_CHDIR /home/yxy/payneli/applite_web/app/;

uwsgi_param UWSGI_SCRIPT applite_web.wsgi;

client_max_body_size 35m;

uwsgi_send_timeout 1060;

uwsgi_connect_timeout 1060;

uwsgi_read_timeout 1060;

}

}

3、多域名的參數配置完成,但是此刻不要忘了,當使用Nginx作為負載均衡時候,需要將uwsgi.ini里面的參數http改為socket具體如下:

# nginx負載均衡使用socket,uwsgi啟動服務使用http

socket=192.168.2.200:8000

# http=192.168.2.200:8000

4、到這里本文的參數已經配置完成,然后我們需要重新自動Nginx,查看顯示如上邊啟動效果,說明啟動成功,接下來就是瀏覽器檢測多域名配置是否正確:

分別輸入:app1.cc、app2.cc顯示結果如下,說明多域名已經配置成功

到此為止,單服務實現多域名訪問已經演示完成。當然,本文只是做了一個簡單的demo版本,而實際項目開發的過程中,還需要根據實際需要評估,決定到底是nginx后臺負載多服務,還是nginx負載單服務映射多域名

分享文章:利用Linux + Nginx + Uwsgi + Django實現多域名訪問
當前網址:http://www.js-pz168.com/news47/101347.html

成都網站建設公司_創新互聯,為您提供關鍵詞優化全網營銷推廣面包屑導航網站設計虛擬主機網站建設

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

h5響應式網站建設
久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx
蜜臀av一区二区在线免费观看| 国产69精品久久久久毛片| 欧美一区二区三区免费视频 | 丁香六月久久综合狠狠色| 夜夜精品视频一区二区| 日韩视频免费观看高清完整版 | 亚洲欧美日韩中文播放| 91精品久久久久久久91蜜桃| 日韩一区二区电影在线观看| 99re这里只有精品首页| 国产资源精品在线观看| 亚洲第一激情av| 国产精品色噜噜| 欧美精品一区二区不卡| 欧美日韩国产美女| 色综合一区二区三区| 九色91在线视频| 99久久婷婷国产综合精品电影| 精品亚洲porn| 国产精品538一区二区在线| 国产精品电影一区二区三区| 久久久久久久电影| 欧美韩日一区二区三区| 中文字幕高清不卡| 一色屋精品亚洲香蕉网站| 国产精品色在线观看| 国产精品久久看| 国产精品系列在线| 国产精品久久久久久久久快鸭| 国产精品美女视频| 国产精品久99| 中文字幕亚洲一区二区av在线 | 亚洲天天做日日做天天谢日日欢| 国产精品青草综合久久久久99| 国产精品久久网站| 亚洲美女屁股眼交| 午夜精品福利一区二区蜜股av| 日韩国产在线一| 九九国产精品视频| 成人ar影院免费观看视频| 99国产一区二区三精品乱码| 国产精品一区二区免费看| 欧美日韩一区二区视频在线观看| 亚洲精蜜桃久在线| 在线观看av一区二区| 欧美日韩一区在线观看| 欧美精品久久久久久久多人混战| 久久国产精品久久精品国产| 91在线精品一区二区三区| av日韩在线网站| 成人午夜免费视频| 久久国产精品免费一区| 欧美无人高清视频在线观看| 精品国一区二区三区| 亚洲免费观看高清完整版在线观看| 蜜桃精品视频在线观看| 波多野结衣亚洲| 国产一区二区免费视频| 最新中文字幕一区二区三区 | 欧美军同video69gay| 欧美国产成人精品| 97久久超碰国产精品| 88在线观看91蜜桃国自产| 麻豆国产91在线播放| 一本一道久久a久久综合精品| 久久精品视频一区二区三区| 亚洲成a人v欧美综合天堂下载| 国产精品影视网| 精品乱子伦一区二区三区| 中文字幕一区综合| 国产香蕉久久精品综合网| 久久电影网电视剧免费观看| 精品亚洲欧美日韩| 欧美色男人天堂| 亚洲男人天堂一区| 国产一区二区三区久久悠悠色av| 99热国产精品| 欧美性色黄大片人与善| 欧美成人乱码一区二区三区| 日韩精品免费视频人成| 日韩中文一区二区三区| 日韩一区二区三| 一区精品在线播放| 国产一区二区三区黄视频 | 亚洲国产日日夜夜| 91精品国产综合久久久久久丝袜| 精品卡一卡二| 最新国产精品久久| 日韩一区二区三区四区五区六区| 亚洲欧美视频一区| 99热在线播放| 欧美大胆一级视频| 国产在线精品不卡| 欧美视频在线一区二区三区| 亚洲成年人影院| 日本中文不卡| 日产精品高清视频免费| 亚洲欧美偷拍三级| 日韩视频在线播放| 韩国成人福利片在线播放| 日韩精品一区国产麻豆| 精品一区久久久| 免费成人在线视频观看| 欧美一区二区三区精品| 国产伦精品一区二区三区高清| 亚洲高清三级视频| 日韩免费观看高清完整版| 91免费视频网址| 国产亚洲精品精华液| 国产电影精品久久禁18| 欧美人动与zoxxxx乱| 激情成人午夜视频| 欧美老年两性高潮| 国产美女主播视频一区| 欧美日韩国产免费| 成人美女在线观看| 欧美成人官网二区| 国产福利一区二区三区视频在线 | 91精品综合久久久久久| 国产在线视频一区二区三区| 欧美区在线观看| 国产精品资源在线| 日韩欧美一区电影| 91香蕉视频污在线| 国产精品理论片| 欧美主播一区二区三区美女 久久精品人 | 中文字幕不卡三区| 农村寡妇一区二区三区| 亚洲国产精品影院| 色婷婷精品久久二区二区蜜臀av| 理论电影国产精品| 日韩免费在线观看| 91美女在线看| 亚洲视频一区在线| 亚洲人久久久| 精品一区免费av| 欧美成人a视频| 成人区精品一区二区| 亚洲精品乱码久久久久久 | 999视频在线免费观看| 亚洲欧洲韩国日本视频| 亚洲国产一区二区三区在线 | 97久久超碰国产精品| 国产精品黄色在线观看| 亚洲7777| 黄色日韩三级电影| 欧美精品一区二区三区很污很色的 | 5g国产欧美日韩视频| 亚洲码国产岛国毛片在线| 中文字幕日韩一区二区三区不卡| 国产一区二区三区国产| 国产亚洲综合在线| 日韩精彩视频| 激情五月播播久久久精品| 精品女同一区二区| 久久av一区二区三区亚洲| 日本不卡中文字幕| 欧美第一区第二区| 久久99精品久久久久久青青日本 | 99国产精品久久久久久久久久| 中文字幕一区二区不卡| 色乱码一区二区三区88| 丁香亚洲综合激情啪啪综合| 中文字幕在线观看一区二区| 伊人久久青草| 成人97人人超碰人人99| 亚洲欧美区自拍先锋| 欧美在线看片a免费观看| 99视频精品全部免费在线| 一区二区三区在线免费观看 | 鲁丝一区二区三区免费| 久久精品理论片| 国产欧美日韩在线| 一本色道久久综合狠狠躁的推荐 | 日韩av高清在线观看| 精品sm在线观看| 亚洲国产精品综合| 成人性视频免费网站| 一区二区三区日韩精品| 制服丝袜亚洲色图| 久久综合福利| 国产精品一区二区在线观看网站| 国产精品国产三级国产aⅴ无密码| 色婷婷综合激情| 91久久国产自产拍夜夜嗨| 亚洲第一av色| 26uuu亚洲婷婷狠狠天堂| 天天综合狠狠精品| www.欧美.com| 视频一区二区不卡| 久久精品无码一区二区三区| 色综合中文字幕国产 | 69堂亚洲精品首页| 久久亚裔精品欧美| 国产成人av在线影院| 亚洲精品成人a在线观看| 欧美一级理论片| 色姑娘综合av| 99r精品视频| 蜜臀精品一区二区三区在线观看|