基于 Linux 部署 .NET 应用
基于 Linux 部署 .NET 应用
Step 1: 安装 .NET 运行时
- 在线安装:
- 添加 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-sdks和dotnet --list-runtimes - 发布并上传 .NET 应用到 Linux 服务器
- 添加 Microsoft 包存储库:
- 离线安装:
- 官网下载 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-sdks和dotnet --list-runtimes - 发布并上传 .NET 应用到 Linux 服务器,推荐路径 /usr/local/wcswebapipack
- 包含环境打包
- dotnet publish -r linux-x64 --self-contained true
Step 2: 防火墙配置
- 查看是否占用端口:
netstat -tunlp|grep 端口号,占用则杀掉进程:kill -9 进程号 - 查看防火墙状态:
systemctl status firewalld - 永久开启防火墙:
firewall-cmd --zone=public --add-port=端口号/tcp --permanent - 重新加载防火墙:
firewall-cmd --reload - 开机自启动:
systemctl enable firewalld - 查看开放的端口:
firewall-cmd --list-ports
Step 3: 创建服务
- 进入 Daemon 管理路径:
cd /etc/systemd/system - 创建 service 配置文件:
vim wcswebapi.service - 编辑内容 (根据具体情况修改):
[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
- 加载服务配置文件,请注意在每次修改Service文件内容后也需要执行此命令:
systemctl daemon-reload - 设置开机启动:
systemctl enable wcswebapi.service - 启动服务:
systemctl start wcswebapi.service - 查看服务状态:
systemctl status wcswebapi.service - 查看服务日志:
journalctl -u wcswebapi.service -n 100 - 如果服务启动失败 可以进入到
cd /usr/local/wcswebapipack,使用dotnet Project.WebApi.dll直接启动尝试 - 如果更新服务,先停止服务
systemctl stop wcswebapi.service,把文件替换后,启动服务systemctl start wcswebapi.service,服务文件路径cd /usr/local/wcswebapipack
Step 4: MySQL 设置
- 防火墙开放端口 3306
- 编辑 MySQL 配置文件:
- cd /etc/my.cnf 在
[mysqld]部分,添加bind-address = 0.0.0.0
- cd /etc/my.cnf 在
- 修改 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
- 连接 MySQL:
- 解决 Navicat 连接 MySQL 报错:
- 编辑 MySQL 配置文件:
cd /etc/my.cnf - 在
[mysqld]部分,添加show_compatibility_56 = 1 - 重启 MySQL 服务:
sudo systemctl restart mysqld
- 编辑 MySQL 配置文件:
基于 Linux 部署 Nginx
步骤 1: 准备 Nginx 安装包
- 在有网络的机器上下载 Nginx 及其依赖的 RPM 包。
- 将下载的 RPM 包传输到你的 CentOS 服务器。
步骤 2: 安装 Nginx
- 安装依赖:
sudo rpm -ivh <依赖包文件名> - 安装 Nginx:
sudo rpm -ivh <nginx 包文件名> - 启动 Nginx:
sudo systemctl start nginx
步骤 3: 配置前端页面
-
将前端代码放到 Nginx 目录下:
/etc/nginx/dist -
配置 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; } }
-
-
重启 Nginx:
sudo systemctl restart nginx
步骤 4: 测试
- 访问前端页面: 在浏览器中输入服务器 IP 地址或域名。
- 检查错误日志:
/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更改为disabled:SELINUX=disabled保存并退出文件编辑器。
重启系统以使更改生效:
sudo reboot

浙公网安备 33010602011771号