件准备:
XShell:终端模拟器,支持SSH、SFTP、telnet,rlogin和串行。用于window系统远程连接其他不同系统服务器;
XFtp:Xftp是一个灵活和轻量级SFTP / FTP客户端用户需要安全地通过网络传输文件。它提供了强大的功能,如直接编辑多个窗格,文件夹同步,他们支持,服务器到服务器转移和第三方编辑器集成。
安装教程:https://blog.csdn.net/HighproX/article/details/51283990
Linux虚拟机或服务器一台;
开始
1、 将.NetCore代码上传到GitHub或其他代码云托管中
如果不能上传到GitHub,也可使用XFtp将代码上传到Linux服务器中,如图;
如果能通过Git拉去代码,则可以在linux服务器中安装git ,使用方式和在Window中没有区别,安装命令 :yum install git
2、 使用XShell登陆Linux服务器,使用教程参考https://blog.csdn.net/HighproX/article/details/51283990
进入后,使用yum安装相关依赖,我使用的NetCore SDK版本为2.0.3,在服务器中也将安装2.0.3版本,在安装前,请务必先将其他版本的dotnet sdk删除,如果在安装了多个版本SDK,那么在部署的时候会产生一些莫名奇妙的问题;
开始安装dotnet sdk:https://www.microsoft.com/net/download/linux-package-manager/centos/sdk-2.0.3,实际打开后是英文的,我是通过Chrome浏览器进行翻译过的;
可通过 dotnet --info 命令来确认dotnet是否安装完成
3、此时,dotnet sdk已经安装完成,代码也已经上传到linux服务器,接下来,使用cd 命令,跳转到代码目录下,比如我的代码文件实在 /AliyunGit/***** 目录下,执行 dotnet build -c Release 命令打包代码,然后在执行 dotnet publish -c Release 命令发布代码,这两句命令的作用是打包发布当前目录下的所有NetCore工程,发布后的文件将会在 /工程文件/bin/Release/netcoreapp2.0 下,如果你的sdk是2.1版本,那么netcoreapp2.0就会变成netcoreapp2.1
如果不是用XFtp查看,也可使用ls path 或者 ll path命令查看制定目录下所有文件,如果ls 或者 ll 后面不接路径,则表示查看当前目录下所有文件
4、使用cd 进入到netcoreapp2.0目录下,使用 dotnet 工程名称.dll,出现这个也就是说明运行成功,但我们在外网还是访问不了这个网站,需要一个Web容器进行转发;(下图是Copy其他教程的,但是我的运行结果和图中区别只有路径不同)
初始默认端口为 5000,如果想要更改端口:https://blog.csdn.net/u010584641/article/details/79525535
5、安装Nginx:https://segmentfault.com/a/1190000007116797
6、安装完Nginx后,开始配置 Nginx 的 location ,这个不做多说,我也不是很清楚,连接如下:
https://moonbingbing.gitbooks.io/openresty-best-practices/ngx/nginx_local_pcre.html
http://seanlook.com/2015/05/17/nginx-location-rewrite/
下图是我的项目location配置
7、配置完成后,重启Nginx,Service Nginx restart
8、再重复第4步操作;
9、此时我们已经能够在外网中能够访问部署的程序了,基本上上来说,部署算完成了,但是,如果把XShell关闭后,就发现,部署完成的网站又不能访问了,对此,我的理解是,之前所运行的程序只是在前台运行,而没有转入后台运行,类似于 visual studio中的调试状态;我是通过linux的定时任务(crontab命令)解决,大致原理是,编写一个 Shell脚本文件,在脚本文件中判断网站程序是否正在运行,如果没有正在运行则启用(也就是执行第4步操作),然后在通过crontab 定时执行这个 Shell 脚本;
原文地址:https://www.cnblogs.com/JETSh/p/9178247.html