共计 4145 个字符,预计需要花费 11 分钟才能阅读完成。
ASP.NET Core 2.0 怎么发布到 Ubuntu 服务器?又如何在服务器上配置使用 ASP.NET Core 网站绑定到指定的域名,让外网用户可以访问呢?
步骤
第 1 步:准备工作
- 一台 Liunx 服务器:
- 一个 Linux 终端管理工具: 笔者推荐 Xshell, 点击到这里下载 Xshell
准备好 Ubuntu 服务器器 [Ubuntu 17.04 x64] 和终端管理工具后,我们开始配置关于 ASP.NET Core 2.0 的 Linux 环境。 - 基于 Xshell 使用密钥方式连接远程主机 http://www.linuxidc.com/Linux/2017-10/148079.htm
第 2 步:创建一个非 root 用户
为了安全和管理的方便,我们不使用 root 用户,而是创建一个非 root 用户:
adduser myuser # [myuser 为用户名,可自定义指定]将提示你输入登录密码,请输入并牢记
usermod -aG sudo myuser # 将创建的用户添加到 sudo 分组中,以便使用管理员的命令
exit # 结束终端会话
用户创建完成后,使用这个用户来重新连接 linux 服务器
第 3 步:更新 Linux 服务器
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo reboot
注:如果你想自动更新,你也可以使用 <code>unattended-upgrades</code>(以下命令根据自己需要选择):
sudo apt-get install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
第 4 步:安装 .NET Core
在 Linux 环境中运行 ASP.NET Core 网站,我们需要安装.NET Core 运行时(当然也可以自己实现.NET Core 程序的宿主)。
a. 注册微软产品 KEY 为被信任的:
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
b. 设置所需要的版本主机包(Ubuntu 17.04,其他 linux 版本的请见 https://docs.microsoft.com/en-us/dotnet/core/linux-prerequisites?tabs=netcore2x):
sudo sh -c 'echo"deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-zesty-prod zesty main"> /etc/apt/sources.list.d/dotnetdev.list'
sudo apt-get update
c. 安装.NET Core:
sudo apt-get install dotnet-sdk-2.0.0
d. 运行 dotnet --version
命令检查是否安装成功:
dotnet --version
如果显示:2.0.0,则说明 linux 服务器中成功安装了.NET Core 2.0.0 版本。
第 5 步:创建示例程序
本文中,我们直接使用.NET Core 的命令创建一个 ASP.NET Core 2.0 示例网站应用程序,创建目录 /home/myuser/firstapp,执行命令:
dotnet new mvc
接着,发布刚才创建的 ASP.NET Core 2.0 网站发网站目录,所以,我们先创建一个网站发布目录:/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
第 6 步:启动网站
我们需要配置 systemd
来让 dotnet
成为一个服务并启动。
sudo vim /etc/systemd/system/kestrel-mysite.service
sudo systemctl enable kestrel-mysite.service # 注册服务
sudo systemctl start kestrel-mysite.service # 启动服务
sudo systemctl status kestrel-mysite.service # 检查服务的运行状态
现在,我们的示例网站就可以通过 5000 端口在服务器端访问了,在终端使用 wget 命令:
wget http://localhost:5000
可以看到如下的运行效果:
说明我们的 ASP.NET Core 2.0 网站应用程序在 linux 服务器上配置成功了。
到这里,是不觉得 ASP.NET Core 2.0 在 linux 上运行 so easy 呢!!!
但是,当你看到“但是”的时候,心里怎么想的呢?
但是,我们这个示例程序现在还只能在服务器中访问,外网是不能访问的。
不急,本文给大家分享的是使用 Nginx 来作反向代理,实现外网的访问,以及域名访问。
第 7 步: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;
}
}
测试配置:
sudo nginx -t
重新加载配置:
sudo nginx -s reload
现在是见证奇迹的时刻了,在浏览器中直接输入你的服务器 IP 地址并访问,噔噔噔噔噔:
怎么样,现在你的 ASP.NET Core 2.0 网站可以通过网络访问了,如果你还想让你的网站支持通过域名访问,那 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 配置:
sudo nginx -s reload
愉快地使用域名访问吧。
注: 本文给大家分享了一些关于 ASP.NET Core 2.0 怎么发布 / 部署到 Ubuntu Linux 服务器并配置 Nginx 实现反向代理, 还有很多问题并没有涉及到,比如:服务器的安全(路由表 IP 的配置,nginx 的高级配置等等),请在实际项目部署中查阅相关资料进行处理。
下面关于 Nginx 的文章您也可能喜欢,不妨参考下:
Nginx 403 forbidden 的解决办法 http://www.linuxidc.com/Linux/2017-08/146084.htm
CentOS 7 下 Nginx 服务器的安装配置 http://www.linuxidc.com/Linux/2017-04/142986.htm
CentOS 上安装 Nginx 服务器实现虚拟主机和域名重定向 http://www.linuxidc.com/Linux/2017-04/142642.htm
CentOS 6.8 安装 LNMP 环境(Linux+Nginx+MySQL+PHP)http://www.linuxidc.com/Linux/2017-04/142880.htm
Linux 下安装 PHP 环境并配置 Nginx 支持 php-fpm 模块 http://www.linuxidc.com/Linux/2017-05/144333.htm
Nginx 服务的 SSL 认证和 htpasswd 认证 http://www.linuxidc.com/Linux/2017-04/142478.htm
Ubuntu 16.04 上启用加密安全的 Nginx Web 服务器 http://www.linuxidc.com/Linux/2017-07/145522.htm
Linux 中安装配置 Nginx 及参数详解 http://www.linuxidc.com/Linux/2017-05/143853.htm
Nginx 日志过滤 使用 ngx_log_if 不记录特定日志 http://www.linuxidc.com/Linux/2014-07/104686.htm
CentOS 7.2 下 Nginx+PHP+MySQL+Memcache 缓存服务器安装配置 http://www.linuxidc.com/Linux/2017-03/142168.htm
CentOS6.9 编译安装 Nginx1.4.7 http://www.linuxidc.com/Linux/2017-06/144473.htm
Nginx 的详细介绍:请点这里
Nginx 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-12/149557.htm