缘起
自从微软退出了 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. 修改 supervisor.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 有一个自带的图形化界面, 只需在刚刚的 supervisor.conf 文件中修改成如下即可
- [inet_http_server] ; .NET (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)
来源: http://www.bubuko.com/infodetail-3649948.html