#concrete5
先のレビューでは、Azureへの設定をazure-cli というツール(コマンド群)を使ってLinuxのコマンドラインから行っていました。ポータルからの設定はほとんど行わず、ポータルは、もっぱら状況確認のために使用していました。ちょっと特殊な使用方法だったかもしれません。
今回は、Azureの一般的な使い方として想定されている方法として、Azureポータルから仮想マシンを作成します。そして、仮想マシン上にプログラムとコンテンツを構成し、インターネットに公開できるWebサイトを作成します。
より少ない手順で、見通しのよい方法を目指します。
#Azure
Azureポータルで何ができるか。
ポータルは、Azureをブラウザから操作する仕組みです。
どこを開けてもAzureの設定画面です。
現在、「完全Azureポータル」と「新しいポータル(プレビュー)」の2つの異なるリリースのポータルを使用することができます。
Microsoft社で、新しいポータルに移行する計画なのか、将来にわたって両方使えるようにするつもりなのかアナウンスを見かけません。
このレビューで区別する必要がある場合は、「従来版」「プレビュー版」と呼ぶことにします。
どちらを操作してもAzureに対して実現することは同じで、インターフェースだけが異なるという認識です。
完全Azureポータル(従来版)
新しいポータル(プレビュー版)
- プレビュー版は、Windows8風のタイルアイコンが並びます。
- 画面を進めると、右方向に展開していきますが、マウスのスクロール操作では、横スクロールが出来ないので、ちょっと不便です。タブレットやタッチパネルの画面なら良いかもしれません。
- フォントサイズやアイコンが工夫されているので、視認性はよいです。
- 課金の状況や、スケール(プラン)変更による想定料金の表示が豊富になっていて助かります。
- 課金状況を確認がより少ない操作でできるようになりました。(従来版だと、ログイン中でも、課金状況の確認画面に入るために再度ログイン操作を求められます。)
プレビュー版のトップページに現時点の課金情報があります。
今月は締め日まであと4日の時点で1060円ということなので、請求金額の見込みが立てやすいです。
個別コンテンツごとの課金見積(プレビュー版)
スケールを変更した場合に想定される予想課金(プレビュー版)
ポータルは表示が遅い
「従来版」にしても「プレビュー版」にしても、画面を操作してから表示が完結するまでの待ち時間がちょっと長いように感じます。サーバーの状態をさらって表示しなければならないので、内部的にはたいへんな処理なのかもしれませんが、待っていれば表示されるのか、リロードが必要なのかわからないことがあって困ります。(たいてい待てなくて[更新]ボタンを押します。)
操作によって、サーバーの状態が順々に変化する場合は、PUSH表示によって画面も遷移する仕様のようですが、表示がとても遅延するので使いにくいと思う場面が多々あります。今回はポータルから操作した内容をポータルで確認するというシーケンスのせいか、いくらか反応が良いように感じますが、コマンドライン(azure-cli)から操作した内容をポータルで確認したい場合は、ほぼ確実に画面のリロードが必要です。
ポータルから、仮想マシンを1台つくる。
Azureの仮想空間に、PCを1台作るということです。プロビジョニングと言ったりします。
オンプレミス(ローカル環境)で、VirtualBoxやHyper-Vの中にマシンを構成していくのと作業的に似ています。
今回は、プレビュー版で操作します。設定項目のある画面を示します。
Azureには、ニーズに添って多数のOSのイメージが準備されています。
しかし、ポータルには、コマンドライン(Azure-cli)で仮想マシンを作成するときに選択できるイメージと同じイメージがない場合があります。「RightImage-CentOS-6.5-x64」というイメージが欲しかったのですが、ポータルでは探すことができませんでした(同じイメージが使える場合もあります)。
なお、「Windows 10 Technical Preview for Enterprise(x64)」のイメージがありました。
(メニューを進めてみたところ、「MSDN サブスクリプションが必要なようです」と出ましたので、このイメージが使うためには、年額十数万かかるMSDN契約が必要ということらしいです。現在の契約で使用できない場合は、選択する前に表示する方が親切な気がしますが。ちなみに、従来版ポータルではWindows 10のイメージは出現しません。)
今回は、CentOS6.5のマシンを作りたいので、メニューの中から「OpenLogic6.5」 というイメージを選択しました。
メニューの左下に、[マイページ]、[マイディスク]が選べるようになっています。
[マイページ]は、ブックマークのようなもの、[マイディスク]は、Azure内で自分のサブスクリプションで過去に作成した未使用のディスクイメージが表示されるようです。
ディスクイメージ (.vhd ファイル)はインポートできるので、外部で作成した .vhd も使えたりするかもしれません(制約は多そうですが。)
SSHの認証は、鍵ファイルを使わずにパスワードでログインできる設定にしました。
4~5分(?)かかります。
仮想マシンができているかどうか確認します。
作成したマシンのステータスが「作成中」「開始中」と遷移して「実行中」となれば、マシンが使える状態です。
Teraterm から、SSH接続してみます。
接続できました。
sudo のたびにパスワードを求められる状態になっています。
パスワード無しsudo の設定がうまくできなかった(原因不明)ので、su - を発行してからその後の作業を行いました。su - は、起動のたびに行う必要があるので、できれば、パスワード無しsudo が使えるようにしておきたいところです。
visudo によって sudo の設定を行っても効きません。これはAzureの仕様です。マシン作成(プロビジョニング)の際に、SSHの認証を鍵ファイルを使わずにパスワードで行う設定にした場合は、sudo の実行時にはパスワードが必要となります。
パスワード無しsudo が使えるようにするためには、証明書 (.cer ファイルまたは .pem ファイル) または SSH キー使用してプロビジョニングしておく必要があります。
(http://azure.microsoft.com/ja-jp/documentation/articles/virtual-machines-linux-use-root-privileges/)
よって、このマシンでは少し不便ですが、su - を使用することにします。
Azureがどうしてこのような仕様になっているのか、理由があるとは思うのですが、使いにくいと思うことの一つです。
WinSCP から接続します。
FTPでファイル転送ができます。
WinSCP(FTP転送)では、root で接続しています。セキュリティ上の是非はともかく、WindowsとのGUIでやりとりするとき、エディタで直接開くとき、制限のある権限だとなにかと不便です。
仮想マシンの設定をする。
必要なプログラムをSSHのコマンドラインからひとつずつインストールしていってもよいのですが、ドットインストールというチュートリアルサイトで、便利な手段を準備してくれているので活用させていただいきます。
http://dotinstall.com/lessons/basic_localdev_win/30806
この中の、ansible で使用する main.yml は、コメントアウトでコントロール(エディタで開いて#を書いたり消したり)しながら、必要なものだけをインストールします。
今回は、yum update などのこまごました設定を行うほか、MySQL、PHP(phpMyAdmin と php-mcryptを追加)、Apache、python をインストールしました。
なお、なにもコメントアウトせずに実行すると、Azureに準備されているOSイメージとの相性のせいかエラーとなり完走しません。(ローカルで行うVirtualBox + Vagrant の chef/centos-6.5 の環境では、問題ありませんでした。)
httpdのサービスとしてApacheを起動して、Azureのhttpに外部からアクセスできるようにするために Azureの設定ではエンドポイントで 80番のポートを開放するように設定しました。
80番ポートをhttpプロトコルで外部との接続に使用するのは、そのような習慣により決まっているのでポート番号は変更せずに使用するのが無難です。変更する場合は、Apacheの設定で変更します。
phpMyAdmin の設定ファイルで、外部からのアクセスできるIPを許可する設定が必要です。
concrete5 をインストールする。
concrete5(コンクリート・ファイブ)は、CMS(コンテンツ・マネージメント・システム)のひとつです。WordPress と同じカテゴリーのプログラムですが、サイトを構築した後は、管理ユーザーがブラウザの画面から見た通りのイメージで、コーディングなしに編集できるところが大きな特徴です。
言語的にはPHPでできていて、バックのデータベースにMySQLを使用しています。
concrete5は、今回のように仮想を含めて自前のサーバーにインストールするよりも、ホスティングサービスのレンタルサーバーを利用するという情報が多いです。
一部のデザイナーが試しに使ったり、小規模の運用が多いということでしょうか。
レンタルサーバーは契約さえすれば、今回のようにAzureを使用して仮想マシンの作成、OSイメージの展開、必要なプログラム(MySQLやPHPなど)のインストールが完了したのと同じ状態が手軽に手に入りますが、契約期間やスケールの調整など細かい設定や融通が効かないということはあります。
Azureのような仮想マシンであれば、テストの間ごく短期間だけ使用することも可能ですし、実運用に使用する際でもCPUやディスク容量を調整しながら運用できます。稼働中のマシンのディスクイメージを別のマシンに複製して障害に備えるという使い方もできるはずです。その際、待機するマシンは、停止しておけば費用はほとんどかかりません。
日本語のオフィシャルサイト
http://concrete5-japan.org/about/download/
から、concrete5.7.3.1 .zip をダウンロードしてローカルPCのどこかに解凍しておきます。以下、オフィシャルサイトに記載ある手順を参考に作業を実施します。
- 仮想マシンのMySQLで空のデータベースを1つ作り、ユーザー設定をしておきます。
(phpMyAdmin を使用して設定する方法が多く紹介されていますが、コマンドラインからでも可能です。) - 仮想マシンの /var/www/html にconcrete5.7.3.1 .zipの解凍済み中身をアップロード(コピー)します。
※ /var/www/html 直下に、zipファイルの最上位フォルダの内容をコピーすると、最短pathでブラウザからindex.phpを指定してコンテンツを開くことができます。
(/var/www/html は、このマシンに対して外部からブラウザでアクセスしたときに開く index.html を置く場所です。変更する場合は、Apacheの設定で変更します。)
- アップロードしたファイルのパーミッション変更を変更します。(3つのディレクトリのパーミッションを変更する必要があります)
- ここまででは、ファイルをコピーしただけの状態で、SQLには何も書き込まれていません。ブラウザから開いても、サイトは初期状態なので次の「concrete5をインストール」の画面になります。
ブラウザから、仮想マシンにAzureから付与されたURLを開いて「concrete5をインストール」の画面が出れば、仮想マシン上にWebサイトを作る作業は一応成功です。
ここまでできるとこの次の工程として、concrete5の初期設定(concrete5ではこの工程をインストールといいます。)、さらにコンテンツの制作が行えるようになります。
この状態では、インタ-ネットに対してconcrete5で制作中のコンテンツが公開された状態です。
制作中には最上位にパスワードを設定するとか、完成したコンテンツをアップロードするまでエンドポイントを閉じておくとか対策が必要です。
インストール開始前に、concrete5が動作環境の自己チェックを行います。[✔]が付いていない項目につき環境を調整すればよいのでわかりやすく安全です。
上のインストール画面では、パーミッションの変更が未了だとわかりますので、対処して[再チェック]ボタンをクリックします。
エラー項目の [?] ヘルプアイコンにマウスカーソルを乗せると、親切なことにガイダンスが出ます。
パフォーマンス
Azure 仮想マシンのスケールは、最低の basic-A0 を選択していますが、インターネット経由でアクセスしても特別遅いということもなさそうです。もっとも、コンテンツがほとんど入っておらず、ほぼサンプルサイトのままです。先々、コンテンツが増えたり複雑化したり、アクセス数が増加してきた場合には、スケールを大きくする必要があるかもしれません。
また、concrete5のよい動作のためには、PHPのパフォーマンスが大きく影響するので、サーバーの性能もさることながら、PHPのロジックやCSSの書き方、閲覧する側のブラウザやPCの性能なども寄与度が高そうです。
メールサーバーをたてる。
concrete5 は、フォームブロックを使用したときなど、PHPのmail関数か外部のSMTPサーバー使用しメールを送信します。
PHPのmail関数を使用する場合は、仮想マシンの内部にメールサーバーが必要です。
今回は、メールサーバーとしてPostfixをインストールしました。concrete5のメール機能のためには、メールサーバーの送信機能だけで十分です。が、セキュアなメールサーバーとするためにDovecot(POP3・IMAPメール受信サーバー)もインストールしました。(POP3、IMAPの設定をすれば、受信もでき、さらに SquirrelMail などを導入するとwebメールのサーバーとしても使用できそうですがこの項では実施しません。)
Postfixのインストール(参考サイト)
http://www.server-world.info/query?os=CentOS_6&p=mail&f=1
main.cf の編集のうち、ホスト名、ドメイン名は、Azureから付与されたものも使用できます。
myhostname = xxxx.cloudapp.net
mydomain = xxxx.cloudapp.net
(独自ドメインの持ち込みもできます。その際は、レジストラで MXやA の設定をしてドメインを指定した時このマシンに到達するように設定します。)
また、main.cf の mynetworks は、azureのパブリック仮想 IP (VIP) アドレス を使用するとログ上エラーとなり、ログのアドバイスにしたがってIPアドレスの末尾桁の記述を改めるとエラーは解消されました。(理由は未調査です)
mynetworks = aa.bb.cc.dd/28, 127.0.0.0/8
↓
mynetworks = aa.bb.cc.DD/28, 127.0.0.0/8
なお、オンプレ環境のメールサーバーが外部とメールの送受信をするためには、IPS(プロバイダ)のメールサーバーを経由することになるので、その契約の確認と設定が必要です。
設定
- Azureのエンドポイント
(仮想マシンで /etc/sysconfig/iptables の設定は、不要です。)
SMTP(25番)を設定します(ついでにPOP3とIMAPも)。
- SELinuxを無効化する
(一時的設定)
# setenforce 0
(永続的設定)# vi /etc/selinux/config
「
# SELinuxを有効にする。# SELINUX=enforcing
# SELinuxを無効にする。SELINUX=disabled
(参考)
」
http://rfs.jp/server/security/selinux01.html
mail関数のテスト
簡単なPHPのコードを書き、ブラウザで実行してみます。(aaaa=ユーザー名、xxxx=ホスト名、bbbb@yahoo.co.jp=送信先(実在する手元のメルアド) )
<?php
if (mail("bbbb@yahoo.co.jp", "TEST MAIL", "テストです。", "From: aaaa@xxxx.cloudapp.net")) {
echo "メールが送信されました。";
} else {
echo "メールの送信に失敗しました。";
}
?>
(gmailへ送信すると、テストメールの内容がSPAMフィルタにかかるらしく、メールは届きません。しかし、/var/log/maillog で確認すると、googleのサーバーに到達しているのはわかります。Yahoo!メールでは迷惑メールのフォルダに入りましたが、届きました。後述の Dovecot をインストールすると、gmailでも迷惑メールのフォルダに入りましたが、届きました。)
- ログの確認
(当該メールの部分に「status=sent」という文字があれば、送信できています。)
/var/log/maillog - 受信メールの確認(外部から aaaa@xxxx.cloudapp.net へ宛てたメールは、このディレクトリに保持されます。)
/home/aaaa/Maildir/new/ (aaaa=ユーザー名)
Dovecot(ダヴコット)のインストール
POP3とIMAPのサーバー(メールを受信するためのサーバー)です。concrete5の機能としてメールの受信は不要ですが、Dovecotはよりセキュア志向ということなので、これが稼働していたほうがconcrete5からgmail宛のメールがフィルタを通過しやすくなるのではないかという思惑でインストールしました。
実際、gmail 宛のメールが gmailのメールサーバーに受け入れられるようになったようです。(その他、gmail 宛のメールでは、header情報で少なくとも「From:[メールアドレス]」は必要なようです。)
# yum install dovecot
※ yum install 実行したところ、完了せず yum-complete-transaction の実行対応が必要でした。yum の具合でたまたま必要だったのかもしれません。(詳細不明)
# vi /etc/dovecot/conf.d/10-mail.conf
で、次を編集
修正「
#mail_location =
↓
mail_location = maildir:~/Maildir
」
末尾に「
auth_mechanisms = plain login
」 (必須ではないかも)
※ 起動しようとすると、鍵セットが必要 → 下記を参考に作成
https://www.centos.org/docs/5/html/5.2/Deployment_Guide/s3-email-protocols-dovecot.html
Dovecot起動
# service dovecot start
再起動時にもDovecot起動
# chkconfig dovecot on
-
購入金額
0円
-
購入日
2015年02月14日
-
購入場所
ZIGSOWにログインするとコメントやこのアイテムを持っているユーザー全員に質問できます。