Appearance
本文以演示环境如下:
操作系统 | 系统类型 | 作者 |
---|---|---|
CentOS7 | x86_64 | 彭湃 |
在部署.Net6 应用程序之前,需要先安装依赖的 SDK 以及 Runtime
1. 安装 .Net6 SDK 及 ASP.NET Core 运行时
下载地址:https://dotnet.microsoft.com/zh-cn/download/dotnet/6.0
1.1 将下载好的文件复制到指定的目录,推荐使用 WinSCP 软件连接到 Linux 服务器,这里以目录/LinuxNet 为例
① 创建安装目录
SSH
sudo mkdir /usr/share/dotnet
② 解压安装包到指定目录
SSH
sudo tar -xvf /linuxNet/dotnet-sdk-6.0.407-linux-x64.tar.gz -C /usr/share/dotnet/
③ 添加环境变量
打开 /etc/profile 文件,添加以下内容:
(依旧推荐使用 WinSCP 找到此路径下的文件并打开修改,避免出现不必要的错误)
SSH
export PATH=$PATH:/usr/share/dotnet
④ 使环境变量生效
运行以下命令,使环境变量生效:
SSH
source /etc/profile
⑤ 验证安装
运行以下命令验证 .NET 6 是否安装成功:
SSH
dotnet --version
如果出现以下错误,则还需要安装 [libicu]
这个错误提示是因为在运行 .NET 6 应用程序时,缺少必要的 ICU 库文件,因此 .NET 6 运行时无法启动全球化支持。
要解决这个问题,你需要安装 libicu 库文件。具体方法如下:
在线安装直接执行命令
SSH
sudo yum install libicu
离线安装则需要执行命令安装:
序号 | 安装包 |
---|---|
1 | libicu-50.2-4.el7_7.x86_64.rpm |
2.安装 Nginx
2.1 准备阶段
(1) 查看 操作系统是否安装 gcc、gcc-c++;
(2) 从 CentOS 7 镜像中,提取依赖安装包:gcc、gcc-c++;
(3)下载 Nginx 需要依赖的离线安装包:ssl、pcre、zlib;
(4)下载 Nginx 离线安装包:nginx-1.23.4.tar.gz。
2.2 安装步骤
(1) 安装依赖:gcc、gcc-c++、ssl、pcre、zlib。
(2) 安装 Nginx;
(3)启动 Nginx(直接用默认配置启动测试即可)。
2.3 准备
1、查看 操作系统是否安装 gcc、gcc-c++ :
查看是否安装 gcc 的命令:
SSH
gcc -v
查看是否安装 gcc-c++ 的命令:
SSH
g++ -v
2、(如果已经安装 gcc ,忽略此步骤。)在 CentOS 7 的安装镜像,packages 目录,找到安装 gcc 相关的 rpm 包,并放到一个文件夹里(命名 [1.gcc]),列表如下(注意:不同版本的操作系统,对应的 rpm 版本也不同):
序号 | 安装包 |
---|---|
1 | cpp-4.8.5-44.el7.x86_64.rpm |
2 | gcc-4.8.5-44.el7.x86_64.rpm |
3 | glibc-2.17-317.el7.x86_64.rpm |
4 | glibc-common-2.17-317.el7.x86_64.rpm |
5 | glibc-devel-2.17-317.el7.x86_64.rpm |
6 | glibc-headers-2.17-317.el7.x86_64.rpm |
7 | kernel-headers-3.10.0-1160.el7.x86_64.rpm |
8 | libmpc-1.0.1-3.el7.x86_64.rpm |
9 | mpfr-3.1.1-4.el7.x86_64.rpm |
3、(如果已经安装 gcc-c++ ,忽略此步骤。)在 CentOS 7 的安装镜像,packages 目录,找到安装 gcc-c++ 相关的 rpm 包,并放到一个文件夹里(命名 [2.gcc-c++]),列表如下(注意:不同版本的操作系统,对应的 rpm 版本也不同):
序号 | 安装包 |
---|---|
1 | gcc-c+±4.8.5-28.el7.x86_64.rpm |
2 | libstdc+±devel-4.8.5-28.el7.x86_64.rpm |
4、下载 Nginx 需要依赖的离线安装包,放到一个文件夹里(命名 [3.Other])。
5、下载 Nginx 离线安装包,放到文件夹 1、2、3 的同级目录:
2.4 安装
1、安装 gcc (如果已经安装 gcc ,忽略此步骤。):
进入到文件夹 [1.gcc]
SSH
cd /LinuxNet/1.gcc
SSH
rpm -Uvh *.rpm --nodeps --force
2、安装 gcc-c++ (如果已经安装 gcc-c++ ,忽略此步骤。):
进入到文件夹 [2.gcc-c++]
SSH
cd /LinuxNet/2.gcc-c++
SSH
rpm -Uvh *.rpm --nodeps --force
3、解压并安装 pcre :
进入到文件夹 [3.Other]
SSH
cd /LinuxNet/3.Other
SSH
rpm -Uvh *.rpm --nodeps --force
4、解压并安装 zlib :
进入到文件夹 3.Other
SSH
rpm -Uvh *.rpm --nodeps --force
5、解压并安装 openssl :
进入到文件夹 3.Other
SSH
tar -zxvf openssl-1.1.0e.tar.gz
cd openssl-1.1.0e/
./config
make && make install
6、解压并安装 Nginx :
SSH
tar -zxvf nginx-1.23.4.tar.gz
cd nginx-1.23.4/
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-pcre=../3/pcre-8.37 --with-zlib=../3/zlib-1.2.11 --with-openssl=../3/openssl-1.1.0e
make && make install
7、启动 Nginx(直接用默认配置启动测试即可):
SSH
cd /usr/local/nginx/sbin
./nginx
8、开放端口:
默认防火墙应该都是开启的,因此需要开放端口。
查看端口:
SSH
firewall-cmd --zone=public --list-ports
开放端口:
SSH
firewall-cmd --zone=public --add-port=80/tcp --permanent
重启防火墙:
SSH
systemctl restart firewalld
9、测试:
浏览器打开,输入 IP 地址即可,默认使用 80 端口。
10、查看 Nginx 进程:
SSH
ps –ef|grep nginx
11、停止 Nginx:
SSH
./nginx -s stop
正式部署我们的应用程序池
将发布后的代码复制到指定的目录,我们以文件夹[Net_DM]为例
使用命令进入/Net_DM/Portal 下
SSH
cd /Net_DM/Portal
执行启动应用程序的命令,以启动 Portal 并指定端口号 20001 为例
SSH
dotnet Portal.dll --urls http://10.10.0.191:20001
根据应用程序池配置 Nginx
找到 Nginx 的目录
SSH
whereis nginx
如图 Nginx 目录为“/usr/local/nginx”
使用 WinSCP 进入到此目录,打开 conf 文件夹下的 nginx.conf 文件进行编辑
直接复制粘贴以下配置进行覆盖
cnof
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
client_max_body_size 10m;
server {
listen 20000;
server_name 10.10.0.191;
location / {
rewrite ^(.*)$ /Portal/Main/Index permanent;
}
location ~/Portal/ {
proxy_pass http://10.10.0.191:20001;
}
location ~/CommonWebResource/ {
proxy_pass http://10.10.0.191:20001;
}
location ~/MvcConfig/ {
proxy_pass http://10.10.0.191:20002;
}
location ~/Base/ {
proxy_pass http://10.10.0.191:20003;
}
}
}
配置保存成功后请重启 Nginx
SSH
cd /usr/local/nginx/sbin //进入Nginx的sbin目录
./nginx -s reload //重启Nginx命令
最后启动 Nginx 监听的主站点测试搭建是否成功
补充内容:Linux 部署 FileStore 需要注意的事项
1.在 app.json 中需要设置“HostUri”,填写主站点的 IP 与端口号,利用 Nginx 进行端口转发。
2.配置 Nginx
此处的示例表示 FileStore 启动的端口指定为 20004,当系统页面请求接口地址为 http://10.10.1.100:20000/FileStore/AAA/BBB 时,Nginx 会自动转发到 http://10.10.1.100:20004 下的接口。
由于新版 FileStore 为独立的 WebAPI 接口和解决方案,未增加路由地址固定的前缀,需要这样配置。