さくらのVPSでWordPressを動かそう – 初期設定・セキュリティ設定編 –

カテゴリ:Web制作タグ:

おはようございます。こんにちは。こんばんは。UKです。
前回さくらのVPSの契約についての記事を書きましたが、せっかくなので今回から何回かに分けてさくらのVPSでWordPressを動かすまでの設定などを備忘録も兼ねて記事にしていきたいと思います。

タイトルに「WordPressを動かそう」とは書きましたが、解説してる事はサーバーの構築なのでもちろんWordPress限定じゃなく普通のWebサービス用として使えます。

VPSを使いたいということは自分で好きなようにセットアップしたい方が主に見ているとは思いますが念のため…
今回の記事はなるべく分かりやすく記載を心がけていますが、少しでも難しいと感じる方や自分で解決することが心配な方は、
予めローカル上に仮想環境(VirtualPCなど)を用意して、テストしてから本番環境(さくらのVPS)で構築するのをおすすめします。
それでも自分には無理そうだと判断した場合は、さくらのマネージドサーバーなどの運用はサーバー運営会社が行なってくれるサーバーを利用しましょう。

VPSの設定解説リンク

  1. 初期設定・セキュリティ編←今ココ
  2. nginx設定編
  3. PHP+eAccelerator+php-fpm設定編
  4. MySQL・phpMyAdmin設定編
  5. メールサーバー設定編
  6. 番外編

このページの内容

  1. 初めに
  2. サーバーに接続する
  3. rootのパスワードを変更する
  4. 作業用ユーザーの作成
  5. rootになれるユーザーを限定する
  6. 鍵認証の設定
  7. SSHでのログインを鍵認証でのログインへ変更&ポートを変更する
  8. 言語環境を日本語にする
  9. パッケージを最新の物にする
  10. 自動更新の設定
  11. cronの設定
  12. root宛のメールを転送する
  13. kernel panic時の自動再起動
  14. IPv6を無効にする
  15. ログの保存期間を12週間に変更する
  16. logwatchをインストールする
  17. リポジトリの追加
  18. iptablesの設定
  19. denyhostsのインストール

今回のサーバー構築は、下記のような構成での解説をしています。
OS:Cent OS 6.3
Webサーバー:nginx
fastcgi(nginxでのPHP動作に必要):php-fpm
PHPアクセラレータ:eAccelerator
MySQLサーバー:Percona MySQL
メールサーバー:Postfix+Dovecot+Postfixadmin+ClamAntiVirus+SpamAssassin+procmail
で構築しています。
Webサーバーにapacheを使用したい方はnginxやphp-fpmの設定は不要です。
※apacheのインストールや設定について他の詳しいサイト様などでご確認下さい。
MySQLサーバーに標準のMySQLサーバーを使用する方はPercona MySQLのインストールを標準のMySQLインストールに読み替えてもらえれば幸いです。
※MySQLに関してはインストール方法が変わるだけです。該当の箇所で念のため記載しておきますので参考程度にどうぞ。

VPSの設定は、PoderosaというWindows用SSHクライアントを使用して作業していきます。
最新ベータ版はSourceForge.netからダウンロード出来ます。
(バージョン選択→Poderosa-バージョン数-bin.zipをダウンロードして解凍)

さくらのVPSでは、契約直後は仮想サーバーは電源がOFFの状態で提供されます。
VPSコントロールパネルからIPとパスワードを入力するか、
会員メニューから契約情報→契約サービスの確認→該当サーバーの「サーバ設定」をクリックして、コントロールパネルを表示して、
仮想サーバ操作のところにある「起動」をクリックして、サーバーを起動して下さい。

まずは、先ほどDLしたPoderosaを起動してサーバーに接続します。

ファイル→新規Telnet/SSH接続をクリックします。


さくらのVPS契約完了時に届いている「[さくらのVPS]登録完了のお知らせ」に書いてある情報をもとに、ホスト名、アカウントパスフレーズを埋めましょう。

  • ホスト名:メールに書いてあるサーバーのIPアドレス
  • プロトコル:SSH2
  • ポート:SSH(22)
  • アカウント:メールに記載のユーザ名(root)
  • 認証方法:パスワード
  • パスフレーズ:メールに記載の初期パスワード

以上全てを正しく埋めたら、「OK」ボタンをクリックします。


初めての接続時はこのような画面が出ますが、OKボタンを押せば大丈夫です。


接続出来るとこのような画面(一部念のためモザイク処理しています)になると思います。
※初期設定だと白背景だったような気もしますが、これは設定で変更する事が出来るので自分のお好みで設定して下さい。

以降はこの画面でいろいろコマンドを打ったりして作業していくことになります。
最初はGUIと違ってうわあああってなるかもしれませんが慣れましょう(`・ω・´)

初期パスワードのままだとなんとなく不安なので、セキュリティ上変更するのをおすすめします。
コマンド画面で、

と打ちます。
「Changing password for user root.」
と表示され、New Password:と聞かれるので新しいパスワードを入力します。
※パスワードは記号を含む数字大文字小文字英字16文字以上を推奨します。
表示上は何も入力されていないように見えますが、ちゃんと表示されていますので問題ありません。
※何らかのツールでランダム生成した文字列などを貼り付けたい場合はコピーしてから、コマンド画面でAltキー+Cで貼り付ける事が出来ます。Ctrl+Cじゃないので注意!

入力が終わったらEnterキーを押すと、
「Retype new password: 」
と聞かれるので、同じパスワードを再度入力します。
入力が終わったらEnterキーを押します。
「passwd: all authentication tokens updated successfully.」
と表示されたら、パスワードの変更は完了です。
※基本的にrootはなんでも出来るアカウントなので、パスワードが外部に漏れる事はないようにしましょう。
一度ログアウトして、ログインが出来るか確認しましょう!

と入力すれば、ログアウトされます。再度ログインしましょう。

もしパスワードを忘れた場合は、まだ何も設定していない場合は再インストールを行うか、さくらのVPSでrootのパスワードを忘れたときに再設定を行う方法の記事を参考に再設定を行うといいでしょう。

rootでログインしてると誤操作などしてしまう場合があるので、
まずは作業用ユーザーを作成して、必要に応じてrootに昇格して作業を行うようにします。

で新しくユーザーを追加します。
※英数字、ハイフン、アンダーバーが使用可能だと思います。
追加したユーザーにパスワードを設定します。

※パスワードは記号を含む数字大文字小文字英字16文字以上を推奨します。

このままではどのユーザーでもrootになれてしまうため、作業用ユーザーのみrootに昇格出来るように設定します。

で作業用ユーザーを管理者グループに追加します。

で設定ファイルを開き、

となっている行の先頭の#をdeleteキーで削除して、

で上書き保存します。

などで適当なユーザーを作成して、

と入力してEnterを押してテストユーザーにログインし直す。

と入力して、Enterを押す。
「Password:」と表示されるので、rootのパスワードを入力してEnterを押す。
「incorrect password」と表示され、ログイン出来なかったらOK。

でテストユーザーからログアウトする。
逆に

で作業用ユーザーにログインし直す。

と入力して、Enterを押す。
「Password:」と表示されるので、rootのパスワードを入力してEnterを押す。
Poderosaのコマンド画面の表示が「root@」になっていればOK

確認用に作成したテストユーザーは、

で削除出来ます。使わないと思うので削除してしまって問題ないでしょう。

パスワードログインではなく公開鍵認証に変更するために、鍵ファイルを作成します。

まずはPoderosaのツール→SSH鍵作成ウィザードから鍵を作成します。

  • アルゴリズム:RSA
  • ビット数:2048
  • パスフレーズ:任意のパスワード
  • 確認入力:上記と同じパスワード

アルゴリズムやビット数を選択し、パスフレーズと確認入力を埋めます。
※パスフレーズは記号含む大文字小文字英字数字16文字以上を推奨します。
全て埋めたら、「次へ」をクリックします。


鍵を生成します。このウィンドウの中でマウスを乱雑に動かして、乱数を供給してください。
という画面に変わるので、ウィンドウの中でバーが右端まで行くまでマウスを動かします。
※ウィンドウの外で動かしても意味ないので注意。
生成が終わったら「次へ」をクリックします。

  • 秘密鍵を名前をつけて保存
  • OpenSSH形式で公開鍵を名前をつけて保存

を押して、それぞれファイルに保存します。

作業用ユーザーのホームディレクトリに移動します。

公開鍵格納用のディレクトリを作成します。

パーミションを700(所有者のみ読み書き実行許可)にします。

で公開鍵格納ディレクトリに移動します。

で新規ファイルを生成します。
「INSERTキー」もしくは「iキー」を押して編集モードにしてからPoderosaで作成した、OpenSSH形式の公開鍵(拡張子が.pubのもの)の中身を全てコピーしてAlt+Cで貼り付けます。
貼り付けたら「Escキー」を押してから

で上書き保存します。

公開鍵のパーミションを600へ変更します。

※通常ユーザー名とグループ名は同様で問題ないと思います。共有グループなどを使う場合所有者のみ変更しておけば問題ない。

ここまで終わったら、公開鍵認証出来るか確認を行う事にする。
一度exitコマンドでログアウトします(テストとかで何回か他のユーザーになってたりすると複数回実行する必要あるかも)


Poderosaのファイルから
「新規Telnet/SSH接続」を選択します。

下記を埋めます。

  • ホスト名:VPSのIPアドレス
  • アカウント:作業用ユーザー
  • パスフレーズ:鍵生成時に設定したパスフレーズ
  • 認証方法:公開鍵
  • 鍵ファイル:…を押して保存した秘密鍵を選択する

全て選択or埋めたらOKボタンをクリックして、認証をします。
正常にログイン出来たら成功です。認証失敗したらどこかが間違えているので、再度やり直して下さい。

以降ユーザーの数だけ同じ事の繰り返しをする。
※公開鍵でちゃんとログイン出来るか確認してから下記の手順は行う事
ログイン出来なくなってコンソールから設定ファイルいじらなきゃいけなくなるので。

上記まで設定が完了していれば公開鍵認証でのログインが可能になりましたが、
まだパスワードでのログインも可能だったりrootでのログインも可能なので、設定を変更します。

と入力して、rootのパスワードを入力して、rootになって下さい。

で設定ファイルを開きます。

の先頭の#を削除して、22となっている箇所を変更するか、
次の行に新たに

と追加してSSHの接続の際に使用するポート番号を変更します。。
あまり小さい数を指定すると既存のサービスが使用しているポートとかぶることになるので、なるべく大きな数字にした方がいいと思います。
※1024までは特別な理由がない限り使用しないこと。
また、ここで指定したポート番号は後述のiptablessの設定やSSHでの接続時に指定するので、メモっておくとスムーズに進みます。
(最大で65535までで指定して下さい。)

次に

の先頭の#を削除して下記へ変更するか、次の行へ下記を追加して下さい。

これでrootでのログインを禁止します。

のyesとなっているところを下記へ変更するか、先頭に#を追加してコメントアウトしてから次の行に下記を追加して下さい。

これでパスワードログインを禁止します。
さらにその次の行に

を追加して、パスワードなしでのログインを禁止します。

ここまで編集したら、

で上書き保存して下さい。
次に

でSSHサーバーの設定を反映します。

ここで再度ログアウトして、設定が反映されているか確認します。
確認すべき点は、下記の通りになります。

  • ポート番号が初期の22番で接続出来なくなっているか
  • rootでログイン出来なくなっているか
  • パスワードでログイン出来なくなっているか
  • Poderosaでポート番号を自分が設定したものに変更して、正常に接続出来るか

※もしここでログイン出来なくなってしまったら、何らかの設定が間違っているので、さくらVPSのコントロールパネルからコンソールでログインして、
sshd_configの設定ファイルを全てデフォルトに戻し、設定ファイルの変更をやり直してみましょう。

以下も引き続きrootで作業するので、作業ユーザーでログインした後は

でroot

現状のままだとメッセージなどが英語なので、日本語にします。

で開いて

に変更します。編集出来たら、

で上書きします。

現状でインストールされているパッケージを全てアップデートします。

No Packages marked for Update
と表示された場合は全て最新のものになっているのでOKです。
表示されなくても勝手にアップデートされますので待ちましょう。

このままだとyum updateを実行しない限りインストールされているパッケージのアップデートは行われません。
なので、毎日自動でチェックし自動でアップデートが実行されるように設定します。

を実行してyum-cronをインストールします。
(依存関係でyum-plugin-downloadonlyも同時にインストールされます)
インストールしただけで毎日自動で更新をチェックしてくれ、更新するものがある場合自動で更新してくれます。
しかし、チェックだけを行いたい場合や、インストールは自動でして欲しくない場合もあると思います。
そういうかたは、

で設定ファイルを開いて、

の値を適宜変更して下さい。
※「CHECK_ONLY=no」にして「DOWNLOAD_ONLY=yes」にしても「CHECK_ONLY=yes」とみなされます。

次に

でyum-cronを起動します。

でyum-cronを自動起動するように設定します。
※これを行わないとサーバーを再起動した時などに自動で起動しないので手動で起動してあげる必要があります。

念のため下記のコマンドで自動起動がちゃんと有効になっているか確認します。

2~5のところが「on」になっていればOKです。

CentOS6からはcronがanacronによって制御されるようになったらしいです。
これは指定時間内にランダムに設定された時間分待ってから実行されるようになるみたいです。
複数サーバーで同時刻にジョブを実行すると負荷がかかるためこれを回避する目的があるとのこと。
しかし、今回は一台しかない&指定した時間にきっちり実行されて欲しいので従来型のcronに変更します。

を実行してcronie-noanacronをインストールします。

を実行してcronie-anacronを削除します。

root宛にはシステムから重要なメールが届くので普段使用しているメールアドレスに転送する。
※同じサーバー内でメールサーバー運用する場合でもプロバイダのメアドとかの方がいいかも。

を実行して旧root宛メール転送設定の削除します。

を実行して新しくroot宛メールの転送設定をします。

を実行して転送設定を反映します。

を実行して、root宛にテストメールを送信して、転送されるかテストします。
転送されてこないようだったら再度設定しなおして下さい。

kernel panicになったら10秒後に自動で再起動するように設定します。

を実行して設定ファイルを開き、最終行に下記を追加します。

追加が終わったら、

で上書き保存します。
その後。

を実行して設定を反映します。

を実行して設定が反映されているか確認します。
10という表示が出ればOKです。

IPv6の使用予定はないので無効にします。

を実行してIPv6ファイアーウォールを停止します。

を実行してIPv6ファイアーウォール自動起動を停止します。

を実行してIPv6を無効にします。

を実行して設定ファイルを開き下記を変更します。

へ変更します。
設定を変更したら

で上書き保存します。

を実行してlogwatchをインストールします。
これで毎日root宛にログのメールが届くようになります。

次にnginxのログもlogwatchで送られてくるように設定をします。

を実行して、ユーザー定義用の設定ファイルを作成します。

のように入力します。
nginxのログファイルが/var/log/nginxにある際の設定になります。
入力が終わったら

を行い保存します。

標準でepelのリポジトリは導入されているが、remiやrpmforgeはないので導入しておく。
特にremiはPHPの新しいバージョンなどのインストールに必要。

既に導入されているかは

で確認出来ます。

まず、サードパーティ製のリポジトリを追加した際に優先順位をつけるためにyum-prioritiesをインストールします。

を実行してyum-prioritiesをインストールします。

を実行してリポジトリを開き、

  • [base]
  • [updates]
  • [extras]
  • [centosplus]
  • [contrib]

のそれぞれすぐ次の行に

を追加する。
編集が終わったら

で上書き保存する。

次にremiリポジトリを追加します。

を実行してリポジトリの追加を行います。

でリポジトリを開き[remi]の次の行に

を追加します。
また、PHP5.4のインストールなどでremi-testも使う場合あると思うので、[remi-test]の次の行に

を追加します。

追加が終わったら、

で上書き保存します。

remiリポジトリは使用する時だけ有効化して使用するので、enableは0のままで運用します。
remiリポジトリを使用してパッケージのインストールやアップデートをする場合は下記のようなコマンドで実行します。

のような使い方が出来ます。

次にrmpforgeリポジトリを追加します。

を実行してrpmforgeリポジトリを追加します。

さくらのVPSでは、既に追加されていると思いますが、epelリポジトリを追加する場合のコマンドは下記です。

2013/4/11追記
404になっている場合は、コチラからCtrl+Fでepelで検索して、epel-release-x-x.noarch.rpmのURLをコピーして下さい。

以上で、リポジトリの追加は完了です。

rootのホームディレクトリで行います。
ディレクトリを移動したりしている場合は
cd
でホームディレクトリに移動します。

でファイアーウォール設定スクリプトのファイルを新規作成します。
iptables.shから設定ファイルをダウンロードして、INSERTキーもしくはiキーを押してから中身を全て貼り付けて下さい。
貼り付けたら、SSHのポートだけは自分で設定したものに変更する必要があるので、

となっているところのポート番号の部分を自分で設定したSSHポート番号を入力して下さい。
これを入力しないで以降進めるとエラーになるまたはSSHクライアントからは繋がらなくなりますのでご注意を。
編集が終わったら

で上書き保存します。

次に

を実行してファイアウォール設定スクリプト外部関数のファイルを作成します。
iptables_functions.txtから設定ファイルをダウンロードして、INSERTキーもしくはiキーを押してから中身を全て貼り付けて下さい。
編集が終わったら

で上書き保存します。

次に

を実行してIPアドレスリストチェックスクリプトのファイルを作成します。
iplist_check.sh_.txtから設定ファイルをダウンロードして、INSERTキーもしくはiキーを押してから中身を全て貼り付けて下さい。
編集が終わったら

で上書き保存します。

保存が終わったら、

を実行してスクリプトに実行権限を付加します。
※CRONより/root/iptables.sh not executed.という内容のメールが届いた場合の対処
なんらかの理由で、http://nami.jp/ipv4bycc/から取得した最新のIPアドレスリストと、
前回取得したIPアドレスリストとの差分が100件を超えたため、IPアドレスリストチェックスクリプトが実行されなかったということです。
サーバーを長時間停止していた等、前回取得したIPアドレスリストとの差分が100件を超える理由が明確な場合には、

と実行することにより強制的にIPアドレスリストチェックスクリプトを実行することが出来ます。

次に

を実行して、ファイアーウォール設定スクリプトを実行します。
これにより設定したルールが適応されます。
※時間がかかるので気長に待ちましょう!

一度ログアウトして、再度きちんとログイン出来るかチェックしましょう。
※もし設定ファイルの不備なでSSHでログイン出来なくなった場合
VPSのコンソールから

を実行すればiptablesが止まるりとりあえずSSHでログイン出来るようになるので、再度各種iptables関連の設定を見直すこと。

スクリプトの実行が終わって無事iptablesが有効になったりログイン確認が終わったら
再度rootになってから

を実行して再起動時も自動起動するようにしましょう。

念のため

を実行して2~5が「on」になっているか確認しましょう。

denyhostsを導入すると、ログを監視して不正ログインを試みた痕跡があった場合、
自動的に/etc/hosts.deny (TCP wrapper によるアクセス規制リスト) に規制する IP を自動で追加してくれるパッケージです。
SSHのポート変更だけでは不安なので、導入します。

を実行して、denyhostsをインストールします。
今回は特に設定ファイルには触れませんが、様々な条件を設定することが出来ます。
コチラが比較的詳しく書いてあるみたいなので、一度見てみる事をおすすめします。
設定ファイルは下記コマンドで編集することが出来ます。

※例外的に必ずアクセスを許可しておきたいIPアドレスがある場合
/var/lib/denyhosts/allowed-hosts
に記述することでdenyhostsでブロックされる事はありません。(固定IPの場合のみ有用です)

を実行してdenyhostsを起動します。

を実行して再起動時も自動起動するように設定します。

念のため

を実行して2~5が「on」になっているか確認しましょう。

ここまで完了していれば、denyhosts が正常に動作している場合は、不正アクセスがあった場合 /etc/hosts.deny に記録されていくはずです。

以上で初期設定・セキュリティ設定編の解説を終了します。

最後に

を実行してサーバーの再起動を行なっておいてもいいでしょう。

次はさくらのVPSでWordPressを動かすまで- nginx設定編 –です。

あとでよむ / みんなにシェアする

このエントリーをはてなブックマークに追加
LINEで送る

コメントをする / みる

コメントを残す

4件のコメント

kiss bill より:

さくらVPSとWordpressの設定を検索していてこちらへたどり着きました。非常にわかりやすく手順が書いてあるので大変参考になります。ありがとうございます。
もし、可能でしたら、何故 nginxやphp-fpmやPercona MySQLにてWordpress サイトを構築するに至ったかを知りたいです。もちろんサイトの高速化が目的と理解していますが、どの辺りが高評価で選択したかの理由が知りたいです。よろしくお願いします。

UKLab より:

コメントありがとうございます。
主な目的としては、おっしゃるとおり高速化が目的となっています。

まず、nginxについてですが、apacheと比べ高負荷にもより耐えやすそうな点、高速化が望めそうな点で採用しています。
信用性についてもWordpress.comでも採用されているので、問題ないと判断しました。
また、VPSなのでメモリの消費量も少なく抑えるためでもあったりします。

次に、php-fpmはPHP5.3.3からバンドルされていて導入が簡単なのが理由です。
(apacheをバックエンドにしてもいいとは思いますが、今回は特に必要性を感じなかったため)

最後にPercona MySQLについてですが、InnoDBで高負荷時にOracle MySQLよりもパフォーマンスが向上するパッチも含まれているという話を見たりして採用しました。

基本的にVPSを構築する際に高速化などで検索した時に同じような構成で構築されていた方のサイトを見たりしたというのが大きいですが、もしも高負荷になった時に、落ちない・重くない、快適なサイトを目指したかったので、以上のような構成になっています。
チューニングとか全然なんでまだまだって感じですが。

あとは個人的に新しいもの好きというのもあるかもしれません。

ベンチマークを取って比較したりしているわけではないのでいまいち参考にはならないと思いますが、こんな感じです。
意外に適当に決めました(´・ω・`)

ご期待されている回答ではないかと思いますが、許してください。

kiss bill より:

大変参考になります。
サイトのパフォーマンスチューニングは興味が尽きないですよね。またUKLab様の他記事にもあったCDN (Cloud Flare)も参考にして試してみようと思っています。
ありがとうございました ( ´ ▽ ` )ノ

UKLab より:

快適で困るって事はないですからね!高速化とかワクワクしちゃいます(*´∀`*)
まだまだ説明が下手だったりで、読みづらいとは思いますが、参考にしていただければ幸いです。

検索する

カテゴリ一覧

タグ一覧

お知らせ アクセス解析 アプリケーション ゲーム サーバー スニペット プラグイン 動画 日記 Laravelパッケージ Laravel3 Laravel4 Tips Webサービス Webデザイン WordPress

最近投稿された記事

つぶやき

【GIGAZINE読者限定早い者勝ち】無料でDropbox・Googleドライブなどのクラウドを自由自在に同期・一括管理できる「まとめてクラウド」が先着5万人48時間だけゲット可能 - GIGAZINE gigazine.net/news/20151010-…

約2年前

離れていてもコミュニケーションが取りやすい便利なサービス「Remotty」 #remotty remotty.net

約2年前

RT @localdisk: メジャーどころがたくさん / 【セキュリティ ニュース】「WPTouch」など多数のWordPressプラグインに脆弱性(1ページ目 / 全1ページ):Security NEXT security-next.com/057930

約2年前

Javascript フレームワーク「Aurelia」aurelia.io

約2年前

dockerで起動済みのコンテナに対して何かしたい時は、docker exec -it コンテナ名 /bin/bashで入って実行したり、docker exec -it コンテナ名 supervisorctl restart nginxみたいな事も出来て便利。

約2年前

サーバー移転完了に伴いサイトの閲覧も可能な状態になりました。移転作業中にご訪問いただいた方には大変ご迷惑をおかけいたしました。今後このようなことがないよう気をつけて参ります。

約2年前

現在当サイトが閲覧出来ない状態となっております。こちらはサーバーの移転作業に遅れが生じているためとなっております。ご利用いただいている方にはご迷惑をおかけいたします。

約2年前

WordPress4.1.1(日本語版)が利用出来るようになりました wp.me/p4RkJY-Dj

約3年前

RT @keito_jp: Twitterをサマーウォーズ的に表示させるやつを製作中。遊んでみてね。 open.moo.jp http://t.co/gIgp5Gh6qW

約3年前

任天堂、YouTubeの広告収入を動画制作者とシェアする「Creators Program」サービス開始 | Game*Spark - 国内・海外ゲーム情報サイト s.gamespark.jp/article/2015/0…

約3年前

↑上へ戻る