新聞中心
本篇內(nèi)容主要講解“怎么在Linux上托管Django應(yīng)用”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“怎么在Linux上托管Django應(yīng)用”吧!
成都創(chuàng)新互聯(lián)公司-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比蒙陰網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式蒙陰網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋蒙陰地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴(lài)。
介紹
托管 Django Web 應(yīng)用程序相當(dāng)簡(jiǎn)單,雖然它比標(biāo)準(zhǔn)的 PHP 應(yīng)用程序更復(fù)雜一些。 讓 Web 服務(wù)器對(duì)接 Django 的方法有很多。 Gunicorn 就是其中最簡(jiǎn)單的一個(gè)。
Gunicorn(Green Unicorn 的縮寫(xiě))在你的 Web 服務(wù)器 Django 之間作為中間服務(wù)器使用,在這里,Web 服務(wù)器就是 Nginx。 Gunicorn 服務(wù)于應(yīng)用程序,而 Nginx 處理靜態(tài)內(nèi)容。
Gunicorn
安裝
使用 Pip 安裝 Gunicorn 是超級(jí)簡(jiǎn)單的。 如果你已經(jīng)使用 virtualenv 搭建好了你的 Django 項(xiàng)目,那么你就有了 Pip,并且應(yīng)該熟悉 Pip 的工作方式。 所以,在你的 virtualenv 中安裝 Gunicorn。
$ pip install gunicorn
配置
Gunicorn 最有吸引力的一個(gè)地方就是它的配置非常簡(jiǎn)單。處理配置***的方法就是在 Django 項(xiàng)目的根目錄下創(chuàng)建一個(gè)名叫 Gunicorn 的文件夾。然后在該文件夾內(nèi),創(chuàng)建一個(gè)配置文件。
在本篇教程中,配置文件名稱(chēng)是 gunicorn-conf.py。在該文件中,創(chuàng)建類(lèi)似于下面的配置:
import multiprocessing bind = 'unix:///tmp/gunicorn1.sock' workers = multiprocessing.cpu_count() * 2 + 1 reload = True daemon = True
在上述配置的情況下,Gunicorn 會(huì)在 /tmp/ 目錄下創(chuàng)建一個(gè)名為 gunicorn1.sock 的 Unix 套接字。 還會(huì)啟動(dòng)一些工作進(jìn)程,進(jìn)程數(shù)量相當(dāng)于 CPU 內(nèi)核數(shù)量的 2 倍。 它還會(huì)自動(dòng)重新加載并作為守護(hù)進(jìn)程運(yùn)行。
運(yùn)行
Gunicorn 的運(yùn)行命令有點(diǎn)長(zhǎng),指定了一些附加的配置項(xiàng)。 最重要的部分是將 Gunicorn 指向你項(xiàng)目的 .wsgi 文件。
gunicorn -c gunicorn/gunicorn-conf.py -D --error-logfile gunicorn/error.log yourproject.wsgi
上面的命令應(yīng)該從項(xiàng)目的根目錄運(yùn)行。 -c 選項(xiàng)告訴 Gunicorn 使用你創(chuàng)建的配置文件。 -D 再次指定 gunicorn 為守護(hù)進(jìn)程。 ***一部分指定 Gunicorn 的錯(cuò)誤日志文件在你創(chuàng)建 Gunicorn 文件夾中的位置。 命令結(jié)束部分就是為 Gunicorn 指定 .wsgi 文件的位置。
Nginx
現(xiàn)在 Gunicorn 配置好了并且已經(jīng)開(kāi)始運(yùn)行了,你可以設(shè)置 Nginx 連接它,為你的靜態(tài)文件提供服務(wù)。 本指南假定你已經(jīng)配置好了 Nginx,而且你通過(guò)它托管的站點(diǎn)使用了單獨(dú)的 server 塊。 它還將包括一些 SSL 信息。
如果你想知道如何讓你的網(wǎng)站獲得免費(fèi)的 SSL 證書(shū),請(qǐng)查看我們的 Let'sEncrypt 指南。
# 連接到 Gunicorn upstream yourproject-gunicorn { server unix:/tmp/gunicorn1.sock fail_timeout=0; } # 將未加密的流量重定向到加密的網(wǎng)站 server { listen 80; server_name yourwebsite.com; return 301 https://yourwebsite.com$request_uri; } # 主服務(wù)塊 server { # 設(shè)置監(jiān)聽(tīng)的端口,指定監(jiān)聽(tīng)的域名 listen 443 default ssl; client_max_body_size 4G; server_name yourwebsite.com; # 指定日志位置 access_log /var/log/nginx/yourwebsite.access_log main; error_log /var/log/nginx/yourwebsite.error_log info; # 告訴 nginx 你的 ssl 證書(shū) ssl on; ssl_certificate /etc/letsencrypt/live/yourwebsite.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourwebsite.com/privkey.pem; # 設(shè)置根目錄 root /var/www/yourvirtualenv/yourproject; # 為 Nginx 指定靜態(tài)文件路徑 location /static/ { # Autoindex the files to make them browsable if you want autoindex on; # The location of your files alias /var/www/yourvirtualenv/yourproject/static/; # Set up caching for your static files expires 1M; access_log off; add_header Cache-Control "public"; proxy_ignore_headers "Set-Cookie"; } # 為 Nginx 指定你上傳文件的路徑 location /media/ { Autoindex if you want autoindex on; # The location of your uploaded files alias /var/www/yourvirtualenv/yourproject/media/; # Set up aching for your uploaded files expires 1M; access_log off; add_header Cache-Control "public"; proxy_ignore_headers "Set-Cookie"; } location / { # Try your static files first, then redirect to Gunicorn try_files $uri @proxy_to_app; } # 將請(qǐng)求傳遞給 Gunicorn location @proxy_to_app { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://njc-gunicorn; } # 緩存 HTML、XML 和 JSON location ~* \.(html?|xml|json)$ { expires 1h; } # 緩存所有其他的靜態(tài)資源 location ~* \.(jpg|jpeg|png|gif|ico|css|js|ttf|woff2)$ { expires 1M; access_log off; add_header Cache-Control "public"; proxy_ignore_headers "Set-Cookie"; } }
配置文件有點(diǎn)長(zhǎng),但是還可以更長(zhǎng)一些。其中重點(diǎn)是指向 Gunicorn 的 upstream 塊以及將流量傳遞給 Gunicorn 的 location 塊。大多數(shù)其他的配置項(xiàng)都是可選,但是你應(yīng)該按照一定的形式來(lái)配置。配置中的注釋?xiě)?yīng)該可以幫助你了解具體細(xì)節(jié)。
保存文件之后,你可以重啟 Nginx,讓修改的配置生效。
# systemctl restart nginx
一旦 Nginx 在線(xiàn)生效,你的站點(diǎn)就可以通過(guò)域名訪(fǎng)問(wèn)了。
到此,相信大家對(duì)“怎么在Linux上托管Django應(yīng)用”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!
網(wǎng)站欄目:怎么在Linux上托管Django應(yīng)用
當(dāng)前網(wǎng)址:http://fisionsoft.com.cn/article/gdjoed.html