.netcore项目初体验(新手必看,第一次用必看)

 为什么叫新手必看?第一次必看?

因为我就是新手,我第一次用它。就在2周前。目前项目运行平稳。

此文有你第一次使用时,必须要使用的一切配置。

 

题外话:

虽然netcore现在已经是2.2版本了,江湖流传是能比肩Java的微软神作,但却是我第一次用.netcore来做生产项目。选它的原因也有些令人尴尬。

公司因为变革,改走java路线了。服务器也不在我手上进行管理。于是问了管服务器的同事,说是windows服务器已经没有了。

没办法。之前用java写过一个项目,进度太慢。这次的项目时间短任务重,又只有自己一个干。

于是乎,那就.netcore走下去吧。至少是C#,再慢也比写java快。

 

话不多说。接下来的内容就是本次项目使用netcore的各种经验和总结,当然,也有坑坑坑的事儿发生。

开发环境:win7/win10 vs2017  .netcore2.1

生产环境:centos7.4,ubuntu 16

 

本次项目使用的技术点有:

netcore项目发布介绍(及添加linux下的驻守进程)[已完结]

netcore读取配置文件及mysql连接

log4net 配置(全局异常捕获)

swagger 配置

Autofac 的配置

https 的配置及使用

cors 跨域的配置

图片合成,生成二维码,

 

netcore项目发布介绍(及添加linux下的驻守进程)

1、本地发布:和原先.netframework项目一样,项目右键,点发布即可。

  注意下图,发布的配置文件中需要选择linux-64;    

  

  发布后,只有原先.netframework项目的bin目录,没有任何静态资源文件夹。

  若有使用到的话,记得将静态资源文件,项目的xml文件(swagger会使用到)等也记得打包好。

2、安装生产服务器的运行环境:

  netcore在centos7.4安装下的安装步骤( ubuntu与之类似)

  (官方教程:https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install)

  sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

  sudo yum update

  sudo yum install dotnet-sdk-2.1

  安装步骤太简单了,简直不需要多余的描述了。

  然后输入 dotnet 回车,若出现如下图所示,则表示安装成功了。

  

  否则,请详细查看安装时的内容,里面会有提示你为什么没有安装成功的原因。

  注:之前用腾讯云安装了centos7.6(系统安装好后服务器上本地查询,却是显示的7.5版本,后来死活连接不上mysql。因为时间关系,具体原因没有分析过。后来)

3、上传打包好的文件夹到linux服务器

  本文上传路径为: /usr/wwwroot/mynetcoreproject (路径自己定,没有的话就新建吧)

  上传好后进入此目录,

  输入命令 dotnet mynetcoreproject .dll,

  看到如下界面,则表示启动成功

  

  此时,表示服务器已经在8088端口启用,

  输入命令: curl http://localhost:8088/api/values 应该就能看到此接口的返回数据了。

 4、安装守护进程supervisor

  如第3步的操作,若退出xshell或退出控制台,那么这个站点也同时被关闭了(不能像服务一样在后台运行,生产环境中这是不敢想象的)

  面临的问题以如下三个(出处:https://www.cnblogs.com/Hai--D/p/5820718.html

问题1:ASP.NET Core应用程序运行在shell之中,如果关闭shell则会发现ASP.NET Core应用被关闭,从而导致应用无法访问,这种情况当然是我们不想遇到的,而且生产环境对这种情况是零容忍的。 

问题2:如果ASP.NET Core进程意外终止那么需要人为连进shell进行再次启动,往往这种操作都不够及时。 

  问题3:如果服务器宕机或需要重启我们则还是需要连入shell进行启动。  

  此时,就要安装守护进程supervisor了。.至于它是什么?安装好后就知道了。

  安装过程如下:(详见https://www.cnblogs.com/Dicky-Zhang/p/6171954.html,众多网友有反馈提到我下面的安装方式是有坑的,在前面给到的链接文章中也是排在最后一位的安装方式。具体有什么坑不得而知,我偷懒用了第四次,运气好,一次成功,就不再研究了)  

$ sudo su - #切换为root用户

# yum install epel-release

# yum install -y supervisor

# systemctl enable supervisord # 开机自启动

# systemctl start supervisord # 启动supervisord服务

# systemctl status supervisord # 查看supervisord服务状态

# ps -ef|grep supervisord # 查看是否存在supervisord进程

安装完成后,先别急着启动它,还需要做如下配置

 

在supervisord.conf中,添加控制台访问

[inet_http_server]         ; inet (TCP) server disabled by default

port=*:7002        ; (ip_address:port specifier, *:port for all iface)

username=yourusername              ; (default is no username (open server))

password=yourpassword               ; (default is no password (open server))

 

注意,在supervisord.conf的

[include]

files = /etc/supervisor/conf.d/*.ini

有如上信息,

所以,启动进程的配置文件将写在 /etc/supervisor/conf.d/目录下

 

[program:yourprogram]

command=dotnet /usr/wwwroot/yourprogram/yourprogram.dll    ;这一行其实就是手动启动项目的命令

directory=/usr/wwwroot/yourprogram

environment=ASPNETCORE__ENVIRONMENT=Production

user=root

stopsignal=INT

autostart=true

autorestart=true

startsecs=3

stderr_logfile=/var/log/ossoffical.err.log

stdout_logfile=/var/log/ossoffical.out.log

保存并退出后,

再执行systemctl start supervisord启动守护进程,此时,站点项目也就一起启动起来了。

通过访问 http://IP:7002,再输入账号密码(supervisord.conf中inet_http_server节的配置)

就能看到如下界面了。

 

  因为Supervisor已经设定为自动启动了,所以每次它自身的启动也会将所以配置文件下项目都启动起来。

  通过上文的界面管理,在版更项目后,也可方便的点一下“Restart“即可。

 

                            

 

posted on 2019-05-19 22:02  落忆无痕  阅读(1682)  评论(0编辑  收藏  举报

导航