Linux下部署发布Asp.net Core 2.0网站

开发环境:
Windows 10 Pro
Visual Studio 2017 Community
Nodejs

服务器:
CentOS Linux release 7.4.1708(Core)
Apache
Nodejs

SSH工具
Bitvise
https://dl.bitvise.com/BvSshClient-Inst.exe

1. 开发环境准备:

1.1在https://www.visualstudio.com/ 下载安装Visual Studio 2017 Community版本(社区免费版)

选择.Net Core Cross-Platform development 组件进行安装

Linux下部署发布Asp.net Core 2.0网站_第1张图片
image.png

Linux下部署发布Asp.net Core 2.0网站_第2张图片
image.png

1.2 在https://nodejs.org/ 下载安装Windows 版的 Nodejs

Linux下部署发布Asp.net Core 2.0网站_第3张图片
image.png

2.创建Asp.net Core 2.0 Angular应用,这里用自带的模板即可

Linux下部署发布Asp.net Core 2.0网站_第4张图片
image.png

Linux下部署发布Asp.net Core 2.0网站_第5张图片
image.png

Linux下部署发布Asp.net Core 2.0网站_第6张图片
image.png

3.发布应用

点击右键,选择Publish


Linux下部署发布Asp.net Core 2.0网站_第7张图片
image.png

选择发布到文件夹


Linux下部署发布Asp.net Core 2.0网站_第8张图片
image.png

Linux下部署发布Asp.net Core 2.0网站_第9张图片
image.png

这里要注意的是如果发布失败,重启应该可以解决。
同时记下文件夹
c:/users/admin/source/repos/AngularApp/AngularApp/bin/Release/PublishOutput

4.Linux部署

先用Bitvise 连接已经部署好CentOS 7的服务器,Bitvise 默认会打开一个Terminal 和一个用于文件传输的SFTP窗口


Linux下部署发布Asp.net Core 2.0网站_第10张图片
image.png

Linux下部署发布Asp.net Core 2.0网站_第11张图片
image.png

4.1 安装Dotnet

到 https://www.microsoft.com/net/download/linux查看最新的Dotnet Core版本号

Linux下部署发布Asp.net Core 2.0网站_第12张图片
image.png

根据这里的说明安装 https://www.microsoft.com/net/learn/get-started/linuxcentos

Linux下部署发布Asp.net Core 2.0网站_第13张图片
image.png

4.1.0 先用root登陆

sudo su -

![image.png](http://upload-images.jianshu.io/upload_images/5258872-ffddc2f6e2140aa5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

4.1.1 添加.net源

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

~~~bash
sudo sh -c 'echo -e "[packages-microsoft-com-prod]\nname=packages-microsoft-com-prod \nbaseurl= https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/dotnetdev.repo'
Linux下部署发布Asp.net Core 2.0网站_第14张图片
image.png

4.1.2 安装.net core 2.0 SDK

sudo yum update
Linux下部署发布Asp.net Core 2.0网站_第15张图片
image.png

中间有个确认,这里要等很久。。。

sudo yum install libunwind libicu

安装SDK

sudo yum install dotnet-sdk-2.1.3

4.2 安装Nodejs

sudo yum install epel-release
sudo yum install nodejs
sudo yum install npm

看下版本号

node --version

4.3 安装Apache

https://docs.microsoft.com/en-us/aspnet/core/publishing/apache-proxy

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

查看apache路径

whereis httpd

4.4 配置环境

4.4.1 创建配置文件 AngularApp.conf

Linux下部署发布Asp.net Core 2.0网站_第16张图片
image.png

Linux下部署发布Asp.net Core 2.0网站_第17张图片
image.png

4.4.2 上传配置文件

4.4.2.1 找到Apache 配置文件路径/etc/httpd

image.png

4.4.4.2 打开Bitvise 的SFTP从本地 AngularApp.conf 到服务器的tmp文件夹中

Linux下部署发布Asp.net Core 2.0网站_第18张图片
image.png

4.4.4.3 打开Terminal用命令行把tmp文件夹中的AngularApp.conf移动到Apache文件夹中

mv /tmp/AngularApp.conf /etc/httpd/conf.d

4.4.3 上传之前打包好的.Net Core 2.0应用AngularApp

4.4.3.1 点击右键,使用SFTP在tmp文件夹里创建一个AngularApp文件夹,把发布的文件拖拽到AngularApp文件夹里

Linux下部署发布Asp.net Core 2.0网站_第19张图片
image.png

4.4.3.2 把AngularApp移动到/var/www目录里

mv /tmp/AngularApp /var/www
Linux下部署发布Asp.net Core 2.0网站_第20张图片
image.png

如果看不到可以点下刷新

Linux下部署发布Asp.net Core 2.0网站_第21张图片
image.png

4.4.4 创建一个服务文件,用来启动.Net Core 2.0的应用,另存为kestrel-AngularApp.service

同样打开记事本,创建一个新的文件[图片上传中...(image.png-520d41-1514966781776-0)]

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

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

    [Install]
    WantedBy=multi-user.target
Linux下部署发布Asp.net Core 2.0网站_第22张图片
image.png
Linux下部署发布Asp.net Core 2.0网站_第23张图片
image.png

4.4.3 上传服务文件 到 /etc/systemd/system/

4.4.3.1 因为SFTP没权限,还是先放到/tmp文件夹下

Linux下部署发布Asp.net Core 2.0网站_第24张图片
image.png

4.4.3.2 移动到系统文件夹

mv /tmp/kestrel-AngularApp.service  /etc/systemd/system/
image.png

4.5 启动应用

4.5.1 配置 Apache 启动

    sudo service httpd configtest

4.5.2 重启Apache

sudo systemctl restart httpd
sudo systemctl enable httpd

4.5.3 启用服务

 systemctl enable kestrel-AngularApp.service

4.5.4 打开并查看服务状态

systemctl start  kestrel-AngularApp.service
 systemctl status  kestrel-AngularApp.service
 
Linux下部署发布Asp.net Core 2.0网站_第25张图片
image.png

4.5.5 安装防火墙firewalld并打开80端口

    sudo yum install firewalld -y
 sudo firewall-cmd --add-port=80/tcp --permanent
    sudo firewall-cmd --add-port=443/tcp --permanent

4.6 SSL 配置

    sudo yum install mod_ssl
sudo yum install mod_rewrite

修改AngularApp.conf 加入ssl端口配置

   
        RewriteEngine On
        RewriteCond %{HTTPS} !=on
        RewriteRule ^/?(.*) https://%{SERVER_NAME}/ [R,L]
    

    
        ProxyPreserveHost On
        ProxyPass / http://127.0.0.1:5000/
        ProxyPassReverse / http://127.0.0.1:5000/
        ErrorLog /var/log/httpd/hellomvc-error.log
        CustomLog /var/log/httpd/hellomvc-access.log common
        SSLEngine on
        SSLProtocol all -SSLv2
        SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:!RC4+RSA:+HIGH:+MEDIUM:!LOW:!RC4
        SSLCertificateFile /etc/pki/tls/certs/localhost.crt
        SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
        

重启Apache服务

    sudo service httpd configtest
    sudo systemctl restart httpd

5. 从浏览器打开服务器的地址,就可以看到AngularApp已经成功部署完毕。

Linux下部署发布Asp.net Core 2.0网站_第26张图片
image.png

其他设置可以参考官网

https://docs.microsoft.com/en-us/aspnet/core/publishing/apache-proxyw

你可能感兴趣的:(Linux下部署发布Asp.net Core 2.0网站)