菜的像徐坤
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

离线部署Linux环境,不借助docker

6286人阅读 2023/2/20 19:12 总访问:876633 评论:0 收藏:0 手机
分类: Linux

离线部署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

然后在查看进程,发现进程ID63432 的进程已被杀死

 

 

将所有项目都启动后可通过

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 的依赖)

IMG_256

下载完成后现在有了4个安装包

点击上图的gcc,选择刚刚下载的版本

gcc中的cpp,glibc-decel,libisl.so.15()(64bit)文件用同样的方式下载下来

IMG_256

现在得到7个安装包

进入上图的glibc-devel 中,选择刚刚下载的版本

使用同样的方式下载下图中两个安装包,注意看有两个glibc-headers,选择value有值的那个

IMG_256

下载完成后得到9个安装包文件

进入glibc-headers,选择刚刚下载的版本

下载下图对应的安装包

IMG_256

现在获得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

  1.   安装SSL功能需要的openssl库插件

将对应文件都拷贝到Linux服务器

解压openssl压缩包

tar -zxvf openssl-1.1.1b.tar.gz

切换到解压文件

cd openssl-1.1.1b

查看config

./config

使用make编译文件

make

使用make 安装对应文件

make install

  1.   安装gzip模块需要zlib

解压zlib

tar -zxvf zlib-1.2.11.tar.gz

切换到解压文件

cd zlib-1.2.11

查看配置文件

./configure

使用make编译文件

make

使用make 安装对应文件

make install

  1.   安装rewrite模块需要pcre

解压pcre

tar -zxvf pcre-8.42.tar.gz

切换到解压文件

cd pcre-8.42

查看配置文件

./configure

使用make编译文件

make

使用make 安装对应文件

make install

 

  1.   安装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

 

评价