前回はMagentoを本格的に運用するための構成について解説しました。今回は前回の内容を踏まえ、実際に環境を作ってみましょう。今回の構成について今回構築する構成は、WebサーバーとDBサーバーをそれぞれ1台スイッチ1台DBサーバーにはグローバルIPアドレスを付与しないDBサーバーへはWebサーバーを経由してアクセスするというものです(下図参照)。今回は最小コストのケースをご紹介したいと思います。最初にWebサーバーを作成します。Magentoをインストールしてみよう」を参考にしてWebサーバーを作成しておきます。スタートアップスクリプトが対象にしているのはWebサーバーとDBサーバーが同居する構成です。今回はWebサーバーとDBサーバーは独立したサーバーとして構築するので、スタートアップスクリプトで作成したWebサーバーに対して以下の作業が必要になります。ネットワーク周りの調整データベースの内容を移設する作業MySQLを取り除く作業スイッチの追加とWebサーバーの調整Webサーバーが起動したら、さくらのクラウドの管理画面からスイッチを選択し、追加します。名前やアイコンは適宜設定してください。このスイッチにWebサーバーとDBサーバーを接続し、通信できるようにします。WebサーバーにNICを追加する次にWebサーバーにNICを追加します。さくらのクラウドのマニュアル「NICの追加と削除」を見ながら追加しましょう。スイッチに接続する側のNICに付与するIPアドレスとサブネットマスクはプライベートIPアドレスの範囲で設定してください。ここで設定した内容はDBサーバーの作成時にも使用しますので、忘れずにメモしておきましょう。NICの追加ができたらWebサーバーを起動し直します。起動後にNICが正しく認識されているか、IPアドレスを持っているかを確認しましょう。NICが認識されない場合や、IPアドレスを持っていない場合は、/etc/networking/interfacesなどの定義を確認してみてください。Webサーバーの設定を調整するいまのままではDBサーバーを作成しても、DBサーバーは外部に通信ができません。DBサーバーを作成する前にWebサーバー側の設定を調整しておきましょう。IPフォワードを有効にするWebサーバーをDBサーバーからみた中継サーバーにするために、/etc/sysctl.confに以下の定義を追加します。-pで反映しておきます。パケット転送の定義をするIPフォワードの設定だけでは不十分なので、iptablesを用いてパケット転送の定義を行います。下記の内容のファイルをWebサーバー上に作成し、sudoコマンドで実行してください。0実行できたら、iptablesを起動し、ついでにOSのリブート時にも起動するようにしておきましょう。iptables-persistentで、iptablesの設定を永続化できるようにします。saveを実行して保存しておきます。ちなみに上記のルールの一部はさくらのクラウドのパケットフィルタ機能でも実現可能です。(22番や80番、443番ポートへのアクセス許可はパケットフィルタ機能のほうがメンテナンスは楽かもしれません)SSHを公開鍵認証方式に変えるスタートアップスクリプトで作成したサーバーの場合、デフォルトではSSHはパスワード認証方式になっています。このままではユーザー名とパスワードに対する総当たり攻撃を受けてしまいます。そこでSSHの認証方式を公開鍵認証方式に変更します。(編集部注:この記事ではコマンドによる作業手順をご紹介していますが、さくらのクラウドのコントロールパネルでも設定できます。詳しくはさくらのクラウドのマニュアルをご覧ください)スタートアップスクリプトで作成したユーザーにSSHのキーペアを作成するスタートアップスクリプトで作成したユーザーにはSSHのキーペアが初期状態では作成されていません。次のコマンドを実行してキーペアを作成しましょう。ssh-keygen画面のプロンプトに沿って入力をしていくと、ホームディレクトリに.sshディレクトリが作成され、その中にSSHキーペアが作成されます。次に以下のコマンドを実行して公開鍵を認証済みキーとして登録します。~/.ssh/authorized_keys登録できたら、公開鍵の対になる秘密鍵を確認します。~/.ssh/id_rsa表示された内容をコピーして手元に保存しておきます。この秘密鍵は接続の際に必ず必要になるので、紛失しないように注意してください。/etc/ssh/sshd_configを編集Webサーバーの/etc/ssh/sshd_configをviエディタなどで開き、以下の内容を変更します。no変更できたら保存し、sshdを以下のコマンドで再起動します。restart設定が正しいか接続確認をするWindowsの場合はお使いのSSHクライアントを新しく起動して、先程作成した秘密鍵を指定して接続します。(クライアントによっては秘密鍵の変換が必要ですが、ここでは割愛します)MacやLinuxの場合は、ターミナルで以下のように実行します。ユーザー名@WebサーバーのIPアドレスうまく接続できれば完了です。IPアドレスによるアクセス制限をかける場合アクセス元のIPアドレスでSSH接続を制限する場合は、iptablesの設定を以下のように変更します。ACCEPTインターネット側から一切SSH接続できないようにするにはまた、インターネット側からSSH接続できない状態でサーバにログインするには、以下の方法があります。さくらのクラウドのコンソールにてログインするVPCルータを設置しローカルネットワークに接続DBサーバーを作成さて、ようやくDBサーバーを作成するステップに来ました。このときWebサーバーと異なる点としては、下記のスクリーンショットに表示されている以下の内容を指定する点です。NICの接続先をスイッチにするIPアドレスをWebサーバーのローカルIPアドレスとおなじネットワークになるように指定するゲートウェイのIPアドレスをWebサーバーのローカルIPアドレスにする間違えるとうまくつながらないので注意してください。MySQLのセットアップDBサーバーが起動したら、Webサーバー経由でログインします。DBサーバーはグローバルIPアドレスを持っていないので、直接DBサーバーにログインすることはできません。そのためWebサーバーを踏み台にして通信を行います。無事にDBサーバーにログインできたら、apt-getコマンドでMySQLをインストールしましょう。インストール時にはMySQLにおけるrootユーザーのパスワードの設定を求められます。設定したパスワードは忘れないようにメモしておきましょう。mysql-server-5.7apt-getが通らない場合は、Webサーバー側のiptablesの設定などを見直してみてください。MySQLがインストールできたら、mysqlコマンドを実行してMySQLに対話型インターフェイスで接続します。-p(先程インストール時に設定したパスワードの入力を求められます)ログインできたら、WebサーバーのローカルIPアドレスからMagentoの使うMySQLユーザーが接続できるようにMySQL上のユーザーを定義しておきます。以下のコマンドをMySQLの対話型インターフェイスで実行します。'パスワード';ユーザー名やパスワードは、Webサーバーをスタートアップスクリプトで作成するとメールで送られてきますので、その内容を使用します。PRIVILEGES;を実行して権限を反映させます。最後にWebサーバーからDBサーバーに対して以下のmysqlコマンドで接続できるか確認します。-p正しく接続できればユーザーの作成は完了です。データベースの移設ようやくデータベースを移設する段階に来ました。最初にWebサーバー上にあるMySQLに入っているMagentoのデータベースのダンプを取ります。Webサーバー上で以下のコマンドを実行して、データベースのダンプを取りましょう。dump.sql無事にダンプが採取できたら、引き続きダンプをDBサーバー上にリストアします。dump.sql無事にリストアできたら、Magentoの設定ファイルを編集します。設定ファイルがあります。このファイルをviエディタなどで開くと、以下の記述があります。]],hostの値をDBサーバーのIPアドレスに変更し、保存しておきましょう。動作の確認Magentoからみたデータベース接続先を変更できたら、動作確認を行います。ブラウザでアクセスし、正しく表示できれば完了です。少なくともWebサーバーとDBサーバーを分けておけば、この先負荷分散構成にする場合や、データベースをさくらのクラウドのDBアプライアンスに載せ替える場合でも比較的簡単に切り替えができます。WebサーバーからMySQLを撤去データベースが無事に移設できたら、WebサーバーのMySQLは不要になります。mysql-server-5.7でパッケージごと削除しておきましょう。Varnishを導入して更に快速にスタートアップスクリプトではApacheだけでMagentoを動作させています。開発サイトではこれで十分なのですが、実稼働環境として考える場合には少々物足りません。実際のところMagento2系はVarnishをアプリケーションサーバーの前に置くことを強く推奨しています。昨今は全ページHTTPS化が当たり前になっています。VarnishはそのままではHTTPSを扱えないので、SSLオフロード機能のあるロードバランサーか、HAProxy、あるいはHitchといったミドルウエアが必要になります。5.2でHTTP/2なMagento環境を作る」で紹介しています。VarnishとHitchまで導入できれば、かなり快速なMagentoベースのサイトが構築できます。本番運用をする際は是非導入を検討してみてください。次回以降はさて、次回以降はいよいよMagentoのカスタマイズ方法について取り上げていきます。テーマのカスタマイズ方法や、エクステンションの作り方について取り上げます。