基于 Linux 部署 .NET 应用

基于 Linux 部署 .NET 应用

Step 1: 安装 .NET 运行时

  1. 在线安装:
    • 添加 Microsoft 包存储库: sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
    • 查看可安装的 .NET SDK: yum search dotnet-sdk
    • 安装合适的版本: sudo yum install dotnet-sdk-7.0.x86_64
    • 查看安装环境: dotnet --list-sdksdotnet --list-runtimes
    • 发布并上传 .NET 应用到 Linux 服务器
  2. 离线安装:
    • 官网下载 https://dotnet.microsoft.com/zh-cn/download/dotnet/6.0 选择和服务器对于的架构包
    • 将离线安装包传输到目标 Linux 服务器,推荐路径:/usr/local/dotnetpack(需要手动创建文件夹)
    • 然后cd到 /usr/local/dotnetpack
    • 把dotnet运行时解压到 /usr/local/dotnet(需要手动创建文件夹) sudo tar -zxvf dotnet-runtime-6.0.x-linux-x64.tar.gz -C /usr/local/dotnet ⚠️"6.0.x"是版本号.还有“x64”也要改为自己对应的架构
    • 然后创建符号链接 sudo ln -s /usr/local/dotnet/dotnet /usr/bin/dotnet,将 /usr/local/dotnet/dotnet 可执行文件链接到 /usr/bin/dotnet,让系统能全局识别 dotnet 命令
    • 查看安装环境: dotnet --list-sdksdotnet --list-runtimes
    • 发布并上传 .NET 应用到 Linux 服务器,推荐路径 /usr/local/wcswebapipack
  3. 包含环境打包
    • dotnet publish -r linux-x64 --self-contained true

Step 2: 防火墙配置

  1. 查看是否占用端口: netstat -tunlp|grep 端口号,占用则杀掉进程: kill -9 进程号
  2. 查看防火墙状态: systemctl status firewalld
  3. 永久开启防火墙: firewall-cmd --zone=public --add-port=端口号/tcp --permanent
  4. 重新加载防火墙: firewall-cmd --reload
  5. 开机自启动: systemctl enable firewalld
  6. 查看开放的端口: firewall-cmd --list-ports

Step 3: 创建服务

  1. 进入 Daemon 管理路径: cd /etc/systemd/system
  2. 创建 service 配置文件: vim wcswebapi.service
  3. 编辑内容 (根据具体情况修改):
    • [Unit]: 描述服务
    • [Service]: 设置用户、工作目录、启动命令等
    • [Install]: 设置服务依赖
    • [WorkingDirectory]:是打好包的路径
    • [ExecStart]:是分为两部分的 “/usr/bin/dotnet” 是固定的就是1.2创建的符号链接,空格后面的就是打好包的dll路径
    • [Unit]
      Description=ASPNET Core WebApi
      [Service]
      User=root
      Group=root
      WorkingDirectory=/usr/local/wcswebapipack
      ExecStart=/usr/bin/dotnet /usr/local/wcswebapipack/Project.WebApi.dll
      Restart=always
      RestartSec=10
      SyslogIdentifier=netcore-demo
      Environment=ASPNETCORE_ENVIRONMENT=Production
      [Install]
      WantedBy=multi-user.target
      
  4. 加载服务配置文件,请注意在每次修改Service文件内容后也需要执行此命令: systemctl daemon-reload
  5. 设置开机启动: systemctl enable wcswebapi.service
  6. 启动服务: systemctl start wcswebapi.service
  7. 查看服务状态: systemctl status wcswebapi.service
  8. 查看服务日志: journalctl -u wcswebapi.service -n 100
  9. 如果服务启动失败 可以进入到 cd /usr/local/wcswebapipack,使用dotnet Project.WebApi.dll直接启动尝试
  10. 如果更新服务,先停止服务systemctl stop wcswebapi.service,把文件替换后,启动服务systemctl start wcswebapi.service,服务文件路径 cd /usr/local/wcswebapipack

Step 4: MySQL 设置

  1. 防火墙开放端口 3306
  2. 编辑 MySQL 配置文件:
    • cd /etc/my.cnf 在 [mysqld] 部分,添加 bind-address = 0.0.0.0
  3. 修改 MySQL 用户权限:
    • 连接 MySQL: mysql -u root -p
    • 使用 use mysql 指定数据库
    • 查看用户信息: SELECT User, Host, authentication_string FROM user;
    • 修改用户权限: Update user set host='%' where host = '::1'
    • 重启 MySQL 服务: sudo systemctl restart mysqld
  4. 解决 Navicat 连接 MySQL 报错:
    • 编辑 MySQL 配置文件: cd /etc/my.cnf
    • [mysqld] 部分,添加 show_compatibility_56 = 1
    • 重启 MySQL 服务: sudo systemctl restart mysqld

基于 Linux 部署 Nginx

步骤 1: 准备 Nginx 安装包

  1. 在有网络的机器上下载 Nginx 及其依赖的 RPM 包。
  2. 将下载的 RPM 包传输到你的 CentOS 服务器。

步骤 2: 安装 Nginx

  1. 安装依赖: sudo rpm -ivh <依赖包文件名>
  2. 安装 Nginx: sudo rpm -ivh <nginx 包文件名>
  3. 启动 Nginx: sudo systemctl start nginx

步骤 3: 配置前端页面

  1. 将前端代码放到 Nginx 目录下: /etc/nginx/dist

  2. 配置 Nginx:

    • 编辑配置文件: sudo vi /etc/nginx/nginx.conf

    • 更新 server 块(server块是放在http块中的):

      server {
          listen 8170; # 端口号
          server_name 192.168.1.20;  # 替换为你的域名或IP地址
      
          location / {
              root /etc/nginx/dist;  # 你的前端代码目录
              index index.html index.htm;
          }
      }
      
  3. 重启 Nginx: sudo systemctl restart nginx

步骤 4: 测试

  1. 访问前端页面: 在浏览器中输入服务器 IP 地址或域名。
  2. 检查错误日志: /var/log/nginx/error.log

其他

  • 查看 Nginx 服务状态: systemctl status nginx.service

  • 解决绑定端口异常: sudo setenforce 0

  • 为了避免每次重启后都需要执行 sudo setenforce 0 命令,可以通过修改 SELinux 配置文件来永久禁用 SELinux。以下是操作步骤:

    打开 SELinux 配置文件:sudo vi /etc/selinux/config

    找到 SELINUX 设置,将其值从 enforcing 更改为 disabledSELINUX=disabled

    保存并退出文件编辑器。

    重启系统以使更改生效:sudo reboot

posted @ 2024-11-18 15:56  柴油飞机  阅读(178)  评论(0)    收藏  举报