番外-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.pswp.cn/news/913962.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/913962.shtml
英文地址,請注明出處:http://en.pswp.cn/news/913962.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

國內AI訓練都有哪些企業?:技術深耕與場景實踐

國內AI訓練都有哪些企業?當人工智能從實驗室走向產業一線,AI 訓練就像為智能系統 “施肥澆水” 的關鍵環節,讓技術根系在各行業土壤里扎得更深。國內一批 AI 訓練企業正各展所長,有的專攻技術優化,有的深耕場景應用。它…

微算法科技基于格密碼的量子加密技術,融入LSQb算法的信息隱藏與傳輸過程中,實現抗量子攻擊策略強化

隨著量子計算技術的發展,傳統加密算法面臨被量子計算機破解的風險,LSQb 算法也需考慮應對未來可能的量子攻擊。微算法科技基于格密碼的量子加密技術,融入LSQb算法的信息隱藏與傳輸過程中,實現抗量子攻擊策略強化。格密碼在面對量子…

xAI發布Grok4+代碼神器Grok4 Code,教你如何在國內升級訂閱SuperGrok并使用到Grok4教程

就在今天,馬斯克旗下xAI發布了其最新的旗艦AI模型Grok4,并同步推出專為開發者打造的編程利器 Grok 4 Code,還推出了一項全新的AI訂閱計劃——每月300美元的SuperGrokHeavy。 那最新發布的Grok4以及有哪些特性呢?以及如何才能使用…

Rust 變量遮蔽(Variable Shadowing)

在 Rust 中,變量遮蔽(Variable Shadowing) 是一種在同一作用域內重新聲明同名變量的特性。它允許你創建一個新變量覆蓋之前的同名變量,新變量與舊變量類型可以不同,且舊變量會被完全隱藏。核心特點允許同名變量重復聲明…

【VScode | 快捷鍵】全局搜索快捷鍵(ctrl+shift+f)失效原因及解決方法

😁博客主頁😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客內容🤑:🍭嵌入式開發、Linux、C語言、C、數據結構、音視頻🍭 😎金句分享😎&a…

Windows 與 Linux 內核安全及 Metasploit/LinEnum 在滲透測試中的綜合應用

目錄 🛠? 1. 內核安全如何助力滲透測試與黑客行業 1.1 內核安全的戰略價值 1.2 結合 Metasploit 與 LinEnum 的作用 🔍 2. Metasploit 信息收集模塊及其在內核安全中的應用 2.1 Windows 信息收集模塊 2.2 Linux 信息收集模塊 2.3 使用步驟 Wind…

京東攜手HarmonyOS SDK首發家電AR高精擺放功能

在電商行業的演進中,商品的呈現方式不斷升級:從文字、圖片到視頻,再到如今逐漸興起的3D與AR技術。作為XR應用探索的先行者,京東正站在這場體驗革新的最前沿,不斷突破商品展示的邊界,致力于通過創新技術讓消…

瞄準Win10難民,蘋果正推出塑料外殼、手機CPU的MacBook

最近有消息稱,蘋果正在研發一款定位“低價”的MacBook,售價可能低于800美元(約合人民幣5800元),采用的是A18 Pro芯片,也就是未來iPhone 16 Pro同款的“手機芯片”,而不是現有的M系列。這款產品預…

原子級 macOS 信息竊取程序升級:新增后門實現持久化控制

臭名昭著的 Atomic macOS Stealer(AMOS,原子級 macOS 竊取程序)惡意軟件近期完成危險升級,全球 Mac 用戶面臨更嚴峻威脅。這款與俄羅斯有關聯的竊密程序首次植入后門模塊,使攻擊者能維持對受感染系統的持久訪問、執行遠…

Shader面試題100道之(81-100)

Shader面試題(第81-100題) 以下是第81到第100道Shader相關的面試題及答案: 81. Unity中如何實現屏幕空間的熱扭曲效果(Heat Distortion)? 熱扭曲效果可以通過GrabPass抓取當前屏幕圖像,然后在片…

C#洗牌算法

洗牌算法是一種將序列(如數組、列表)元素隨機打亂的經典算法,核心目標是讓每個元素在打亂后出現在任意位置的概率均等。在 C# 中,常用的洗牌算法有Fisher-Yates 洗牌算法(也稱 Knuth 洗牌算法),…

Python PDFplumber詳解:從入門到精通的PDF處理指南

一、PDFplumber核心優勢解析 在數字化辦公場景中,PDF文檔處理是數據分析師和開發者的必備技能。相較于PyPDF2、pdfminer等傳統庫,PDFplumber憑借其三大核心優勢脫穎而出: 精準表格提取:采用流式布局分析算法,支持復雜表…

Flutter 與 Android 的互通幾種方式

Flutter 與 Android 的互通主要通過以下幾種方式實現,每種方式適用于不同的場景:1. 平臺通道(Platform Channels) Flutter 與原生 Android 代碼通信的核心方式,支持雙向調用。 類型: MethodChannel&#xf…

全新開源AI知識庫系統!PandaWiki一鍵構建智能文檔,支持AI問答、創作與搜索!

傳統 Wiki 工具像一本厚重的“死書”,雖能存儲信息,卻無法主動「思考」。而在當今AI席卷各個行業的浪潮中,知識管理也迎來了智能化的巨大飛躍。最近開源圈悄然走紅的 PandaWiki,就用 AI 大模型為知識庫注入了 靈魂, 它…

Rust 結構體

Rust 結構體 引言 Rust 是一種系統編程語言,以其內存安全、并發支持和零成本抽象而聞名。結構體(struct)是 Rust 中用于創建自定義數據類型的工具。本文將深入探討 Rust 結構體的概念、用法以及其在實際編程中的應用。 結構體的定義 在 Rust 中,結構體是一種復合類型,…

lstm 數據輸入問題

lstm 我有 20*6 條數據,20個樣本,每個樣本6條歷史數據,每條數據有5個值,我送給網絡輸入時應該是20*6*5 還是 6*20*5你的數據是:20 個樣本(batch size 20)每個樣本有 6 條歷史數據(s…

WPF打包exe應用的圖標問題

目錄 1、WPF打包方法 2、圖標問題 1、WPF打包方法 使用Microsoft Visual Studio Installer Projects 2022工具打包(成功),需要新建Setup Project項目進行打包 (46 封私信) [C#.net資料]visual studio打包可安裝的exe程序(添加配置文件)&am…

Qt中處理多個同類型對象共享槽函數應用

一.Qt中處理多個同類型對象共享槽函數應用場景數字鍵盤按鈕處理動態生成的控件管理工具欄按鈕響應游戲中的網格點擊處理使用時需特別注意對象生命周期管理和類型安全,現代Qt開發中更推薦使用Lambda表達式替代sender()機制。二.示例1.本文示例功能在ui界面添加5個&am…

康養休閑旅游服務實訓室建設方案:理實一體化的產教融合方案

一、康養休閑旅游服務實訓室建設方案建設原則對接行業真實場景:實訓環境與設備設施嚴格參照健康咨詢、旅行社及相關服務、住宿業、餐飲業等行業的真實職業場景搭建,確保實訓項目與崗位工作內容高度匹配,實現工學結合、理實一體化教學。融合前…

微服務架構的演進:邁向云原生——Java技術棧的實踐之路

隨著云計算技術的快速發展,微服務架構正逐步向云原生(Cloud Native)演進。云原生不僅是一種技術體系,更是一種開發和運維理念的革新。本文將以Java技術棧為例,結合Kubernetes(K8s)、服務網格&am…