ASP.NET Coreをubuntuで動かしてみます。

環境は

Vagrant(+VirtualBox)

Host OS: Windows 7

Guest OS: ubuntu-16.04

Visual Studio 2017 Community + “.NET Core cross-platform development”

VM作成

1
vagrant init bento/ubuntu-16.04

Vagrantfile編集

1
2
3
4
5
#ASP.NET Coreのポートフォワード設定
  config.vm.network "forwarded_port", guest: 5000, host: 5050

  #If you'd like to turn off curl's verification of the certificate, use the -k (or --insecure) option.が出たら
  config.vm.box_download_insecure = true

起動

1
vagrant up --provider virtualbox

接続

接続

Puttyで

Host: 127.0.0.1

Port: 2222

Username: vagrant

password: vagrant

VMに.Net Core Install

MSのInstall for Ubuntu 14.04, 16.04, 16.10 & Linux Mint 17, 18 (64 bit)のUbuntu 16.04のコマンドをそのまま実行します。

1
2
3
4
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
sudo apt-get install dotnet-dev-1.0.4

.Net Core 動作確認

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
vagrant@vagrant:~$  dotnet --info
.NET Command Line Tools (1.0.4)

Product Information:
 Version:            1.0.4
 Commit SHA-1 hash:  af1e6684fd

Runtime Environment:
 OS Name:     ubuntu
 OS Version:  16.04
 OS Platform: Linux
 RID:         ubuntu.16.04-x64
 Base Path:   /usr/share/dotnet/sdk/1.0.4

vagrant@vagrant:~$ mkdir src
vagrant@vagrant:~$ dotnet new console -o hwapp
vagrant@vagrant:~$ cd hwapp/
vagrant@vagrant:~/hwapp$ dotnet restore
vagrant@vagrant:~/hwapp$ dotnet run
Hello World!

サンプルアプリ作成

Visual Studio 2017でASP.NET Core Web Applocation(.Net Core)

VS2017には”.NET Core cross-platform development”がインストールされてること。

TemplateはWeb Application

No Auth

Enable Docker support はオフ

Program.csに外部ホストからのアクセス可能にする記述を追加。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
public class Program
    {
        public static void Main(string[] args)
        {
            var host = new WebHostBuilder()
                .UseKestrel()
                .UseContentRoot(Directory.GetCurrentDirectory())
                .UseIISIntegration()
                .UseStartup<Startup>()
                .UseUrls("http://0.0.0.0:5000") // 公開設定
                .UseApplicationInsights()
                .Build();

            host.Run();
        }
    }

.csproj編集

1
2
3
4
<PropertyGroup>
    <TargetFramework>netcoreapp1.1</TargetFramework>
    <RuntimeIdentifiers>win7-x64;win-7x86;ubuntu.16.04-x64</RuntimeIdentifiers><!--追記-->
  </PropertyGroup>

ubuntu.16.04-x64はサーバで dotnet –info した時の RID: の値をセットすると良いような気がする。

公開用ビルド

c:\usr\vstest\WebApplication3\WebApplication3>dotnet restore

c:\usr\vstest\WebApplication3\WebApplication3>dotnet build

c:\usr\vstest\WebApplication3\WebApplication3>dotnet publish –configuration Release -r ubuntu.16.04-x64

公開

bin\Release\netcoreapp1.1\ubuntu.16.10-x64\publish をubuntuにコピー(WinSCP使用)

VMで実行

vagrant@vagrant:~/src/publish$ dotnet WebApplication3.dll

Hosting environment: Production

Content root path: /home/vagrant/src/publish

Now listening on: http://localhost:5000

Application started. Press Ctrl+C to shut down.

ホスト側からはhttp://localhost:5050/でアクセス

なんか知らんけどWindows以外でASP.NETが動くだけでも新鮮ですね。

とはいえ実用的なWebアプリには欠かせないデータベースアクセスに関してはまだ未知。

もしかしたらDBアクセス編やるかも。

DBアクセス編に続く!