• 用微软的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即可范文网站

     
  • 相关阅读:
    C# 特性学习笔记
    Nhibernate学习的第二天
    Nhibernate学习的第一天
    SQL循环添加表中的字段
    加班
    bat文件重启SQL服务和IIS服务
    判断是不是手机访问的网站
    解决Ueditor 不兼容IE7 和IE8
    实现链表的初始化,按值查找,插入,删除
    判断任一二叉树,是否为满二叉树.(输出二叉树,节点总数,二叉树深度)
  • 原文地址:https://www.cnblogs.com/wayeah/p/10526412.html
Copyright © 2020-2023  润新知