简介托管DjangoWeb应用程序相当简单,尽管它比标准的PHP应用程序要复杂一些。有许多方法可以将Web服务器与Django连接起来。Gunicorn是其中最简单的一种。Gunicorn(GreenUnicorn的缩写)用作Web服务器Django之间的中间服务器,在这种情况下,Web服务器是Nginx。Gunicorn为应用程序提供服务,而Nginx处理静态内容。Gunicorn安装使用Pip安装Gunicorn非常简单。如果您已经使用virtualenv设置了Django项目,那么您就拥有了Pip,并且应该熟悉Pip的工作原理。所以,在你的virtualenv中安装Gunicorn。$pipinstallgunicorn配置GunicornGunicorn最吸引人的方面之一是它的配置非常简单。处理配置黑客的方法是在Django项目的根目录中创建一个名为Gunicorn的文件夹。然后在该文件夹中,创建一个配置文件。在本教程中,配置文件名为gunicorn-conf.py。在此文件中,创建类似于以下的配置:importmultiprocessingbind='unix:///tmp/gunicorn1.sock'workers=multiprocessing.cpu_count()*2+1reload=Truedaemon=True在上述配置的情况下,Gunicorn将在/tmp/目录中创建一个名为gunicorn1.sock的Unix套接字。还启动了一些工作进程,等于CPU核心数的两倍。它还会自动重新加载并作为守护进程运行。运行Gunicorn的run命令有点长,指定了一些额外的配置项。最重要的部分是将Gunicorn指向项目的.wsgi文件。gunicorn-cgunicorn/gunicorn-conf.py-D--error-logfilegunicorn/error.logyyourproject.wsgi上面的命令应该从项目的根目录运行。-c选项告诉Gunicorn使用您创建的配置文件。-D再次将gunicorn指定为守护进程。***部分指定Gunicorn的错误日志文件在您创建Gunicorn的文件夹中的位置。命令的结尾是指定Gunicorn的.wsgi文件的位置。Nginx现在Gunicorn已配置并运行,您可以设置Nginx以连接到它并提供您的静态文件。本指南假定您已经配置了Nginx,并且您通过它托管的站点使用单独的服务器块。它还将包括一些SSL信息。如果您想知道如何为您的网站获取免费的SSL证书,请查看我们的Let'sEncrypt指南。#连接到Gunicornupstreamyourproject-gunicorn{serverunix:/tmp/gunicorn1.sockfail_timeout=0;}#将未加密的流量重定向到加密的网站服务器{listen80;server_nameyourwebsite.com;return301https://yourwebsite.com$request_uri;}#Main服务块server{#设置监听端口,指定监听域名listen443defaultssl;client_max_body_size4G;server_nameyourwebsite.com;#指定日志位置access_log/var/log/nginx/yourwebsite.access_logmain;error_log/var/log/nginx/yourwebsite.error_loginfo;#告诉nginx你的ssl证书sslon;ssl_certificate/etc/letsencrypt/live/yourwebsite.com/fullchain.pem;ssl_certificate_key/etc/letsencrypt/live/yourwebsite.com/privkey.pem;#set根目录root/var/www/yourvirtualenv/yourproject;#为Nginxlocation/static/{#Autoindexthefilestomakethembrowsableifyouwantautoindexon;#Thelocationofyourfilesalias/var/www/yourvirtualenv/yourproject/static/;#Setupcachingforyourstaticfilesexpires1M;access_logoff;add-header_proheaders"pachelic"Set-Cookie";}#指定你上传文件的路径为Nginxlocation/media/{Autoindexifyouwantautoindexon;#Thelocationofyouruploadedfilesalias/var/www/yourvirtualenv/yourproject/media/;#Setupachingforyouruploadedfilesexpires1M;access_logoff;add_headerCache-Control"public";proxy_ignore_headers"Set-Cookie";}location/{#Tryyourstaticunfilesfirst,thenredirect_app}将请求传递给Gunicornlocation@proxy_to_app{proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;proxy_set_headerHost$http_host;proxy_redirectoff;proxy_passhttp://njc-gunicorn;}#CacheHTML,XMLandJSONlocation~*\.(html?|xml|json)${expires1h;}#缓存其他所有静态资源位置~*\.(jpg|jpeg|png|gif|ico|css|js|ttf|woff2)${expires1M;access_logoff;add_headerCache-Control"public";proxy_ignore_headers"Set-Cookie";}}配置文件有点长,但可以更长。重点是指向Gunicorn的上游块和将流量传递给Gunicorn的位置块。大多数其他配置项是可选的,但您应该以一定的形式配置它们。配置中的注释应该可以帮助您了解细节。保存文件后,可以重启Nginx使修改后的配置生效。#systemctlrestartnginx一旦Nginx上线,您的站点将可以通过您的域名访问。结论如果你想深入挖掘,Nginx可以做很多事情。但是,上面提供的配置是一个好的开始,您可以在实践中使用它。如果您习惯于Apache和臃肿的PHP应用程序,那么像这样的服务器配置的速度应该会令人惊喜。
