Try .NET Core

.NET Coreを動かした、試した記録を書き残します。

macOS10.11で、ASP.NET Coreアプリを動かす

.NET Coreは mac でも動くとのこと。
ウチではWindowsLinuxが主ですが、mac使いのプログラマも多いですよね。
macでの.NET Coreは、さて、どんなものか。
ざっと試してみます。

インストール手順は、おおむね公式ドキュメントに準じます。

Homebrewをインストール

どうやら、最新のopensslが要るんだぜ、と。
Homebrewというヤツを入れるのが手っ取り早いぜ、とのこと。

どうやら、yumのようなパッケージ管理システムのようです。
いれます。

mac-05rw:~ 05rw$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
==> This script will install:
/usr/local/bin/brew
/usr/local/share/doc/homebrew
 --- 中略 ---
- Run `brew help` to get started
- Further documentation: 
    https://git.io/brew-docs
mac-05rw:~ 05rw$ 


opensslをインストール

続いてご指名のopensslを、貰ってきます。

mac-05rw:~ 05rw$ brew install openssl
==> Downloading https://homebrew.bintray.com/bottles/openssl-1.0.2j.el_capitan.b
######################################################################## 100.0%
==> Pouring openssl-1.0.2j.el_capitan.bottle.tar.gz
 --- 中略 ---
    CPPFLAGS: -I/usr/local/opt/openssl/include

==> Summary
🍺  /usr/local/Cellar/openssl/1.0.2j: 1,695 files, 12M

なんか旨そうなの見えてますけど。

リンクも張りますよ。

mac-05rw:~ 05rw$ mkdir -p /usr/local/lib
mac-05rw:~ 05rw$ ln -s /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/
mac-05rw:~ 05rw$ ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/


.NET Core SDKをインストール

公式バイナリ配布ページからtar玉を、ver1.1.0ver1.0.1の二つを貰ってきます。
f:id:try_dot_net_core:20161205185058j:plain

解凍先フォルダをバージョンごとに

  1. ver1.1.0用 - ./dotnet
  2. ver1.0.1用 - ./dotnet101

のように二つ作り、それぞれを解凍します。

mac-05rw:~ 05rw$ cd Downloads/
mac-05rw:Downloads 05rw$ ls -alF
total 426504
drwx------+  5 05rw  staff        170 12  5 18:29 ./
drwxr-xr-x+ 13 05rw  staff        442 12  5 18:39 ../
-rw-------   1 05rw  staff          0 11 26 16:33 .localized
-rw-r--r--@  1 05rw  staff  106342400 12  5 18:21 dotnet-dev-osx-x64.1.0.0-preview2-003131.tar
-rw-r--r--@  1 05rw  staff  112025600 12  5 18:21 dotnet-dev-osx-x64.1.0.0-preview2-1-003177.tar
mac-05rw:Downloads 05rw$ mkdir dotnet101
mac-05rw:Downloads 05rw$ mkdir dotnet
mac-05rw:Downloads 05rw$ tar xvf dotnet-dev-osx-x64.1.0.0-preview2-003131.tar -C ./dotnet101/
x ./
x ./dotnet
x ./host/
 --- 中略 ---
x ./host/fxr/
x ./host/fxr/1.0.1/
x ./host/fxr/1.0.1/libhostfxr.dylib
mac-05rw:Downloads 05rw$ tar xvf dotnet-dev-osx-x64.1.0.0-preview2-1-003177.tar -C ./dotnet/
x ./
x ./dotnet
x ./host/
 --- 中略 ---
x ./host/fxr/
x ./host/fxr/1.1.0/
x ./host/fxr/1.1.0/libhostfxr.dylib


まず新しい方、ver1.1.0を、/usr/local/opt/dotnet/に配置します。

mac-05rw:Downloads 05rw$ sudo mv ./dotnet /usr/local/opt/dotnet



ver1.0.1の方は、テキストファイルとdotnetコマンドを削除して...

mac-05rw:Downloads 05rw$ ls -alF ./dotnet101/
total 352
drwxr-xr-x  8 05rw  staff     272 12  5 19:25 ./
drwx------+ 6 05rw  staff     204 12  5 19:16 ../
-rw-r--r--  1 05rw  staff    9410  6 16 09:15 LICENSE.txt             <- これと、
-rw-r--r--  1 05rw  staff    8103  6 16 09:15 ThirdPartyNotices.txt   <- これと、
-rwxr-xr-x  1 05rw  staff  155976  6 16 09:19 dotnet*                 <- これを削除
drwxr-xr-x  3 05rw  staff     102  9  1 07:59 host/
drwxr-xr-x  3 05rw  staff     102  9  1 07:59 sdk/
drwxr-xr-x  3 05rw  staff     102  9  1 07:59 shared/
mac-05rw:Downloads 05rw$ rm ./dotnet101/*.txt
mac-05rw:Downloads 05rw$ rm ./dotnet101/dotnet 

残った3つのフォルダを、/usr/local/opt/dotnet/に上書きコピーします。

mac-05rw:Downloads 05rw$ cp -Rf ./dotnet101/* /usr/local/opt/dotnet/



二つのバージョンが、併存してますね!

mac-05rw:Downloads 05rw$ ls -alF /usr/local/opt/dotnet/host/fxr/
total 0
drwxr-xr-x  4 05rw  staff  136 12  5 19:20 ./
drwxr-xr-x  3 05rw  staff  102 12  5 19:12 ../
drwxr-xr-x  3 05rw  staff  102 12  5 19:20 1.0.1/
drwxr-xr-x  3 05rw  staff  102 12  5 19:12 1.1.0/

/usr/local/bin/の下へ、シンボリックリンクを作ります。

mac-05rw:Downloads 05rw$ sudo ln -s /usr/local/opt/dotnet/dotnet /usr/local/bin/

以上でインストール終了です。

mac-05rw:Downloads 05rw$ dotnet --version
1.0.0-preview2-1-003177

動いてます!


ASP.NET Coreプロジェクトを実行してみる

ソースをgitから貰ってきて、動かしてみましょう。
CentOS7-GitBucketサーバ のIPアドレスhostsに追記してから、git cloneします。

mac-05rw:Downloads 05rw$ git clone http://git.centos7.local/git/05rw/dotnet_sample.git
Cloning into 'dotnet_sample'...
Username for 'http://git.centos7.local': 05rw
Password for 'http://05rw@git.centos7.local': 
remote: Counting objects: 102, done
remote: Finding sources: 100% (102/102)
remote: Getting sizes: 100% (95/95)
remote: Total 102 (delta 4), reused 102 (delta 4)
Receiving objects: 100% (102/102), 517.99 KiB | 0 bytes/s, done.
Resolving deltas: 100% (4/4), done.
Checking connectivity... done.

ソースがもらえました。
プロジェクトのルートに移動して、restorebuildを試します...。

mac-05rw:Downloads 05rw$ cd dotnet_sample/src/WebApplication1
mac-05rw:WebApplication1 05rw$ dotnet restore

Welcome to .NET Core!
---------------------
Learn more about .NET Core @ https://aka.ms/dotnet-docs. Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
 --- 中略 ---
log  : Writing lock file to disk. Path: /Users/vm/Downloads/dotnet_sample/src/WebApplication1/project.lock.json
log  : ./dotnet_sample/src/WebApplication1/project.json
log  : Restore completed in 44161ms.
mac-05rw:WebApplication1 05rw$  dotnet build
Project WebApplication1 (.NETCoreApp,Version=v1.0) will be compiled because expected outputs are missing
Compiling WebApplication1 for .NETCoreApp,Version=v1.0

Compilation succeeded.
    0 Warning(s)
    0 Error(s)

Time elapsed 00:00:03.0704619
 

おおー、ビルドも通りましたね。
実行してみますか。

mac-05rw:WebApplication1 05rw$ dotnet run
Hosting environment: Production
Content root path: /Users/vm/Downloads
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.

待機状態になりました!

ブラウザからアクセスしてみます。
せっかくGUIがあるので、ローカルのSafariから...
f:id:try_dot_net_core:20161205211421j:plain
動いてます!



今回分のソースコードはこちら。
前回から特に変更ありません。
github.com