docker運行jexus+mono爬坑記

来源:https://www.cnblogs.com/Ricklee/archive/2019/07/17/11203292.html
-Advertisement-
Play Games

新的.net core都已經支持docker。手頭有一些原來開發的asp.net舊項目,用的asp.net mvc開發的,跑在.net formwork 4.6上。 在docker的公共倉庫search了下,找到了一個jexus+mono的docker包。pull下來後開始嘗試把原來的項目部署上。 ...


新的.net core都已經支持docker。手頭有一些原來開發的asp.net舊項目,用的asp.net mvc開發的,跑在.net formwork 4.6上。

在docker的公共倉庫search了下,找到了一個jexus+mono的docker包。pull下來後開始嘗試把原來的項目部署上。

運行 #docker run -it -p80:80 jexus/mono bash,進入docker容器內的bash

root@1958b09db073:/usr/jexus# ls
def.py jws jws.conf jwsHttpd.exe jwss log os.def runtime siteconf state4.conf tools
root@1958b09db073:/usr/jexus#

進入siteconf目錄,找到預設配置文件default,使用docker cp命令複製到本地,打開如下:

 

 

最上邊找打了jexus的根目錄為/var/www/default

實際查看發現/var下沒有www/default目錄,手工建立後,放了一個index.aspx文件,隨手寫了幾行代碼。然後運行

#./jws start,打開瀏覽器然後輸入伺服器IP地址。

很順利的跑起來了。看來一切順利啊。

把自己手上的項目先通過winscp複製到系統上,然後解壓,複製進容器內。

#docker cp website/* 195:/var/www/default/

複製成功後刷新瀏覽器,果然好用。

等等!我的圖片怎麼許多都不見了,首頁顯示樣式貌似也不正常。

按F12,查看Chrome的調試工具,在network里找到數個資源返回404狀態的。這是什麼情況?

實際查看了下文件名,發現是大小寫的問題。原來如此,原來在windows系統上部署時大小寫不敏感,現在在Linux上是大小寫敏感的,文件名大小寫與代碼內的文件名不一致。

嗯,看來代碼還是寫規矩點好...

把文件的大小寫改好,終於頁面漂亮了。

登錄進去試試

輸入用戶名,密碼...

等等,我的驗證碼哪兒去了?

F12,驗證碼得到了個500錯誤。什麼情況?

在瀏覽器中打開顯示

 

看來是缺少文件,進入錯誤提示的目錄然後ls

明明就有這個文件嘛。搞什麼鬼。

#ldd libgdiplus.so

查下依賴關係。N多的no found。原來如此,momo安裝時預設安裝了libgdiplus,但是卻沒有安裝他的依賴包。從依賴列表中逐個把缺失的文件包從宿主的文件系統複製到docker容器的文件系統。

基本上都在/usr/lib/x86_64-linux-gnu/或者/lib/x86_64-linux-gnu/內,個別文件就在當前目錄,由於預設搜索的目錄是上述兩個x86_64-linux-gnu目錄內,因此將當前目錄里的文件複製一份到/usr/lib/x86_64-linux-gnu/內即可

再次刷新瀏覽器

多災多難啊!FontFamily看來跟字體有關,繼續查錯,註意到有get_GenericSansSerif (),Sans是個字體的名稱。推測可能缺少字體。

bing了一下錯誤信息,網上有網友遇到過類似的錯誤。

標題為:mono+jexus 驗證碼不顯示:System.Drawing

System.ArgumentException

The requested FontFamily could not be found [GDI+ status: FontFamilyNotFound]

...

...

最後的結論是

 安裝字體: yum install -y dejavu-fonts-common dejavu-lgc-sans-mono-fonts

 這是CentOS的安裝方式,可目前這裡使用的是docker,apt-get 安裝有問題,需要update才行,update後必然引起容器變大。這是不必要的。決定嘗試直接把字體複製進docker,看看是否可以解決此問題。

進入字體目錄/usr/share/founts/truetype,ls,有一個有意思的目錄,dejavu。這個目錄就是前邊那個網友解決問題時安裝的字體,進入該目錄ls

對這四個字體懷疑,先複製到docker試試吧。 

 再次刷新瀏覽器

運氣不錯,居然成了!

 基本正常了,哦,某些URL重寫的頁面報錯,404,看來這東西對URL重寫有問題。jexus直接支持url重寫,在jexus的配置文件逐條添加rewrite=xxx xxx,然後重啟jexus,

#./jws restart

終於一切正常了!!!

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 小白開學Asp.Net Core 《八》 — — .Net Core 數據保護組件 1、背景 我在搞(https://github.com/AjuPrince/Aju.Carefree)這個開源項目的時候,想做一些防止惡意攻擊的小功能(如果 我通過頁面 /Dome/GetData?id=123,那是 ...
  • 最近剛好在學習NetCore框架所以就在網上搜索了一下相關的開源框架項目,正好在Github上找到了一個不錯的開源框架所以推薦給大家看看哈哈哈。 1:項目相關技術 運行NetCore SDK版本為2.2+ 資料庫:Mysql 5.7+ 使用SqlSugar ORM 2:項目源代碼地址: github ...
  • 一.概述 本篇詳細瞭解一下asp.net core filters,filter叫"篩選器"也叫"過濾器",是請求處理管道中的特定階段之前或之後運行代碼。filter用於處理橫切關註點。 橫切關註點的示例包括:錯誤處理、緩存、配置、授權和日誌記錄。 filter可以避免重覆代碼,通過Attribut ...
  • 介紹.NET歷史、開源之路、基礎、路由、依賴註入、HttpContext、cookie|session、HttpClient、gRPC、單元測試、發佈部署等等。 ...
  • linux常用命令: echo:在終端輸出字元串或變數提取後的值 date:顯示及設置系統的時間或日期 reboot:重啟 poweroff:關機 wget:下載 ps:查看系統中的進程狀態(常用參數 -aux) top:動態地監視進程活動與系統負載等信息 pidof:查看服務pid kill:終止 ...
  • NFS(網路文件系統)用於linux共用文件 第1步:配置所需要的環境 使用兩台Linux主機 配置好yum源,安裝nfs服務,清空nfs伺服器上iptables防火牆預設策略。 [root@NFS ~]# yum install nfs-utils -y 第2步:在NFS伺服器上建立用於NFS文件 ...
  • 本節為 Docker 的環境搭建 只適合Linux環境,推薦Ubuntu。本例以Ubuntu16.04 x64為例 前提條件 內核版本要求大於3.10 安裝 出現版本號說明安裝成功 設置 當直接使用 時,會發現沒有許可權 設置非root用戶使用docker 1. 添加docker用戶組 2. 將登陸用 ...
  • 一. 問題的發現 昨晚苦逼加班完後,今早上班繼續幹活時,SSH連接伺服器發現異常的提示,仔細看了一下嚇一小跳,昨晚9點鐘到現在,一夜之間被人嘗試連接200+,慌~~~ 1. 速度查一下log 發現secure日誌文件咋都這麼大?原來不止是昨晚被攻擊,之前就已經挨無數的暴擊了。 2. 打開日誌文件瞧瞧 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...