System.ArgumentException
The requested FontFamily could not be found [GDI+ status: FontFamilyNotFound]
...
...
最後的結論是
新的.net core都已經支持docker。手頭有一些原來開發的asp.net舊項目,用的asp.net mvc開發的,跑在.net formwork 4.6上。linux
在docker的公共倉庫search了下,找到了一個jexus+mono的docker包。pull下來後開始嘗試把原來的項目部署上。web
運行 #docker run -it -p80:80 jexus/mono bash,進入docker容器內的bashdocker
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命令複製到本地,打開以下:windows
最上邊找打了jexus的根目錄爲/var/www/default微信小程序
實際查看發現/var下沒有www/default目錄,手工創建後,放了一個index.aspx文件,隨手寫了幾行代碼。而後運行瀏覽器
#./jws start,打開瀏覽器而後輸入服務器IP地址。bash
很順利的跑起來了。看來一切順利啊。服務器
把本身手上的項目先經過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了一下錯誤信息,網上有網友遇到過相似的錯誤。
...
...
最後的結論是
這是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
終於一切正常了!!!