多个 MVC 应用程序的 Apache mod_mono 设置,无需编辑 apache 配置

Apache mod_mono settings for multiple MVC apps without editing apache config

我正在 Raspberry PI 3 运行 Raspbian Jesse 上使用 Apache 和 mod_mono 设置单服务器。我已经安装了 mono 和 mod_mono 并且运行正常。

这是我想要的文件夹结构

我想配置 Apache,以便我可以简单地将一个新的 .NET mvc3 应用程序复制到 /var/www/html 正下方的文件夹中(即 /var/www/html/App1),以及每个应用程序将自动开始作为 MVC3 应用程序工作,而无需为每个应用程序添加一个条目到 apache 配置中。

MonoAutoApplication enabled 在这种情况下不起作用,因为我没有提供 .aspx 页面(或任何其他 .net 文件),而是这些是 MVC 应用程序。

这种方法的好处是我可以将这个配置文件与版本控制中的每个应用程序一起保存。然后当从头开始服务器时,部署应用程序时需要做的配置更少。

关于如何处理这个问题有什么想法吗?

这里做了一些假设。

  • 应用只会在 /var/www/html 的正下方发布。例如,/var/www/html/app1,/var/www/html/app2
  • 每个应用程序都会在其根文件夹中提供一个 mod_mono.conf 文件。例如,/var/www/html/app1/mod_mono.conf
  • 每个应用程序的 mod_mono.conf 必须知道应用程序的绝对路径。
  • 部署新应用程序后必须重新加载 apache 服务器。没有办法解决这个问题。

在apache2.conf末尾添加以下内容:

/etc/apache2/apache2.conf

#define the default mono server
MonoServerPath default /usr/bin/mod-mono-server4
#include all config files from all mono apps
IncludeOptional "/var/www/html/*/mod_mono.con[f]"
#prevent web access to mod_mono.conf files
<Files ~ "mod_mono.conf">
    Order allow,deny
    Deny from all
</Files>

然后为每个应用程序添加此 mod_mono.conf,相应地更改文件夹的路径 /var/www/html/app1/mod_mono.conf

AddMonoApplications default "/app1:/var/www/html/app1"
<Location /app1>
    SetHandler mono
</Location>