前回から引き続いて(CentOS7を使った)サーバの設定を続けます。VPSの場合やCentOS7の場合はこういうテクニックも必要になる、という意味で変わった設定をしていますので、参考にしてみたい人は参考にしてみるとよいと思います。
07.ディスククォータを設定する
この作業は自宅サーバではまず必要ではない作業です。なぜなら自宅サーバで運営していてストレージ容量が足りなくなる、なんてことはまずあり得ない上に必要であればディスクを物理的に追加すればよい話だからです。これは「通常1パーティションしか割り当てが不可能」「ストレージ容量の拡張がほぼ不可能」「ストレージ容量が原因でのサーバ停止を避ける」という条件がある場合に設定するとよいと思います。実はこれがWindowModePatchの情報を集めようと思ってwikiを作ったはいいけれども公開できなかった大きな理由の一つです。
といっても、ディスククォータをパーティションレベルで割り当てるのは設定が意外と面倒なので単純な発想で「ループバックデバイスを使ってディスクイメージに容量制限をしたい領域を書き込ませる」というのがよいのでは、と思います。何かあったときにはファイルを取り出してディスクイメージを削除すれば簡単に元に戻せますし。
というわけでやってみましょう。私の場合は特にデータベースを扱う領域を別領域のように扱いたいので、その領域を作成します。例えばVPSだと大きくても50GBとか100GBのストレージしか持たない、なんてことは多いので、その中でも20GBをデータベースの領域として割り振ってみましょう。データベースはWordPressを使う関係でMariaDBを使う前提だとすると、/var/lib/mysqlをディスクイメージ領域にしてみるためにはこんなことをします。/diskimgにディスクイメージを置くとするとこんな感じになります。書き方はrootの状態での書き方になっています。必要であればsudoをつけてください。
# mkdir /diskimg # dd if=/dev/zero of=/diskimg/database.img bs=1M count=20480 # mkfs.ext4 -m 0 /diskimg/database.img # tune2fs -c 0 ./diskimg/database.img
ちなみに空ファイルの作成はddでやっていますが、こちらはtruncateから作ってもあまり変わりありません。mkfs.ext4を行った時点でスパースファイルになっていましたので。また、今回の場合はファイルシステムをext4で作っていますがこれは適当な物を選んでください。この場合のext4の問題点はオプションをつけなければ勝手にroot用の領域がとられてしまうこと、マウントの回数によってはディスクチェックがかかることですが、今回は内部的なのでそれはいらないということで両方ともカットしています。最後に/etc/fstabを書き換えて終わりですね。こんな行を追加します。
/diskimg/database.img /var/lib/mysql ext4 defaults 0 0
ほかにも必要な領域があるのであれば同じようにすればクォータシステムを(ある意味)簡単に使えます。本物のクォータと異なるところは対象の領域の容量が少なくなっても警告メールが来ないことでしょうか…。
08. 最新のパッケージを導入するために、現在入っている不必要なパッケージをすべて削除する
以前のサーバとできるだけ同じことができることが望ましいので、そのために次の物をセットアップします。
- Webサーバ(Apache、php-fpm、nginx)
- データベースサーバ(MariaDB)
- FTPサーバ(vsftpd)
- メールサーバ(postfix、dovecot)
この中で問題になるのがMariaDBです。こちらはCentOS7標準のリポジトリに入っているのですがこれのバージョンが5.5系統となっており、最新のMariaDBを使おうとするとライブラリが衝突する、ということであらかじめ削除しておく必要があります。
# yum erase mariadb-lib
ただ、面白いことに、これを行うとCentOS7に入っているpostfixがまとめて削除対象となりますので、データベースサーバをセットアップする前にメールサーバをセットアップしてしまうと人によっては泣きたくなるかも。サーバを構築する前に何を入れるのか確認をしておきましょう、ということですか…。
09. 最新のパッケージを導入するためのリポジトリを設定する
特にWebサーバに関わる物はある程度新しいパッケージを使いたかった、というかPHPを5.4系統から7系統まで引き上げることが今回の目的の一つなので必要なリポジトリを動かせるようにする必要があります。まず、リポジトリを導入する前に必要なライブラリおよびEPELリポジトリを使えるようにしておきましょう。
yum install yum-utils # yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
そして、今回使うリポジトリとインストール手順は以下のようになります。
・IUS(Apache)
# yum install https://centos7.iuscommunity.org/ius-release.rpm
・Remi(php-fpm)
# yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
・Nginx(nginx)
以下を/etc/yum.repo.d/にnginx.repoとして作成する
[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key
・MariaDB(MariaDB)
# curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
インストール方法が多彩なので何でどれをやるのか確認しておくとよいと思います。vsftpとpostfixとdovecotについてはそこまでバージョンにこだわっているわけではないのでCentOS7標準のリポジトリからとってきた物で問題ないと思います。
10.アンチウィルスを導入する
これはできれば導入をしておきましょう。CentOS7で簡単にアンチウィルスを設定するなら多分ClamAVが設定資料も多くこの後のメールサーバとの連動もやりやすいのではないでしょうか。ほかに設定してみたい物があるならそれでもよいと思います。全くないのは外部に公開するサーバとしては怖すぎる、といったところですね。
以降は個別のセットアップ作業に入る
WordPressが使えるようになるまでにちょっと手順が必要なのがVPSなどの大変なところ。今回は移転が目的なので各種設定やチューニングは前のサーバのものをほとんど引き継ぎげるのがありがたいところ。バージョンアップしている分、設定が変わっていたりするのでその部分を合わせていくのが大変でしたが。