阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

ASP.NET Core:部署项目到Ubuntu Server

245次阅读
没有评论

共计 6352 个字符,预计需要花费 16 分钟才能阅读完成。

概述

基于上一篇成功安装 Ubuntu Server 16.10 的基础上,接下来继续我们 ASP.NET Core 项目的部署之旅!

只是对于这些年整天和 Windows 打交道的我,初次使用 Linux 确实有点费劲。

但是为了.NET Core 跨平台的这一重大特性,即使再多的坑,也还是要硬着头皮上的。

不然会有人怀着诧异的眼神问你:你的.NET Core 项目还部署到 Windows 上?

废话不多说,预祝你在十步之内成功部署!<(~︶~)↗[GO!]

一、安装.NET Core SDK

依次输入以下命令即可完成安装,如果中间有失败的,请多尝试几次。

sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ yakkety main" > /etc/apt/sources.list.d/dotnetdev.list'

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 417A0893

sudo apt-get update

sudo apt-get install dotnet-dev-1.0.1

安装好之后试着执行一下 dotnet 命令,出现以下内容,说明你已经安装成功,恭喜!

ASP.NET Core:部署项目到 Ubuntu Server

二、小试牛刀

1、创建一个文件夹,命名为 test,然后切换之

mkdir test

cd test

2、初始化一下 CLI 配置

dotnet new

ASP.NET Core:部署项目到 Ubuntu Server

3、创建一个 MVC 项目

dotnet new mvc

4、构建该项目并运行

dotnet restore

dotnet run

 ASP.NET Core:部署项目到 Ubuntu Server

 5、如果能监听成功,说明没问题。接下来进入 Program.cs 文件,并修改成如下内容,在 80 端口监听所有的网络适配器

1)、vi Program.cs  // 打开 Program.cs 文件

2)、i // 进入编辑模式

3)、Esc 键退出编辑模式

4)、:wq  // 保存并退出 

ASP.NET Core:部署项目到 Ubuntu Server

 6、安装反向代理 nginx,并启动之,当然了,apache 也是未尝不可的。

sudo apt-get install nginx

sudo service ngnix start

然后访问一下服务器的地址,如果出现如下页面,说明已经安装成功

ASP.NET Core:部署项目到 Ubuntu Server

7、安装好之后进入到以下目录,打开 default 文件并修改为以下的内容

cd /etc/nginx/sites-available

sudo vim default

ASP.NET Core:部署项目到 Ubuntu Server

顺便记录几个常用的编辑命令

vim Program.cs  // 打开或新建 Program.cs 文件 

i  // 进入编辑模式 

Esc 键  // 退出编辑模式 

yy  // 复制光标所在行 

5yy  // 复制光标起后 5 行 

p // 粘贴 

dd  // 删除光标所在行 

5dd  // 删除光标起后 5 行 

u   // 撤销操作 

:q!  // 不保存并退出 

:wq  // 保存并退出 

 8、重新启动 Nginx 来应用配置

sudo nginx -t

sudo nginx -s reload

 9、接下来就是见证奇迹的时刻。重新运行我们刚才的 test 项目,然后打开本机浏览器,输入:http://192.168.1.104(如果不知道自己 ubuntu 服务器地址的,输入 ifconfig 命令进行查看)访问,如果出现如下画面,说明配置已经成功。服务器已经不再是 IIS,取而代之的是 ubuntu 上的 nginx,版本为 1.10.1

ASP.NET Core:部署项目到 Ubuntu Server

Tips:如果不成功的话,不要灰心!试着用以下命令更新一下系统,或者卸载 nginx 然后重新再来一次,相信曙光就要到来!

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo reboot

三、配置守护进程 Supervisor

到目前位置,应用程序还是我们自己手动运行起来的,而且还不能 Ctrl+ C 关闭并退出,否则你的网站将无法访问!所以我们需要有一个类似监视器的角色来保证 ASP.NET Core 进程的正常运行,那么 Supervisor 会是我们的首选。

1、安装 supervisor

sudo apt-get install supervisor

2、发布上面 mvc 的 test 项目,记录下你的发布路径

dotnet publish

 ASP.NET Core:部署项目到 Ubuntu Server

3、发布成功之后记得切换到发布目录执行下 dotnet 运行命令,然后重复上面的步骤 9 看下是否可以正常访问,没问题的话我们进行下一步

ASP.NET Core:部署项目到 Ubuntu Server

4、切换到 var 路径,创建一个 netcore 文件夹,再在其下创建一个 test-publish 文件夹,然后将上面发布后的所有文件拷贝到这里

cd /var

sudo mkdir netcore

cd netcore

sudo mkdir test-publish

cd test-publish

sudo cp -a /home/jack/test/bin/Debug/netcoreapp1.1/publish/* /var/netcore/test-publish

ls

ASP.NET Core:部署项目到 Ubuntu Server

5、创建 test.conf 的 supervisor 配置文件,并将以下内容添加进去 (一定要仔细不要手抖写错了)

cd /etc/supervisor/conf.d

sudo vim test.conf

ASP.NET Core:部署项目到 Ubuntu Server

6、重新启动 supervisor 来应用配置!然后试着用本机访问下 ubuntu server 的 IP,看下网站是否如你所愿的展示在了你的面前!如果和上面的步骤 9 一致,那么整个部署流程已经暂时告一段落,这样一来即使你重启了服务器,网站依旧可以访问。到这里我终于算是松了一口气。

sudo service supervisor restart

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2017-05/143642p2.htm

四、进阶

接下来我就把我之前在 IIS 上搭好的项目:“ASP.NET Core:使用 Dapper 和 SwaggerUI 来丰富你的系统框架”也部署到 Ubuntu Server 上去,其中需要准备一个远程登录工具:Putty,用来将我们本机的发布文件传输到服务器上,同时你还可以像在 Ubuntu 中一样进行一些命令操作。

1、在 Ubuntu Server 上安装 OpenSSH Server 并启动该 SSH 服务(默认端口 22 即可)

sudo apt-get install openssh-server

sudo /etc/init.d/ssh start

2、启用防火墙配置 ufw(默认是待用的,同时也是为了安全),然后打开 SSH 服务的 22 端口。

sudo ufw default deny

sudo ufw enable

sudo ufw allow ssh

ASP.NET Core:部署项目到 Ubuntu Server

注:第一条命令表示所有端口默认关闭,除非被指定打开。至于红框内的,就不用我过多解释了吧(笑而不语~)。

3、打开 Putty,输入 Ubuntu Server 的 IP 地址,端口为 22,连接类型为 SSH,你可以把这个配置保存下来,命名为:ubuntu 即可,下次直接双击打开就行了,挺方便的。

ASP.NET Core:部署项目到 Ubuntu Server

4、出现下面这个提示时,选择“是”即可

ASP.NET Core:部署项目到 Ubuntu Server

5、然后输入服务器的用户名和密码进行登录,如果没问题,你会看到如下画面

ASP.NET Core:部署项目到 Ubuntu Server

5、小试牛刀:打开 windows 的命令提示窗口,输入以下命令,表示复制一个 test.txt(E 盘下)文件到 ubuntu 服务器上 test 文件夹下

pscp test.txt jack@192.168.1.105:test

ASP.NET Core:部署项目到 Ubuntu Server

随后切换至 Putty 上进行查看

ASP.NET Core:部署项目到 Ubuntu Server

6、重新发布我们的项目,指定 runtime 为 ubuntu.16.10-x64,如需更多,请点击这里进行查看。

dotnet publish --framework netcoreapp1.1 --runtime ubuntu.16.10-x64 --output "E:\Publish\Light.Api-Ubuntu" --configuration Release

ASP.NET Core:部署项目到 Ubuntu Server

但是不幸的是出现了一个大大的报错:“project.assets.json don’t have a target for‘.NETCoreApp,Version=v1.1/ubuntu.16.10-x64’”,网上一查,发现是项目文件 csproj 中没有此依赖,添加之后重新运行发布命令,如果出现最后一个画面,说明你就成功了!

<RuntimeIdentifiers>ubuntu.16.10-x64</RuntimeIdentifiers>

ASP.NET Core:部署项目到 Ubuntu Server

ASP.NET Core:部署项目到 Ubuntu Server

同时将我们的监听端口设置为 6000,否则的话将无法启动,因为 5000 端口已经被测试项目 test 占用了。而其中的 UseIISIntegration 方法可以拿掉,因为我们是要发布到 Ubuntu 服务器上,用不着 IIS,但是这样的话你的本机也将会无法访问。

ASP.NET Core:部署项目到 Ubuntu Server

7、到了最重要的一环:使用 PSFTP,主要命令为 open 和 put,将我们刚才发布的 Light.Api 项目 Copy 到 Light.Api-Publish 下,你会看到很多的复制记录

ASP.NET Core:部署项目到 Ubuntu Server

8、复制完成之后,切换到服务器的该目录下,如果能启动,说明没问题

ASP.NET Core:部署项目到 Ubuntu Server

9、接下来就不用多说了,Ctrl+Art+F2 切换到第二个管理页面,把 nginx 的监听端口改成 6000 并重启 nginx

ASP.NET Core:部署项目到 Ubuntu Server

10、屏住呼吸,在本机浏览器中输入服务器地址:“http://192.168.1.105/swagger/ui”,如果可以正常访问,并且可以请求到数据,说明你已经成功了!如果发现服务器不可用的话,多半是本机开启了防火墙,连接不到数据库导致的,因为这时你 ping 主机也是 ping 不通的,只需到控制面板中关闭防火墙即可!最后的效果图,nginx on ubuntu 就是强有力的证明

ASP.NET Core:部署项目到 Ubuntu Server

四、写在最后

可能细心的人儿已经发现我其实还有最后一步 Light.Api 的守护进程没有配置,所以就最后就留给大家来搞定吧。我不会告诉你只需要参照着上面的步骤 5 即可!希望这篇文章可以帮到那些刚接触到 ASP.NET Core 在 Linux 中部署的同学们,如果对文章有疑问或者不清晰的,欢迎讨论。也希望各位前辈可以多多指导!拜谢~

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-05/143642.htm 

概述

基于上一篇成功安装 Ubuntu Server 16.10 的基础上,接下来继续我们 ASP.NET Core 项目的部署之旅!

只是对于这些年整天和 Windows 打交道的我,初次使用 Linux 确实有点费劲。

但是为了.NET Core 跨平台的这一重大特性,即使再多的坑,也还是要硬着头皮上的。

不然会有人怀着诧异的眼神问你:你的.NET Core 项目还部署到 Windows 上?

废话不多说,预祝你在十步之内成功部署!<(~︶~)↗[GO!]

一、安装.NET Core SDK

依次输入以下命令即可完成安装,如果中间有失败的,请多尝试几次。

sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ yakkety main" > /etc/apt/sources.list.d/dotnetdev.list'

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 417A0893

sudo apt-get update

sudo apt-get install dotnet-dev-1.0.1

安装好之后试着执行一下 dotnet 命令,出现以下内容,说明你已经安装成功,恭喜!

ASP.NET Core:部署项目到 Ubuntu Server

二、小试牛刀

1、创建一个文件夹,命名为 test,然后切换之

mkdir test

cd test

2、初始化一下 CLI 配置

dotnet new

ASP.NET Core:部署项目到 Ubuntu Server

3、创建一个 MVC 项目

dotnet new mvc

4、构建该项目并运行

dotnet restore

dotnet run

 ASP.NET Core:部署项目到 Ubuntu Server

 5、如果能监听成功,说明没问题。接下来进入 Program.cs 文件,并修改成如下内容,在 80 端口监听所有的网络适配器

1)、vi Program.cs  // 打开 Program.cs 文件

2)、i // 进入编辑模式

3)、Esc 键退出编辑模式

4)、:wq  // 保存并退出 

ASP.NET Core:部署项目到 Ubuntu Server

 6、安装反向代理 nginx,并启动之,当然了,apache 也是未尝不可的。

sudo apt-get install nginx

sudo service ngnix start

然后访问一下服务器的地址,如果出现如下页面,说明已经安装成功

ASP.NET Core:部署项目到 Ubuntu Server

7、安装好之后进入到以下目录,打开 default 文件并修改为以下的内容

cd /etc/nginx/sites-available

sudo vim default

ASP.NET Core:部署项目到 Ubuntu Server

顺便记录几个常用的编辑命令

vim Program.cs  // 打开或新建 Program.cs 文件 

i  // 进入编辑模式 

Esc 键  // 退出编辑模式 

yy  // 复制光标所在行 

5yy  // 复制光标起后 5 行 

p // 粘贴 

dd  // 删除光标所在行 

5dd  // 删除光标起后 5 行 

u   // 撤销操作 

:q!  // 不保存并退出 

:wq  // 保存并退出 

 8、重新启动 Nginx 来应用配置

sudo nginx -t

sudo nginx -s reload

 9、接下来就是见证奇迹的时刻。重新运行我们刚才的 test 项目,然后打开本机浏览器,输入:http://192.168.1.104(如果不知道自己 ubuntu 服务器地址的,输入 ifconfig 命令进行查看)访问,如果出现如下画面,说明配置已经成功。服务器已经不再是 IIS,取而代之的是 ubuntu 上的 nginx,版本为 1.10.1

ASP.NET Core:部署项目到 Ubuntu Server

Tips:如果不成功的话,不要灰心!试着用以下命令更新一下系统,或者卸载 nginx 然后重新再来一次,相信曙光就要到来!

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo reboot

三、配置守护进程 Supervisor

到目前位置,应用程序还是我们自己手动运行起来的,而且还不能 Ctrl+ C 关闭并退出,否则你的网站将无法访问!所以我们需要有一个类似监视器的角色来保证 ASP.NET Core 进程的正常运行,那么 Supervisor 会是我们的首选。

1、安装 supervisor

sudo apt-get install supervisor

2、发布上面 mvc 的 test 项目,记录下你的发布路径

dotnet publish

 ASP.NET Core:部署项目到 Ubuntu Server

3、发布成功之后记得切换到发布目录执行下 dotnet 运行命令,然后重复上面的步骤 9 看下是否可以正常访问,没问题的话我们进行下一步

ASP.NET Core:部署项目到 Ubuntu Server

4、切换到 var 路径,创建一个 netcore 文件夹,再在其下创建一个 test-publish 文件夹,然后将上面发布后的所有文件拷贝到这里

cd /var

sudo mkdir netcore

cd netcore

sudo mkdir test-publish

cd test-publish

sudo cp -a /home/jack/test/bin/Debug/netcoreapp1.1/publish/* /var/netcore/test-publish

ls

ASP.NET Core:部署项目到 Ubuntu Server

5、创建 test.conf 的 supervisor 配置文件,并将以下内容添加进去 (一定要仔细不要手抖写错了)

cd /etc/supervisor/conf.d

sudo vim test.conf

ASP.NET Core:部署项目到 Ubuntu Server

6、重新启动 supervisor 来应用配置!然后试着用本机访问下 ubuntu server 的 IP,看下网站是否如你所愿的展示在了你的面前!如果和上面的步骤 9 一致,那么整个部署流程已经暂时告一段落,这样一来即使你重启了服务器,网站依旧可以访问。到这里我终于算是松了一口气。

sudo service supervisor restart

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2017-05/143642p2.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计6352字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中