1、在Centos7上完整的部署.net Core项目
2、.net core项目添加进程守护supervisor
Centos7安装 .net core
先添加微软包存储库(Centos 8不需要,8默认提供)
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
安装SDK或者运行时,需要做开发就安装SDK,只是为了项目能在服务器上运行,只安装运行时就行,SDK包含运行时,我直接安装了SDK
安装SDK,此处安装是3.1的
sudo yum install dotnet-sdk-3.1
安装运行时(如果安装了SDK,这一步就不需要了)
sudo yum install aspnetcore-runtime-3.1
这里边可能会遇到下面的问题:
比如,找不到包,更新包存储库后依然没法安装
下面三条指令可以更新包的存储库
yum清理
yum clean all
yum添加缓存
yum makecache
yum更新
yum -y update
如果安装还报错,查看可选择的源
yum search dotnet
然后选择对应的源进行安装
yum install dotnet-sdk-3.1.x86_64
查看是否安装成功,提示版本号则安装成功
dotnet --version
安装 git
此处我把服务器当作git的一个客户端来用的,因为有现成的git管理库,这里偷个懒,只安装git客户端。cnetos7 安装git客户端比较简单
sudo yum install -y git
通常网站项目建在/var/www 目录下面,再新建一个自定义的项目目录。
初始化仓库
git init
添加用户名、邮箱
git config --global user.name "name" git config --global user.email "email@example.com"
添加远程连接
git remote add origin http://192.168.0.38/admin/*****.git
拉取最新的代码
git pull origin dev
centos7解决git每次都要输入账号密码的问题,参照下面这个博客里边的内容,亲测有效
.net core项目发布linux环境下的文件
此处用默认的项目做实验,目标框架3.1,服务器环境已配置好,这里使用框架依赖模式就行,注意目标运行时要选择“linux-x64”。
文件系统发布的内容如下,CoreWebTest是项目名称
将项目文件通过Windows上的git推送到代码服务器,然后再从刚才配置的Centos服务器上获取最新的文件,项目就更新到服务器上了
Core项目的启动
#进入项目目录
cd /var/www/你的项目文件名
#启动站点(注意下面这条指令可以让网站启动后在后台运行)
nohup dotnet CoreWebTest.dll --urls="http://*:5000" &
CoreWebTest.dll是我的项目名称,5000是项目的端口号(可以自定义) ,上面的指令是让站点后台启动。
#查看站点是否运行
ps -aux | grep "CoreWebTest.dll"
#测试站点访问,如果得到是首页的代码,则表示项目启动正常
curl http://localhost:5000/
nginx安装配置
项目安装好了,但是目前外网应该还访问不到,没有配置IP、域名,这块借助nginx,此处配置的是80端口,端口配置后注意检查firewall或者iptables里边,端口是否允许访问。
安装nginx
sudo yum install -y nginx
启动
sudo systemctl start nginx
开机自启动
sudo systemctl enable nginx
修改配置文件,这里配置了两个域名,后面测试域名访问的时候记得修改本地hosts文件
server {
listen 80;
server_name www.core.com www.core1.com; #如果配置多个域名用空格隔开
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;
}
}
验证配置文件是否正确,出现下面提示表示配置文件正确
sudo nginx -t
重启nginx,使配置生效
sudo nginx -s reload
访问IP或者配置的域名(记得修改host文件),即可在外部访问。如果出现502,是SELinux配置的问题,需要将Nginx加到SELinux的允许名单,后面的“corenginx”是自己起的名字。
sudo yum install policycoreutils-python
sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M corenginx
sudo semodule -i corenginx.pp
到这里,配置的Core项目已经可以正常访问了,但为了保证项目能正常运行不中断,还得配置进程守护,由于篇幅有限,进程守护放到下一篇文章。
进程守护