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アクセス編に続く!