VPSにApache, MySQL, firewallを設定する

VPS の最低限のセットアップを終えたら、WordPress を使うために Apache や MySQL などをインストールしていきます。

スポンサーリンク

スイッチ

まず、一般ユーザでログインし、その後 root にスイッチします。

※$ は一般ユーザでの操作の意

Webサーバソフトウェア

Apache を入れていきます。

高速に動くということで Nginx なども有名ですが、Apache は動的なサイト、Nginx は静的なサイトに向いており、WordPress は Nginx 向けではありません。

※# は root での操作の意

自動起動設定

インストールしたら、サーバ起動時に自動で立ち上がるようにしておきます。

ドキュメントルート

Apache を入れると、/var/www/html 下のファイルが Web ブラウザで閲覧できるようになっていて、この場所をドキュメントルートといいます。

サーバの IP アドレスにブラウザで接続すると、デフォルトではテストページ、ドキュメントルートに index.html があればそれを表示します。ここにファイルを追加していくことで、サイトを構成することができます。(現時点ではファイアウォールにより接続できません。)

アクセス権限

ファイルの追加は、通信内容を傍受されずにアップロードできる SFTP クライアントを使いますが、このままではドキュメントルートへのアクセス権限がありません。アクセス権限は次のように確認できます。

最初のコマンドで /var/www に移動し、次のコマンドで権限を確認しています。

こんな感じの内容が出ます。html ディレクトリの所有者、所有グループは root となっており、一般ユーザでは接続できないので、内容を更新します。

※ USER は一般ユーザ名

html に一般ユーザで接続し、かつ Apache ユーザでも接続したいのでこのように設定します。Apache ユーザは WordPress の投稿やアップロードなどを行うときのユーザです。

権限は 775 なので rwxrwxr-x です。(r:読込, w:書込, x:実行)

PHPインストール

WordPress は PHP で動いているので、こちらもインストールします。

デフォルト設定だと WordPress でアップロードできるファイルサイズが限られるので、拡張しておきます。

次の 2 行の値を変更します。

インストールしたら Apache を再起動します。

MySQLインストール

データベースとして MySQL を使うので、これもインストールします。

このようにして MySQL を公式サイトからダウンロード、展開します。インストールする MySQL の最新バージョンは公式サイトで確認してください。

ここで次のコマンドを入力すると MariaDB が入ってしまうので気を付けてください。

展開したらダウンロードしてきたファイルはいらないので削除し、MySQL を起動します。

(参考)

MySQLセットアップ

最初にパスワードを変更します。CentOS6 までは初期パスワードが設定されていませんでしたが、CentOS7 からは自動で生成されているらしく、しかも案内が出ないのでログを探ります。

ここでパスワードがわかったら root というアカウント名でログインします。

ここで注意することは、パスワードの強度です。次のようなエラーメッセージが表示されたら強度不足です。

Your password does not satisfy the current policy requirements

CentOS7 から validate_password プラグインが有効になり、一定の強度を満たす必要があります。初期設定では MEDIUM になっていて、次の条件をすべて満たさなければなりません。

  • 8 文字以上
  • 英数字
  • 大文字、小文字
  • 記号

(参考)

MySQL :: MySQL 5.6 リファレンスマニュアル :: 6.1.2.6 パスワード検証プラグイン

phpMyAdminインストール

MySQL が入ったら、ブラウザから編集できるように phpMyAdmin も入れます。

デフォルトではサーバ内からしか繋げられないので、どこからでも接続できるようにします。

しかし、phpMyAdmin は URL が推測されやすいので攻撃対象にもなりやすく、その対策も一緒に行います。

太字になっているディレクトリ以下を編集します。編集場所を間違うと動きません。また、CentOS7 向けなので、CentOS6 は設定内容が異なります。

※ARRANGE は適当な文字列

また、ブラウザ通信を他人に読まれないように SSL で守ります。

セキュリティ証明書がないので安全でないサイトとして表示されますが、所有しているのは自分なので問題ありません。

ファイアウォール設定

CentOS6 までの iptables に代わり、CentOS7 からは firewall が動くようになったようです。

現在適用されているファイアウォール設定は次のように確認できます。

おそらく SSH だけ適用されていて、それ以外はブロックしています。

適用できるフィルタは用意されていて、次のように確認できます。

ここにないものも作成できます。また、ここにある各ファイルの内容も見ることができます。

ここにポート番号やプロトコルなどが書かれています。

ここではブラウザ接続、SSL での接続、MySQL への接続のためにそれぞれのポートの通信をブロックしないようにします。

(参考)

スポンサーリンク

コメント・質問する