离线部署Linux环境,不借助docker
离线部署Linux系统dotnet 6.0环境
前言、
Linux 命令请用管理员身份运行
命令:sudo -s
一、下载.NET环境
官网地址:下载 .NET 6.0 (Linux、macOS 和 Windows) (microsoft.com)
在官网下载对应Linux 系统的环境安装包, SDK 已包含runtime
下载完成将安装包拷贝到服务器
右键输入命令(解压地址可省略,默认为当前地址)
tar zxvf [压缩包] -C [解压地址]
我解压到/home/zwf/dotnet 下
配置环境变量
输入:vim /etc/profile
在文件末尾加入
export DOTNET_ROOT=[解压路径]/dotnet
export PATH=$PATH:[解压路径]/dotnet
保存文件之后输入以下命令更新环境变量
. /etc/profile
查看换进是否配置成功
dotnet --info
出现如下图,则net 6.0环境已成功配置
二、项目运行
首先将项目的发布文件拷贝到服务器
可将压缩包拷贝到服务器,Linux服务器通过命令进行解压,也可将发布文件直接拷贝到服务器
我现在已经将发布文件的压缩包拷贝到了服务器
通过命令将文件解压到指定路径
(下边命令是创建/home/zwf/NK4.5/Pubilsh文件夹,将压缩文件解压到/home/zwf/NK4.5/Pubilsh)
注:mkdir 创建文件夹 unzip 解压zip文件
mkdir -p /home/zwf/NK4.5/Pubilsh && unzip -d /home/zwf/NK4.5/Pubilsh Publish.zip
切换到解压文件目录查看文件结构
进入站点文件将项目运行(注意端口不要重复或者占用已有端口)
需要在后台启用dotnet 。linux 后台启动命令 nohup
后台启动需要将输出信息存放到文本文件中(不同的项目需要建立不同的输出日志文件)
新建文件夹: mkdir /home/zwf/NK4.5/log (存放输出日志的文件夹)
新建文件: touch /home/zwf/NK4.5/log/BasicApplication.txt (存放输出日志的文件,根据站点配置多个)
输入命令(只能在Publish/BasicApplication 文件夹内运行,否则会报引用错误):
nohup dotnet BasicApplication.dll --urls=http://localhost:9001/ &> /home/zwf/NK4.5/log/BasicApplication.txt &
返回数据为 63432 (进程ID,关闭的时候会用到)
返回下面数据然后打开刚刚的存放输出日志的文件,查看是否运行成功
没有报错则项目成功启动,同样的方式将其他站点
启动项目后,如何关闭?
可通过命令
kill -9 [进程ID]
如何查看进程ID?
ps -ef | grep [进程关键字]
例如:我想查找我运行的dotnet 项目,我执行的命令是 dotnet ***.dll
所以我可以通过以下命令来进行查找
ps -ef | grep dotnet
然后在查看进程,发现进程ID为63432 的进程已被杀死
将所有项目都启动后可通过
ps -ef | grep dotnet
查看所有的项目进程都起来了
那么项目就都配置成功了
三、Nginx 配置
1.环境搭建:先安装gcc (nginx 需要依赖于它)
操作参考地址: https://www.cnblogs.com/dyd168/p/14603495.html
需要下载10个依赖包(必须与自己的版本对应,版本不兼容会出现服务器死机)
依赖下载地址 https://pkgs.org/download/gcc-c++
查看系统版本信息
cat /etc/centos-release
查看Linux版本信息
cat /proc/version
我的Linux 版本是X86_64的,centos 版本为8.5.2111
进入官网选择合适的版本
我选择了centos 版本为8,Linux 版本为X86_64的一个最新的安装包,点击进去往下滑动
复制Download 中的此链接下载该文件
将此页面中requires 中的gcc,libmpc.so.3()(64bit),libstdc++-devel 用同样的方式都下载下来(这是gcc 的依赖)
下载完成后现在有了4个安装包
点击上图的gcc,选择刚刚下载的版本
将gcc中的cpp,glibc-decel,libisl.so.15()(64bit)文件用同样的方式下载下来
现在得到7个安装包
进入上图的glibc-devel 中,选择刚刚下载的版本
使用同样的方式下载下图中两个安装包,注意看有两个glibc-headers,选择value有值的那个
下载完成后得到9个安装包文件
进入glibc-headers,选择刚刚下载的版本
下载下图对应的安装包
现在获得10个安装包
将10个安装包拷贝到Linux服务器
右键打开命令窗口,执行
rpm -ivh *.rpm --nodeps --force
将所有安装包都安装到Linux系统
安装完成后输入 gcc -v 查看版本号,出现下图情况则安装成功
输入 g++ -v 查看版本号,出现下图情况则安装成功
在此链接中下载make依赖
Make Download (APK, DEB, EOPKG, IPK, RPM, TXZ, XBPS, XZ, ZST) (pkgs.org)
浏览器下载此链接
将下载的文件拷贝到Linux 服务器
在此页面打开命令窗口执行安装
rpm -ivh *.rpm --nodeps --force
输入make --version查看版本,出现下图情况则安装成功
环境配置好后参考:
https://blog.csdn.net/weixin_42499566/article/details/126164427
安装SSL功能需要的openssl库插件
将对应文件都拷贝到Linux服务器
解压openssl压缩包
tar -zxvf openssl-1.1.1b.tar.gz
切换到解压文件
cd openssl-1.1.1b
查看config
./config
使用make编译文件
make
使用make 安装对应文件
make install
安装gzip模块需要zlib库
解压zlib
tar -zxvf zlib-1.2.11.tar.gz
切换到解压文件
cd zlib-1.2.11
查看配置文件
./configure
使用make编译文件
make
使用make 安装对应文件
make install
安装rewrite模块需要pcre库
解压pcre
tar -zxvf pcre-8.42.tar.gz
切换到解压文件
cd pcre-8.42
查看配置文件
./configure
使用make编译文件
make
使用make 安装对应文件
make install
安装Nginx
解压nginx
tar -zxvf nginx-1.15.12.tar.gz
切换到解压文件
cd nginx-1.15.12
查看配置文件
./configure
使用make编译文件
make
使用make 安装对应文件
make install
查看nginx 是否安装成功
ps -ef | grep nginx
发现已经有nginx 了,但是在此时执行nginx 命令发现提示找不到nginx
解决办法:
先查看nginx 所在位置
whereis nginx
打开环境变量配置
vim /etc/profile
根据刚刚查看的nginx 路径将路径下的sbin文件夹添加进环境变量配置
export NGINX_HOME=/usr/local/nginx
export PATH=$PATH:/usr/local/nginx/sbin
重新加载配置
source /etc/profile
现在再来输入 nginx -v 就可以查看到正确的版本号了
指定nginx 配置文件(一般在nginx安装包解压文件夹内)
nginx -c /home/zwf/文档/nginx-1.15.12/conf/nginx.conf
修改nginx.conf ,查看本机IP 输入命令ifconfig
(我这里监听的是8081端口,192.168.1.116 为我Linux系统的IP)
server {
listen 192.168.1.117:8081;
location /BasicApplication/ {
proxy_pass http://localhost:9001/BasicApplication/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /BusinessSite/ {
proxy_pass http://localhost:9002/BusinessSite/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /SignalR/ {
proxy_pass http://localhost:9003/SignalR/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /UIBuilder/ {
proxy_pass http://localhost:9004/UIBuilder/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /UIViewer/ {
proxy_pass http://localhost:9005/UIViewer/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /TempFolder/ {
proxy_pass http://localhost:9001/TempFolder/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location / {
proxy_pass http://localhost:9001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
重新加载Nginx配置文件
nginx -s reload
四、防火墙设置
所有信息都配置好后,我回到自己电脑访问此地址,发现无法访问
IP 能够ping 通但是 端口无法访问
回到Linux 系统,查看防火墙开放端口
firewall-cmd --zone=public --list-ports
发现一个都没有,需要添加8081(具体开放什么端口,根据nginx配置来)端口,执行下边两条命令
开放端口
firewall-cmd --zone=public --add-port=8081/tcp --permanent
配置立即生效
firewall-cmd --reload
成功后再去看查看一下开放端口,就出现了8081
现在在同一局域网下的所有设备都能访问了
五、Openssl设置
所有配置都准备好之后,发现登陆的时候报错了
输入查看输出日志的命令:
vim /home/zwf/NK4.5/log/BasicApplication.txt
发现错误信息,查询了这个报错的原因是因为linux要求使用的TLS版本较高,而SqlServer数据库不支持
这个问题也被记录在了微软的文档里
解决方法
修改openssl.cnf 文件(默认在下边这个位置)
输入命令查找
find / -name ‘openssl.cnf’
打开文件编辑
vim /etc/pki/tls/openssl.cnf
把这段旧的代码删掉或注释掉,我们重新写一份openssl 的配置
openssl_conf = default_conf
[default_conf]
ssl_conf = ssl_sect
[ssl_sect]
system_default = system_default_sect
[system_default_sect]
MinProtocol = TLSv1
CipherString = DEFAULT@SECLEVEL=1
用这段代码替换旧的配置,保存后即可
六、libgdiplus 配置
在Linux 系统中没有system.DrawingCore.GDIPlus,很多图片处理都用不了,比如图片压缩
在Linux系统中需要下载libgdiplus 来支持system.DrawingCore.GDIPlus
最主要的两个文件
libgdiplus-devel
Libgdiplus
这两个文件的依赖
autoconf automake libtool gcc-c++ freetype-devel fontconfig libXft-devel libjpeg-turbo-devel libpng-devel giflib-devel libtiff-devel glib2-devel cairo-devel
先在有网络的centos 版本(本地虚拟机,版本与服务器一致)中将这些依赖下载到本地
yum reinstall --downloadonly --downloaddir=[保存路径] [rpm包名称]
//可将下边的[保存路径] 替换成自己的路径即可
yum reinstall --downloadonly --downloaddir=[保存路径] libgdiplus-devel libgdiplus autoconf automake libtool gcc-c++ freetype-devel fontconfig libXft-devel libjpeg-turbo-devel libpng-devel giflib-devel libtiff-devel glib2-devel
全部下载完成后 将下载的文件统一放在Linux 系统的同一个文件夹下
执行统一安装命令
rpm -ivh *.rpm --nodeps --force
安装完成之后
重启服务器,重新项目部署
七、更多问题
重启系统后项目需要重新启动
Nginx 配置失效
重新加载环境变量
source /etc/profile
重新指向nginx 的配置文件(路径为自己的配置)
nginx -c /home/zwf/NK4.5/nginxtar/nginx-1.15.12/conf/nginx.conf
让nginx 重新读取一下配置
nginx -s reload