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

终于一切正常了!!!

docker运行jexus+mono爬坑记的更多相关文章

  1. mac开发环境爬坑记(搭建php+nginx+mysql+redis+laravel+git+phpstorm)

    题外话:前几天,终于以原价一半的价格,将我那台15版mbp在bbs上卖了出去.之所以用了“终于”这个词儿,是我一直迟迟没有下定决心卖掉它,可眼瞅着再不卖掉,又要掉价,况且我的新电脑,也终于下来了. 话 ...

  2. .NET Core爬坑记 1.0 项目文件

    前言: 之所以要写这个系列是因为在移植项目到ASP.NET Core平台的过程中,遇到了一些“新变化”,这些变化有编译方面的.有API方面的,今天要讲的是编译方面的一些问题.我把它们整理后分享出来,以 ...

  3. mint-ui之picker爬坑记

    picker的数据来源为动态获取时,数据无法正常渲染!因为方法不对,所以坑大了!深刻地体会到'业不精,我之过',谨以此文,深刻地记录一下踩坑及爬坑的整个过程,以便日后不再入坑,也给后来者提供一下参考 ...

  4. MyEclipse环境的项目改为在Eclipse中运行爬坑记【我】

      新检出一个web项目,同事都是运行在MyEclipse中的,我用Eclipse启动, 1.首先是许多jar包报错: 处理方法为 remove掉,然后 选 WEB-INF 下的所有 jar 重新添加 ...

  5. 【MyBatis】MyBatis自动生成代码查询之爬坑记

    前言 项目使用SSM框架搭建Web后台服务,前台后使用restful api,后台使用MyBatisGenerator自动生成代码,在前台使用关键字进行查询时,遇到了一些很宝贵的坑,现记录如下.为展示 ...

  6. python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)

    简介 有些 post 的请求参数是 json 格式的,这个前面发送post 请求里面提到过,需要导入 json模块处理.现在企业公司一般常见的接口因为json数据容易处理,所以绝大多数返回数据也是 j ...

  7. centos部署yapi爬坑记

    前言 这几天终于完成了为期三个月的公司某个demo版的项目,在这期间和公司的后台因为API的事怼过无数次了,'我的接口没问题,是你请求的方式不对吧!'.'一定是你请求的参数不对'......诸如此类问 ...

  8. SQL Server 事务复制爬坑记

    SQL Server 复制功能折腾了好几天了,现特将其配置过程以及其间遇到的问题记录下来,以备日后查阅.同时,也让“同道”同学们少走不必要的弯路.如果有不对之处,欢迎大家指正,欢迎沟通交流. 一.复制 ...

  9. swagger 爬坑记

    Swagger 的好处不用我多说,但是一不小心可能就被坑……今天下午就被上了一课,废话不多说,直接上代码(图) 实体类: 好像没啥问题,对吧? 但是,在http://localhost:8080/sw ...

随机推荐

  1. 启xin宝app的token算法破解——frida篇(四)

    前两篇文章分析该APP的抓包.的逆向: 启xin宝app的token算法破解--抓包分析篇(一) 启xin宝app的token算法破解--逆向篇(二) 启xin宝app的token算法破解--toke ...

  2. EF-运行原理

    一.什么是EF? 实体架构(Entity Framework)是微软以来ADO.Net为基础开发出来的对象关系映射(ORM)解决方案,它解决了对象持久化问题,将程序员从编写麻烦的SQL语句中解放出来. ...

  3. rabbit - producer的confirm和consumer的ack模式

    本篇和大家分享的是关于rabbit的生产和消费方的一些实用的操作:正如文章标题,主要内容如producer的confirm和consumer的ack,这两者使用的模式都是用来保证数据完整性,防止数据丢 ...

  4. android下JNI开发

    android下JNI开发 what 什么是JNI JNI java native interface native本地 java本地接口 通过JNI可以实现java和本地代码之间相互调用 jni可以 ...

  5. JDBC工具类连接数据库,模仿登录

    ## 使用JDBC工具类的原因在使用JDBC连接数据库的时候,加载驱动.获取连接.释放资源等代码是重复的,所有为了提高代码的复用性,我们可以写一个工具类,将数据库驱动加载.获取连接.资源释放的代码封装 ...

  6. [python]多元赋值

    1. 简介 将多个变量同时赋值的方法,称为多元赋值. 2. 示例一: x, y, z = 1, 2, 'a string' print x, y, z 运行结果: 1 2 a string

  7. luogu -P1095 守望者的逃离 - 分别DP

    P1095 守望者的逃离: https://www.luogu.org/problemnew/show/P1095 题意: 有一个人要在S长度的直线上跑过去,初始有M的魔法值,用10点魔法值可以在一秒 ...

  8. 洛谷 P4206 [NOI2005]聪聪与可可 题解

    题面 输入 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点的编号. 接下来E行,每 ...

  9. 使用dig/nslookup命令查看dns解析详情

    dig-DNS lookup utility 当域名出现访问故障时,可通过域名解析来判断是否有错误的解析导致的问题. 可以看到有请求段和应答段,最后解析出的A记录有两条 dig命令做迭代查询 dig ...

  10. python每日经典算法题5(基础题)+1(中难题)

    现在,越来越多的公司面试以及考验面试对算法要求都提高了一个层次,从现在,我讲每日抽出时间进行5+1算法题讲解,5是指基础题,1是指1道中等偏难.希望能够让大家熟练掌握python的语法结构已经一些高级 ...