1
13
2019
ConoHa WINGでサイト構築してみる(初期構築編:その3)
WordPressを簡単インストールしてみる
WordPressについては今更説明の必要すらないだろうが、殆どのレンタルサーバ事業者はこのWordPressをユーザが簡単にインストールできて、尚且つ簡単に運用できるような仕組み作りに苦心している筈だ.WordPressが簡単に使えないようなレンタルサーバサービスはこの業界では生き残れないといっても過言ではないだろう.
当然、ConoHa WINGもこのWordPressの簡単導入とWEBサーバの高速性、ユーザのWordPress運用の負担を低減するような仕組みを採り入れている.今回は初期デフォルトドメイン(”xxxx.conohawing.com”)でのWordPressの導入手順と、どの程度管理コンソールだけでWordPressの設定を行うことが可能なのか検証してみることにする.
尚、今回の目的はWordPressでサイトを立ち上げることではないので、WordPressでの構築テクニックや運用の方法については触れないことにする.
WordPressのインストール
ConoHa WINGの管理コンソールから ”サイト管理” ⇒ ”サイト設定” と辿って行くと、”アプリケーションインストール”というタブメニューがあり、そこからWordPressを簡単にインストールできる.勿論、最初の状態ではWordPressは何もインストールされていないので、”+アプリケーション” ボタンを押して最初のWordPressを作成することになる.

ここの例では”y2test”というサイトを作成している
WordPressとEC-CUBEという2種類のWEBアプリを選択できるが、EC-CUBEについては何も知らないのでこれについての説明はできないが、名前から想像するに簡単のEコマース運用アプリだろうか.WordPressについては、サイトの構築時に他のレンタルサーバで運用している既設のWordPressからの簡単移行メニューが用意されているが、これについての検証はまた別な機会に取り上げてみようと思う.
この記事を書いている 2019年1月13日時点では、既にWordPressの最新バージョンは 5.0.3 であるが、ConoHa WINGでインストールされるバージョンは 4.9.9 だった.WordPressの管理コンソール経由で、特別な設定を何しなくても、きちんとWordPressの自動アップデート機能が働くので、ユーザが簡単にWordPress 5.0へアップデートできることを確認している.SFTP用のプラグインが設定されている訳ではないようなので、FTP経由のアップデートなのかもしれない.セキュアではないFTP接続機能が有効になっているのはこのためなのかもしれない.
いずれにせよ、ユーザは自分自身でSFTPやSSH2などによるセキュアなアップデート機能を導入する事を心がけて欲しい.
WordPressのトップディレクトリの配置場所は、”http(s)://xxxxx.conohawing.com/yyyyy” のように指定する.”yyyyy” の部分は任意のディレクトリ名とすることができるので、そのサイトを現す適切なディレクトリ名を付けておくと良いだろう.WEBサーバのコンテンツトップディレクトリは、ユーザのホームディレクトリ配下の “public_html” フォルダとなっており、この下に “yyyy” というディレクトリが作成され、WordPress関連の関連ファイルがこの配下にインストールされることになる.

“http(s)://y2.conohawing.com/y2test” というURLでWPサイトにアクセス可能な状態になる
尚、この状態でWordPressサイトは立ち上がってはいるが、httpとhttpsの両方でアクセス可能な状態なので、WordPressの設定を変更して、できる限りhttpsのみでアクセス可能としておくことを奨める.Google大先生に気に入って貰うには、常時SSL化は必須だ.

本当に簡単にWordPressサイトが立ち上がってしまった

勿論、ConoHa WINGのワイルドカード証明書が有効なので、常時SSL化を設定しておくと良いだろう

追加のWordPressサイトも同じように簡単に作成可能だ
ここから先は、WordPress自体の設定の話になってしまうので詳しい説明は省略するが、WordPressで導入するサードパーティー製プラグインやテーマファイルはセキュリティーホールとなることが多いので、常に細心の注意を払ってWordPressサイトを運用して行って貰いたい.簡単にサイトを立ち上げることができるからと言って、WordPressの運用自体も簡単で楽ということは決してないので、初めてWordPressサイトを立ち上げる人はこの事を肝に銘じておいて欲しい.

最初から日本語モジュールが導入されているのでデフォルトで日本語表記となっている

ConoHa WINGで独自に導入しているWPプラグインも組み込まれている
ConoHa WINGの管理コンソール上で設定可能なWordPress関連のパラメータを探ってみる
”サイト設定”の”基本設定”タブメニューでは、”WEBフォント”機能 の ON/OFF と、WEBサーバのエラーページのカスタマイズ設定が行えるようになっており、WEBサーバのエラーコード毎にユーザが指定するエラーページに飛ばすことが可能だ.但し、このエラーページ設定はサイト全体に関する設定なので、WordPressサイト毎に個別にエラーページをカスタマイズする場合は、WordPress側のテーマファイルで行うことになる.
”応用設定”タブメニューでは、”コンテンツキャッシュ”機能とブラウザ側のキャシュ機能のコントロールが設定可能だ.また、ユーザのWEBサイトのトップコンテンツディレクトリ “/home/xxxxxx/public_html/y2.conohawing.com/” に置かれたWEBアクセスコントロールファイル “.htaccess” の内容を直接編集可能となっている.この後で紹介すファイルマネージャの機能では、この”.htaccess”を編集することができないので、ユーザはこの機能を使って”.htaccess”を編集するか、SSH系のツールで直接”.htaccess”を編集することになる.
この ”.htaccess” ファイルではサイト全体に適用すべきWEBサーバ制御項目を記載する.例えば、コンテンツ整備中で、サイトメンテナンスを行う特定のユーザ(業者)だけにサイトをアクセスできるようにIPアドレスやドメインによるアクセス制限などを行うことが可能だ.
ここに示した例は、この記事の執筆用に立ち上げているテストサイトに私以外がアクセスできないようにする設定が入れてある.この記事を見ている皆さんが、”https://y2.conohawing.com/y2test/” にアクセスしても、”Forbidden” エラーメッセージが表示されて、WordPressサイト “y2test” にはアクセスできない筈だ.

基本設定メニューではサイト共通エラーページのカスタマイズが行える

応用設定メニューで能は “.htaccess”と”php.ini”ファイルの編集がコンソール上で行える
”サイトセキュリティ”に移る前に、ファイルマネージャによるWEBコンテンツフォルダのアクセスの様子と、SSH(Transmit 5)接続でのコンテンツディレクトリの様子を示しておく.

ファイルマネージャ経由のアクセスではコンテンツの編集にかなり制約がある

細かな管理を行うにはSSH系のコンテンツ管理ツールかSSHログインによるコマンド操作が必要

Transmit 5を使って、WordPress設定用の “.htaccess”ファイルをテキストエディタ(BBEdit)で直接編集
【追記】ConoHa WINGサービスでのWEBサーバの実装の様子を簡単に探ってみる
ConoHa Wingのサービス仕様のページを最初に見たときにWebサーバーの項目が、”Apache + nginx” という風に記載されていたのでユーザがどちらかを選べるのかと思っていたが、管理コンソールでコントロール可能な “.htaccess” などがあり、どうやらWEBサーバ自体は Apache で実装されているようだ.( “Apache/nginx” ではなく ” + ” という記載の意味は後で解るだろう)
だとすると、”nginx” という記述は何なのだろう?ということで、WEBアクセス時の挙動を簡単に探ってみた.
実は、先の記事でConoHa WINGのWEBサービスがユーザ側何も対策を行わなくても http/httpsの両方でアクセス可能であることは紹介したと思うが、WordPressの実装後に “.htaccess” ファイルに httpアクセスをhttpsに強制リダイレクトさせる記述を入れてみたところ、思ったように動いてくれなかったのが、今回ConoHa WINGのWEBサービスの実装方法について探りを入れるきっかけだった.
単純な、Apache WEBサーバの構成であれば、http ⇒ https へのリダイレクトは、次のような Apache の “RewriteCond”, “RewriteRule” ディレクティブの設定で簡単に行えるはずなのだが、色々頑張って見たが上手くリダイレクト処理が機能してくれなかった.
先ずは、WordPressで実装したテストサイト “http(s)://y2.conohawing.com/y2test/” の “.htaccess” ファイルの中身を次の様に記述してみた.”# BEGIN WordPress” 〜 “# END WordPress” までの行は、WordPressの設定(実装)により自動的に設定された記述で、それより上の部分が、httpsへの強制リダイレクトのための設定である.この中身については、Apacheの”RewriteCond”, “RewriteRule” ディレクティブでの振る舞いなどを、Apacheのマニュアルなどで内容きちんと理解できていないと難しい(WEBエンジニアの世界)ので、ここでは ”おまじない” 程度に考えておいても良いだろう.(“I put a spell on you” ^_^/)
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
# BEGIN WordPress
RewriteEngine On
RewriteBase /y2test/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /y2test/index.php [L]
# END WordPress
WEBブラウザを使うとキャッシュなどの問題があり、問題の切り分けが難しくなるので今回は Curl コマンドでWEBサーバが返してくるヘッダ情報を見てみることにする.先ずは、上記のhttps強制リダイレクト処理を入れない状態(WordPressのデフォルト状態)での挙動を調べてみる.
iMac27:~ yasuaki$ curl -I http://y2.conohawing.com/y2test/
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 14 Jan 2019 02:25:48 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Link: ; rel="https://api.w.org/"
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
iMac27:~ yasuaki$ curl -I https://y2.conohawing.com/y2test/
HTTP/2 200
server: nginx
date: Mon, 14 Jan 2019 02:26:16 GMT
content-type: text/html; charset=UTF-8
link: ; rel="https://api.w.org/"
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
iMac27:~ yasuaki$
次に、上記のhttps強制リダイレクト処理を付け加えた状態で同じ事を行ってみる.
iMac27:~ yasuaki$ curl -I http://y2.conohawing.com/y2test/
HTTP/1.1 302 Found
Server: nginx
Date: Mon, 14 Jan 2019 02:29:24 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: keep-alive
Location: https://y2.conohawing.com/y2test/
iMac27:~ yasuaki$ curl -I https://y2.conohawing.com/y2test/
HTTP/2 302
server: nginx
date: Mon, 14 Jan 2019 02:29:41 GMT
content-type: text/html; charset=iso-8859-1
location: https://y2.conohawing.com/y2test/
iMac27:~ yasuaki$
WEBエンジニアであれば、上記の挙動からConoHa WINGでのWEBサービスの実装方法についてある程度想像できることでだろう.簡単に要点をまとめると、
・外部からWEBアクセスしてくる際にHTTP(S)コネクションを返しているのは、”Apache”ではなく”nginx”
・”Apache”でのHTTP⇒HTTPS強制リダイレクト処理は想定通りの動きを行っている
・ HTTPSでアクセスしても何故か”Apache”はHTTPS強制リダイレクト処理を行ってしまっている
どうやらWEBサーバのフロントエンドに “nginx” によるSSLアクセラレータ機能が実装されていて、”nginx” と実際のWEBサーバ(Apache) 間の通信はHTTPで行われている事が推定できる.このような構成はエンタープライズ系のWEBサービスではよく有る構成だ.ConoHa WINGではWEBサービスの高速性を売りにしているので、ユーザに直接提供するWEBサーバにはHTTPS処理による過大な負荷を掛けないようにして高速性を維持し、フロントエンド側でSSLアクセラレーションを行って、外部ユーザに対してSSLアクセスを可能にしている事になる.
フロントエンド(nginx)とWEBサーバ(Apache)間の通信がHTTPで有ることは、WEBサーバ側でHTTPを受け入れない設定を行ってみれば直ぐに確認できる.”.htaccess”ファイルの先頭に “SSLRequireSSL” と記載すれば簡単にHTTP通信を拒否できる.
SSLRequireSSL
# BEGIN WordPress
RewriteEngine On
RewriteBase /y2test/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /y2test/index.php [L]
# END WordPress

“y2test”へhttpsでアクセスしているにも拘わらず “Forbidden(403)” となっている
ユーザ側からはWEBフロントエンドを制御できないので、ConoHa WINGのWEBサービスを使って自在にWEBサービスを展開するにはそれなりの工夫が必要なようだ.
”サイト管理”メニューの残りの機能については、引き続きこの後の記事で簡単に紹介する予定だ.