Appサービス

AppService周りをまとめてみる(Linux版)

WebApp、OSがWindowsとLinuxで設定回りに差があるうえに
割と纏まったやりたい設定が見つからない…
そんなことがあるので纏めてみました。

なお、Windows版はこちら

※一部Windows版と項目をかぶらせています

想定環境

作成は以下で行きます
・公開はコード(Dockerコンテナは使用しない)
・ランタイムスタックはPHP 7.3
・OSはLinux
・アップロードはFTPで実施
・URLリダイレクト有り
・Basic認証有り
・カスタムドメイン有り
・DNSはAzureDNSを使用
・証明書はなし
・WAFはなし
・表示するサイト自体はHaloWorldが表示される程度の簡単なhtml

LinuxのWebApp

まずコンテナを作りますが、コンテナを作るにあたっては当サイト内でも記事がありますので割愛
一応設定は以下にしてます

プロジェクトの詳細
リソースグループ     :somane-app

インスタンスの詳細
名前           :somane-ewb
公開           :コード
ランタイムスタック    :PHP 7.3
オペレーティングシステム :Linux
地域           :Japan East
サイズ          :Standard S1

後以下も作っときます
StorageAccount     :somanestr

コンテンツのアップロード

# Windows版の記事と同じ内容となってます

ほかの手段もありますが今回はFTP

1.CloudShell起動
シェル用のストレージディスクを指定して作成する場合は最初からちゃんと指定して間違えずに作成
今回は別件で作成済みなのでマウントされた状態です

001

2.FTPユーザ作成
以下実行

az webapp deployment user set --user-name shftproot --password ********
002

3.FTPユーザ名確認
実行したらWebAppの FTP/デプロイユーザ名 のところに今入れたユーザが入ってます
下のFTPホスト名とFTPSホスト名も表示

003

4.FTP接続
FTPソフト開いて以下入れます
今回はWinSCPを使用

ファイルプロトコル    :FTP
暗号化          :暗黙のSSL/TLSの暗号
ホスト名         :FTPSホスト名のFQDN部分
ユーザ名         :ポータルに表示されている FTP/デプロイユーザー名
パスワード        :CloudShellで入れたパスワード

004

5.アップロード
コンテンツをアップロードします
ファイルの格納先は /site/wwwroot になります

006

6.とりあえずは index.html として HaloWorld!! のファイルを入れたのでそれが見えてます

006

カスタムドメインの登録

# Windows版の記事と同じ内容となってます

ここら辺はまだポータルだけからできますのでわかりやすいんですが一応

1.まずAzureDNSを作ります

008

2.デプロイができたら取得しておいたドメインでグローバルの名前解決ができるように設定
これに関してはサービスで異なると思うので割愛

009

3.WebAppでカスタムドメイン名を選択して「カスタムドメインの追加」

010

4.カスタムドメイン名にDNSに紐づけたドメイン名を入力
なおこれはwww無しになります

011

5.検証を押すとドメイン所有権が赤!になってると思うので表示されているTXTレコードとAレコードををDNS側に入力

012

6.AzureDNSだとこんな感じ

13

7.カスタムドメインでもう一度検証を押すとFQDNとDNS、両方が読み取れていれば緑チェックになるのでカスタムドメインを追加

14

8.カスタムドメインとして追加されます
今回はSSL証明書は取得しないので赤!のまま

15

9.なおwww.付きが必要な場合は同じようにwww付きでドメインを登録します

016

10.同じようにDNS追加要求が出るので同じように追加してwww付きのURLも登録

017

11.追加されました

018

SSHの接続

Basic認証やURLリダイレクトなど、FTPでアップロードしてもいいですが
SSHでの接続が可能なのでSSH接続して操作していきます。
なお接続はブラウザーでのSSHセッションではなく、SSHクライアントを使用して接続します。
ブラウザだとコピペできないため、確認ならともかく操作はミスも出かねないですし辛い。

●必要なもの
接続するのに以下が必要です
・AzurePowerShell
AzureCLI

●接続 PowerShell を開き、以下を実行

az login
az webapp create-remote-connection --subscription <subscription-id> --resource-group <resource-group-name> -n <app-name>

[画像]

ポート等接続に必要な情報が表示されますのでPowerShellはそのまま閉じないでおきます

SSHクライアントを起動して
IP:127.0.0.1
ポート:表示されたもの

[画像]

ユーザとパスワードも表示されたものを入力して接続

[画像]

以下、接続されます

[画像]

OSはDebianです(2020年10月現在)
コンテンツの格納先は /home/site/wwwroot 配下になります

Basic認証の設定

Debianなので普通にApacheのBasic認証が行えます。
# 機能も有効化されています
なので単純にBasic認証をかけたいフォルダに.htaccessを置いてhtpasswdコマンドを実行するだけでBasic認証は行えます。

普通のApacheと変わりませんが一応手順書いておきます
SSHは前の手番で接続したものを使用します

1.Basic認証を行いたいフォルダを作成し、vimで以下作成

# vim /home/site/wwwroot/test/.htaccess
<files ~="" "^\.(htaccess|htpasswd)$"="">
Require all denied
</files>
AuthType basic
AuthName "private area"
AuthUserFile /home/site/wwwroot/test/.htpasswd
Require valid-user

2.以下でユーザとパスワードを設定

# htpasswd -b -c -m /home/site/wwwroot/test/.htpasswd htmroot 123456

3.test配下へBasic認証がかかります

URLリダイレクトの設定

URLリダイレクトを行うとき、大体はmod_rewriteモジュールを有効にしてるかと思います。
WebAppsのLinuxもmod_rewriteは有効化されているのでそちらを使用。
なお、/etc/apache2/apache2.confファイルは再起動すると
WebAppsでの初期設定に戻されるため、VirtualHostでの設定はしてません。

Debianでの.htaccessを使用したURLリダイレクトの基本設定はされているため
一応は /home/site/wwwroot/.htaccessに必要な定義を記載すればいいだけとなります。

なおhttp→https変換は以下の感じ。
# wwwなし→wwwあり変換も混ぜてます

/home/site/wwwroot/.htaccess に以下追加

RewriteBase /home/site/wwwroot
RewriteEngine on

続けて以下を追加

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]

http→httpsの変換が行えました。
www有りのパスの方は出来てませんが…

[画像]

.htaccessでは[L]が無視されるためにwww有りのパスの方のリダイレクトが
できていない状態になっていますので、他の手段については追々調べてみるつもりです。

データディスクの追加

AppServiceですが、コンテンツ用に使用できる容量が基本的にAppServiceのプランに依存しています。
動的コンテンツのデータは外部から呼び出すため問題はないはずですが
静的コンテンツで大量のデータを扱う場合、AzureFilesをマッピングして使用することが可能です。

ルートフォルダにはマウントできませんので、マウント先は配下フォルダとなります
まずAzureStorageを作ります。
今回は最初に作ったStorageAccountのsomanestrを使用

[画像]

ファイル共有を選択

[画像]

ファイル共有をディスクサイズを指定して作成

[画像]

作成されたらAppServiceに移動して構成

[画像]

パスのマッピングから新しいAzureStorageマウント

[画像]

以下で指定します
名前:test-disk
構成オプション:詳細設定
ストレージアカウント:somanestr
ストレージの種類:Azure Files
共有名:somane-disk
アクセスキー:【ストレージアカウントのアクセスキー】
マウントパス:/home/site/wwwroot/test-disk

[画像]

追加されたら保存してマウント
なお、追加に伴いAppServiceが再起動します

[画像]

SSHで接続してマウントされていることが確認できます

[画像]

なお、マウントなのでFTPの方では見れませんので
ファイルの操作はAzure Storage Explorerから行うことになります

[画像]

Azure Monitor を利用したメトリックの静的しきい値監視前のページ

AppService周りをまとめてみる(Windows版)次のページ

関連記事

  1. Azure

    Azure VPNについてあれこれ

    こんにちは、三醍醐です。今回は、Azure VPNについてお…

  2. Azure

    WindowsVirtualDesktopがGAされているので(その3)

    その2からかなり時間が空いていますが今回はオートスケールについてと…

  3. Azure

    WindowsVirtualDesktopがGAされているので(その1)

    GAされてもう2か月たってますが…WindowsVirt…

  4. 未分類

    「Azure Functions」をC#で触ってみました。#2

    どうも、kenji.mです。前回はプロジェクトを作成して、どのような…

  5. Application Gateway

    L7 負荷分散 Azure Application Gateway について:3回目

    こんにちは。ヤモトです。今回はApplication Gat…

  6. Azure

    普通のAzure Windows VMを、従量課金のSQL VMにしたい

    こんにちは。今回は、通常のWindows VMを従量課金のS…

関連記事

  1. Azure

    AzureのDMSでデータを移行してみる記事 ~MySQL編~
  2. Application Gateway

    L7 負荷分散 Azure Application Gateway について:3…
  3. Azure

    普通のAzure Windows VMを、従量課金のSQL VMにしたい
  4. Azure

    LogAnalytics(監視エージェント)を利用したVMの監視をしよう
  5. Azure

    ARMテンプレートでインフラ構築する。
PAGE TOP