【问题标题】:Mono 3.0, Ubuntu 12.10, Nginx and ServiceStackMono 3.0、Ubuntu 12.10、Nginx 和 ServiceStack
【发布时间】:2013-01-13 08:53:47
【问题描述】:

根据 ServiceStack 网站,使用 Mono 在 Linux 上启动和运行 ServiceStack 应该很容易。我已经在系统(Ubuntu 12.10)上安装了 nginx、mono 3.0 和 fastcgi。我使用this 教程让 Nginx 和 fastcgi 运行。在 MonoDevelop 中,我右键单击该项目,然后是 Tools -> Deploy to web。这会生成我要部署的文件。然后我将 dll 复制到 Ubuntu 上的 /var/www/project_folder 中。接下来我启动了 Nginx 和 fastcgi。我的 web.config 文件如下所示:

<?xml version="1.0"?>
<configuration>
   <system.web>
      <customErrors mode="Off"/>
      <httpHandlers>
         <add path="*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" />
      </httpHandlers>
      <compilation>
         <assemblies>
            <add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
         </assemblies>
      </compilation>
   </system.web>
   <!-- Required for IIS 7.0 (and above?) -->
   <system.webServer>
      <validation validateIntegratedModeConfiguration="false" />
         <handlers>
            <add path="*" name="ServiceStack.Factory" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" />
         </handlers>
    </system.webServer>
</configuration>

我还没有将 XSP 添加到服务器。 当我转到服务器上的网页(远程地址)时,我收到一条错误消息,告诉我它找不到 ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory。 web.config 文件与包含此 ServiceStackHttpHandlerFactory 的 dll 位于同一文件夹中。

你知道是什么原因造成的吗?

【问题讨论】:

  • 请分享你用来运行FastCGI服务器的命令行参数
  • fastcgi-mono-server4 /applications=/:/var/www/myapp /filename=/tmp/SOCK-ServiceStack /socket=unix
  • 你是从 web.config 文件所在的同一个文件夹中运行它的,对吧?
  • 是的,我尝试从同一个文件夹和文件夹外运行。结果相同:-(
  • @Fossmo - 根据您的评论,答案似乎解决了您的问题 - 为什么不接受它?

标签: ubuntu nginx mono servicestack


【解决方案1】:

首先,如果您还没有阅读它们,您应该阅读 wiki 文档以获取 ServiceStack running on Mono/Linux

您复制了哪些 ServiceStack.dll 以及从哪里获得它们? ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory 是 ASP.NET 入口点,它在核心 ServiceStack.dll 二进制文件中可用。

如果找不到入口点 ServiceStack.dll,那么在 Mono FastCGI/ASP.NET 主机中查找 ServiceStack .dll 时一定有问题,在 ASP.NET 应用程序中它应该在 /bin相对于您的 Web.Config 所在位置的文件夹。如果所有文件都在正确的位置,则可能是文件权限问题。

【讨论】:

  • 我查看了在 mono/linux 上运行的 ServiceStack,并遵循了这个位置的描述:github.com/ServiceStack/ServiceStack/wiki/…。但是,不是运气。服务器的响应是“502 Bad Gateway”。这是我的配置:Ubuntu 12.04、nginx 1.1.19、mono 2.10.8。该解决方案在我的 Mac (MonoDevelop) 上运行没有问题。不同之处在于开发系统上的 Mono 3.0。
  • 来自 nginx 的错误网关掩盖了 Mono/FastCGI 中的真正问题。要找到问题,请尝试从根目录运行 xsp4 以查看它是否启动,否则在您的 FastCGI 设置中指定一个日志文件,例如fastcgi-mono-server4 /logfile=...。还要确保您使用的是 xsp4 和 fastcgi-mono-server4 的 .NET 4.0 版本
  • 当然,坏网关似乎与最初发布的问题不同。要尝试解决 502,您可能希望在调用 fastcgi-mono-server4 之后 chmod 777 您的套接字文件
  • 是的,这就是问题所在 :-) 在 /tmp/SOCK-ServiceStack 上设置正确的权限后,页面显示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-09
  • 2013-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多