当前位置: 首页 > ds >正文

番外-linux系统运行.net framework 4.0的项目

基础环境:linux系统,.net framework 4.0,npgsql 2.2.5.0 (版本不同,构建可能失败)
方法背景:linux不支持运行.net framework 4.0,高版本mono不支持npgsql 2.x
主要使用:docker+mono4.2.x+xsp4 4.2.x
主要难点:兼容性问题,以及旧版本镜像不再维护,自动下载包不完整,下载失败,需手动下载构建

一、安装docker(以下镜像为手动构建,不再赘述)

1,上传docker-24.0.7.tgz到linux服务器的/opt目录
2,在服务器上解压压缩包到docker文件夹
cd /opt
tar -xvzf docker-24.0.7.tgz
3,将docker文件夹里所有文件复制粘贴到/usr/bin目录下

(1)sudo cp /opt/docker/* /usr/bin/
(2)赋予它执行权限(让它能运行)

sudo chmod +x /usr/bin/docker
sudo chmod +x /usr/bin/docker-proxy
sudo chmod +x /usr/bin/docker*
sudo chmod +x /usr/bin/containerd*
sudo chmod +x /usr/bin/runc
4,/etc/systemd/system/下创建服务文件/docker.service
[Unit]
Description=Docker Service
After=network.target[Service]
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity[Install]
WantedBy=multi-user.target
5,让 systemd 识别新服务,并启动 Docker

(1)回到根目录 cd /
(2)
重载 systemd 配置

sudo systemctl daemon-reload

启动 Docker

sudo systemctl start docker

设置开机自动启动

sudo systemctl enable docker

查看是否安装

docker version

二、安装 PostgreSQL镜像,部署数据库

1,上传postgres13.tar到linux服务器的/opt目录
2,在服务器导入镜像
docker load -i /opt/postgres13.tar

检验是否导入:docker images

3,运行PGSQL容器
docker run -d --name pg13 -e POSTGRES_PASSWORD=123456 -p 5432:5432 postgres:13
4,上传数据库文件public.sql到linux服务器的/opt目录
5,把 SQL 文件拷贝到容器内 /tmp/ 目录
docker cp "/opt/public.sql" pg13:/tmp/
6,执行导入命令
docker exec -it pg13 psql -U postgres -f /tmp/public.sql

等待导入完成

7,检查

进入容器:

docker exec -it pg13 bash

登录数据库:

psql -U postgres

查看当前数据库的所有表:

\dt

三、构建运行Mono镜像

1,创建 Mono的 Dockerfile(web.config里面数据库配置Server=pg13;)

在这里插入图片描述

Windows 上,新建一个文件夹 mono1,在里面放入mono421-debs文件夹和xsp4-debs文件夹(文里面的文件为手动下载放入,因为自动下载报错,可能已经不再维护了)。以及名为Dockerfile的文件
(1)Dockerfile 内容:
说明:手动下载安装ubuntu:16.04,

FROM ubuntu:16.04ENV DEBIAN_FRONTEND=noninteractive# 安装基本依赖
RUN apt-get update && apt-get install -y \ca-certificates \libglib2.0-0 \libx11-6 \tzdata \&& apt-get clean# 拷贝 Mono 4.2.3 和 xsp4 的 .deb 包
COPY mono421-debs/ /tmp/mono421/
COPY xsp4-debs/ /tmp/xsp4/# 安装 mono
RUN dpkg -i /tmp/mono421/*.deb || apt-get -f install -y# 安装 xsp4
RUN dpkg -i /tmp/xsp4/*.deb || apt-get -f install -y# 暴露端口
EXPOSE 8290# 运行 xsp4(NXYW即打包文件夹)
COPY NXYW/. /
CMD ["mono", "/usr/lib/mono/4.5/xsp4.exe", "--port", "8290", "--nonstop", "--root", "/"]
2,把 NXYX文件夹也复制进这个 mono1 文件夹
3,在 Windows 上构建镜像并导出

构建:docker build -t mono-net45-app1 .
导出:docker save -o mono-net45-app1.tar mono-net45-app1

4,上传mono-net45-app.tar到linux服务器的/opt目录
5,加载镜像:
docker load -i /opt/mono-net45-app1.tar
6,运行镜像:

docker run -d --name mono-net45-app1 -p 8290:8290 --restart unless-stopped mono-net45-app1 (8290是端口号)

7,创建自定义docker网络,使得项目和数据库连通

1,创建docker网络:

docker network create mynet

2,把 pg13 加入 mynet(前面修改Web.config的用处了):

docker network connect mynet pg13

3,把mono-net45-app1加入 mynet:

docker network connect mynet mono-net45-app1

完成,如无问题,可访问了

四,其他命令(若有需要可执行):

修改文件(或)

(1)把文件从容器拷到宿主机:

docker cp mono-net45-app1:/var/www/html/Web.config /root/Web.config

(2)用 docker cp 拷回容器:

docker cp /root/Web.config  mono-net45-app1:/var/www/html/Web.config

(3)重启容器:

docker restart mono-net45-app1
停止旧容器
docker stop mono-net45-app1
删除旧容器
docker rm mono-net45-app1
退出容器(或)

exit

http://www.xdnf.cn/news/15283.html

相关文章:

  • [特殊字符]远程服务器配置pytorch环境
  • 设计模式笔记_结构型_代理模式
  • 基于vscode开发工具显示git提交信息的插件
  • 世界现存燃油汽车品牌起源国别梳理
  • 【实时Linux实战系列】硬实时与软实时设计模式
  • 【网络】Linux 内核优化实战 - net.netfilter.nf_conntrack_max
  • 基于开源AI智能名片链动2+1模式与S2B2C商城小程序的渠道选择策略研究
  • BPE(Byte Pair Encoding)分词算法
  • flutter鸿蒙版 环境配置
  • 在前端项目中是如何解决跨域的
  • 解决Vue页面黑底红字遮罩层报错:Unknown promise rejection reason (webpack-internal)
  • CSP-J/S 参赛选手注册报名流程
  • 智能文本抽取在合同管理实战应用
  • AIC8800M40低功耗wifi在ARM-LINUX开发板上做OTA的调试经验
  • 借助 Wisdom SSH AI 助手,轻松安装 CentOS 8 LNMP 环境
  • 2025前端面试真题以及答案-不断整理中,问题来源于牛客真题
  • CMU15445-2024fall-project1踩坑经历
  • hive/spark sql中unix_timestamp 函数的坑以及时间戳相关的转换
  • 串行数据检测器,检测到011,Y输出1,否则为0.
  • RabbitMQ 之顺序性保障
  • 从零实现一个GPT 【React + Express】--- 【4】实现文生图的功能
  • uniapp-在windows上IOS真机运行(含开发证书申请流程)
  • 重振索尼复古微型电脑——计划以OrangePi CM5 作为主板升级
  • uniapp小程序tabbar跳转拦截与弹窗控制
  • 学习笔记(34):matplotlib绘制图表-房价数据分析与可视化
  • 【数据结构与算法】203.移除链表元素(LeetCode)图文详解
  • 05 唤醒词检测:让语音助手随时待命
  • 平板柔光屏与镜面屏的区别有哪些?技术原理与适用场景全解析
  • Kotlin 常用语法糖完整整理
  • 如何准确查看服务器网络的利用率?