zoukankan      html  css  js  c++  java
  • docker运行jexus+mono爬坑记

    新的.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

    终于一切正常了!!!


  • 相关阅读:
    cuda npp库旋转图片
    Xml序列化 详解
    jsonp简介
    在centos7下安装.net core
    安装vs2017后造成无法打开xproj项目无法打开
    SqlServer 语法
    js自定义事件
    HttpWebResponse 解压gzip、deflate压缩
    centos7 安装.net core的方法
    帮助类-从tfs获取数据
  • 原文地址:https://www.cnblogs.com/Ricklee/p/11203292.html
Copyright © 2011-2022 走看看