Nancy跨平台开发总结(三)发布到Jexus Web服务器
- 在Centos7上安裝Mono
yum install yum-utils
rpm --import "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF"
yum-config-manager --add-repo http://download.mono-project.com/repo/centos/
yum install mono-devel
yum insall mono-complete
- 下載Jexus,下載地址htttp://www.linuxdot.net/
- 安裝Jexus
tar -zxvf jexus-5.8.0.tar.gz?
cd jexus-5.8.0
sudo ./install?
默認安裝路徑為/usr/jexus - 啟動Jexus
cd? /usr/jexus
sudo ./jws start然后在瀏覽器中輸入localhost/info
會顯示如下界面 - 要想在Jexus上運行,還要在項目中添加一個Adapter和RazorConfig類,代碼如下,只需要原樣復制項目中即可
- using System;
using System.Collections.Generic;
using Microsoft.Owin.Builder;
using System.Threading;
using System.Threading.Tasks;namespace WebSite
{/// <summary>/// Jexus/TinyFox OWIN適配器/// </summary>class Adapter{/************************************** 這是一個比較完整的適配器示例* ***********************************//// <summary>/// OWIN 應用程序委托/// </summary>static Func<IDictionary<string, object>, Task> _owinApp;/// <summary>/// 適配器構造函數/// </summary>public Adapter(){//實例化一個應用程序生成器var builder = new AppBuilder();// 為生成器添加一些參數// 因某些OWIN框架需要從該參數中得到一些初始化環境信息// 這些信息可以包括 如“owin版本”“服務器功”能等等var properties = builder.Properties;properties["owin.Version"] = "1.0"; // 只能是1.0var disposeSource = new CancellationTokenSource();properties["server.OnDispose"] = disposeSource.Token;Func<Task> svrInitCallback = null;Action<Func<Task>> init = (callback) => { svrInitCallback = callback; };properties["server.OnInit"] = init;//.......var capabilities = properties.ContainsKey("server.Capabilities") ? properties["server.Capabilities"] as IDictionary<string, object> : new Dictionary<string, object>();properties["server.Capabilities"] = capabilities;capabilities["server.Name"] = "TinyFox";//capabilities["websocket.Version"] = "1.0";//......//實例化用戶的啟動類,并調用配置方法//如果用戶啟動類在其它的dll中,就需要通過反射找出這個類var startup = new Startup();startup.Configuration(builder);//構建OWIN應用并獲取該應用的代理(委托)方法_owinApp = builder.Build();//要求應用程序域退出時,向本類發出通知AppDomain.CurrentDomain.DomainUnload += ((o, e) => { disposeSource.Cancel(); });//回調應用層初始化函數if (svrInitCallback != null) svrInitCallback().Wait();}/// <summary>/// *** Jexus/TinyFox所需要的關鍵函數 ***/// </summary>/// <param name="env">新請求的環境字典,具體內容參見OWIN標準</param>/// <returns>返回一個正在運行或已經完成的任務</returns>public Task OwinMain(IDictionary<string, object> env){//如果為空if (_owinApp == null) return null;//調用Microsoft.Owin的應用程序委托函數,將請求傳給OWIN框架return _owinApp(env);}}
} using System;
using System.Collections.Generic;
using Nancy;
using Nancy.ViewEngines.Razor;namespace WebSite
{public class RazorConfig : IRazorConfiguration{public bool AutoIncludeModelNamespace{get{return true;}}public IEnumerable<string> GetAssemblyNames(){yield return "System.Web.Razor";}public IEnumerable<string> GetDefaultNamespaces(){yield return "System.Web.Razor";}}
}
?
- 發布站點到本地,用WinSCP連接服務器,將發布后的文件拷貝到Linux服務器上的/var/www/website目錄下.然后切換到/usr/jexus/siteconf目錄,新建一個文件,名稱為website,將目錄下default文件的內容復制過來,并修改配置
port=91
root=/ ?/var/www/website
hosts=*??? #OR your.com,*.your.com
owinmain=WebSite.dll - 修改防火墻
$ vi /etc/sysconfig/iptables
$ i,添加端口
-A INPUT -p tcp -m tcp --dport 91?? -j ACCEPT
$ esc
$ :wq保存退出
$ service iptables restart -
重新jexus
cd /usr/jexus/
sudo ./jws restart
輸入localhost:91/
轉載于:https://www.cnblogs.com/lpush/p/5164708.html
總結
以上是生活随笔為你收集整理的Nancy跨平台开发总结(三)发布到Jexus Web服务器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IDEA中自动导包设置及自动导包快捷键
- 下一篇: 我看windows mobile数据同步