asp net coreプラットフォーム間での初体験

3871 ワード

Netcoreのインストール
運転環境:ubuntu 16.04 LTS
1.aptソースの追加
3つのコマンドを順次実行
     sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/xenial main">/etc/apt/sources.list.d/dotnetdev.list'
     sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 417A0893
     sudo apt-get update
2.インストールの実行
     sudo apt-get install dotnet-dev-1.0.4
3.インストール結果の検証
コマンドの実行
     dotnet --version
1.0.4はすべて正常であることを示します.
     
 
プログラミング
IDE:visual studio community 2017版
Webフレームワーク:Nancy(nancyは軽量級ですが、機能が強いwebフレームワークで、ここでは詳しく説明しません.)
1.vsに空のaspを新規作成する.Netcore webアプリケーション
 
2.nugetパッケージの追加
デフォルトのプログラムには3つのパッケージがあります
アプリケーションinsightが使えないので削除してMicrosoftを追加します.aspnetcore.owinとnancyの2つのパッケージは、owinをインストールしてからnancyをインストールします.
注意nancyのaspnet coreのサポートはまだテスト版なので、nancyを検索する前にnugetパッケージマネージャの「プリリリース版を含む」をチェックする必要があります.
 
3.プログラムの変更csファイル
不要なコードを削除
public static void Main(string[] args)
  {  var host = new WebHostBuilder()
  .UseKestrel()
  .UseContentRoot(Directory.GetCurrentDirectory())//                  .UseIISIntegration()
  .UseStartup()//                   .UseApplicationInsights()  .Build();
 
  host.Run();
  }

4.Startupを修正する.csファイル
using Nancy.Owin; //    nancy   owin   public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
  {
  loggerFactory.AddConsole(); 
  if (env.IsDevelopment())
  {
  app.UseDeveloperExceptionPage();
  } 
//            ,      using Nancy.Owin;
 app.UseOwin(p => p.UseNancy()); 
/*      nancy   ,        
  app.Run(async (context) =>
  {
  await context.Response.WriteAsync("Hello World!");
  });
  }*/

5.nancyに必要なmoduleファイルを追加し、ここではhomeModuleを使用します.cs
public homeModule()
        {
            Get("/", p =>
            {                return View["index.html"];
            });
        }

asp net mvcと同様に、nancyのmoduleファイル名は、homeModuleなどのnancy検索viewのパスに直接影響します.nancyはviews/home/indexを検索します.htmlというパス.もちろんnancy検索viewを変更する方法を構成することもできます.
実際にnancyのどのコンポーネントも構成したり、自分のものに置き換えたりすることができるので、かなり柔軟です.
新しいviews/home/index.htmlファイルは、勝手に書いて、余計なことはしません.F 5を押してデバッグして実行すればいいです.
注意しなければならないことが二つあります.
1.iisをホストとして実行しているわけではないので(Program.csファイルではUseIISintegrationコードを削除しています)、vsのブラウズ方式ではIIS Expressを選択することはできません.プロジェクト名を選択します.
2.新しく追加したviewファイルは、vsが出力ディレクトリにコピーされず、実行エラーが発生したため、出力方式を変更します.
 
ubuntuに配備
プロジェクトをreleaseモードに変更し、vsのプロジェクトを右クリックして「パッケージ」コマンドを選択すると、vsはコンパイルされ、dllはbinreleaseetcore 1にコンパイルされます.1ディレクトリの下.
ファイルをubuntuにアップロードする前にhello.runtimeconfig.dev.jsonは少し修正して、これは大きな穴で、マイクロソフトの公式チュートリアルではこれに言及していません.
このファイルの内容は簡単です.
  "additionalProbingPaths": [
  "C:\\Users\\michael\\.nuget\\packages"
  ]
additionalProbingPathsはnugetのパッケージパスです.winで開発したので、%USERPROFILE%.nugetpackages ubuntuに配備する前に/root/.に変更する必要があります.nuget/packages
 
上記のファイルをscpやftpなどのツールでubuntuに転送します.例えば、/home/web/helloに置いてUbuntuで実行します.
dotnet hello.dllでいい
この場合、リモート・サーバでのみ使用できます.http://localhost:5000アクセスは、クライアントにアクセスするには、逆エージェントを追加する必要があります.
 
逆プロキシの追加
主流に従ってnginxを選びましょう
1.nginxのインストール
apt install nginxを実行する.余計なことは言わない
2.nginxの構成
/etc/nginx/sites-available/defaultファイルを編集します.
server {
  listen 80;
 
  location/{
  proxy_pass http://localhost:5000;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection keep-alive;
  proxy_set_header Host $host;
  proxy_cache_bypass $http_upgrade;
  }
}
3.nginxを実行する
sudo service nginx startを実行します.
 
http://サーバIP/をクライアントで使用すると、ubuntu上でnet coreが実行されているサイトが表示されます.