第1篇:aspnetcore,webapi项目打包发布,以.net7为例
1.打包项目,打开visual studio
项目是ChenShiBao.AspNetCore7.0,发布成功并上传服务,启动服务以这个ChenShiBao.AspNetCore7.0.dll为准
1.1 生成发布包
1.2 选择发布形式
2.在终端利用scp指令将本地已发布的应用传到linux服务上,【或通过第三方工具xshell上传发布包】
终端命令:scp -r 本地已发布的项目地址 目标服务器的项目地址
示例:scp -r e:\定时服务\chenshibao.aspnetcore7.0\publish 服务器用户@服务器名称或服务器ip地址:/root/project/release/webapi/aspnetcore7.0
3.linux服务器上安装net7.0的运行时环境【环境已有就不用再安装】:
示例:sudo yum install dotnet-runtime-7.0
示例:sudo yum install dotnet-sdk-7.0
4.启动webapi服务
dotnet 服务器上的项目路径/chenshibao.aspnetcore7.0.dll
示例:dotnet project/release/webapi/aspnetcore7.0/publish/ChenShiBao.AspNetCore7.0.dll
5.成功启动项目,终端开启
出现以下标志说明服务已经正常启动
6.关闭终端:
直接键盘ctrl + C;
7.要想服务在进程中运行,即使你退出终端或断开 SSH 连接,进程仍然会继续运行,可执行以下命令:
命令:nohup dotnet ChenShiBao.AspNetCore7.0.dll &
8.关闭服务,可以找到服务对应的进程id,通过进程id关闭:
查询dotnet相关的进程命令:ps -ef | grep dotnet 或 ps aux | grep dotnet
执行关闭命令:kill -9 2303540
9.CentOS上配置nginx代理
第一步:安装nginx:
sudo yum install nginx
第二步:启动和管理nginx:
sudo systemctl start nginx
设置开机自动启动:
sudo systemctl enable nginx
第三步:检查nginx状态
sudo systemctl status nginx
10.使用https【不是一定要配置,如果配置ssl安全证书,绑定到域名,需要先做DNS域名解析,使得域名和服务器公网的ip地址绑定,具体配置可以参考阿里云或腾讯云域名解析流程】
第一步:首先安装 Certbot:
sudo yum install certbot python3-certbot-nginx
第二步:然后使用 Certbot 获取 SSL 证书并配置 Nginx:
sudo certbot --nginx -d your_domain_or_ip
第三步:更新nginx配置
Certbot 会自动更新你的 Nginx 配置文件以使用生成的 SSL 证书。如果你手动配置,可以在 Nginx 配置文件中添加类似以下内容:
11.配置nginx作为反向代理
第一步:可以建一个配置文件来设置反向代理
sudo nano /etc/nginx/conf.d/ChenShiBao.AspNetCore7.0.conf
在新建的配置文件ChenShiBao.AspNetCore7.0.conf配置以下内容:
server {
listen 5000;
server_name your_domain_or_ip;
#listen 443 ssl; #有安全ssl安全认证才设置
#server_name xxx; # 将此处替换为你的域名或服务器的 IP 地址
##SSL 证书和密钥文件的位置
#ssl_certificate /etc/letsencrypt/live/csbneter.club/fullchain.pem; #有安全ssl安全认证才设置
#ssl_certificate_key /etc/letsencrypt/live/csbneter.club/privkey.pem; #有安全ssl安全认证才设置
location / {
proxy_pass http://localhost:5000; # 转发到你的ASP.NET Core应用程序
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;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
将 your_domain_or_ip 替换为你的域名或服务器的 IP 地址。
第二步:测试nginx配置
sudo nginx -t
如果配置文件没有错误,你会看到 syntax is ok 和 test is successful 的信息。
第三步:重新加载nginx:
sudo systemctl reload nginx
第四步:编辑nginx配置文件
打开 Nginx 主配置文件 /etc/nginx/nginx.conf 或你正在使用的虚拟主机配置文件:
sudo vim /etc/nginx/nginx.conf
在nginx.conf配置下面内容:
http {
# 增加这些指令
client_max_body_size 10M;
large_client_header_buffers 4 16k;
}
保存完后,再次执行第二,三步;
第五步:服务器上设置安全组和防火墙,允许端口访问;
这里的端口设置,需要与nginx监听的端口一致才可以,只有这样才能从外部的请求访问,这个地址和端口,通过nginx代理转发到服务器本地的应用程序上;
服务器上的应用程序的端口与nginx的监听端口是不一致的;
例如:nginx监听端口是1000,那应用程序的端口就得设置为其他端口;
常用命令:
查看哪些进程使用哪个端口:sudo lsof -i :5000
杀死某个进程:kill -9 进程id;
确认应用程序在哪个端口上运行:sudo netstat -tulnp | grep dotnet
查看nginx的error.log:sudo tail -f /var/log/nginx/error.log
开启nginx:sudo systemctl start nginx
停止nginx:sudo systemctl stop nginx
重新加载配置:sudo systemctl reload nginx或sudo service nginx reload