早上好,我希望您能帮助我解决这个关于在子域上部署 ASPnet 5(Core1、CoreCLR)的问题。我有以下内容:
- 环境:GNU/Linux Apache MySQL PHP。
- 已安装 DNV(.net 核心和单声道)
- 约曼发电机。
通过给它“dnx web”,它适用于http://localhost:5000 我在子域中的文件夹下有这个应用程序:http: //subdomain.domain.com/aspnet5/fx
如何使应用程序在该生产环境中工作?有人建议我用 nginx(+反向代理)制作一个 docker 容器,这个周末我会看到这个主题。
首先我想澄清一下,要“打包”应用程序,在部署之前,必须使用命令
dnu publish
,以查看可以使用的选项列表:dnu publish --help
。打包后,在打包结果所在的文件夹中(您可以使用选项
-o
指定)会有一个approot
带有实用程序的文件夹web
,这将是从服务器调用的文件夹。应该注意的是,可以在不需要反向代理的情况下公开应用程序。Kestrel在端口 500x 上启动并将其更改为端口 80将强制 root。如果您愿意,您可以使用iptables将请求重定向到端口 500x 上的 kestrel 进程,但我认为这会导致服务器已经在该端口上调度。
除了上述之外,Kestrel不是生产服务器,正如您在问题中指出的那样,建议使用 Apache 或 nginx 之类的东西。你说目前你有 Apache,我认为可以将它用于此目的,但我没有看到它,我目前使用 nginx(没有 Docker,我还不需要它)为此。
您需要将 Apache 配置为反向代理,以便将对目录
aspnet5/fx
的请求重定向到您的 ASP.NET Core 应用程序。执行此配置的步骤如下:
为反向代理安装和启用 Apache 模块
修改您的 Apache 网站配置以添加重定向(通常是
000-default.conf
位于 中的文件/etc/apache2/sites-enabled
)http://localhost:5000/aspnet5/fx/
在 ASP.NET Core 应用中配置 url 。这是通过添加hosting.json
位于项目根目录的文件来完成的我建议您创建另一个子域
aspnet5-fx.subdominio.dominio.com
,该子域提供对 ASP.NET Core 应用程序的直接访问。在这种情况下,您需要做的是:
sudo nano /etc/apache2/sites-available/001-aspnet.conf
)该文件的内容如下
最后,您必须启用新网站并重新加载 apache 配置
同样重要的是,您的ASP.NET Core应用程序的文件不应位于Apache内容目录中,即 in
/var/www/aspnet5/fx
,因为不需要执行 dereverse proxy
并且如果配置中出现问题,它们最终可能会位于访问代码文件。推荐的事情是定位我们自己,例如,在/opt/aspnet5/fx