成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何在Linux上使用Nginx和Gunicorn托管Django應用

系統 Linux 系統運維
托管 Django Web 應用程序相當簡單,雖然它比標準的 PHP 應用程序更復雜一些。 讓 Web 服務器對接 Django 的方法有很多。 Gunicorn 就是其中最簡單的一個。Gunicorn(Green Unicorn 的縮寫)在你的 Web 服務器 Django 之間作為中間服務器使用,在這里,Web 服務器就是 Nginx。 Gunicorn 服務于應用程序,而 Nginx 處理靜態內容。

[[189021]]

介紹

托管 Django Web 應用程序相當簡單,雖然它比標準的 PHP 應用程序更復雜一些。 讓 Web 服務器對接 Django 的方法有很多。 Gunicorn 就是其中最簡單的一個。

Gunicorn(Green Unicorn 的縮寫)在你的 Web 服務器 Django 之間作為中間服務器使用,在這里,Web 服務器就是 Nginx。 Gunicorn 服務于應用程序,而 Nginx 處理靜態內容。

Gunicorn

安裝

使用 Pip 安裝 Gunicorn 是超級簡單的。 如果你已經使用 virtualenv 搭建好了你的 Django 項目,那么你就有了 Pip,并且應該熟悉 Pip 的工作方式。 所以,在你的 virtualenv 中安裝 Gunicorn。

  1. $ pip install gunicorn 

配置

Gunicorn 最有吸引力的一個地方就是它的配置非常簡單。處理配置***的方法就是在 Django 項目的根目錄下創建一個名叫 Gunicorn 的文件夾。然后在該文件夾內,創建一個配置文件。

在本篇教程中,配置文件名稱是 gunicorn-conf.py。在該文件中,創建類似于下面的配置:

  1. import multiprocessing 
  2. bind = 'unix:///tmp/gunicorn1.sock' 
  3. workers = multiprocessing.cpu_count() * 2 + 1 
  4. reload = True 
  5. daemon = True 

在上述配置的情況下,Gunicorn 會在 /tmp/ 目錄下創建一個名為 gunicorn1.sock 的 Unix 套接字。 還會啟動一些工作進程,進程數量相當于 CPU 內核數量的 2 倍。 它還會自動重新加載并作為守護進程運行。

運行

Gunicorn 的運行命令有點長,指定了一些附加的配置項。 最重要的部分是將 Gunicorn 指向你項目的 .wsgi 文件。

  1. gunicorn -c gunicorn/gunicorn-conf.py -D --error-logfile gunicorn/error.log yourproject.wsgi 

上面的命令應該從項目的根目錄運行。 -c 選項告訴 Gunicorn 使用你創建的配置文件。 -D 再次指定 gunicorn 為守護進程。 ***一部分指定 Gunicorn 的錯誤日志文件在你創建 Gunicorn 文件夾中的位置。 命令結束部分就是為 Gunicorn 指定 .wsgi 文件的位置。

Nginx

現在 Gunicorn 配置好了并且已經開始運行了,你可以設置 Nginx 連接它,為你的靜態文件提供服務。 本指南假定你已經配置好了 Nginx,而且你通過它托管的站點使用了單獨的 server 塊。 它還將包括一些 SSL 信息。

如果你想知道如何讓你的網站獲得免費的 SSL 證書,請查看我們的 Let'sEncrypt 指南。

  1. # 連接到 Gunicorn 
  2. upstream yourproject-gunicorn { 
  3.     server unix:/tmp/gunicorn1.sock fail_timeout=0; 
  4. # 將未加密的流量重定向到加密的網站 
  5. server { 
  6.     listen       80; 
  7.     server_name  yourwebsite.com; 
  8.     return       301 https://yourwebsite.com$request_uri; 
  9. # 主服務塊 
  10. server { 
  11.     # 設置監聽的端口,指定監聽的域名 
  12.     listen 443 default ssl; 
  13.     client_max_body_size 4G; 
  14.     server_name yourwebsite.com; 
  15.     # 指定日志位置 
  16.     access_log /var/log/nginx/yourwebsite.access_log main; 
  17.     error_log /var/log/nginx/yourwebsite.error_log info; 
  18.     # 告訴 nginx 你的 ssl 證書 
  19.     ssl on
  20.     ssl_certificate /etc/letsencrypt/live/yourwebsite.com/fullchain.pem; 
  21.     ssl_certificate_key /etc/letsencrypt/live/yourwebsite.com/privkey.pem; 
  22.     # 設置根目錄 
  23.     root /var/www/yourvirtualenv/yourproject; 
  24.     # 為 Nginx 指定靜態文件路徑 
  25.     location /static/ { 
  26.         # Autoindex the files to make them browsable if you want 
  27.         autoindex on
  28.         # The location of your files 
  29.         alias /var/www/yourvirtualenv/yourproject/static/; 
  30.         # Set up caching for your static files 
  31.         expires 1M; 
  32.         access_log off
  33.         add_header Cache-Control "public"
  34.         proxy_ignore_headers "Set-Cookie"
  35.     } 
  36.     # 為 Nginx 指定你上傳文件的路徑 
  37.     location /media/ { 
  38.         Autoindex if you want 
  39.         autoindex on
  40.         # The location of your uploaded files 
  41.         alias /var/www/yourvirtualenv/yourproject/media/; 
  42.         # Set up aching for your uploaded files 
  43.         expires 1M; 
  44.         access_log off
  45.         add_header Cache-Control "public"
  46.         proxy_ignore_headers "Set-Cookie"
  47.     } 
  48.     location / { 
  49.         # Try your static files firstthen redirect to Gunicorn 
  50.         try_files $uri @proxy_to_app; 
  51.     } 
  52.     # 將請求傳遞給 Gunicorn 
  53.     location @proxy_to_app { 
  54.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
  55.         proxy_set_header Host $http_host; 
  56.         proxy_redirect off
  57.         proxy_pass   http://njc-gunicorn; 
  58.     } 
  59.     # 緩存 HTML、XML 和 JSON 
  60.     location ~* \.(html?|xml|json)$ { 
  61.         expires 1h; 
  62.     } 
  63.     # 緩存所有其他的靜態資源 
  64.     location ~* \.(jpg|jpeg|png|gif|ico|css|js|ttf|woff2)$ { 
  65.         expires 1M; 
  66.         access_log off
  67.         add_header Cache-Control "public"
  68.         proxy_ignore_headers "Set-Cookie"
  69.     } 

配置文件有點長,但是還可以更長一些。其中重點是指向 Gunicorn 的 upstream 塊以及將流量傳遞給 Gunicorn 的 location 塊。大多數其他的配置項都是可選,但是你應該按照一定的形式來配置。配置中的注釋應該可以幫助你了解具體細節。

保存文件之后,你可以重啟 Nginx,讓修改的配置生效。

  1. # systemctl restart nginx 

一旦 Nginx 在線生效,你的站點就可以通過域名訪問了。

結語

如果你想深入研究,Nginx 可以做很多事情。但是,上面提供的配置是一個很好的開始,并且你可以用于實踐中。 如果你見慣了 Apache 和臃腫的 PHP 應用程序,像這樣的服務器配置的速度應該是一個驚喜。 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2018-08-06 09:30:00

LinuxPbcopyPbpaste

2022-09-19 08:45:52

Telnet系統Linux

2019-01-07 09:50:06

Linuxtarball命令

2019-11-26 16:58:51

Linuxpkgsrc

2023-01-17 07:40:59

LinuxAppImage應用程序

2021-10-02 10:10:47

LinuxBusyBox命令

2017-05-10 09:40:57

Ubuntupm2Nginx

2020-08-24 12:37:54

Linuxxargs命令

2018-03-28 08:30:01

Linux倉庫應用程序

2019-08-13 15:39:27

Linux應用程序

2022-12-27 08:51:31

WebDebian 11

2021-06-09 09:36:18

DjangoElasticSearLinux

2020-11-22 07:20:15

LinuxEtcherUSB

2022-08-10 13:12:04

Linuxcat命令

2019-08-14 09:42:06

LinuxElasticsearKibana

2016-08-02 10:34:17

LinuxWindows雙啟動

2009-04-16 10:15:34

Windows AzuSilverLight托管

2022-08-12 08:38:52

FFmpegLinux命令

2018-06-27 10:50:16

UbuntuexFAT驅動器

2021-08-03 14:33:53

cron定時器Linux命令
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩在线免费观看视频 | 国产亚洲精品美女久久久久久久久久 | 亚洲品质自拍视频 | 欧美一区两区 | 在线一区| 国产a视频 | 国产一二三区免费视频 | 日韩欧美高清dvd碟片 | 久草网址| 国产精品亚洲精品日韩已方 | 一级黄色片免费 | www.亚洲精品 | 国产一区二区三区www | 亚洲一区二区三区在线 | 高清18麻豆 | 日韩图区 | 2018天天干天天操 | 国产成人99久久亚洲综合精品 | 国产精品永久免费视频 | 精品一区二区三区免费毛片 | 91视频一区二区 | 日韩精品一区二区三区四区 | 九七午夜剧场福利写真 | 亚洲精品在线91 | 国产成人99久久亚洲综合精品 | 久久精品91久久久久久再现 | 国产电影一区二区 | 一区二区三区精品视频 | 天天草天天干 | 久久精品视频在线免费观看 | 欧美日韩电影一区二区 | 在线视频一区二区 | 久久久久亚洲 | 黄色在线观看网站 | 一区二区三区免费 | 久热中文字幕 | 欧美区在线 | av入口| 亚洲一区二区中文字幕 | 国产一级片在线播放 | 一级毛片免费 |