在Ubuntu 14.04可靠服务器上使用nginx和gunicorn的多个Django应用程序

问题描述 投票:1回答:2

我是服务器配置新手。我在ubuntu 14.04可靠服务器上使用gunicorn和nginx做一些谷歌和配置django应用程序。对于第一个django应用程序,我使用端口号80,我的配置文件是:

/etc/init/个unicorn.conf :-

description "Gunicorn application server handling myproject"
start on runlevel [2345]
stop on runlevel [!2345]
respawn
setuid 
setgid www-data
chdir /home/myserver/my_virtualenv_path/myproject
exec /home/myserver/my_virtualenv_path/myproject/gunicorn --workers 2 --bind unix:/home/myserver/my_virtualenv_path/myproject/myproject.sock myproject.wsgi:application

我的第一个django应用程序的nginx配置文件:

/ etc / nginx / site-available: -

server {
    listen 80;
    server_name myapp.com;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/myserver/my_virtualenv_path/myproject;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/myserver/my_virtualenv_path/myproject/myproject.sock;
    }
}

之后,我将站点链接到站点启用。接下来,我在第一个django应用程序virtualenv中创建一个新的django应用程序,如:

FirstApp_Virtual_Env \ first_djangoapp \ app文件

FirstApp_Virtual_Env \ Second_djangoapp \ app文件

现在我为第二个app配置gunicorn,如:

/ etc / init / gunicorn_t: -

description "Gunicorn application server handling myproject2"
    start on runlevel [2345]
    stop on runlevel [!2345]
    respawn
    setuid 
    setgid www-data
    chdir /home/myserver/my_virtualenv_path/myproject2
    exec /home/myserver/my_virtualenv_path/myproject/gunicorn --workers 2 --bind unix:/home/myserver/my_virtualenv_path/myproject2/myproject2.sock myproject2.wsgi:application

我的第二个django应用程序的nginx配置文件:

/ etc / nginx / site-available: -

server {
    listen 8000;
    server_name myapp2.com;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/myserver/my_virtualenv_path/myproject2;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/myserver/my_virtualenv_path/myproject2/myproject2.sock;
    }
}

之后,我将网站链接到网站启用。

现在这是我的问题:当我输入myapp.com然后我的第一个django应用程序工作正常但是第二个应用程序当我输入myapp2.com它显示nginx页面时,当我输入myapp2.com:8000它工作正常。我做了一些谷歌,但我无法找到解决方案。我是新手,所以请给我一个暗示,如何纠正我的问题。谢谢你的时间。

python django ubuntu nginx
2个回答
1
投票

您将nginx配置为在端口8000上提供myapp2.com:

server {
    listen 8000;
    server_name myapp2.com;
    # ...
}

那么为什么你会期望nginx在端口80上提供服务呢?

[编辑]我认为上述内容足以使问题清楚但显然不是,所以让我们重新开始:

您将nginx配置为在端口8000上提供myapp2.com(您的conf中的listen 8000;行,因此nginx执行您要求的操作:它在端口8000上提供myapp2.com。

如果你想让nginx在端口80上提供myapp2.com(这是http的隐含默认端口,所以你不必在你的网址中明确指定它 - IOW'http://myapp2.com/'是'http://myapp2.com:80/'的快捷方式),所有你要做的是配置nginx在端口80上提供服务,就像你为'myapp.com'所做的那样:用listen 8000;替换listen 80;


1
投票

如果您没有输入端口,您的客户端将自动使用端口80。

键入myapp2.com与键入myapp2.com:80相同

myapp2.com没有在80端口运行,它在8000端口上运行。

当你投入生产时,可以将myapp2.com重定向到端口8000而无需显式输入。您使用DNS name server注册myapp2.com并将其指向myapp2.com:8000

© www.soinside.com 2019 - 2024. All rights reserved.