Ubuntu Server 12.04 + nginxでのASP.NET MVC 4アプリケーションの起動

Linuxでの.NET実装の動作を確認したかったのです。 Ubuntu Serverをハイパーバイザーに展開し、新しいmonoパッケージをインストールして、nginx経由でASP.NET MVC4サイトを起動することが決定されました。



公式のモノのWebサイトでは、Ubuntu用の既製パッケージはわずか2年です。 その瞬間から、計画を実行する方法のネットワークで検索が開始されました。 この経験の結果、ASP.NET MVC4サイトを実行するために必要なすべてのUbuntu Server 12.04.3または13.04を裸の状態で自動展開するためのスクリプトが作成されました。



カットラインのすぐ下には、記事で説明されている手順全体を自動的に実行するための行があります。



コンソールに1行だけでインストール



スクリプトをダウンロードし、実行して実際に起動する権利を設定するための1行。 最初に、[Enter]を押してリポジトリを追加するように求められ、後で再びsudoのパスワードを求められます。

wget https://bitbucket.org/mindbar/install-mono/raw/master/install-nginx-mono.sh && sudo chmod +x install-nginx-mono.sh && ./install-nginx-mono.sh
      
      





スクリプト全体の実行は、インターネットの速度と鉄の力に依存します。 平均で約40分。



必要条件



クリーンなUbuntu Server 12.04.3 x64またはUbuntu Server 13.04 x64にインストールすることになっています。

役割なしでインストールされたOS:

画像



OSを仮想マシンにインストールした直後に、クリーンなシステムのスナップショットを保持することをお勧めします。 実験に非常に便利です。

スクリプトのテストは、特権のないユーザーがホームディレクトリで行われましたが、sudoの権限があります。



モノと共同インストール



monoをインストールするには、いくつかの依存関係とユーティリティが必要です。 それらをインストールします。

  sudo apt-get -y install build-essential git autoconf libtool automake gettext libglib2.0-dev libjpeg-dev libpng12-dev libgif-dev libexif-dev libx11-dev libxrender-dev libfreetype6-dev libfontconfig1-dev
      
      







その後、 libgdiplus 、mono、およびxspを正確にこのシーケンスで複製および収集します。 すべてのファイルは個別のディレクトリ〜/ monobuildに保存され、 / usr / localにインストールされます

執筆時点では、libgdiplusのバージョンは2.10.8 でした 。 最新バージョンは、 github.com / mono / libgdiplus / releasesから入手できます。

  mkdir monobuild cd monobuild git clone https://github.com/mono/libgdiplus.git cd libgdiplus git checkout 2.10.8 ./autogen.sh --prefix=/usr/local make && sudo make install cd ..
      
      







実際にはモノ 。 新しいリリースは非常に頻繁にリリースされます-月に1、2回です。 現在のバージョンはmono-3.2.1です。 最新バージョンは、 github.com / mono / mono / releasesにあります。

興味深いニュアンス:モノをビルドするには、最初にモノライトコンパイラをビルドする必要があります。 幸いなことに、キットにはキットが付属しています。最初に組み立ててから、パスを渡してモノ自体をビルドするだけです。

  git clone https://github.com/mono/mono.git cd mono git checkout mono-3.2.1 ./autogen.sh --prefix=/usr/local make get-monolite-latest && make EXTERNAL_MCS=${PWD}/mcs/class/lib/monolite/gmcs.exe && sudo make install cd ..
      
      







ターンはxspサーバーに来ました-モノでサイトをデバッグするためのウェブサーバー。 C#で書かれています。 それと共にFastCGIコンポーネントがあります。 現在のバージョンは3.0.11です。 最新バージョンはgithub.com/mono/xsp/releasesにあります。



  git clone https://github.com/mono/xsp.git cd xsp git checkout 3.0.11 ./autogen.sh --prefix=/usr/local make && sudo make install cd .. cd ..
      
      







モノ-Vバージョンを確認しますか?

画像



nginx



nginxは、monoとのバンドルに推奨されるWebサーバーの1つです。 nginx + monoの相互作用は、FastCGI(推奨方法)またはxspのリバースプロキシとして可能です。



xspは、モノでサイトをテストおよびデバッグするためのサーバーです。 産業環境では、その使用は推奨されません。



nginxのインストールについて特別なことはありません。 リポジトリを接続し、パッケージのリストを更新して、nginxをインストールします。

  sudo apt-get -y install python-software-properties sudo add-apt-repository ppa:nginx/stable sudo apt-get update sudo apt-get -y install nginx
      
      







モノサーブ



サイトはサーバーで実行する必要があります。

提案された構成は、nginxで使用されているようなものです。



/ usr / local / etc / mono / fcgi / apps-enabledディレクトリ内のファイルからサイトのリストを取得し、www-dataユーザーからデーモンとして実行するmonoserveスクリプトが記述されています。



そのようなファイルの内容の例(1行):

/:/home/anvol/www









ご覧のとおり、これは単なる「/:」+アプリケーションへのパスです。 残念ながら、現在のバージョンのスクリプトでは、このようなサーバーが1つだけ正しく起動されます。 monoserveをファイナライズして、構成ファイルでアプリケーションポートまたはunix-socketの名前も指定できるようにする予定です。 その後、1つのサーバーで複数のサイトを実行できます。



それまでの間、少し修正したASP.NET MVC4サイトテンプレートを、準備したリポジトリから〜/ wwwフォルダーにアップロードし、monoserveを起動するように構成します。

  git clone https://mindbar@bitbucket.org/mindbar/mono-mvc4-default.git www sudo mkdir /usr/local/etc/mono/fcgi sudo mkdir /usr/local/etc/mono/fcgi/apps-available sudo mkdir /usr/local/etc/mono/fcgi/apps-enabled sudo touch /usr/local/etc/mono/fcgi/apps-available/default echo "/:`pwd`/www" | sudo tee -a /usr/local/etc/mono/fcgi/apps-available/default sudo ln -s /usr/local/etc/mono/fcgi/apps-available/default /usr/local/etc/mono/fcgi/apps-enabled/default wget https://bitbucket.org/mindbar/install-mono/raw/master/monoserve sudo cp monoserve /etc/init.d/monoserve sudo chmod +x /etc/init.d/monoserve sudo update-rc.d monoserve defaults sudo /etc/init.d/monoserve start rm monoserve
      
      





その後、ポート9001でfastcgi-mono-server4が実行され、〜/ wwwフォルダーからサイトを実行する準備ができました



Nginxのセットアップ



最後のコードはnginx構成です。 まず、/ etc / nginx / sites-enabled /からデフォルトサーバーへのシンボリックリンクを削除して、デフォルトサーバーを無効にします。

  sudo rm /etc/nginx/sites-enabled/default
      
      







次に、必要な設定を/ etc / nginx / fastcgi_paramsに追加します。

  echo "# mono config" | sudo tee -a /etc/nginx/fastcgi_params echo "fastcgi_param PATH_INFO \"\";" | sudo tee -a /etc/nginx/fastcgi_params echo "fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;" | sudo tee -a /etc/nginx/fastcgi_params
      
      







モノサーバーの設定を書きましょう:

 echo "server {" | sudo tee -a /etc/nginx/sites-available/mono-default echo " listen 80;" | sudo tee -a /etc/nginx/sites-available/mono-default echo " server_name localhost;" | sudo tee -a /etc/nginx/sites-available/mono-default echo " location / {" | sudo tee -a /etc/nginx/sites-available/mono-default echo " root `pwd`/www/;" | sudo tee -a /etc/nginx/sites-available/mono-default echo " index index.html index.htm default.aspx Default.aspx;" | sudo tee -a /etc/nginx/sites-available/mono-default echo " fastcgi_index Home;" | sudo tee -a /etc/nginx/sites-available/mono-default echo " fastcgi_pass 127.0.0.1:9001;" | sudo tee -a /etc/nginx/sites-available/mono-default echo " include /etc/nginx/fastcgi_params;" | sudo tee -a /etc/nginx/sites-available/mono-default echo " }" | sudo tee -a /etc/nginx/sites-available/mono-default echo "}" | sudo tee -a /etc/nginx/sites-available/mono-default
      
      







/ etc / nginx / sites-enabledにシンボリックリンクを作成して設定を有効にし、nginxに変更を受け入れて機能するように依頼します

  sudo ln -s /etc/nginx/sites-available/mono-default /etc/nginx/sites-enabled/mono-default sudo /etc/init.d/nginx restart
      
      







ip-your-virtualマシンのブラウザにアクセスするか、コンソールでサイトを確認します。

  wget localhost && cat index.html
      
      





画像



健康に使用してください。



計画







スクリプトへのコメント、将来の改善を願っています。 ありがとう



使用した資料へのリンク



FastCGI-モノ

Ubuntu 12.10でASP.Net MVC4を実行する

Mono / FastCGI起動スクリプト



All Articles