Try .NET Core

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

Linux(CentOS7)で、ASP.NET Coreアプリを公開(publish)する

ASP.NET Coreプロジェクトをdotnet runコマンドで実行し、動作確認が出来ました。
でもちょっと、環境が乱雑。
いずれアプリケーションを公開する(はず)なので、環境を整備します。

フォルダ構成を整理

前回は、手早く動作確認するため/home/sampleにファイル一式をコピペしました。
しかし今後、自社PHPサービスや GitBucket、Jenkins を平行稼働する予定なので、Webをまとめたフォルダ/home/webrootの配下に持っていきます。

[root@centos7 ~]# mkdir -p /home/webroot/dotnet_sample/bin  
[root@centos7 ~]# mv /home/sample /home/webroot/dotnet_sample/src

publishコマンドを試す

dotnet rundotnet buildは [プロジェクト]/bin 下にバイナリを生成してくれますが、実行に必要な全ての依存dllを書き出してくれるわけではありません。
バイナリ一式を全て出力するには、dotnet publishコマンドを実行します。

詳しくはこちらに記述がありました。日本語じゃーん!さんくす!
早速、Releaseビルドを指定パスに書き出してみます。

[root@centos7 ~]# cd /home/webroot/dotnet_sample/src/src/WebApplication1  
[root@centos7 WebApplication1]# dotnet publish --configuration Release --output  
/home/webroot/dotnet_sample/bin/  
Publishing WebApplication1 for .NETCoreApp,Version=v1.0  
No executable found matching command "bower"  

ん?
bowerって何よ?

参考:
dotnet-publish

publish環境をつくろう

エラーメッセージでぐぐると、まんまのがありました。
GonzRuさんの回答で、npm経由のインストール手順があります。

npm install -g bower  
npm install -g gulp  

npmって、node.jsのナニヤラでしたっけね?
とりあえず、npmを入れます。

[root@centos7 WebApplication1]# yum -y install npm  
読み込んだプラグイン:fastestmirror  
base                                                     | 3.6 kB     00:00  
extras                                                   | 3.4 kB     00:00  
updates                                                  | 3.4 kB     00:00  
Loading mirror speeds from cached hostfile  
 * base: www.ftp.ne.jp  
 * extras: www.ftp.ne.jp  
 * updates: www.ftp.ne.jp  
パッケージ npm は利用できません。  
エラー: 何もしません

あっ。ないですか。
ざっとぐぐると、こういうのこういうのが当たってきます。なるほど、epelにパッケージがあるなら、今後も安心ですね。
早速、yum-epelリポジトリを入れてから再度試します。

[root@centos7 WebApplication1]# yum install epel-release
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ epel-release.noarch 0:7-6 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package                アーキテクチャー バージョン      リポジトリー      容量
================================================================================
インストール中:
 epel-release           noarch           7-6             extras            14 k

トランザクションの要約
================================================================================
インストール  1 パッケージ

総ダウンロード容量: 14 k
インストール容量: 24 k
Is this ok [y/d/N]: y
Downloading packages:
epel-release-7-6.noarch.rpm                                |  14 kB   00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : epel-release-7-6.noarch                         1/1
  検証中                  : epel-release-7-6.noarch                         1/1

インストール:
  epel-release.noarch 0:7-6

完了しました!
[root@centos7 WebApplication1]# yum -y install npm
読み込んだプラグイン:fastestmirror
epel/x86_64/metalink                                     | 5.0 kB     00:00
epel                                                     | 4.3 kB     00:00
epel/x86_64/primary_db         FAILED
http://ftp.cuhk.edu.hk/pub/linux/fedora-epel/7/x86_64/repodata/64def14d57e00e2fddbbbbc5be92792cd03fedbb047dd9929ebfe1cf7025ca84-primary.sqlite.xz: [Errno 14] HTTP Error 404 - Not Found
他のミラーを試します。
To address this issue please refer to the below knowledge base article

https://access.redhat.com/articles/1320623

If above article doesn't help to resolve this issue please create a bug on https://bugs.centos.org/

(1/3): epel/x86_64/group_gz                                | 170 kB   00:00
(2/3): epel/x86_64/updateinfo                              | 681 kB   00:01
(3/3): epel/x86_64/primary_db                              | 4.4 MB   00:03
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * epel: free.nchc.org.tw
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ npm.x86_64 1:3.10.8-1.6.9.1.4.el7 を インストール
--> 依存性の処理をしています: nodejs = 1:6.9.1-4.el7 のパッケージ: 1:npm-3.10.8-1.6.9.1.4.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ nodejs.x86_64 1:6.9.1-4.el7 を インストール
--> 依存性の処理をしています: libuv >= 1:1.9.1 のパッケージ: 1:nodejs-6.9.1-4.el7.x86_64
--> 依存性の処理をしています: libuv.so.1()(64bit) のパッケージ: 1:nodejs-6.9.1-4.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ libuv.x86_64 1:1.9.1-1.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package       アーキテクチャー
                             バージョン                       リポジトリー
                                                                           容量
================================================================================
インストール中:
 npm           x86_64        1:3.10.8-1.6.9.1.4.el7           epel        2.4 M
依存性関連でのインストールをします:
 libuv         x86_64        1:1.9.1-1.el7                    epel         79 k
 nodejs        x86_64        1:6.9.1-4.el7                    epel        4.6 M

トランザクションの要約
================================================================================
インストール  1 パッケージ (+2 個の依存関係のパッケージ)

総ダウンロード容量: 7.1 M
インストール容量: 26 M
Downloading packages:
警告: /var/cache/yum/x86_64/7/epel/packages/nodejs-6.9.1-4.el7.x86_64.rpm: ヘッ ダー V3 RSA/SHA256 Signature、鍵 ID 352c64e5: NOKEY
nodejs-6.9.1-4.el7.x86_64.rpm の公開鍵がインストールされていません
(1/3): nodejs-6.9.1-4.el7.x86_64.rpm                       | 4.6 MB   00:01
(2/3): npm-3.10.8-1.6.9.1.4.el7.x86_64.rpm                 | 2.4 MB   00:01
(3/3): libuv-1.9.1-1.el7.x86_64.rpm                        |  79 kB   00:02
--------------------------------------------------------------------------------
合計                                               3.0 MB/s | 7.1 MB  00:02
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 から鍵を取得中です。
Importing GPG key 0x352C64E5:
 Userid     : "Fedora EPEL (7) <epel@fedoraproject.org>"
 Fingerprint: 91e9 7d7c 4a5e 96f1 7f3e 888f 6a2f aea2 352c 64e5
 Package    : epel-release-7-6.noarch (@extras)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : 1:libuv-1.9.1-1.el7.x86_64                      1/3
  インストール中          : 1:npm-3.10.8-1.6.9.1.4.el7.x86_64               2/3
  インストール中          : 1:nodejs-6.9.1-4.el7.x86_64                     3/3
  検証中                  : 1:nodejs-6.9.1-4.el7.x86_64                     1/3
  検証中                  : 1:libuv-1.9.1-1.el7.x86_64                      2/3
  検証中                  : 1:npm-3.10.8-1.6.9.1.4.el7.x86_64               3/3

インストール:
  npm.x86_64 1:3.10.8-1.6.9.1.4.el7

依存性関連をインストールしました:
  libuv.x86_64 1:1.9.1-1.el7             nodejs.x86_64 1:6.9.1-4.el7

完了しました!

さて、npm経由でbowerとgulpを入れていれてみます。

[root@centos7 WebApplication1]# npm install -g bower
/usr/bin/bower -> /usr/lib/node_modules/bower/bin/bower
/usr/lib
mqq bower@1.8.0

[root@centos7 WebApplication1]# npm install -g gulp
npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated minimatch@0.2.14: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated graceful-fs@1.2.3: graceful-fs v3.0.0 and before will fail on node releases >= v7.0. Please update to graceful-fs@^4.0.0 as soon as possible. Use 'npm ls graceful-fs' to find it in the tree.
/usr/bin/gulp -> /usr/lib/node_modules/gulp/bin/gulp.js
/usr/lib
mqw gulp@3.9.1
  tqq archy@1.0.0
  tqw chalk@1.1.3
  x tqq ansi-styles@2.2.1
  x tqq escape-string-regexp@1.0.5
  x tqw has-ansi@2.0.0
  x x mqq ansi-regex@2.0.0
  x tqq strip-ansi@3.0.1
  x mqq supports-color@2.0.0
  tqq deprecated@0.0.1
  tqw gulp-util@3.0.7
  x tqq array-differ@1.0.0
  x tqq array-uniq@1.0.3
  x tqq beeper@1.1.1
  x tqw dateformat@1.0.12
  x x tqq get-stdin@4.0.1
  x x mqw meow@3.7.0
  x x   tqw camelcase-keys@2.1.0
  x x   x mqq camelcase@2.1.1
  x x   tqq decamelize@1.2.0
  x x   tqw loud-rejection@1.6.0
  x x   x tqw currently-unhandled@0.4.1
  x x   x x mqq array-find-index@1.0.2
  x x   x mqq signal-exit@3.0.1
  x x   tqq map-obj@1.0.1
  x x   tqw normalize-package-data@2.3.5
  x x   x tqq hosted-git-info@2.1.5
  x x   x tqw is-builtin-module@1.0.0
  x x   x x mqq builtin-modules@1.1.1
  x x   x mqw validate-npm-package-license@3.0.1
  x x   x   tqw spdx-correct@1.0.2
  x x   x   x mqq spdx-license-ids@1.2.2
  x x   x   mqq spdx-expression-parse@1.0.4
  x x   tqq object-assign@4.1.0
  x x   tqw read-pkg-up@1.0.1
  x x   x tqw find-up@1.1.2
  x x   x x tqq path-exists@2.1.0
  x x   x x mqw pinkie-promise@2.0.1
  x x   x x   mqq pinkie@2.0.4
  x x   x mqw read-pkg@1.1.0
  x x   x   tqw load-json-file@1.1.0
  x x   x   x tqq graceful-fs@4.1.11
  x x   x   x tqw parse-json@2.2.0
  x x   x   x x mqw error-ex@1.3.0
  x x   x   x x   mqq is-arrayish@0.2.1
  x x   x   x tqq pify@2.3.0
  x x   x   x mqq strip-bom@2.0.0
  x x   x   mqq path-type@1.1.0
  x x   tqw redent@1.0.0
  x x   x tqw indent-string@2.1.0
  x x   x x mqw repeating@2.0.1
  x x   x x   mqw is-finite@1.0.2
  x x   x x     mqq number-is-nan@1.0.1
  x x   x mqq strip-indent@1.0.1
  x x   mqq trim-newlines@1.0.0
  x tqw fancy-log@1.2.0
  x x mqq time-stamp@1.0.1
  x tqw gulplog@1.0.0
  x x mqq glogg@1.0.0
  x tqw has-gulplog@0.1.0
  x x mqq sparkles@1.0.0
  x tqq lodash._reescape@3.0.0
  x tqq lodash._reevaluate@3.0.0
  x tqq lodash._reinterpolate@3.0.0
  x tqw lodash.template@3.6.2
  x x tqq lodash._basecopy@3.0.1
  x x tqq lodash._basetostring@3.0.1
  x x tqq lodash._basevalues@3.0.0
  x x tqq lodash._isiterateecall@3.0.9
  x x tqw lodash.escape@3.2.0
  x x x mqq lodash._root@3.0.1
  x x tqw lodash.keys@3.1.2
  x x x tqq lodash._getnative@3.9.1
  x x x tqq lodash.isarguments@3.1.0
  x x x mqq lodash.isarray@3.0.4
  x x tqq lodash.restparam@3.6.1
  x x mqq lodash.templatesettings@3.1.1
  x tqw multipipe@0.1.2
  x x mqw duplexer2@0.0.2
  x x   mqq readable-stream@1.1.14
  x tqq object-assign@3.0.0
  x tqq replace-ext@0.0.1
  x tqw through2@2.0.3
  x x tqw readable-stream@2.2.2
  x x x tqq buffer-shims@1.0.0
  x x x tqq core-util-is@1.0.2
  x x x tqq inherits@2.0.3
  x x x tqq isarray@1.0.0
  x x x tqq process-nextick-args@1.0.7
  x x x tqq string_decoder@0.10.31
  x x x mqq util-deprecate@1.0.2
  x x mqq xtend@4.0.1
  x mqw vinyl@0.5.3
  x   tqq clone@1.0.2
  x   mqq clone-stats@0.0.1
  tqq interpret@1.0.1
  tqw liftoff@2.3.0
  x tqq extend@3.0.0
  x tqw findup-sync@0.4.3
  x x tqw detect-file@0.1.0
  x x x mqq fs-exists-sync@0.1.0
  x x tqw is-glob@2.0.1
  x x x mqq is-extglob@1.0.0
  x x tqw micromatch@2.3.11
  x x x tqw arr-diff@2.0.0
  x x x x mqq arr-flatten@1.0.1
  x x x tqq array-unique@0.2.1
  x x x tqw braces@1.8.5
  x x x x tqw expand-range@1.8.2
  x x x x x mqw fill-range@2.2.3
  x x x x x   tqq is-number@2.1.0
  x x x x x   tqw isobject@2.1.0
  x x x x x   x mqq isarray@1.0.0
  x x x x x   tqq randomatic@1.1.6
  x x x x x   mqq repeat-string@1.6.1
  x x x x tqq preserve@0.2.0
  x x x x mqq repeat-element@1.1.2
  x x x tqw expand-brackets@0.1.5
  x x x x mqq is-posix-bracket@0.1.1
  x x x tqq extglob@0.3.2
  x x x tqq filename-regex@2.0.0
  x x x tqw kind-of@3.0.4
  x x x x mqq is-buffer@1.1.4
  x x x tqq normalize-path@2.0.1
  x x x tqw object.omit@2.0.1
  x x x x tqw for-own@0.1.4
  x x x x x mqq for-in@0.1.6
  x x x x mqq is-extendable@0.1.1
  x x x tqw parse-glob@3.0.4
  x x x x tqw glob-base@0.3.0
  x x x x x mqq glob-parent@2.0.0
  x x x x mqq is-dotfile@1.0.2
  x x x mqw regex-cache@0.4.3
  x x x   tqq is-equal-shallow@0.1.3
  x x x   mqq is-primitive@2.0.0
  x x mqw resolve-dir@0.1.1
  x x   mqw global-modules@0.2.3
  x x     tqw global-prefix@0.1.5
  x x     x tqw homedir-polyfill@1.0.1
  x x     x x mqq parse-passwd@1.0.0
  x x     x tqq ini@1.3.4
  x x     x mqw which@1.2.12
  x x     x   mqq isexe@1.1.2
  x x     mqq is-windows@0.2.0
  x tqw fined@1.0.2
  x x tqq expand-tilde@1.2.2
  x x tqq lodash.assignwith@4.2.0
  x x tqq lodash.isempty@4.4.0
  x x tqq lodash.pick@4.4.0
  x x mqw parse-filepath@1.0.1
  x x   tqw is-absolute@0.2.6
  x x   x mqw is-relative@0.2.1
  x x   x   mqw is-unc-path@0.1.1
  x x   x     mqq unc-path-regex@0.1.2
  x x   tqq map-cache@0.2.2
  x x   mqw path-root@0.1.1
  x x     mqq path-root-regex@0.1.2
  x tqq flagged-respawn@0.3.2
  x tqq lodash.isplainobject@4.0.6
  x tqq lodash.isstring@4.0.1
  x tqq lodash.mapvalues@4.6.0
  x tqq rechoir@0.6.2
  x mqq resolve@1.1.7
  tqq minimist@1.2.0
  tqw orchestrator@0.3.8
  x tqw end-of-stream@0.1.5
  x x mqw once@1.3.3
  x x   mqq wrappy@1.0.2
  x tqq sequencify@0.0.7
  x mqq stream-consume@0.1.0
  tqq pretty-hrtime@1.0.3
  tqq semver@4.3.6
  tqw tildify@1.2.0
  x mqq os-homedir@1.0.2
  tqw v8flags@2.0.11
  x mqq user-home@1.1.1
  mqw vinyl-fs@0.3.14
    tqq defaults@1.0.3
    tqw glob-stream@3.1.18
    x tqw glob@4.5.3
    x x mqq inflight@1.0.6
    x tqw glob2base@0.0.12
    x x mqq find-index@0.1.1
    x tqw minimatch@2.0.10
    x x mqw brace-expansion@1.1.6
    x x   tqq balanced-match@0.4.2
    x x   mqq concat-map@0.0.1
    x tqq ordered-read-streams@0.1.0
    x tqw through2@0.6.5
    x x mqq readable-stream@1.0.34
    x mqq unique-stream@1.0.0
    tqw glob-watcher@0.0.6
    x mqw gaze@0.5.2
    x   mqw globule@0.1.0
    x     tqw glob@3.1.21
    x     x tqq graceful-fs@1.2.3
    x     x mqq inherits@1.0.2
    x     tqq lodash@1.0.2
    x     mqw minimatch@0.2.14
    x       tqq lru-cache@2.7.3
    x       mqq sigmund@1.0.1
    tqw graceful-fs@3.0.11
    x mqq natives@1.1.0
    tqw mkdirp@0.5.1
    x mqq minimist@0.0.8
    tqw strip-bom@1.0.0
    x tqq first-chunk-stream@1.0.0
    x mqq is-utf8@0.2.1
    tqw through2@0.6.5
    x mqw readable-stream@1.0.34
    x   mqq isarray@0.0.1
    mqw vinyl@0.4.6
      mqq clone@0.2.0

何か警告出てる気がするけど。publishに使うだけだし、まあいいんじゃないかな(適当)

じゃあ、改めて。publishしてみます。

[root@centos7 WebApplication1]# dotnet publish --configuration Release --output /home/webroot/dotnet_sample/bin/
Publishing WebApplication1 for .NETCoreApp,Version=v1.0
bower ESUDO         Cannot be run with sudo
Additional error details:
Since bower is a user command, there is no need to execute it with superuser permissions.
If you're having permission errors when using bower without sudo, please spend a few minutes learning more about how your system should work and make any necessary repairs.
http://www.joyent.com/blog/installing-node-and-npm
https://gist.github.com/isaacs/579814
You can however run a command with sudo using --allow-root option
Bundling with configuration from /home/webroot/dotnet_sample/src/src/WebApplication1/bundleconfig.json
Processing wwwroot/css/site.min.css
  Bundled
  Minified
Processing wwwroot/js/site.min.js
  Bundled
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:01.9241647


Configuring the following project for use with IIS: '/home/webroot/dotnet_sample/bin/'
Updating web.config at '/home/webroot/dotnet_sample/bin/web.config'
Configuring project completed successfully

お~~~。できたっぽい。
どれどれ?

[root@centos7 WebApplication1]# ls -alF /home/webroot/dotnet_sample/bin
合計 5260
drwxr-xr-x 5 root root   8192 12月  3 13:26 ./
drwxr-xr-x 4 root root     26 12月  3 12:05 ../
-rwxr--r-- 1 root root  50680  8月 31 17:26 Microsoft.AspNetCore.Antiforgery.dll*
-rwxr--r-- 1 root root  38400  6月 22 09:14 Microsoft.AspNetCore.Authorization.dll*
-rwxr--r-- 1 root root  31744  6月 22 09:14 Microsoft.AspNetCore.Cors.dll*
-rwxr--r-- 1 root root  40952  6月 22 09:14 Microsoft.AspNetCore.Cryptography.Internal.dll*
-rwxr--r-- 1 root root  21504  6月 22 09:14 Microsoft.AspNetCore.DataProtection.Abstractions.dll*
-rwxr--r-- 1 root root 143360  6月 22 09:14 Microsoft.AspNetCore.DataProtection.dll*
-rwxr--r-- 1 root root  16376  6月 22 09:14 Microsoft.AspNetCore.Diagnostics.Abstractions.dll*
-rwxr--r-- 1 root root 205312  6月 22 09:14 Microsoft.AspNetCore.Diagnostics.dll*
-rwxr--r-- 1 root root  19968  6月 22 09:14 Microsoft.AspNetCore.Hosting.Abstractions.dll*
-rwxr--r-- 1 root root  15352  6月 22 09:14 Microsoft.AspNetCore.Hosting.Server.Abstractions.dll*
-rwxr--r-- 1 root root  68608  6月 22 09:14 Microsoft.AspNetCore.Hosting.dll*
-rwxr--r-- 1 root root  19968  6月 22 09:14 Microsoft.AspNetCore.Html.Abstractions.dll*
-rwxr--r-- 1 root root  61432  6月 22 09:14 Microsoft.AspNetCore.Http.Abstractions.dll*
-rwxr--r-- 1 root root  37888  6月 22 09:14 Microsoft.AspNetCore.Http.Extensions.dll*
-rwxr--r-- 1 root root  30720  6月 22 09:14 Microsoft.AspNetCore.Http.Features.dll*
-rwxr--r-- 1 root root  80384  6月 22 09:14 Microsoft.AspNetCore.Http.dll*
-rwxr--r-- 1 root root  25600  6月 22 09:14 Microsoft.AspNetCore.HttpOverrides.dll*
-rwxr--r-- 1 root root  45568  6月 22 09:14 Microsoft.AspNetCore.JsonPatch.dll*
-rwxr--r-- 1 root root  26104  6月 22 09:14 Microsoft.AspNetCore.Localization.dll*
-rwxr--r-- 1 root root  89080  8月 31 17:26 Microsoft.AspNetCore.Mvc.Abstractions.dll*
-rwxr--r-- 1 root root  42488  8月 31 17:26 Microsoft.AspNetCore.Mvc.ApiExplorer.dll*
-rwxr--r-- 1 root root 390648  8月 31 17:26 Microsoft.AspNetCore.Mvc.Core.dll*
-rwxr--r-- 1 root root  23544  8月 31 17:26 Microsoft.AspNetCore.Mvc.Cors.dll*
-rwxr--r-- 1 root root  44024  8月 31 17:26 Microsoft.AspNetCore.Mvc.DataAnnotations.dll*
-rwxr--r-- 1 root root  32248  8月 31 17:26 Microsoft.AspNetCore.Mvc.Formatters.Json.dll*
-rwxr--r-- 1 root root  30200  8月 31 17:26 Microsoft.AspNetCore.Mvc.Localization.dll*
-rwxr--r-- 1 root root  55288  8月 31 17:26 Microsoft.AspNetCore.Mvc.Razor.Host.dll*
-rwxr--r-- 1 root root 121848  8月 31 17:26 Microsoft.AspNetCore.Mvc.Razor.dll*
-rwxr--r-- 1 root root 103928  8月 31 17:26 Microsoft.AspNetCore.Mvc.TagHelpers.dll*
-rwxr--r-- 1 root root 242168  8月 31 17:26 Microsoft.AspNetCore.Mvc.ViewFeatures.dll*
-rwxr--r-- 1 root root  24568  8月 31 17:26 Microsoft.AspNetCore.Mvc.dll*
-rwxr--r-- 1 root root  83960  6月 22 09:14 Microsoft.AspNetCore.Razor.Runtime.dll*
-rwxr--r-- 1 root root 297976  6月 22 09:14 Microsoft.AspNetCore.Razor.dll*
-rwxr--r-- 1 root root  36344  8月 31 17:26 Microsoft.AspNetCore.Routing.Abstractions.dll*
-rwxr--r-- 1 root root 104440  8月 31 17:26 Microsoft.AspNetCore.Routing.dll*
-rwxr--r-- 1 root root  27648  6月 22 09:14 Microsoft.AspNetCore.Server.IISIntegration.dll*
-rwxr--r-- 1 root root 247288  8月 31 17:26 Microsoft.AspNetCore.Server.Kestrel.dll*
-rwxr--r-- 1 root root  68608  6月 22 09:14 Microsoft.AspNetCore.StaticFiles.dll*
-rwxr--r-- 1 root root  62456  6月 22 09:14 Microsoft.AspNetCore.WebUtilities.dll*
-rwxr--r-- 1 root root  23616  6月 21 21:04 Microsoft.DotNet.InternalAbstractions.dll*
-rwxr--r-- 1 root root  25600  6月 22 09:14 Microsoft.Extensions.Caching.Abstractions.dll*
-rwxr--r-- 1 root root  29688  6月 22 09:14 Microsoft.Extensions.Caching.Memory.dll*
-rwxr--r-- 1 root root  19456  6月 22 09:14 Microsoft.Extensions.Configuration.Abstractions.dll*
-rwxr--r-- 1 root root  22520  6月 22 09:14 Microsoft.Extensions.Configuration.Binder.dll*
-rwxr--r-- 1 root root  19960  6月 22 09:14 Microsoft.Extensions.Configuration.EnvironmentVariables.dll*
-rwxr--r-- 1 root root  18432  6月 22 09:14 Microsoft.Extensions.Configuration.FileExtensions.dll*
-rwxr--r-- 1 root root  24056  6月 22 09:14 Microsoft.Extensions.Configuration.Json.dll*
-rwxr--r-- 1 root root  24576  6月 22 09:14 Microsoft.Extensions.Configuration.dll*
-rwxr--r-- 1 root root  35840  6月 22 09:14 Microsoft.Extensions.DependencyInjection.Abstractions.dll*
-rwxr--r-- 1 root root  37368  6月 22 09:14 Microsoft.Extensions.DependencyInjection.dll*
-rwxr--r-- 1 root root  57408  6月 21 21:04 Microsoft.Extensions.DependencyModel.dll*
-rwxr--r-- 1 root root  18936  6月 22 09:14 Microsoft.Extensions.FileProviders.Abstractions.dll*
-rwxr--r-- 1 root root  18432  6月 22 09:14 Microsoft.Extensions.FileProviders.Composite.dll*
-rwxr--r-- 1 root root  27648  6月 22 09:14 Microsoft.Extensions.FileProviders.Physical.dll*
-rwxr--r-- 1 root root  35328  6月 22 09:14 Microsoft.Extensions.FileSystemGlobbing.dll*
-rwxr--r-- 1 root root  15872  6月 22 09:14 Microsoft.Extensions.Globalization.CultureInfoCache.dll*
-rwxr--r-- 1 root root  16896  6月 22 09:14 Microsoft.Extensions.Localization.Abstractions.dll*
-rwxr--r-- 1 root root  26624  6月 22 09:14 Microsoft.Extensions.Localization.dll*
-rwxr--r-- 1 root root  43512  6月 22 09:14 Microsoft.Extensions.Logging.Abstractions.dll*
-rwxr--r-- 1 root root  27640  6月 22 09:14 Microsoft.Extensions.Logging.Console.dll*
-rwxr--r-- 1 root root  16376  6月 22 09:14 Microsoft.Extensions.Logging.Debug.dll*
-rwxr--r-- 1 root root  18424  6月 22 09:14 Microsoft.Extensions.Logging.dll*
-rwxr--r-- 1 root root  17912  6月 22 09:14 Microsoft.Extensions.ObjectPool.dll*
-rwxr--r-- 1 root root  15872  6月 22 09:14 Microsoft.Extensions.Options.ConfigurationExtensions.dll*
-rwxr--r-- 1 root root  20480  6月 22 09:14 Microsoft.Extensions.Options.dll*
-rwxr--r-- 1 root root  16384  6月 22 09:14 Microsoft.Extensions.PlatformAbstractions.dll*
-rwxr--r-- 1 root root  27648  6月 22 09:14 Microsoft.Extensions.Primitives.dll*
-rwxr--r-- 1 root root  19456  6月 22 09:14 Microsoft.Extensions.WebEncoders.dll*
-rwxr--r-- 1 root root  63992  6月 22 09:14 Microsoft.Net.Http.Headers.dll*
-rwxr--r-- 1 root root  18432  6月 22 09:14 Microsoft.VisualStudio.Web.BrowserLink.Loader.dll*
-rwxr--r-- 1 root root 468480  6月 13 23:06 Newtonsoft.Json.dll*
-rwxr--r-- 1 root root  88472  6月 11 23:13 System.Collections.NonGeneric.dll*
-rwxr--r-- 1 root root  46488  6月 11 23:13 System.Collections.Specialized.dll*
-rwxr--r-- 1 root root  36256  6月 11 23:13 System.ComponentModel.Primitives.dll*
-rwxr--r-- 1 root root 121776  6月 11 23:13 System.ComponentModel.TypeConverter.dll*
-rwxr--r-- 1 root root  22928  6月 11 23:13 System.Diagnostics.Contracts.dll*
-rwxr--r-- 1 root root  30584  6月 11 23:14 System.Net.WebSockets.dll*
-rwxr--r-- 1 root root  29632  6月 11 23:14 System.Runtime.Serialization.Primitives.dll*
-rwxr--r-- 1 root root  64232  6月 11 23:14 System.Text.Encodings.Web.dll*
drwxr-xr-x 4 root root     80 12月  3 13:26 Views/
-rwxr--r-- 1 root root 151709 12月  3 13:26 WebApplication1.deps.json*
-rwxr--r-- 1 root root 243712 12月  3 13:26 WebApplication1.dll*
-rwxr--r-- 1 root root   1304 12月  3 13:26 WebApplication1.pdb*
-rwxr--r-- 1 root root    182 12月  3 13:26 WebApplication1.runtimeconfig.json*
-rwxr--r-- 1 root root    178 12月  2 17:07 appsettings.json*
drwxr-xr-x 2 root root   4096 12月  3 13:26 refs/
-rwxr--r-- 1 root root    547 12月  3 13:26 web.config*
drwxr-xr-x 6 root root     87 12月  3 13:26 wwwroot/

設定ファイルや依存dllなど、一式が配置されてますね!

参考:
No executable found matching command "bower" #3293
CentOS7 node.jsのインストールメモ - Qiita
How To Install Node.js on a CentOS 7 server | DigitalOcean

実行してみる

実行に必要なファイルが、ぜんぶ書き出されました!ので、試しに実行してみます。

[root@centos7 WebApplication1]# cd /home/webroot/dotnet_sample/bin/
[root@centos7 bin]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since 土 2016-12-03 13:54:50 JST; 19min ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 2738 (httpd)
   Status: "Total requests: 11; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service
           tq2738 /usr/sbin/httpd -DFOREGROUND
           tq2739 /usr/sbin/httpd -DFOREGROUND
           tq2740 /usr/sbin/httpd -DFOREGROUND
           tq2741 /usr/sbin/httpd -DFOREGROUND
           tq2742 /usr/sbin/httpd -DFOREGROUND
           tq2743 /usr/sbin/httpd -DFOREGROUND
           tq2760 /usr/sbin/httpd -DFOREGROUND
           tq2795 /usr/sbin/httpd -DFOREGROUND
           tq2796 /usr/sbin/httpd -DFOREGROUND
           mq2797 /usr/sbin/httpd -DFOREGROUND

12月 03 13:54:50 centos7.local systemd[1]: Starting The Apache HTTP Server...
12月 03 13:54:50 centos7.local httpd[2738]: AH00557: httpd: apr_sockaddr_in...l
12月 03 13:54:50 centos7.local httpd[2738]: AH00558: httpd: Could not relia...e
12月 03 13:54:50 centos7.local systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.
[root@centos7 bin]# dotnet ./WebApplication1.dll
Hosting environment: Production
Content root path: /home/webroot/dotnet_sample/bin
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.

ブラウザから見てみます。
f:id:try_dot_net_core:20161203140803j:plain
おっけーですね!

動作しない?

動作検証時に、正常動作しない現象がありました。
カレントパスがpublish先パスでない場合に、レスポンスが空っぽになります。

[root@centos7 bin]# cd
[root@centos7 ~]# pwd
/root
[root@centos7 ~]# dotnet /home/webroot/dotnet_sample/bin/WebApplication1.dll
Hosting environment: Production
Content root path: /root
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.

このあとブラウザからアクセスしても、反応がブランクです。 f:id:try_dot_net_core:20161203142349j:plain

んー?
通信をみてみます...
f:id:try_dot_net_core:20161203142725j:plain
あら。Internal Server Errorですか。

プログラム自体は異常終了してないんですよね。

[root@centos7 ~]# ps -A | grep dotnet
  2856 pts/1    00:00:01 dotnet

というわけで、実行時は publish先のパスに居ないとダメみたいです。
dotnetコマンドのオプションも特に記述が無いので、あとでサービス化するときに、注意が要りますね。

今回分のソースコードはこちら。
まだ、Visual Studioが生成するテンプレートのままです。
github.com