[.NET跨平台]Jexus獨立版本的便利與過程中的一些坑


本文環境與前言

之前寫過一篇相關的文章:在.NET Core之前,實現.Net跨平台之Mono+CentOS+Jexus初體驗

當時的部署還是比較繁瑣的,而且需要聯網下載各種東西..有興趣的可以看看,但是..已經過時了..

雖然已經出了.NET Core2.0 但是目前是預覽版本,而且部署來說 相對比較麻煩.

今天我們主要來講講目前的Jexus5.8.2的獨立版本和過程中遇到的一些小坑

部署系統環境:CentOS 6.5 64位(無外網)

部署Web應用所用技術:MVC5+EF6.1.3+Autofac

數據庫:SQL Server 2008R2(注意:數據庫並不在Linux上部署而是在一台Windows Server上)


參考資料:

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

Jexus - ASP.NET跨平台從這里開始!(Jexus官網)

 

Jexus5.8.2的獨立版所支持的系統:Centos 6.6以上版本,ubuntu server 14.04以上.(ps:我Centos 6.5..也成功了..目前沒問題.)

 

正文

這里說明一下為什么要用獨立版本.

1.部署方便快捷(這是一開始沒想到的..)

2.沒外網,無法下載相關資源(這是重點..)

好了,廢話不多說 我們開始部署過程:

 

一、下載 jexus獨立版的包:

因為我沒有外網,所以直接本地下載,然后拷貝到部署系統

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

 

解壓下載的包:

新手提示:記得進入你壓縮包所在的文件夾在解壓..

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

 

你會得到一個叫jexus的文件夾

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

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

 

 

 

 

 

 

 

 

三、移動文件所在的位置到利於自己維護的地方

上面確實沒忽悠,解壓完了 就真完成了..

不過為了咱以后維護方便...還是繼續..

官方建議是移動到/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

 

 

六、一些常用的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文件設置中也有這個選項可以設置.(同樣 感謝張善友老師的指導)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM