在前一篇文章中成功安装了Ubuntu Server 16.10的基础上,继续我们在ASP中的Core项目的部署之旅。NET!
只是对于这些年一直和Windows打交道的我来说,第一次用Linux有点难。
但是,对于的跨平台特性。NET Core,即使坑再多,你还是要咬紧牙关。
否则,有人会用惊讶的眼神问你:是你的。NET Core项目还部署在Windows上?
二话没说,祝你十步内部署成功!( ̄︶ ̄)[GO!]
1.安装。核心软件开发工具包
依次输入以下命令以完成安装。如果中间有失败,请尝试几次。
sudo sh-c ' echo ' deb[arch=amd64]https://apt-mo.trafficmanager.net/repos/dotnet-release/yakketty main '/etc/apt/sources . list . d/在安装了dotnetdev . list ' sudoapt-keyadv-keyserver hkp ://keyserver . Ubuntu.com :80-recv-key 417 a 0893 sudoapt-get update sudoapt-get install dotnet-dev-1 . 0 . 1后,尝试执行dotnet命令,出现以下内容
第二,试刀
1、创建一个名为test的文件夹,然后切换它
Mkdir testcd test2。初始化命令行界面配置
dotnet new
3.创建一个MVC项目
Dotnet新mvc4,构建项目并运行它
dotnet restorotnet run
5.如果监控成功,说明没问题。接下来,输入Program.cs文件并将其修改为以下内容,80端口监视器中的所有网络适配器
1)、vi Program.cs //打开Program.cs文件
2)、i //进入编辑模式
3) Esc键退出编辑模式
4): wq //保存并退出
6.安装反向代理nginx并启动它。当然,阿帕奇也是必须的。
sudo apt-get install nginx sudo service ngnix start然后访问服务器的地址。如果出现以下页面,说明安装成功
7.安装后,进入以下目录,打开默认文件并将其修改为以下内容
CD/etc/nginx/sites-available sudo vim默认值
顺便记录几个常用的编辑命令
打开或新建一个Program.cs文件i //进入编辑模式Esc键//退出编辑模式yy //复制光标行5yy //复制光标行5行p //粘贴dd //删除光标行5dd //删除光标行5行u //取消操作:q!//不保存退出:wq保存并退出8。重新启动Nginx以应用配置
Sudo nginx -tsudo nginx -s再装9。下一步就是见证奇迹。再次运行我们的测试项目,然后打开原生浏览器,输入:http://192.168.1.104(如果不知道自己的ubuntu服务器地址,输入ifconfig命令查看)。如果出现以下屏幕,则表明配置已成功。服务器不再是IIS,而是ubuntu上的nginx,版本1.10.1
小贴士:如果不成功,不要灰心!试着用下面的命令更新系统,或者卸载nginx再试一次,相信黎明就要到了!
sudo apt-获取更新sudo apt-获取升级sudo apt-获取dist-升级sudo重启III。配置守护进程管理器
到目前为止,应用程序一直是我们自己手动运行的,不能用Ctrl C关闭退出,否则你的网站将无法访问!因此,我们需要有一个类似监视器的角色来确保ASP.NET核心流程的正常运行,因此Supervisor将是我们的首选。
1.安装主管
Sudo apt-get安装supervisor2,发布上面mvc的测试项目,并记录你的发布路径
网络出版
3.发布成功后,记得切换到发布目录执行dotnet running命令,然后重复上面的第9步,看看能否正常访问。如果没有问题,我们将进行下一步
4.切换到var路径,创建一个netcore文件夹,然后在它下面创建一个test-publish文件夹,然后将上面发布的所有文件复制到这里
CD/varsudo mkdir netcorecd netcoresudo mkdir test-publish CD test-publish sudo CP-a/home/jack/test/bin/Debug/netcoreapp 1.1/publish/*/var/netcore/test-publish ls
5.创建test.conf的supervisor配置文件,并添加以下内容(注意不要握手写错)
6.重启主管应用配置!然后试着用这台机器访问ubuntu服务器的IP,看看网站是否如你所愿地显示在你面前!如果与上面的第9步一致,那么整个部署过程就暂时告一段落了,这样即使重启服务器,网站仍然可以访问。来到这里我终于松了一口气。
Sudo服务主管重启IV。先进的
接下来,我将在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。
默认拒绝允许允许允许ssh
注意:第一个命令表示默认情况下所有端口都是关闭的,除非它们被指定为打开的。至于红盒子里的,不用我过多解释(笑而不语~)。
3.打开Putty,输入ubuntu Server的IP地址,端口为22,连接类型为SSH。您可以保存这个配置并将其命名为Ubuntu。下次双击打开就行了,挺方便的。
4.出现以下提示时,选择“是”
5.然后输入登录服务器的用户名和密码。如果没有问题,您将看到以下屏幕
5.试刀:打开windows的命令提示窗口,输入以下命令,意思是将一个test.txt(E文件(E盘下)复制到ubuntu服务器上的test文件夹中
[email protected]: test
然后切换到Putty进行查看
6.重新发布我们的项目,并将ubuntu.16.10-x64指定为运行时。如果您需要更多信息,请点击这里查看。
复制代码如下: dotnetpublish-框架netcore app 1.1-运行时Ubuntu . 16.10-x64-输出' e : publish light . API-Ubuntu '-配置版本
不幸的是,这里有一个很大的错误:“project.assets.jsondon没有目标”。netcore app,版本=v1.1/Ubuntu.16.10-x64 '”。在线检查后,发现项目文件csproj中没有这样的依赖关系。添加后,重新运行release命令。如果最后一个屏幕出现,说明你成功了!
运行时标识符
同时,将我们的监听端口设置为6000,否则不会启动,因为5000端口已经被测试项测试占用了。UseIISIntegration方法可以删除,因为我们想发布到Ubuntu服务器,我们不需要IIS,但是这样你的机器将无法访问。
7.最重要的部分:使用PSFTP,主要命令是打开和放,以及复制光。我们刚刚发布到Light的Api项目。Api-Publish,你会看到很多拷贝记录
8.复制完成后,切换到服务器的这个目录。如果能启动,就说明没问题
9.不用说,Ctrl Art F2切换到第二个管理页面,将nginx的监听端口改为6000,重新启动nginx
10.屏住呼吸,在本地浏览器输入服务器地址:“http://192 . 168 . 1 . 105/swag/ui”。如果你能正常访问并请求数据,你就成功了!如果发现服务器不可用,多半是防火墙打开,数据库无法连接造成的,因为此时无法ping通主机,直接去控制面板关闭防火墙就可以了!最终的渲染,ubuntu上的nginx,就是一个有力的证明
第四,写在最后
也许细心的人已经发现,我其实已经有了光之守护进程的最后一步。没有配置的Api,最后就留给大家了。我不告诉你,只参考上面第五步!希望这篇文章能对那些刚刚接触到ASP.NET Core在Linux中部署的同学有所帮助。如果你对这篇文章有任何疑问或不清楚,请讨论。也希望大家多多支持我们。