WordPressをホスティングする際、LAMP+WordPressがインストール済みのマシンイメージを使ってAWS上にサーバを立てるのが手っ取り早くて簡単だと思いますが、サーバが低スペックでも問題ない場合には、共有サーバをレンタルした方が安上がり(400~500円/月)ということもあり、今でもレンタルサーバを使うことがあります。
そこで今回は、これまで何度も利用させてもらっていた「CORESERVER」の導入方法を、おさらい的に書き残しておきたいと思います。ちなみに全て Windows での操作です。
CORESERVERのスペック(CORE-Aプラン)などは、こんな感じです。
CORE-Aプランの月額費用は、500円です(1年契約にすると年5,000円になります)。
CPU | Xeon L3110 3.00GHz × 2 |
MemTotal | 4019MB |
Apache | 1.3 |
Perl | 5.8.8 |
PHP | 5.2.5 |
RUBY | 1.8.5 |
MySQL | 5.1.22-rc |
PostgreSQL | 8.2.4 |
Python | 2.4.3 |
SQLite | 2.8.17 / 3.3.7 |
上記のスペックは選択するサーバによって若干違いますし、これを最大50(?)のユーザで分割して使うことになるので、処理能力は当然ながら貧弱になってしまうのは値段相応なので仕方ありません。またプロダクトによっては、PHPなどのバージョンが古くて使えなかったりするので、要注意です。
【今回の目的】
- 共用レンタルサーバ「CORESERVER」でWordPressサイトをホスティングする
ための手順をまとめたいと思います。
ちなみに、サイトは商用利用(店舗のHPなど)を前提としています。
1. CORESERVER CORE-Aプランをお試し期間で契約
まずは、CORESERVER のページにアクセスします。
http://www.coreserver.jp/
1) [CORESERVER (CORE-A) アカウントを取得] から「[CORE-A] 取得するにはここをクリックしてください。」をクリック。
2) 希望ユーザー名、サーバーを選択して、「お試し登録」をクリック。
3) 「本登録完了のお知らせメール」が送られてきたら、「管理画面(パスワード・各種情報変更)」のリンクをクリックします。
ここの「ID(FTPユーザー名)」「パスワード」は頻繁に使うので、要チェックです。
2. コントロールパネルから初期設定
1) 「本登録完了のお知らせメール」の ID(FTPユーザー名)・パスワードを入力して「入室」をクリックし、コントロールパネルにログインします。
2) コントロールパネルの [マイドメイン利用] -> [ドメインウェブ] を選択。
例えば、最終的なドメインを「www.akiyoko.info」にする場合、「akiyoko.info」と入力し、「ドメイン設定」をクリック。ドキュメントルート(/virtual/akiyoko/public_html/)の直下に、「akiyoko.info」というディレクトリが作られます。
(wwwなしの転送設定については、http://www.xrea-navi.com/server/www.html を参照)
ドメインの反映には数分かかるそうです。
3) 後の作業のために、前もって自ホストの接続を許可しておきます。
これをしておかないと、FTPやSSHでアクセスができません。
[管理メニュー] -> [ホスト情報登録] から、「FTP登録」をクリック。
[管理メニュー] -> [ホスト情報登録] から、「SSH登録」をクリック。
4) 数分待ってから、WinSCPでFTP接続してみます。
プロトコルは「SFTP」、「本登録完了のお知らせメール」の ID(FTPユーザー名)・パスワードを使用します。
5) ターミナル(Poderosa や Putty)でSSH接続してみます。
同じく、「本登録完了のお知らせメール」の ID(FTPユーザー名)・パスワードを使用します。
(Poderosaの場合、初回に以下のようなエラーになる場合があるのですが、無視してもう一度接続するとアクセスできます。)
3. データベース(MySQL)を作成
1) 実際にインストールする前に、データベース(MySQL)を作成します。
コントロールパネルの [管理メニュー] -> [データベース] -> [MySQLの追加・編集] で、文字コード「UNICODE」でデータベースを作成します。
(データベース名は「akiyoko_wp」とします。また同時に「akiyoko_wp」というユーザも作成されます。)
2) phpMyAdminをインストールします。
3) 数分後、phpMyAdminにログインしてみます。
「ログイン」をクリックすると、BASIC認証が要求されるので、先ほどの画面に書いてあった認証パスワード(ユーザー名: akiyoko, パスワード: 初期パスワードの先頭4桁)を入力します。
phpMyAdminのログイン画面で、データベースを作成時に自動生成されたユーザ「akiyoko_wp」と設定したパスワードを入力して、ログインできればOKです。
4. WordPressをインストール
次に、WordPressをインストールします。
(2013年8月現時点では、WordPress 3.5.1 がインストールされます。)
1) コントロールパネルの [管理メニュー] -> [CGIインストール] から、「設置場所・パス」に、先ほど「ドメイン設定」で設定したディレクトリ名を入力して、「インストール」ボタンをクリックします。
(この時点ではファイルを解凍してくれるだけ。)
2) .htaccessを設定し、特定のPHPをCGIモードで動かす
ここが、CORESERVERを使う上で一番厄介な部分です。
実は、CORESERVERは、初期状態ではPHPをセーフモードで実行しているため、いろいろな制限を受けます。そこで、.htaccessの設定によって、CGIモードで動かすように変更します。
初期状態では .htaccess が存在しないので、ターミナルからSSH接続して .htaccessを新規作成します。
/virtual/akiyoko/public_html/akiyoko.info/.htaccess
# /virtual/akiyoko/public_html/akiyoko.info/.htaccess を新規作成 $ cd /virtual/akiyoko/public_html/akiyoko.info/ $ cat > .htaccess <<EOF Options -Indexes <files wp-config.php> order allow,deny deny from all </files> <Files ~ "^(wp-cron|xmlrpc)\.php$"> AddHandler application/x-httpd-phpcgi .php </files> EOF # 所有者がakiyoko.hpusers、パーミッションが644になっていることを確認 $ ls -al .htaccess -rw-r--r-- 1 akiyoko hpusers 169 2013-08-10 13:58 .htaccess
/virtual/akiyoko/public_html/akiyoko.info/wp-admin/.htaccess
# /virtual/akiyoko/public_html/akiyoko.info/wp-admin/.htaccess を新規作成 $ cd /virtual/akiyoko/public_html/akiyoko.info/wp-admin/ $ cat > .htaccess <<EOF <Files ~ "^(async-upload|upload|update-core|update|plugin-install|plugins|themes|admin)\.php$"> AddHandler application/x-httpd-phpcgi .php </files> EOF # 所有者がakiyoko.hpusers、パーミッションが644になっていることを確認 $ ls -al .htaccess -rw-r--r-- 1 akiyoko hpusers 148 2013-08-10 14:02 .htaccess
参考
- http://webaffi.net/wordp/coreserver-htaccess/
- http://webaffi.net/wordp/php-3/
- http://enhancer.clubridge.net/web/166/
3) WordPressのインストールを続けます。
「本登録完了のお知らせ」メールの「標準のホームページURL」(http://akiyoko.s1xx.coreserver.jp/)+ WordPressを作成した「設置場所・パス」(akiyoko.info)のURLに、ブラウザでアクセスします。
http://akiyoko.s1xx.coreserver.jp/akiyoko.info/
途中、データベースの情報を入力します。
これまでの手順に従っているとこんな感じの画面になるので、「インストール実行」をクリックしてインストールを続行します。
(このとき、「wp-config.php ファイルへの書き込みができません。」とのエラーメッセージが表示される場合は、ここまでの手順をもう一度見直してください。.htaccessの内容またはパーミッションが正しくない可能性があります。)
WordPress 3.5.1 がインストールされました。
4) wp-config.php の所有者を変更する
これでインストール完了なのですが、3)で自動生成された wp-config.php の所有者が、PHPのセーフモードの弊害によって「apache」になってしまっています。
このままでも構わないのですが、バックアップファイルからリストアするときに、この1ファイルだけ owner が違うのも気持ち悪いので、ここで変更してしまいます。
$ cd /virtual/akiyoko/public_html/akiyoko.info/ $ ls -al ./wp-config.php -rw-rw-rw- 1 apache apache 4569 2013-08-10 14:09 ./wp-config.php # 念のため、owner が akiyoko になっていないファイル・ディレクトリが他にも無いか探してみる => 無い $ find . ! -user akiyoko ./wp-config.php
CORESERVERでは、所有者が「apache」のファイルを直接 chown することができないので、仕方なく、コントロールパネル上で [管理メニュー] -> [ツール] から、[ファイル所有者の修正] の「ファイル所有者の修正」ボタンをクリックすることで、所有者を変更することができます。
$ cd /virtual/akiyoko/public_html/akiyoko.info/ $ ls -al ./wp-config.php -rwx---rwx 1 akiyoko hpusers 4569 2013-08-10 14:09 ./wp-config.php
はい、修正できました。
【2013/8/30追記】
「ロリポップ!レンタルサーバーのWordPressサイトへの第三者による大規模攻撃」をきっかけに、wp-config.php と .htaccess のパーミッションを見直してみました。
- 適切な設定
600 -rw-r--r-- /home/user/wp-config.php
604 -rw----r-- /home/user/cgi-bin/.htaccess
600 -rw------- /home/user/cgi-bin/php.ini
711 -rwx--x--x /home/user/cgi-bin/php.cgi
100 ---x------ /home/user/cgi-bin/php5.cgi
のサイトを参考に、共有サーバ特有の状況を勘案して(同じ共有サーバ内のユーザは一律hpusersグループに属しているので、グループのパーミッションは0にする)、
$ cd /virtual/akiyoko/public_html/akiyoko.info/ # /virtual/akiyoko/public_html/akiyoko.info/wp-config.phpのパーミッションは、707→604に変更 $ chmod 604 wp-config.php # /virtual/akiyoko/public_html/akiyoko.info/.htaccessのパーミッションは、644→604に変更 $ chmod 604 .htaccess
という対応をしておきました。
あとは最低限、管理者ユーザのユーザ名を「admin」以外にし、パスワードを推測されにくいものにしておくことも必要ですね。
4. WordPressを初期設定
次に、最低限の設定をします。
1) パーマリンクの設定
ダッシュボードで設定変更する前に、.htaccessのパーミッションを変更しておきます。
# /virtual/akiyoko/public_html/akiyoko.info/.htaccess のパーミッションを644→666に変更 cd /virtual/akiyoko/public_html/akiyoko.info/ chmod 666 .htaccess
.htaccessのパーミッションは644のままにしておきたいところですが、パーマリンク設定の変更時にパーミッションの変更を要求されるので、一旦666に変更してしまいます。
次に、ダッシュボードの [設定] -> [パーマリンク設定] から、パーマリンク設定のページを開き、共通設定を「デフォルト」以外に変更します(オススメは以下のどちらか。個人的には後者)。
- 「投稿名」を選択
- 「カスタム構造」を選択肢、「/%category%/%postname%/」と入力
「変更を保存」ボタンをクリック。
2) コメント・トラックバックの設定
トラックバックは特に必要ないので、OFFにします。
[設定] -> [ディスカッション] -> [投稿のデフォルト設定] で、「他のブログからの通知 (ピンバック・トラックバック) を受け付ける」のチェックを外して「変更を保存」をクリックします。
コメントの設定は運用方法により、次の3パターンが考えられるかと思います。
- コメントの投稿は禁止
- 管理者が承認したコメントのみを許可
- コメントの投稿を常に許可(ただし、スパム対策として画像認証プラグインを導入)
「1. コメントの投稿は禁止」する場合は、[設定] -> [ディスカッション] -> [投稿のデフォルト設定] で、「新しい投稿へのコメントを許可する」のチェックを外します。
上記設定時に既に登録済みの投稿や固定ページについては、個別にコメント欄を外してやる必要があります。
例えば投稿の場合は、投稿一覧で登録済みの投稿を全て選択して「編集」を適用し、「コメント」および「トラックバック/ピンバック」を「許可しない」に変更して「更新」ボタンをクリックします。
「2. 管理者が承認したコメントのみを許可」する場合は、「管理者の承認を常に必要とする」にチェックを入れます。
(「名前とメールアドレスの入力を必須にする」のチェックは任意でON/OFFしてください。)
「3. コメントの投稿を常に許可」する場合は、ディスカッションの設定はデフォルトのままでOKです。
次は、テーマの設定です。
3) テーマの設定
サンプルとして、↓のテーマを入れてみます。
http://wordpress.org/extend/themes/application
[概観] -> [テーマ] -> [テーマのインストール]からテーマを検索し、「いますぐインストール」をクリック。
(場合によっては途中で、ホスト名・FTPユーザ名・FTPパスワードを入力して、FTP接続を許可する必要があります。)
テーマのインストールが完了したら、「有効化」をクリックします。
うまくいきました。
次に、テーマのzipをダウンロードして↓を入れてみます。
http://wordpress.org/extend/themes/responsive
サイトから、zipをダウンロード。
[概観] -> [テーマ] -> [テーマのインストール] -> [アップロード]からダウンロードしたzipファイルを選択し、「いますぐインストール」をクリック。
(場合によっては途中で、ホスト名・FTPユーザ名・FTPパスワードを入力して、FTP接続を許可する必要があります。)
テーマのインストールが完了したら、「有効化」をクリックします。
5. WordPressのプラグインを初期設定
プラグインの初期設定をします。
1) WP Multibyte Patch(バージョン 1.6.4)
マルチバイト対応のためのプラグインです。
デフォルトでインストールされているので、[プラグイン] -> [インストール済みプラグイン] から「有効化」するだけでOKです。
2) SI CAPTCHA Anti-Spam(バージョン 2.7.7.1)
コメント投稿を許可する場合のアンチスパム対策のためのプラグインです。これを導入しないと、コメントがスパムだらけになってしまいます。
なお、デフォルトでインストールされている、スパム判定のためのプラグイン「Akismet」(デフォルトでは有効化されていない)は商用利用時は有料なので、この「SI CAPTCHA Anti-Spam」だけでは対策しきれない事態になった場合に導入を検討すればよいと思います。
[プラグイン] -> [新規追加] から「SI CAPTCHA Anti-Spam」を検索して、「いますぐインストール」でインストールします。
「プラグインを有効化」すると、[プラグイン] に [SI Captchaオプション] が新しく表示されるようになるので、そこから必要に応じて初期設定をします(デフォルトでもOKです)。
6. おまけ(セーフモードの弊害)
例えば、zipをアップロードしてテーマを変更する際、「/virtual/akiyoko/public_html/akiyoko.info/wp-admin/.htaccess」でセーフモードを回避する設定をしていないと、「いますぐインストール」をクリックしたときに、以下のようなエラーになってしまいます。
「wp-content/uploads」ディレクトリのownerが、勝手に「apache」になってしまうのが原因のようです。
$ cd /virtual/akiyoko/public_html/akiyoko.info/wp-content/ $ ls -al total 5 drwx---rwx 7 akiyoko hpusers 208 2013-03-05 02:29 . drwx---r-x 6 akiyoko hpusers 1104 2013-03-05 02:05 .. -rwx---rwx 1 akiyoko hpusers 30 2011-07-17 22:05 index.php drwx---rwx 3 akiyoko hpusers 392 2013-03-04 01:48 languages drwx---rwx 5 akiyoko hpusers 224 2013-03-04 02:01 plugins drwx---rwx 6 akiyoko hpusers 208 2013-03-05 02:21 themes drwxr-xr-x 2 akiyoko hpusers 48 2013-03-05 02:21 upgrade drwx---rwx 2 apache apache 48 2013-03-05 02:29 uploads
chownコマンドでownerを変更できなかったので(CORESERVERの制限?)、一度削除してから mkdirしたら直りました。
$ rm -rf uploads $ mkdir -m 707 uploads $ ls -al total 5 drwx---rwx 7 akiyoko hpusers 208 2013-03-05 02:37 . drwx---r-x 6 akiyoko hpusers 1104 2013-03-05 02:05 .. -rwx---rwx 1 akiyoko hpusers 30 2011-07-17 22:05 index.php drwx---rwx 3 akiyoko hpusers 392 2013-03-04 01:48 languages drwx---rwx 5 akiyoko hpusers 224 2013-03-04 02:01 plugins drwx---rwx 6 akiyoko hpusers 208 2013-03-05 02:21 themes drwxr-xr-x 2 akiyoko hpusers 48 2013-03-05 02:21 upgrade drwx---rwx 2 akiyoko hpusers 48 2013-03-05 02:37 uploads $ chmod 707 uploads
上記の手順のほか、CORESERVERのコントロールパネルの [ツール] -> [ファイル所有者の修正] でも変更が可能です。
(まあ、.htaccessでセーフモードを回避しないと、こういう謎の不具合が発生するので面倒ですよねという話です。)
これで、初期設定は一旦終了。
次回は、CORESERVER に VALUE DOMAIN のドメインを付与する手順を紹介します。