Fab Deploy错误:'“错误日志:[emerg] 8780#0:无效的服务器名称或通配符”mydomain * .mydomain.com“在0.0.0.0:80”'

时间:2015-01-22 02:32:23

标签: django ubuntu nginx gunicorn supervisor

我已经被困在这个部署错误上好几天了,求助!我们的项目是在部署cd到/ home / django / django_project目录的最后一步,并运行" fab deploy"。我们的项目错误在supervisorctl上启动my_app:gunicorn命令在我们的" fabfile.py"使用以下错误代码。:

"[555.555.55.555] out: my_app:gunicorn_my_app: ERROR (abnormal termination) "

以下是错误日志。

/home/django/django_project/deploy

:: Important configuration files in this directory **nginx.conf**

/etc/supervisor/conf.d

:: Important configuration files in this directory **my_app.conf**

/var/log/supervisor

:: Important error log files in this directory **supervisord.log**

"INFO spawned: 'gunicorn_my_app' with pid 11575
INFO exited: gunicorn_my_app (exit status 1; not expected)
INFO gave up: gunicorn_my_app entered FATAL state, too many start retries too quickly"
/var/log/nginx

:: Important error log files in this directory **error.log.1**


Error log:  2015/01/02 18:21:42 [emerg] 8780#0: invalid server name or wildcard "mydomain*.mydomain.com" on 0.0.0.0:80

我在nginx.conf文件中更改了服务器名称变量,但出于某种原因,在运行此命令时它尚未更新。

1 个答案:

答案 0 :(得分:0)

我可能无法提供帮助,但我会把一些东西扔出去。

你还没有为nginx或gunicorn提供任何配置,这会有所帮助。也许你可以提供这些,以便别人可以看看它们?

Gunicorn:

从日志开始,似乎枪手正在尝试发射过程中的某个地方。也许配置错误可能会阻止服务器启动。如果你还没有这样做,那么值得检查你的配置是犹太洁食。

From the gunicorn configuration documentation:

  

要在使用命令行或配置文件时检查配置,可以运行以下命令:

$ gunicorn my_app:gunicorn_my_app --check-config
  

它还可以让您知道您的应用程序是否可以启动。

如果一切都恢复正常,那么你可以将其排除在外并进行深入研究。 Gunicorn有一个调试选项,可以让你详细看到究竟出了什么问题。文档说它可以使用--debug选项完成,如下所示:

$ gunicorn my_app:gunicorn_my_app --debug

希望这能让你更接近理解什么是什么。

Nginx的:

我不知道您是否每次尝试启动服务器时都会收到nginx错误,但我会抓住我在错误中看到的内容日志中。

Nginx仅在名称的开头或结尾支持通配符服务器名称。

From the nginx documentation on server names:

  

通配符名称可能仅在名称的开头或结尾包含星号,并且仅在点边框上包含星号。名称“www。 .example.org”和“w .example.org”无效。但是,可以使用正则表达式指定这些名称,例如“〜^ www .. +。example.org $”和“〜^ w。 .example.org $”。星号可以匹配多个名称部分。名称“ .example.org”不仅匹配www.example.org,还匹配www.sub.example.org。

要监听mydomain * .mydomain.com,您可以在nginx.conf文件的服务器块中的server_name指令中使用正则表达式。

以下正则表达式将实现此目的:

^mydomain(\S*)\.mydomain\.com$

你可以把它放在你的nginx.conf中,如下所示:

server {
    server_name     ~^mydomain(\S*)\.mydomain\.com$;
}

在保存对nginx.conf的任何更改后,始终运行此命令是一种很好的做法:

$ sudo nginx -t

就像gunicorn的--check-config一样,它解析你的配置文件以检查没有错误,它会告诉你是否有任何需要修复。

道歉,如果这个答案最终没有用。