AWS Blog

DATE2017.07.13

「AWSパートナー事例大全集 Vol.2」掲載のお知らせ

この度、2017年6月発行版の「AWSパートナー事例大全集 Vol.2」に弊社の事例が掲載されました。

  • 導入事例名:Citrix XenApp/Netscalerのアプリケーション配信(SBC)基盤
  • 冊子ページ番号:32(pdfページ数:36)
  • カテゴリ:マイグレーション
  • お客様名:タイタン株式会社様

「AWSパートナー事例大全集 Vol.2」は以下リンクよりダウンロード可能です。
https://pages.awscloud.com/AWS-Partner-Led-Customer-Reference-Book-DL.html

DATE2017.06.07

AWS Certificate Manager発行のマルチドメインSSL証明書を使って、ALBリスナー1つでサイト3つを振り分けてみた

近頃の暑さに完全にやられ引きこもって映画鑑賞を楽しんでいる、もやしっ子の山口です。最近観た中では「イミテーション・ゲーム」という映画が素晴らしかったです。3年ほど前の映画で、人工知能の父:アラン・チューリングのお話なのですが、『天才』と呼ばれる人間の孤高の生き様は心にくるものがありました。

もっと語りたいですが、残念ながらここはそういうブログではないので別の機会に譲ることとします。

さて、今回はALBとACMを使い倒してみたので、それについて紹介します。

 

本日の料理

本日の料理はコチラ

「ALBリスナーのACMマルチドメインSSL盛り」

20170606110401_図1.png

用意するもの

  • ALB:1つ
  • EC2:大さじ2(小さじ6)
  •  ACMマルチドメインSSL:1つ
    • ドメイン名は3つ
  •  サブネット:5つ
  • インターネットゲートウェイ:1つ
  • Route53:半分
  • ルートテーブル:お好み

 

下ごしらえ

調理する前に準備しておきます。まずはVPCを作成して、EC2を5つ用意します。各EC2はプライベートサブネットに存在するので、別途踏み台EC2を用意する必要があります。

20170606110401_1.PNG

EC2の準備ができたら、SSL証明書を発行します。今回利用する証明書はドメイン名にtest1.hogehoge.jpを持ち、追加の名前としてtest2~5を持ちます。ただし今回の環境ではtest1~3までの3台分のみ利用します。

20170606110401_キャプチャ1.PNG20170606110401_キャプチャ2.PNG

 調理

では、調理していきましょう。今回、ELBのApplication Load Balancer(ALB)機能を使いますので、『ターゲットグループ』を先に用意します。

20170606110401_図2.png

ALB~サーバー間の通信はHTTPを想定しているので、下図のように設定します。

(ターゲットグループA)

20170606110401_2.PNG

(ターゲットグループB)

20170606110401_3.PNG

(ターゲットグループC)

20170606110401_4.PNG

A,B,Cのターゲットグループが出来たら、それぞれに対応するEC2インスタンスを登録します。


(ターゲットグループA)

20170606110401_5.PNG

(ターゲットグループB) 

20170606110401_6.PNG

(ターゲットグループC) 

20170606110401_7.PNG

 インスタンスの登録が出来ましたら、いよいよ本日の主役ALBを作成します。Application Load Balancerを選択し、HTTPSの443ポートでリスナーを1つ作成します。

20170606110401_8.PNG20170606110401_9.PNG

セキュリティ設定では、下ごしらえで用意しておいたACM証明書のtest1.hogehoge.jpを選択します。セキュリティポリシーは今回TLS1.2を選びました。

20170606110401_10.PNG

ルーティング設定には、最初に作成した既存のターゲットグループを選択します。ここで選ばれたターゲットグループがデフォルトの転送先になるだけなので、何を選んでも良いのですが、今回は「A」のターゲットグループにしておきます。これでALBが立ち上がります。

20170606110401_11.PNG

次にRoute53を開いてALBへの名前解決を行えるように、CNAMEとして「test1.hogehoge.jp」、「test2.hogehoge.jp」、「test3.hogehoge.jp」を登録します。

20170606110401_13.PNG

登録が終わったら、各hogehoge.jpに対応したサーバーに振り分けられるようELBのリスナータブからルールを追記します。

20170606110401_15.PNG

これで調理が完了したので、実食に移りましょう。

実食

スライド6.PNGスライド7.PNG

全インスタンスとの通信の確立・証明書の有効化が確認できました。ここで気を付けて頂くポイントとして、証明書のサブジェクトがACM証明書作成時の『ドメイン名』になってしまうことです。追加の名前で付与したドメイン名は拡張機能の『サブジェクトの別名』として付与されます。

20170606110401_17.PNG

証明書のサブジェクトが気にならないのであればこういった構成も出来ますので、ぜひ試してみてください。

DATE2017.05.19

Windows Server 2012R2のIISにWordPressをインストールする

こんにちは、クラウドチームの山口です。

今回はAWS上のWindows ServerにWordPressを導入しましたが、意外とつまずきポイントが多いように感じましたので、そちらを踏まえた手順をご紹介しようと思います。

なお、本投稿ではIISやWordPressのチューニングについては解説いたしませんので、あらかじめご了承ください。

 


まずは事前準備

WordPressを動かすのに必要となる下記のものを各サイトからダウンロードしてください。

なお、ここに紹介するものは本投稿時点における最新版となります。

 

  • MySQL 5.7.17

https://dev.mysql.com/downloads/installer/

  • PHP 7.0.15 ※「Non Thread Safe」を選んでください

http://windows.php.net/download/

  • VisualStudio2015 VisualC++ 再頒布可能パッケージ

https://www.microsoft.com/ja-jp/download/details.aspx?id=48145

  • WordPress 4.7.2

https://ja.wordpress.org/

  • IIS 8.5

 

今回、ファイルの編集にはサクラエディタを用いています。

  • サクラエディタ2.2.0.1

http://sakura-editor.sourceforge.net/download.html

 

IISのインストール

1.サーバーマネージャーを開き、「役割と機能の追加」をクリックします。

2.「役割と機能の追加ウィザード」ウィンドウが開くので、「サーバーの役割」まで進み、「Webサーバー(IIS)」を選択します。この時、関連した役割サービスのインストール許可を求めてくるので、許可して次に進みます。

20170606110327_1.png

3.「機能」、「Webサーバーの役割(IIS)」の選択欄が出てくるので「アプリケーション開発」>「CGI」にチェックを入れてください。

20170606110327_2.png

4.最終確認画面まで進み「インストール」を押して、IISのインストールを行ってください。「CGI」の機能を有効にすることで、CGIの実行・ハイパフォーマンスなFastCGIの実行が行えるようになります。

 

Visual Studio 2015 VisualC++ 再頒布可能パッケージのインストール

このパッケージは、Windowsでプログラミング言語PHPを正常に動作させるためのライブラリが含まれています。インストーラーを実行して、ライセンス事項に同意してインストールを行います。インストールが完了したら、念のために再起動しておきましょう。

※このパッケージはPHPのバージョンによってインストールするものが異なります。

参考URL:http://www.phpbook.jp/install/install/index2.html

 

PHPのインストール

Windows ServerでのPHPにはバージョンごとに2種類用意されており、「Thread Safe」と「Non Thread Safe」が用意されています。IISアーキテクチャとFastCGI拡張機能では、PHPのThread Safe機能を必要としない上に、Thread Safeバージョンよりもパフォーマンスが良いですので、「Non Thread Safe」を利用します。

1.ダウンロードした圧縮ファイルを任意の階層に展開してください。本投稿では、下記のパスで展開しています。

20170606110327_3.png

 2.ファイルの配置が完了したら、各サービスがPHPを実行できるようにパスを通します。まずWindowsボタンを右クリックして「システム」を選択します。

3.システムウィンドウが開いたら、左側のメニューから「システムの詳細設定」を開きます。

20170606110327_4.png

4.「システムプロパティ」ウィンドウが表示されますので、「詳細設定」タブの「環境変数」をクリックし、環境変数の追記を行います。

20170606110327_5.png

5.「システムの環境変数」欄から変数「Path」を選択して「編集」をクリックします。編集ウィンドウが表示されるので、変数値の末尾に「; (セミコロン)」を追加して、PHPを展開したディレクトリのパスを追記します。

20170606110327_6.png

6.追記したら「OK」で保存してウィンドウを閉じ、コマンドプロンプトからPHPが実行できるか確認しましょう。

【コマンド】php -r phpinfo();

【デバッグポイント】

・「'php'は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。」というメッセージが返ってきた場合

→パスがちゃんと通っていない可能性があります。「環境変数」を再確認してください。

・「VCRUNTIME140.dllが見つかりません」というメッセージウィンドウが開いた場合

→Visual Studio 2015 VisualC++再頒布可能パッケージをインストールし忘れている可能性があります。

 

MySQLのインストール

ダウンロードしたMySQLのインストーラー(mysql-installer-community-5.7.17.0.msi)を実行します。オンライン版とオフライン版がありますが、今回はオフライン版を利用します。

1.ライセンスに同意し「Choosing a Setup Type」画面でセットアップタイプを選びます。

2.開発は行わないので「Server only」を選び、次に進みます。

20170606110327_8.png

3.「Installation」画面に「MySQL Server 5.7.17」が表示されていれば「Execute」を実行します。

4.インストールが完了したら「Type and Networking」画面で環境にあったサーバーサイズを選択します。今回は中間サイズの「Server Machine」を選びます。

20170606110327_9.png 5.ルートアカウント設定画面「Accounts and Roles」が表示されるので、ルートアカウントのパスワードを決めます。パスワードを設定したら次に進み、「Windows Service」画面でMySQLインスタンスの設定を行います。今回は全てデフォルトで設定を行いました。

20170606110327_10.png

 

WordPressのインストール準備

URLから取得したWordPressをIISのドキュメントルートである下記に展開します。

C:\inetpub\wwwroot

20170606110327_11.png

 

各種設定変更

ここからはWordPressをインストールするための各種設定変更について説明していきます。

 

  • IISの設定

1.「サーバーマネージャー」右上にある「ツール」から「インターネットインフォメーションサービス(IIS)マネージャー」を開くと図の画面が表示されます。

20170606110327_12.png

2.左側の「接続」欄からコンピュータのホスト名を選択し、赤枠で囲んでいる「ハンドラーマッピング」をクリックします。

20170606110327_13.png

3.図の「ハンドラーマッピング」設定画面の右側「操作」欄の「モジュールマップの追加」をクリックして、新しいモジュールマップを作成します。

20170606110327_14.png

4.図の内容を設定します。「実行可能ファイル」はPHPをインストールしたフォルダに入っている「php-cgi.exe」を選択します。「名前」に関しては任意で構いません。これによりIISでPHPのプログラムを実行することが出来るようになります。

20170606110327_15.png

5.設定が完了したら、手順2の青枠で囲われている「既定のドキュメント」をクリックして、右側「操作」欄の「追加」から「Default.php」と「index.php」を追加します。上記を設定しておく事でURLが/で終わっていても「Default.php」と「index.php」を処理することが出来るようになります。

 

  • MySQLへのDB作成

1.MySQLにWordPress用の新しいアカウントとデータベースを作成します。スタートメニューから「MySQL5.7Command Line Client」を実行します。

20170606110327_16.png

2.コマンドプロンプトが起動し、パスワードが要求されるので「MySQLのインストール」で設定したルートアカウントのパスワードを入力します。承認されるとMySQLのコンソールに変わります。コンソールから新しいデータベースとそのデータベースに対する新しいユーザーと権限を作成します。

 

【コマンド】

mysql> create database <任意のDB名>;

mysql> grant all on <任意のDB名>.* to '<任意のユーザー名>'@'localhost' identified by '<任意のパスワード>';

20170606110327_17.png

  • WordPressの設定

デフォルトの状態では設定ファイルが作成されていないので、下記のパスに移動して「wp-config-sample.php」を「wp-config.php」という名前でコピーします。

 

【パス】

C:\inetpub\wwwroot\wordpress

 

コピーして作成した「wp-config.php」を開き、以下の赤文字部分を自身が作成したDB情報に置き換えます。

 

行数 変更箇所
29 define('DB_NAME', 'database_name_here');
32 define('DB_USER', 'username_here');
38 define('DB_PASSWORD', 'password_here');
44 define('DB_HOST', 'localhost');

 

  • PHPの設定

1.PHPのコンパイル環境を変更します。「php.ini」というファイルを編集する必要がありますが、Windows Serverではデフォルトで「php.ini」が作成されません。自分の環境に「php.ini」が作成されているかどうかはphpinfo関数を実行して頂ければ確認することが出来ます。

20170606110327_18.png

図の青枠「Configuration File(php.ini)Path」のパス配下を確認して頂くと「php.ini」が存在しない事と赤枠「Loaded Configuration File」にロードされていない事が分かります。そのため、「php.ini」を準備する必要があります。

2.下記のパスに移動すると「php.ini-production」という名前の「php.ini」のサンプルファイルが用意されているので、青枠のパス配下に「php.ini」という名前でコピーします。

20170606110327_19.png 【移動元パス】

C:\Program Files\php

【移動先パス】

C:\Windows

 3.コピーしたら「php.ini」の内容を下記のように変更します。先頭に付いている「;(セミコロン)」はコメントアウトを意味しますので、外し忘れないように注意してください。

行数 変更箇所
483 変更前 ;log_errors = Off
変更後 log_errors =On
568 変更前 ;error_log = php_errors.log
変更後 error_log = "C:\Program Files\php\errors.log"
721 変更前 ; extension_dir = "./"
変更後 extension_dir = "./"
723 変更前 ; extension_dir = "ext"
変更後 extension_dir = "ext"
740 変更前 ;cgi.force_redirect = 1
変更後 cgi.force_redirect = 0
760 変更前 ;cgi.fix_pathinfo=1
変更後 cgi.fix_pathinfo=1
773 変更前 ;fastcgi.impersonate = 1
変更後 fastcgi.impersonate = 1
890 変更前 ;extension=php_mysqli.dll
変更後 extension=php_mysqli.dl
942 変更前 ;date.timezone =
変更後 date.timezone = Asia/Tokyo

 赤文字の部分はWordPressを動作させるために必須のものとなります。

デバッグ時には下記の部分を設定しておくとブラウザにエラー内容が表示されるので、必要に応じて活用すると良いです。

行数 変更箇所
462 変更前 display_errors = Off
変更後 display_errors = On
473 変更前 display_startup_errors = Off
変更後 display_startup_errors = On

 

  • WordPressのインストール

ここまでくれば下記URLにブラウザでアクセスし、手順に従って設定していくのみです。

【URL】

http://<サーバーのIPアドレス>/wordpress/wp-admin/install.php

20170606110327_20.png

大変長い手順になってしまいました。

手順をご存じの方であれば大した内容ではないのかもしれませんが、IISへのWordPress導入に関して出回っている情報量が少ないように感じましたので、今回投稿させていただいた次第です。

DATE2017.05.14

AWS基盤上でCitrix社XenAppの利用


VDI/SBCの製品においてリーダーであるCitrix社のXenDesktop/XenAppはAWS上でも利用する事ができます。 AWS上ではアプリケーション配信のXenAppとして利用するのが一般的だと思いますが、 今回はCitrixが提供するサーバVDI方式とAWSを組み合わせた構成についてご紹介したいと思います。

以下、Citrix XenApp及びAWSのアーキテクチャになります。

20170514_Citrix02.png

サーバVDIは名前の通り、Windows Server OSでデスクトップ配信を行います。 恐らくAmazon WorkSpacesも同じ様な仕組みで実装されていると考えています。 一般的にはマスターイメージを用意して各サーバの展開に利用しますが、AWS上ではマスターイメージはAWSのAMI(amazon machine image)を使用します。

XenAppコントローラでAMIを指定して各サーバVDIを展開していくことができます。
この動作から分かる方も多いのではないかと思いますが、XenAppコントローラにIAMのアクセスキーを登録し、 AWSのAPIエンドポイントを介して連携を行います。
オンプレミス環境と同様にXenAppはActive Directoryへのコンピュータのドメイン参加も行ってくれるため、 サーバVDIの展開を全て自動で行うことができます。


20170514_Citrix01.png CitrixにはAWS基盤の電源管理機能も備えており、パブリッククラウドの有効活用の特徴である必要な時だけリソースを利用することもできます。
例えば、勤務開始の9時と同時にEC2を起動し、勤務が終わる18時に停止をすることも可能です。 これにより日々のEC2の料金を9時間分となり大幅なコスト削減につながります。 ログオン時のみEC2を起動させる機能も用意されており、毎週1日勤務をするパートナーに正社員と同様のセキュアなPC環境を低コストで実現することもできます。

これらの機能はCitrix XenApp 7系のLTSRである7.6で扱うことができます。 詳細は公式のドキュメントをご確認ください。

AWS上でのVDI/SBCを利用する場合は、AWSが提供するAmazon WorkSpacesやAmazon AppStream 2.0もあります。 Citrix XenAppとAmazon WorkSpaces/AppStream 2.0のどちらを利用する方が良いかどうかは要件ごとに検討する必要があると思いますが、 長年エンタープライズ向けに製品を提供をしているCitrix XenAppを選択する理由は多くあると考えています。

青沼