用微软的kestrel在Linux上利用Apache架设Asp.Net Core环境

第一步,安装dotnet环境,网上需求教程都没有强调这一点,导致仅按教程是操作不了的。

添加dotnet 产品  Feed。要开始安装.NET,您需要注册Microsoft签名密钥并添加Microsoft产品提要。这只需要在每台机器上完成一次。 

sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc

sudo sh -c 'echo -e "[packages-microsoft-com-prod]
name=packages-microsoft-com-prod 
baseurl= https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/dotnetdev.repo'

开始安装 ASP.NET Core运行时环境(有提问时全部回答Y)

sudo yum update 
sudo yum -y install libunwind libicu
sudo yum install dotnet-sdk-2.0.3

 第一步安装完成,查看一下是否安装成功

dotnet --version

第二步升级系统并安装Apache 2.4

sudo yum update -y
sudo yum -y install httpd mod_ssl

第三步创建Apache虚拟网站配置文件如:helloapp.conf,存放于位置/etc/httpd/conf.d/helloapp.conf

注意修改域名、IP地址和端口(端口要与应用程序设置一致)

<VirtualHost *:*>
    RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
</VirtualHost>

<VirtualHost *:80>
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:5000/
    ProxyPassReverse / http://127.0.0.1:5000/
    ServerName www.example.com
    ServerAlias *.example.com
    ErrorLog ${APACHE_LOG_DIR}helloapp-error.log
    CustomLog ${APACHE_LOG_DIR}helloapp-access.log common
</VirtualHost>

测试配置文件是否有问题

sudo service httpd configtest

重新启动 Apache:

sudo systemctl start httpd    //启动
sudo systemctl restart httpd  //重启
sudo systemctl enable httpd  //
    

创建服务定义文件并存放在制定位置:/etc/systemd/system/kestrel-helloapp.service

[Unit]
Description=Example .NET Web API App running on CentOS 7

[Service]
WorkingDirectory=/var/www/helloapp
ExecStart=/usr/bin/dotnet /var/www/helloapp/helloapp.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
User=apache
Environment=ASPNETCORE_ENVIRONMENT=Production 

[Install]
WantedBy=multi-user.target

创建应用程序网站放置的位置目录,要与上面服务定义的文件一致:

mkdir -p /var/www/helloapp

启用该服务:

sudo systemctl enable kestrel-helloapp.service //启用服务
sudo systemctl start kestrel-helloapp.service  //启动服务
sudo systemctl status kestrel-helloapp.service  //查看服务状态


第四步,发布应用程序

创建示例测试程序

安装好dotnet环境后执行以下命令

cd /home
dotnet new mvc -o helloapp

 修改Program.cs文件(也可以修改配置文件) 

 public class Program
    {
        public static void Main(string[] args)
        {
            BuildWebHost(args).Run();
        }

        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseUrls("http://*.5000") //注意端口要一致
                .UseStartup<Startup>()
                .Build();
    }

将修改好的示例应用程序发布到网站目录

dotnet publish -o /var/www/helloapp/

将试图文件夹拷贝到网站目录下

cp -r /home/helloapp/Views/ /var/www/helloapp/

重启apache即可范文网站

 
原文地址:https://www.cnblogs.com/wayeah/p/10526412.html