缘起

自从微软退出了netcore,那么对于.net程序员最快乐的事情莫过于可以抛弃被人鄙夷的windows操作系统了。拥抱linux,拥抱开源,看着linux的命令窗口才有那么一丝丝高深莫测的味道~
  写netcore也挺久了,但是也一直部署在windows服务器上,于是今天便忙里偷闲,来尝试一次centos7上部署的感觉

过程

第一、环境安装

当然是环境,安装netcore sdk或netcore 运行时。
  具体可以参考微软的文章,还是挺简单的:[在 CentOS 上安装 .NET Core SDK 或 .NET Core 运行时]( https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-centos)  
  装好以后,就是将项目打包放到自己喜欢的文件夹里就好了。
  接着通过,dotnet xxx.dll运行起来看看。那么文件就会按照你配置的端口运行起来了。

第二、安装nginx

安装nginx的作用当然是反代,让外网可以访问到你的项目。
  由于我的服务器上本来就装好了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;
	}
    }

主要是加上了上面这句话,对5000端口进行反代。当然端口可以自定义,具体的参考dotnet cli的命令即可。

第三、守护进程 supervisor

如果不做这一步就结束的话,那么你关了远程连接的小黑框,你的项目也会跟着关闭。

1.安装supervisor
 yum install supervisor
 
2.修改supervisord.conf的配置文件
[include]
files = /etc/supervisor/conf.d/*.ini

修改成这样即可,这只是一个读取进程配置文件的路径,意思就是读取 /etc/supervisor/conf.d/路径下所有的.ini文件,所以对路径不强求,自己定义即可,只需将.ini文件放在对应的路径下。

3.编辑配置文件 路径在 /etc/conf.d 下面创建一个xxx.ini的文件,以下是内容
 
[program:DemoCore]                                     #DemoCore是进程名,可自定义
command=dotnet Demo.dll                                #用执行的命令
directory= /home/project/publish/                      #执行命令的文件夹
autostart=true                                         #是否自启动
autorestart=true                                       #是否自动重启
startretries=5                                            
startsecs=1                                            #自动重启时间间隔
numprocs=1
stderr_logfile=/var/log/Demo.err.log                   #错误日志文件
stdout_logfile=/var/log/Demo.out.log                   #输出日志文件
enviroment=ASPNETCORE_ENVIRONMENT=Production           #环境变量
stopsignal=KILL                                        
stopwaitsecs=10

4.启动服务
supervisord -c /etc/supervisord.conf

以上,netcore项目就成功部署在了centos7服务器上了。


PS:supervisor有一个自带的图形化界面,只需在刚刚的supervisord.conf文件中修改成如下即可

[inet_http_server]       ; inet (TCP) server disabled by default
port=0.0.0.0:9001        ; ip_address:port specifier, *:port for all iface
username=user            ; default is no username (open server)
password=123             ; default is no password (open server)