新的.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.DrawingSystem.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
終於一切正常了!!!