第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

posted @ 2024-08-18 13:19  似梦亦非梦  阅读(4)  评论(0编辑  收藏  举报