ASP.NET Core 2.1发布/部署到Ubuntu并配置Nginx反向代理实现ip访问

一、准备

我用的是Ubuntu服务器器 [Ubuntu 18.04 x64] 和终端管理工具【Xshell】

二、安装

在服务器上安装.NET Core

三、部署程序

1、创建实例程序

可以直接使用.NET Core 的命令创建一个ASP.NET Core 示例网站应用程序,创建目录 /home/myuser/firstapp,执行命令:

dotnet new mvc

接着,发布刚才创建的ASP.NET Core 网站,我们先创建一个网站发布目录:/var/www/firstapp,运行dotnet发布命令:

dotnet restore
dotnet publish -c release

dotnet命令将把ASP.NET Core 2.0 示例网站发布到目录:/home/myuser/firstapp/bin/release/netcoreapp2.0/publish/ 中,拷贝发布后的ASP.NET Core 2.0网站程序:

scp -r /home/myuser/firstapp/bin/release/netcoreapp2.0/publish/* /var/www/firstapp

2、或者拿自己创建的程序发布后 拷贝至服务器上。

将发布后的publish目录下的文件拷贝至一个网站发布目录

四、将执行程序设置为服务

我们需要配置 systemd 来让 dotnet core程序成为一个服务并启动。创建服务文件:

sudo vim /etc/systemd/system/myApp.service

编辑内容如下:

[Unit]
Description=My ASP.Net Core Project

[Service]
WorkingDirectory=/var/www/firstapp
ExecStart=/usr/bin/dotnet /var/www/firstapp/firstapp.dll
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-firstapp
User=myuser
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

启用并启动服务

sudo systemctl enable myApp.service # 注册服务
sudo systemctl start myApp.service  # 启动服务
sudo systemctl status myApp.service # 检查服务的运行状态

如果是项目重新发布,发布文件替换后。只需停止服务,再次启动

sudo systemctl stop myApp.service # 停止服务
sudo systemctl start myApp.service  # 启动服务

【如果启动不成功,看下服务的端口是啥,是否被占用了。

lsof -i:端口号   
kill -9 PID   //杀掉对应的进程

现在,我们的示例网站就可以通过5000端口在服务器端访问了,在终端使用w3m命令:

w3m http://localhost:5000

说明我们的ASP.NET Core 网站应用程序在linux服务器上配置成功了。

但是,这个示例程序现在还只能在服务器中访问,外网是不能访问的

五:Nginx反向代理

nginx的使用

sudo apt-get install nginx

使用 vim 配置nginx的服务配置

sudo vim /etc/nginx/sites-available/default

将nginx的配置替换成如下的配置:

server {
    listen 80;

    location / {
        proxy_pass http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection keep-alive;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

或者

server {
    listen aa.xx.yy.zz:80;      //服务器内网地址
    server_name aa.xx.yy.zz;   //服务器内网地址
    location / {
        proxy_pass http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection keep-alive;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

现在你的ASP.NET Core  网站可以通过外网ip访问了,如果你还想让你的网站支持通过域名访问,那nginx中配置也是非常简单的:

server {
    listen 80;
    server_name www.your_domain_name.com;
    location / {
        proxy_pass http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection keep-alive;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

其中:www.your_domain_name.com 即为你的域名,修改配置后,重新加载nginx配置:

systemctl reload nginx

 

posted @ 2020-02-01 20:21  peterYong  阅读(446)  评论(0编辑  收藏  举报