App Service on Linuxを少しだけ深堀してみる

  • 1
    いいね
  • 0
    コメント

はじめに

App Service on Linuxも、通常のApp Service同様管理ツールとしてKuduが使えます。
これを触ると環境周りの設定等をいろいろ細かく触ったりできるので使えるとすごく便利です。
そこで今回は、App Service on LinuxのKuduをいろいろ触ってどんな情報が拾えるのかなどを見ていきます。

Kuduへのアクセス

Kuduへのアクセスは、App ServiceのURLを少し書き換えてアクセスします。

https://AppService名.scm.azurewebsites.net

という風にazurewebsitesの前に.scm.を追加するとそのApp ServiceのKuduにアクセスできます。

アクセスすると下図のような画面になります。
image
また最近では、ポータルからのリンクも用意されています。
image

環境変数を確認してみる

サーバに設定されている環境変数は、一覧で確認できます。
画面上部のEnvironmentからアクセスするページで確認できます。
image

アクセスすると下図のようにずらっといろいろな情報が列挙されます。
image.png

コンソールにアクセスする

Kuduでは、コンソールを使用してある程度サーバを操作できます。
Windows版では、CMDとPowerShellが使用できましたが、Linux版では、Bashが使用できます。
アクセスは、画面上部のDebug console からアクセスします。
image
とりあえずここでコンソールを叩いていろいろやっていきます。

コンソールの裏側を探る

コンソールに入れたのでとりあえずいろいろ叩いてこのLinuxの正体を探っていきます。

uname -a

image.png
とりあえずLinuxで、Debianが絡んでいることはわかりました。


ps

image.png

bash、Apacheなどが動いています。
apacheが2ついるのが気になります。

次に気になるのがアプリケーション実行用のコマンド群
まずPHPのビルトインコンテナを設定します。
その状態で

PHP

image.png

PHPコマンドはいませんでした。

次にNodeのビルトインコンテナを設定した状態で

node

image.png

Nodeコマンドはいるっぽいです。
じゃあバージョンを見てみましょう。
ちなみに設定してあるコンテナのランタイムは、Node 6.6.0です。
image.png
バージョンが違いました。

次にdotnet coreのコンテナを設定して

dotnet

image.png
dotnetコマンドもいませんでした。

ここら辺まで叩いて大体皆さんわかったと思いますが、おそらくKuduは、Kudu用のコンテナが立ち上がっていて、その中のコンソールを叩いている状況っぽい雰囲気です。
ということは、ここでいろいろ設定したところでほかに果たして反映されるのかという問題が出ます。
若干Kuduがある必要があるのかよくわからなくなってきました。

次にファイルシステムがどうなっているか見てみます。

df

image.png
ごちゃごちゃいろいろ出てきました。

次にマウントしているドライブの確認

mount | grep //

image.png
ということで、dfの結果と合わせて、/home以下がマウントされたネットワークドライブになっています。ここら辺は、今までのApp Serviceと同じような感じです。
恐らく、アプリケーションコンテナ、コンテナホスト、Kuduコンテナとそれぞれが共通してこのネットワークドライブを見ているのでKuduでファイルを編集してアプリケーションにも反映させたい場合は、この下にファイルが確実にある必要があります。

環境変数を追加してみる

いろいろとコンソールの中身を探ってみましたが、次にポータルから環境変数を追加してみます。
環境変数の追加は、アプリケーション設定の中のアプリ設定にキーと値を追加します。
image.png

追加したら、Kuduのコンソールを叩いてみましょう。
image.png
追加されました。ここまでは、普通のApp Serviceと同じです。
では、アプリケーションで拾ってみましょう。
一番手っ取り早い方法としてphpinfo()を使用します。
image.png
phpinfo()で拾えたので、この設定は問題なく使用できるようです。

ファイルを編集したかった

Kuduのbashには、vimがあらかじめインストールされています。


dpkg -l

で確認できます。
image.png
こんな感じです。

そこで、例えばApacheの設定ファイルを書き換えようとVimを立ち上げようとすると、コンソールが固まるので今のところファイルの編集はコンソールからは、厳しそうです。
Apacheのファイルを編集したい場合は、


cp -R /etc/apache2 コピー先

で適当なところにコピーをして、適当にローカルなどで編集、/etc/apache2 に上書きするとファイルが更新できます。

Apacheの設定を変更したかった

変更方法は、分かったので変更してみましょう。
デフォルトのKeepAliveのタイムアウト時間は、Apacheの設定を見たところ5秒に設定されています。
image.png
phpinfo()で確認しても5秒になってます。
image.png

ちょっと5秒は長いのでこれをさっきほどの手順で3秒に書き換えます。
image.png
変更自体はできました。
ここら辺は、権限渡さなくてもいいのにとか思ってましたがなんだかんだできました。
実運用するときは、Windows版みたいにxdtを読み込ませて更新みたいな感じにconfファイルを読み込ませて変更したいですね。
Apacheの設定ファイルを変更したらApacheを再起動したいものです。
Kuduのコンソールでは、sudoコマンドが使えないのでおとなしくApp Serviceを再起動しましょう。
image.png
再起動後にもう一度phoinfo()を確認します。
image.png
変わってないですね。

KuduからApacheの設定変更は、今のところできなさそうです。
アプリケーションコンテナにいるApacheと設定が共有できていないからKuduの中で設定を変更しても意味がないとかそういう話な気がします。

まとめ

Linux版Kuduは、まだまだ発展途上です。正直現状では、Windows版と比べて何もできないに等しいかなという印象を持ちました。また、仕組み的にアプリケーション自体、コンテナごとデプロイするといったアプローチになることが多い気がします。そのためあまりKuduを使うシナリオは多くないのかなという印象です。
今後とも気長に見守っていきましょう。

この投稿は Microsoft Azure Advent Calendar 201613日目の記事です。