正在尝试在Rackspace.com上设置服务器。
做了以下几件事:
- 安装Centos 6.3
- 安装Python 2.7
- 使用主页上的“快速入门”安装gunicorn:gunicorn.org/
在快速启动中,似乎初始化了一个“hello world”应用程序:
创建文件“myapp.py":
(tutorial) $ vi myapp.py
(tutorial) $ cat myapp.py
“myapp.py”的内容
def app(environ, start_response):
data = "Hello, World!\n"
start_response("200 OK", [
("Content-Type", "text/plain"),
("Content-Length", str(len(data)))
])
return iter([data])
由于我对服务器知之甚少,我不知道下一步该怎么办。我尝试在浏览器中输入服务器的IP地址,但似乎导致超时。
我不确定是否有:
- 需要安装的其他东西。Nginx在gunicorn网站的“deploy”下被提及。看起来Nginx是一个代理服务器,这让我很困惑,因为我以为Gunicorn是一个服务器。我不知道为什么我需要两个服务器。
- 需要在Gunicorn中配置的内容
- 需要在服务器本身上配置的内容
- 一些完全不同的事情需要去做,以实际满足一个请求,
下一步是什么?
太感谢你了!
4条答案
按热度按时间olmpazwi1#
由于gunicorn是您的案例中的Web服务器,Nginx将充当后台代理,将HTTP请求从Nginx传递到gunicorn。
所以,我将在这里列出在同一台机器上运行简单Nginx和Gunicorn配置的步骤。
*从nginx配置开始
转到你的**/etc/nginx/nginx.conf**,在http{}下确保你有:/etc/nginx/site-enabled;
现在,在/etc/nginx/sites-enabled/mysite.conf中包含一个文件,您将在其中代理您的请求到您的gunicorn应用程序。
好了,现在你所拥有的就是一个Nginx作为代理,所有发往127.0.0.1:80的请求都将被传递到127.0.0.1:8000。
通常我使用配置文件的方式,Gunicorn配置文件可以是普通的python文件。所以现在,在任何你喜欢的位置创建一个文件,我假设这个文件是**/etc/gunicorn/mysite.py**
好了,都设置好了。现在你所要做的就是启动服务器。
启动gunicorn并告诉它要使用哪个应用程序和哪个配置文件。从命令行和您的myapp.py文件所在的文件夹中运行:
现在,只启动nginx。
或
希望这对你有帮助。
6yjfywim2#
看看快速入门指南,你可能应该跑
这应该会产生一条看起来有点像这样的线:
还有其他人看看你能不能在这个地址上访问你的网站。
还要注意,
127.0.0.1
是IP地址;只能从主机本身访问。要让gunicorn绑定到另一个选项,按照Jan-Philip的建议,传递它--bind 0.0.0.0:80
。既然你提到了rackspace,你可能需要调整防火墙设置,以允许传入连接到所需的端口。
dxpyg8gm3#
您目前还没有开发Web应用程序。因此,我假设您现在的目标是建立一个开发环境。目前,使用大多数框架中包含的开发Web服务器开发Web应用程序,例如。 flask
无论使用什么框架,都要让开发Web服务器监听0.0.0.0,这样服务就能监听所有配置的网络接口,并确保端口对外开放(检查Rackspace设置)。
当您完成应用程序的开发或正在研究现有应用程序时,您必须以可靠的方式部署它。那么,nginx后面的gunicorn是一个选择。
我会大致回答你的问题。看来你得多读一点了:-)
Nginx是一个全功能的Web服务器。它因其性能和稳定性而受到赞赏。人们使用它来服务静态文件(不给动态Web应用程序增加此任务的负担),在必要时将请求转发到Web应用程序,用于SSL终止和负载平衡。请注意,这是一个不完整的图片。
gunicorn是一个服务WSGI应用的服务器。它主要管理实际执行Web应用程序的工作进程。
实际上,你可以用无数种方式优化你的Linux机器(为了性能,例如。增加文件描述符限制和安全性)。在gunicorn中,您可以配置工作进程的数量以及更多。如果你有nginx作为前端,甚至是另一个负载均衡器,这个有自己的配置。您可以看到,对于实际场景中的实际部署,您的设置可能会变得非常复杂。这可不是小事。
然而,对于使用WSGI应用程序,只需正确地设置您的开发框架,这在大多数情况下非常简单,并确保没有防火墙问题。仅此而已
nx7onnlm4#
您可能只需要绑定到localhost:8000(127.0.0.1:8000)以外的其他对象即可
假设你在一个python venv中,或者可以从命令行运行
gunicorn --help
,那么你应该看到一个选项:正如你所看到的,* 默认值是只绑定到localhost,127.0.0.1,所以如果你能够使用localhost地址访问端点,但不能从主机外部的地址访问它,例如从本地或远程网络 * 那么你的问题很可能通过简单地绑定到所有接口/地址来解决。
添加
--bind
参数。例如,我正在运行我的应用程序: