NAS Synology上のASP.NET MVC 3サーバー-ソリューション



ファームでSynologyから素晴らしいドライブを得たので、.NETアプリケーションのホスティングが不足しているのはかなり残念でした。 そして今、マットで武装しています。 記事で与えられた記事habrahabr.ru/post/121159の一部で、ASP.NET MVCのプロジェクト用のホームサーバーを作成することに戸惑っていました。 そこにあるモノパッケージはかなり古く、それを構築するための古典的な一連のコマンドは成功に至りませんでした。 情報は、Habrを含むさまざまなソースから少しずつ収集され、何をどの順序で実行すべきかを理解しました。 このクエストの経過は、この記事で説明したいだけです。 誰かが役に立つといいな。



与えられた合計:

1. Iron:Marvell mv5281プロセッサを搭載したNAS Synology 110j。

2. OS DSM 4.0(まれなLinuxディストリビューションに基づく)

必須:最新バージョンのmono + xspをインストールします。



準備する



Synologyは、従来の* nixシステムの方法で追加のパッケージをインストールする機能を提供することで困惑していませんでした。 コンソールから。 したがって、 まずはwww.synology-forum.ru/index.php?showtopic=38のトピックに精通し 、必要な身体の動きを実行する必要があります。 最終結果は、ipkgコンソールパッケージマネージャーのインストールと起動です。 Synologyドライブは異なるプロセッサで利用可能であり、各アーキテクチャのレシピは異なるため、この記事では簡単な要約を述べることはできません。



MONOの組み立てと設置



ipkgパッケージマネージャーが機能した後、最新のモノソースを取得して展開します(当時は2.10.9でした)。 ストーリーの過程で、必要に応じて、ipkgを使用して必要なパッケージを自分でインストールします。ハードウェアの特性により、クリーンな実験のために環境を完全に仮想化することができず、さらにインストールする必要があるもの。

wget http://download.mono-project.com/sources/mono/mono-2.10.9.tar.bz2 tar -xvf mono-2.10.9.tar.bz2
      
      







モノビルドプロセス:

 cd mono-2.10.9 ./configure --prefix=/usr --sysconfdir=/etc/mono
      
      





何かがうまくいかない場合は、config.logを見てください。 ほとんどの場合、一部のパッケージを配信する必要があります。



makeコマンドだけでは私のコンパイルに対応できなかったことを思い出してください。 フラグ '-Wl、-lpthread、-lrt'を追加する必要があります。 しかし、これでは十分ではありませんでした。 pthreadライブラリにリンクするとき、後者にはいくつかの機能がありませんでした。 これはアーキテクチャが原因である可能性があり、Intelはすべて問題ありません。 ただし、コンパイルの直前のARMでは、さらに次の呪文を実行する必要がありました。



 mkdir /opt/arm-none-linux-gnueabi/lib_disabled mv /opt/arm-none-linux-gnueabi/lib/libpthread* /opt/arm-none-linux-gnueabi/lib_disabled cp /lib/libpthread.so.0 /opt/arm-none-linux-gnueabi/lib/ cd /opt/arm-none-linux-gnueabi/lib/ ln -s libpthread.so.0 libpthread.so ln -s libpthread.so.0 libpthread-2.5.so
      
      







/opt/etc/ipkg/cross-feed.confで次のように変更します

src / gz cross ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable



 ipkg remove perl ipkg install perl
      
      







libpthreadの魔法はグーグルで明らかにされ、コマンドから明らかなように、ライブラリを置き換えています。 なぜこれが起こったのかはわかりませんが、事実です。 しかし、perlの再インストールは一般に何かです。 私のパッケージはもともと「不安定」ブランチ(不安定)からインストールされました。 あなたの場合、すべてがうまくいく可能性があります。



だから、ポップコーンを買いだめしてコンパイルしてください...プロセスは高速ではなく、いくつかの場所でも興味深いものです。

 make CFLAGS+='-Wl,-lpthread,-lrt'
      
      







したがって、モノのコンパイルが成功した場合は、コマンドでインストールします

 make install
      
      





そしてチェック

 mono --version
      
      





のような何かを与える必要があります

 Mono JIT compiler version 2.10.9 (tarball Sun Apr 15 18:40:39 MSK 2012) Copyright (C) 2002-2011 Novell, Inc, Xamarin, Inc and Contributors. www.mono-project.com TLS: __thread SIGSEGV: normal Notifications: epoll Architecture: armel,soft-float Disabled: none Misc: softdebug LLVM: supported, not enabled. GC: Included Boehm (with typed GC and Parallel Mark)
      
      







XSPのビルドとテスト





環境がインストールされました。次に、XSP-mono用ASP.NETアプリケーションサーバーをインストールする必要があります。 XSPの「ASP.NETサーバー」-強すぎるように聞こえますが、使用するものを忘れないでください。



ここではすべてがつまらない...

 wget http://download.mono-project.com/sources/xsp/xsp-2.10.tar.bz2 tar -xvf xsp-2.10.tar.bz2 cd xsp-2.10 ./configure make install
      
      





インストール後、以下を確認してください。

 cd /src/Mono.WebServer.XSP mono xsp4.exe --applications /:./../../test
      
      





発行する必要があります

 xsp4 Listening on address: 0.0.0.0 Root directory: /xsp-2.10/src/Mono.WebServer.XSP Listening on port: 8080 (non-secure) Hit Return to stop the server.
      
      





ブラウザを起動し、NASアドレスとポート8080を入力します。サーバーにテストページが表示されます。





実験的なASP.NET MVCアプリケーションの準備





1. ASP.NET MVC 3 Webアプリケーションプロジェクトを作成する





2.インターネットアプリケーションを選択しました





3.ソーステキストを少し修正します





4.ファイルシステムを介してパブリケーションを構成しました(FTPなど、NASで構成されているものを選択します)





5.アプリケーションを展開するフォルダーでXSPを実行します

 mono xsp4.exe --applications /:./volume1/web/TestMvcOnSynology
      
      







6.次に、アセンブリプロジェクトにMVCを含める必要があります。MVCはMONOにないため、アプリケーションと共にデプロイされます。 これを行うには、接続されたアセンブリのプロパティで[ローカルにコピー]プロパティをTrueに設定します。 アセンブリのリスト:System.Web.Helpers、System.Web.Mvc、System.Web.WebPages、System.Web.Razor、System.Web.WebPages.Razor、System.Web.WebPages.Deploymentの各アセンブリを追加し、「コピー」プロパティも設定します。ローカルに「真。

7.また、自分に慣れるために、アプリケーションからEntityFrameworkへの承認とすべての参照を「切り取り」ます(これは別の記事のトピックです)。

1. EntityFramework、System.Data.Entityへのリンクを削除します

2. AccountController.csをプロジェクトから除外します。

3. AccountModels.csをモデルから除外します。

4.アカウントフォルダーをビューから完全に除外する

5. _Layout.cshtmlで、id = logindisplayのセクションを削除します

6. _LogOnPartial.cshtmlファイルをプロジェクトから除外します



それだけです アプリケーションをデプロイして結果を楽しむことができます:





最後に





1. Microsoftが最近ASP.NETスタック全体のソースコードを開いたことを考えると、MVCパッケージをコードプレックスからアプリケーションに接続し、それへのすべてのリンクを切り替えて、この形式でアプリケーションをデプロイする可能性が最も高くなります。

2.承認を切り捨てる代わりに、EntityFrameworkを使用せずに独自のメカニズムを実装する必要がありますが、先ほど指摘したように、これは別のトピックです。



All Articles