[.NET跨平台]Jexus独立版本的便利与过程当中的一些坑

本文环境与前言

以前写过一篇相关的文章:在.NET Core以前,实现.Net跨平台之Mono+CentOS+Jexus初体验html

当时的部署仍是比较繁琐的,并且须要联网下载各类东西..有兴趣的能够看看,可是..已通过时了..linux

虽然已经出了.NET Core2.0 可是目前是预览版本,并且部署来讲 相对比较麻烦.数据库

今天咱们主要来说讲目前的Jexus5.8.2的独立版本和过程当中遇到的一些小坑ubuntu

部署系统环境:CentOS 6.5 64位(无外网)c#

部署Web应用所用技术:MVC5+EF6.1.3+Autofacide

数据库:SQL Server 2008R2(注意:数据库并不在Linux上部署而是在一台Windows Server上)工具


参考资料:post

https://www.linuxdot.net/bbsfile-4330网站

Jexus - ASP.NET跨平台从这里开始!(Jexus官网)url

 

Jexus5.8.2的独立版所支持的系统:Centos 6.6以上版本,ubuntu server 14.04以上.(ps:我Centos 6.5..也成功了..目前没问题.)

 

正文

这里说明一下为何要用独立版本.

1.部署方便快捷(这是一开始没想到的..)

2.没外网,没法下载相关资源(这是重点..)

好了,废话很少说 咱们开始部署过程:

 

1、下载 jexus独立版的包:

由于我没有外网,因此直接本地下载,而后拷贝到部署系统

下载地址:https://www.linuxdot.net/down/jexus-5.8.2-x64.tar.gz

 

解压下载的包:

新手提示:记得进入你压缩包所在的文件夹在解压..

tar -zxvf jexus-5.8.2-x64.tar.gz

 

你会获得一个叫jexus的文件夹

(而后就大功告成了!!,意不意外,惊不惊喜,刺不刺激?..)

↓向下看..↓向下看..↓向下看..

 

 

 

 

 

 

 

 

3、移动文件所在的位置到利于本身维护的地方

上面确实没忽悠,解压完了 就真完成了..

不过为了咱之后维护方便...仍是继续..

官方建议是移动到/usr文件夹下..嗯 我也就随大流了..

命令:

sudo mv jexus /usr

 

清理原来的文件,(固然..你用Xftp什么之类的可视化工具清除和复制..都行.., 这里用命令我是想是装个B..)

sudo rm -rf /tmp/jexus*

 

建立目录,部署Web站点:

于jexus的默认的网站配置文件指向的物理路径是/var/www/default这里的.. (固然,你也能够改)

因此,咱们在/var下建立www文件夹,在www下建立default文件夹

而后复制咱们发布的文件进去,如图:

 

重启一下咱们的Juexs服务:

进入jexus文件夹

cd /usr/jexus

启动Jexus:

sudo ./jws start

重启Jexus:

sudo ./jws restart

 

 

6、一些经常使用的Jexus命令:

启动:sudo ./jws start

重启:sudo ./jws restart

中止:sudo ./jws stop

启动某个网站: sudo start 网站名

重启某个网站:sudo restart 网站名

中止某个网站:sudo stop 网站名

 

至此,咱们的部署工做就算真正的大功告成了!~

以下:

下面讲一下坑和注意事项..

 

所遇到的坑与注意事项

1.错误信息:System.IO.FileNotFoundException,Could not find find file 'var/www/default\bin\roslyn\csc.exe'

找不到这个roslyn\csc.exe文件..

嗯..这个东西呢..是VS2015改用roslyn编译的,新的roslyn编译器,支持c# 6.0语法。它放到bin里面去是为了支持Asp.NET应用的动态编译。

咱们能够删除...

进入要项目的nuget引用,删除以下两个包:

Microsoft.CodeDom.Providers.DotNetCompilerPlatform

Microsoft.Net.Compilers

从新编译便可

这里从新解释一下,以上是针对Mono5.0如下的版本,Mono5.0已经支持了roslyn编译器(感谢张善友老师的指导.)

2.AutoFac报错,信息以下:

..嗯,比较蛋疼,在Autofac注入的时候,报的是个人泛型类型..他居然不识别..说是非泛型..一口老血喷在屏幕上,,,

解决方案是..我发现.当时为了方便自动注入,我全部的类都继承了一个空的接口..是非泛型的..包括我这个仓储也继承了..

因此在Mono超级无敌的强类型状况下..被认为是非泛型的了  - - ..(注意:.NET是没有这个问题的能够编译,能够运行)

删除这个继承,手动注入后.问题解决..

 

3.小惊喜..

以前我那篇文章说过....linux上的文件夹全小写,你若是有大写的文件夹好比Js,那么可能就资源加载不出来 ...404... 须要手动改小写

可是此次我部署了以后,并无改..也能加载了..不知道是mono作的好事..仍是Jexus..

固然..少了个麻烦固然是很开心的..

这里也解释一下,Mono有个环境变量叫:MONO_IOMAP,设置它为all的时候,就会支持大小写..

Jexus的jws文件设置中也有这个选项能够设置.(一样 感谢张善友老师的指导)

相关文章
相关标签/搜索