国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

云服務器|WEB服務器|FTP服務器|郵件服務器|虛擬主機|服務器安全|DNS服務器|服務器知識|Nginx|IIS|Tomcat|

服務器之家 - 服務器技術 - Nginx - 詳解通過Nginx部署Django(基于ubuntu)

詳解通過Nginx部署Django(基于ubuntu)

2019-11-19 17:33蟲師 Nginx

這篇文章主要介紹了詳解通過Nginx部署Django(基于ubuntu),Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比較常見的一種方式,有興趣的可以了解一下。

Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比較常見的一種方式。

在這種方式中,我們的通常做法是,將nginx作為服務器最前端,它將接收WEB的所有請求,統一管理請求。nginx把所有靜態請求自己來處理(這是NGINX的強項)。然后,NGINX將所有非靜態請求通過uwsgi傳遞給Django,由Django來進行處理,從而完成一次WEB請求。

可見,uwsgi的作用就類似一個橋接器。起到橋梁的作用。

Linux的強項是用來做服務器,所以,下面的整個部署過程我們選擇在Ubuntu下完成。

一、安裝Nginx                                                                       

Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,并在一個BSD-like 協議下發行。其特點是占有內存少,并發能力強,事實上nginx的并發能力確實在同類型的網頁服務器中表現較好。

Nginx同樣為當前非常流行的web服務器。利用其部署Django,我們在此也做簡單的介紹。

Nginx官網:http://nginx.org/

打開ubuntu控制臺(ctrl+alt+t)利用Ubuntu的倉庫安裝。

?
1
fnngj@ubuntu:~$ sudo apt-get install nginx #安裝

啟動Nginx:

?
1
2
3
fnngj@ubuntu:~$ /etc/init.d/nginx start #啟動
fnngj@ubuntu:~$ /etc/init.d/nginx stop #關閉
fnngj@ubuntu:~$ /etc/init.d/nginx restart #重啟

修改Nginx默認端口號,打開/etc/nginx/nginx.conf 文件,修改端口號。

?
1
2
3
4
5
6
7
8
9
10
11
12
server {
 listen    8088;  # 修改端口號
 server_name localhost;
 
 #charset koi8-r;
 
 #access_log logs/host.access.log main;
 
 location / {
   root  html;
   index index.html index.htm;
 }

大概在文件36行的位置,將默認的80端口號改成其它端口號,如 8088。因為默認的80端口號很容易被其它應用程序占用。

然后,通過上面命令重啟nginx。訪問:http://127.0.0.1:8088/

詳解通過Nginx部署Django(基于ubuntu)  

如果出現如上圖,說明Nginx啟動成功。 

二、安裝uwsgi                                                           

 通過pip安裝uwsgi。

?
1
root@ubuntu:/etc# python3 -m pip install uwsgi

測試uwsgi,創建test.py文件:

?
1
2
3
def application(env, start_response):
  start_response('200 OK', [('Content-Type','text/html')])
  return [b"Hello World"]

通過uwsgi運行該文件。

?
1
fnngj@ubuntu:~/pydj$ uwsgi --http :8001 --wsgi-file test.py

詳解通過Nginx部署Django(基于ubuntu)

接下來配置Django與uwsgi連接。此處,假定的我的django項目位置為:/home/fnngj/pydj/myweb

 

復制代碼 代碼如下:

fnngj@ubuntu:~/pydj$ uwsgi --http :8001 --chdir /home/fnngj/pydj/myweb/ --wsgi-file myweb/wsgi.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191

 

常用選項:

http : 協議類型和端口號

processes : 開啟的進程數量

workers : 開啟的進程數量,等同于processes(官網的說法是spawn the specified number ofworkers / processes)

chdir : 指定運行目錄(chdir to specified directory before apps loading)

wsgi-file : 載入wsgi-file(load .wsgi file)

stats : 在指定的地址上,開啟狀態服務(enable the stats server on the specified address)

threads : 運行線程。由于GIL的存在,我覺得這個真心沒啥用。(run each worker in prethreaded mode with the specified number of threads)

master : 允許主進程存在(enable master process)

daemonize : 使進程在后臺運行,并將日志打到指定的日志文件或者udp服務器(daemonize uWSGI)。實際上最常用的,還是把運行記錄輸出到一個本地文件上。

pidfile : 指定pid文件的位置,記錄主進程的pid號。

vacuum : 當服務器退出的時候自動清理環境,刪除unix socket文件和pid文件(try to remove all of the generated file/sockets)

三、Nginx+uwsgi+Django                                        

接下來,我們要將三者結合起來。首先羅列一下項目的所需要的文件:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
myweb/
 
├── manage.py
 
├── myweb/
 
│  ├── __init__.py
 
│  ├── settings.py
 
│  ├── urls.py
 
│  └── wsgi.py
 
└── myweb_uwsgi.ini

在我們通過Django創建myweb項目時,在子目錄myweb下已經幫我們生成的 wsgi.py文件。所以,我們只需要再創建myweb_uwsgi.ini配置文件即可,當然,uwsgi支持多種類型的配置文件,如xml,ini等。此處,使用ini類型的配置。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# myweb_uwsgi.ini file
[uwsgi]
 
# Django-related settings
 
socket = :8000
 
# the base directory (full path)
chdir      = /home/fnngj/pydj/myweb
 
# Django s wsgi file
module     = myweb.wsgi
 
# process-related settings
# master
master     = true
 
# maximum number of worker processes
processes    = 4
 
# ... with appropriate permissions - may be needed
# chmod-socket  = 664
# clear environment on exit
vacuum     = true

這個配置,其實就相當于在上一小節中通過wsgi命令,后面跟一堆參數的方式,給文件化了。

socket  指定項目執行的端口號。

chdir   指定項目的目錄。

module  myweb.wsgi ,可以這么來理解,對于myweb_uwsgi.ini文件來說,與它的平級的有一個myweb目錄,這個目錄下有一個wsgi.py文件。

其它幾個參數,可以參考上一小節中參數的介紹。

接下來,切換到myweb項目目錄下,通過uwsgi命令讀取myweb_uwsgi.ini文件啟動項目。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
fnngj@ubuntu:~$ cd /home/fnngj/pydj/myweb/
fnngj@ubuntu:~/pydj/myweb$ uwsgi --ini myweb_uwsgi.ini
[uWSGI] getting INI configuration from myweb_uwsgi.ini
*** Starting uWSGI 2.0.12 (32bit) on [Sat Mar 12 13:05:06 2016] ***
compiled with version: 4.8.4 on 26 January 2016 06:14:41
os: Linux-3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:18:00 UTC 2015
nodename: ubuntu
machine: i686
clock source: unix
detected number of CPU cores: 2
current working directory: /home/fnngj/pydj/myweb
detected binary path: /usr/local/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
chdir() to /home/fnngj/pydj/myweb
your processes number limit is 15962
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uwsgi socket 0 bound to TCP address :8000 fd 3
Python version: 3.4.3 (default, Oct 14 2015, 20:37:06) [GCC 4.8.4]
*** Python threads support is disabled. You can enable it with --enable-threads ***
Python main interpreter initialized at 0x8b52dc0
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 319920 bytes (312 KB) for 4 cores
*** Operational MODE: preforking ***
WSGI app 0 (mountpoint='') ready in 1 seconds on interpreter 0x8b52dc0 pid: 7158 (default app)
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 7158)
spawned uWSGI worker 1 (pid: 7160, cores: 1)
spawned uWSGI worker 2 (pid: 7161, cores: 1)
spawned uWSGI worker 3 (pid: 7162, cores: 1)
spawned uWSGI worker 4 (pid: 7163, cores: 1)

注意查看uwsgi的啟動信息,如果有錯,就要檢查配置文件的參數是否設置有誤。

再接下來要做的就是修改nginx.conf配置文件。打開/etc/nginx/nginx.conf文件,添加如下內容。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
……
server {
  listen     8099;
  server_name  127.0.0.1
  charset UTF-8;
  access_log   /var/log/nginx/myweb_access.log;
  error_log    /var/log/nginx/myweb_error.log;
 
  client_max_body_size 75M;
 
  location / {
    include uwsgi_params;
    uwsgi_pass 127.0.0.1:8000;
    uwsgi_read_timeout 2;
  
  location /static {
    expires 30d;
    autoindex on;
    add_header Cache-Control private;
    alias /home/fnngj/pydj/myweb/static/;
   }
 }
……

 listen 指定的是nginx代理uwsgi對外的端口號。

server_name  網上大多資料都是設置的一個網址(例,www.example.com),我這里如果設置成網址無法訪問,所以,指定的到了本機默認ip。

在進行配置的時候,我有個問題一直想不通。nginx到底是如何uwsgi產生關聯?,F在看來大概最主要的就是這兩行配置。

include uwsgi_params;

uwsgi_pass 127.0.0.1:8000;

include 必須指定為uwsgi_params;而uwsgi_pass指的本機IP的端口與myweb_uwsgi.ini配置文件中的必須一直。

現在重新啟動nginx,翻看上面重啟動nginx的命令。然后,訪問:http://127.0.0.1:8099/

通過這個IP和端口號的指向,請求應該是先到nginx的。如果你在頁面上執行一些請求,就會看到,這些請求最終會轉到uwsgi來處理。

詳解通過Nginx部署Django(基于ubuntu)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/fnng/p/5268633.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 毛片免费在线视频 | 久久久久国产一级毛片高清片 | 亚洲免费观看 | 韩国久久| 亚洲欧美中文字幕 | 亚洲精品成人av | 国产一区二区在线播放 | 精品自拍视频在线观看 | 日韩在线观看中文字幕 | 欧美一区永久视频免费观看 | 成人免费小视频 | 久久久久久国产一级毛片高清版 | 黄色免费在线观看 | 综合精品 | 综合一区| 一区二区三区四区在线 | 一区二区亚洲 | 色综合欧美 | 在线观看日韩 | 成人免费视频网站在线观看 | 亚洲视频自拍 | 日韩高清国产一区在线 | 精品一区二区av | 亚洲福利二区 | 视频一区中文字幕 | 天天精品视频免费观看 | 精品视频一区二区三区 | 欧美精品导航 | 亚洲视频一区二区三区 | 亚洲精品久久久久久下一站 | 久热国产视频 | 日韩高清国产一区在线 | 亚洲在线中文字幕 | 在线欧美视频 | 成人av一区二区三区 | 日韩欧美一区在线 | 亚洲午夜精品视频 | 互换娇妻呻吟hd中文字幕 | 精品伦精品一区二区三区视频 | 黄版视频在线观看 | 免费黄色大片 |