【お名前.com】WordPressを共用SDサーバーからVPS(KVM)へ乗り換える その5

CentOS + Nginx でのサーバ構築。1から始める初心者向けです。
なお、筆者もばりばりの初心者です。

<その4>では、CentOSのサービスや時刻合わせの設定「root宛のメール転送設定」を行いました。

<その5>では、リポジトリの設定(追加・優先度・アップデート通知)を行います。


今回の内容で参考にさせて頂いたブログ・サイト様です。

CentOSサーバー構築マニュアル
karakaram-blog
リポジトリとは何なのか?

参考となるサイトを見ていると「リポジトリ(またはレポジトリ)」という単語をよく目にします。
聞き慣れない言葉だったので検索して調べてみました。

何らかのデータや情報、プログラムなどが体系だてて保管されている場所。
IT用語辞典 e-Wordsより引用

どうもこう「IT用語」というのは今ひとつ頭に入ってこないのですが、私がイメージする「ソフト」という言葉はこの世界ではあまり使わないようです。「ソフトウェア」は漠然とした表現だからでしょうか。

「ソフト」よりも「パッケージ」と読んでいる事が多いように感じます。

例えば下記のような状況があるとします。

<A>というソフトを使うためには、<B>と<C>という別のソフトも必要で、
さらに<C>を動かすためには<D>も必要である。

つまり「A」を使うためには「ABCD」を全てインストールする必要があるわけですが、こういう状況を<依存関係>と呼びます。「Aを使いたいからAだけをインストールした」では正常に動かないわけです。

多くの場合、単体では動かず「依存関係」にあるソフトが必要になります。

そこで「依存関係にあるソフトをひとまとめにしたもの」が存在し、それを「パッケージ」と呼んでいるのだと思います。

大胆に『吉野家の牛丼』に例えてみると、

ソフト  :牛肉、たまねぎ、ごはん、つゆ
パッケージ:牛丼(並)

といったところでしょうか。「依存関係」を調べて一つ一つインストールしていたのでは、たまねぎを忘れてしまう可能性もあるわけです。安全に牛丼(並)を注文したいところです。

「リポジトリ」とは牛丼や親子丼などの各種パッケージを、新旧バージョン揃えて置いてある「保管庫」や「デパート」のようなものと言っていいと思います。そして、デパートに「高島屋」や「伊勢丹」があるように「リポジトリ」にも多くの種類が存在します。

なぜ追加するのか?

今回使用している「CentOS」の中にも「リポジトリ」は存在するようです。

しかしそこに置いてある「パッケージ」は正常に動く事が確認された若干古い安定バージョンが基本で、PHPやMySQLなどは現行における最新版ではないようです。

調べてみると現時点で私のVPSに入っているPHPは「5.4.30」、MySQLは「5.5.37-35」でした。
WordPressを動かすのですからPHPは「5.5」を使ってみたいものです。

そこで、最新版を使用するために「外部リポジトリ」を追加します。
ソフト・パッケージの最新版、または標準では入っていないものを使用するため
これが「リポジトリ」を追加する第一の理由です。

「最新版や欲しいソフトがあるなら公式からダウンロードして使えばいいのでは?」

当初、このように私は考えていましたがそれにも理由がありました。
「リポジトリ」からインストールすることで「yumコマンドで管理できる」という利点です。

yum」コマンドは「依存関係にあるソフト」を全て自動でインストールしてくれます。
もちろんアンインストールの際にも「依存関係」を調べて適切に削除してくれます。

アンインストールやアップデートを行う際にも「yum」で管理できるのは作業的に大変助かります。自分で「依存関係にあるソフト」を全て調べて、そこから選んで入れたり消したりするのは私にはハードルが高いですし、もし消してしまったものが「他のパッケージとも依存関係にあった」りすると目も当てられません。

出来る限り yum で管理して欲しい
これが第二の理由です。

なお、この先の作業の前提として「外部リポジトリ」を使用した最新版ソフトやパッケージのインストールは安定動作するかどうかわかりませんので、各自の判断で慎重にお願いします。

3つのリポジトリを追加

早速始めましょう。今回は、

■ RPMforge
■ EPEL
■ Remi

という3つのリポジトリを追加します。

散々「yum」を褒め称えた直後なので言いづらいのですが、リポジトリは「yum」ではなく「rpm」というコマンドを使ってインストールします。

お名前.comのテンプレートを使ったため、私の環境では3つのレポジトリがすでに入っている状態でしたが念の為手順を残しておきます。

RPMforge を追加

Index of /rpmforge-release」のリンク先の一番下あたりにある最新版を選びます。

2014年7月現在では、

rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm 20-Mar-2013 16:59 12K RHEL6 and CentOS-6 x86 64bit

これが「64bit用 CentOS6」の最新版でしたので、「rpm」コマンドで追加します。
コマンドにオプションで付けている「-ivh」の内訳は以下の通りです。

・i ……インストール
・v ……詳細な情報の出力
・h ……インストールの進行状況を出力

sudo rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

私の場合

警告: /etc/yum.repos.d/rpmforge.repo は /etc/yum.repos.d/rpmforge.repo.rpmnew として作成されました

と表示されました。

元から「rpmforge.repo」が存在していたので、「rpmforge.repo.rpmnew」として新しいファイルが作成されたようです。これを使うには名前をリネームして「rpmforge.repo」として上書きすればOKですが、現在のバージョンを確認したところ

sudo yum list | grep rpmforge-release
rpmforge-release.x86_64 0.5.3-1.el6.rf installed

最新版が入っていました。というわけで2つは同じファイルなので「rpm.new」は削除しておきました。

EPEL を追加

EPEL」は「Index of /pub/epel/6/x86_64」を参照します。
膨大な数がありますが、小文字の「e」で探すと見つかります。

これも「rpm」コマンドで追加しましょう。

sudo rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
Remi を追加

Remi」は「Index of /enterprise」から。
一番新しいものは「remi-release-7.rpm」ですが、「remi-release-6.rpm」を使用します。

sudo rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm



各リポジトリが正しく追加されたかは以下のコマンドでそれぞれ確認できます。

rpm -q rpmforge-release
rpm -q epel-release
rpm -q remi-release
リポジトリの優先度を決めておく

外部リポジトリ」を追加してあると、ソフトやパッケージをインストールする際に思わぬ問題が起きるかもしれません。インストールしたいソフトやパッケージを複数のリポジトリが「同時に持っていた場合」に、どのリポジトリが使用されるかわからないからです。

これを防止するためにリポジトリに「優先度」を設定し、複数のリポジトリが同じソフト・パッケージを持っている場合は「優先度の高いリポジトリからのみインストール」を行い、それ以外からはインストールしないようにします。

具体的には、可能な限り「CentOS標準リポジトリ」を優先して使い、「CentOS標準リポジトリ」に無い時だけ「RPMforge」か「EPEL」から使用するように設定していきます「<R」mi>だけは普段は無効にしておき、必要な時だけコマンドで使用する設定にします。

yum-priorities をインストール

yum-priorities」とは複数のリポジトリの使用優先順位を指定できるプラグインです。

インストールします。CentOS6の場合、下記コマンドを入力します。

sudo yum -y install yum-plugin-priorities

まず「CentOS標準リポジトリ」の優先度を高めます。下記コマンドを入力します。

sudo vi /etc/yum.repos.d/CentOS-Base.repo

エディタが開いたら[]で囲まれた5つの項目に「priority=1」をそれぞれ追加していきます。
優先度1番という意味です。

私は各項目の一番下に追記しておきました。

[base]
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1 ←追加

[updates]
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1 ←追加

[extras]
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1 ←追加

[centosplus]
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1 ←追加

[contrib]
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1 ←追加

priorityに設定した「1」という数字が優先度です。数字が小さいほうが優先度が高くなります。
何も指定していない初期状態は「99」になっています。


続いて「Remiリポジトリ」の優先度を変更します。
Remiは普段は無効にしておき、必要な時だけ使用するので優先度は標準と同じく1番目に設定します。

sudo vi /etc/yum.repos.d/remi.repo

上記コマンドでエディタを開いたら、下記を変更または追記します。

[remi]
name=Les RPM de remi pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror
enabled=0 ←数字が0になっていることを確認。1なら0に変更して普段は無効にしておきます
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
failovermethod=priority
priority=1 ←追加

[remi-test]
name=Les RPM de remi en test pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/test/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/test/mirror
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
priority=1 ←追加

「RPMforge」と「EPEL」には優先度を設定しません。(どちらも初期の99のままにしておく)
有効になっているかどうかの確認だけ行っておきます。

sudo vi /etc/yum.repos.d/rpmforge.repo
[rpmforge]
name = RHEL $releasever - RPMforge.net - dag
baseurl = http://apt.sw.be/redhat/el6/en/$basearch/rpmforge
mirrorlist = http://mirrorlist.repoforge.org/el6/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled = 1 ←ここが1になっていることを確認
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1

sudo vi /etc/yum.repos.d/epel.repo
[epel]
name=EPEL RPM Repository for Red Hat Enterprise Linux
baseurl=http://ftp.riken.jp/Linux/fedora/epel/6/$basearch/
gpgcheck=0
enabled=1 ←ここが1になっていることを確認

「EPEL」の内容だけ、他の2つに比べて「gpgcheck」が「0」になっています。
なぜだか不明なのですが「/etc/pki/rpm-gpg」内に「RPM-GPG-KEY-EPEL-6」は存在しているので、

[epel]
name=EPEL RPM Repository for Red Hat Enterprise Linux
baseurl=http://ftp.riken.jp/Linux/fedora/epel/6/$basearch/
gpgcheck=1 ←ここを1に変更
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 ←これを追記
enabled=1

と変更しておきました。
勝手に変えていいのかどうかは不明です。

ここまででやったことをおさらい

1. 「CentOS標準リポジトリ」を最優先で使うために優先度を1番にした
2. 「Remi」は普段無効にしておき、使用するだけ優先度1番で使用できる状態にした
3. 「RPMforge」と「EPEL」は優先度が初期状態の99番目のまま有効かどうかの確認をした

仮に「hoge」という架空のソフトをインストールしたいとします。

sudo yum install hoge

この時の流れは、

まず「CentOS標準レポジトリ」から「hoge」を探し、有る場合はインストール → 終了

無い場合は「RPMforge」と「EPEL」の中から「hoge」を探す

どちらかにのみ「hoge」が有れば、有る方からインストール → 終了

どちらにも「hoge」が有った場合はバージョンが新しいものが優先される → 終了

このようになっています。

また、ここに「Remi」も加える場合は下記のコマンドを打ちます。

sudo yum --enablerepo=remi install hoge

「Remi も含めて探してね」という意味のオプション

--enablerepo=remi

が加わっています。

この場合、

「CentOS標準レポジトリ」と「Remi」からまず「hoge」を探す

両方に「hoge」があった場合、最新版(ほぼ Remi になります)が優先される → 終了

どちらにも無ければ「RPMforge」と「EPEL」から「hoge」を探す

どちらかにのみ「hoge」が有れば、有る方からインストール → 終了

どちらにも「hoge」が有った場合、バージョンが新しいものが優先される → 終了

このようになります。


リポジトリを追加したらひとまず「yum」に関するキャッシュとデータベースをクリアにすると良いそうなのでやっておきます。

sudo yum clean all
yum-cron によるアップデート通知

続いて、パッケージの更新を自動通知してもらうために「yum-cron」をインストールします。
また、更新があった場合はダウンロードまでは自動でやってもらうように設定してみました。
このあたりは好みで色々と変えられます。

sudo yum install yum-cron

上記コマンドを実行すると「yum-cron」と依存関係にある「yum-downloadonly」も同時にインストールされます。これが「yum」で管理する上で嬉しい、便利な機能です。

続いて設定ファイルを編集します。

sudo vi /etc/sysconfig/yum-cron
# Pass any given paramter to yum, as run in all the scripts invoked
# by this package.  Be aware that this is global, and yum is invoked in
# several modes by these scripts for which your own parameter might not
# be appropriate
YUM_PARAMETER='--enablerepo=remi' ← 特定のリポジトリを含めたり外したりできます

# Don't install, just check (valid: yes|no)
CHECK_ONLY=yes ← 自動更新は行わず、更新があるかどうかのチェックだけする

# Check to see if you can reach the repos before updating (valid: yes|no)
CHECK_FIRST=no

# Don't install, just check and download (valid: yes|no)
# Implies CHECK_ONLY=yes (gotta check first to see what to download)
DOWNLOAD_ONLY=yes ← 自動更新までは行わず、ダウンロードだけはしておく

~ 略 ~

# by default MAILTO is unset, so crond mails the output by itself
# example:  MAILTO=root
MAILTO=root ←通知先のアドレス、root宛にする場合はrootと記入します

5行目 : 「remi」を普段は無効にしているので、更新チェックの際は含めるようにしています。
8行目 : ここは「yes」にしておきましょう。
15行目 : ここを「no」にすると通知のみが来ます。正直言って「no」がおすすめです。

通知の宛先は「root」としておき、「root宛のメール」を普段から確認しやすいメールアドレスへ転送するように設定しておきます。(その4参照)


続いて、「yum-cron」がサービスとして自動起動するようにしておきます。

sudo chkconfig yum-cron on

自動起動になっているかを確認します。2~5が「ON」になっていればOKです。

sudo chkconfig --list yum-cron
yum-cron 0:off 1:off 2:on 3:on 4:on 5:on 6:off

問題が無ければ、サービスをスタートさせます。

sudo /etc/init.d/yum-cron start
夜間 yum 更新の有効化中:                                   [  OK  ]

これで夜間に「yum-cron」が更新をチェックし、更新があればダウンロードまで済ませつつメールで通知してくれます。手動での更新確認、または更新するには以下のコマンドを使用します。

更新の確認。「yum-cron」が通知してくれるのでまず使うことはありません。

sudo yum check-update
sudo yum --enablerepo=remi check-update ← 普段無効にしてある「remi」も含める場合

実際に更新。これはしょっちゅう使います。あらかじめダウンロードしてあればすぐにインストールが始まり、そうでない場合はダウンロード → インストールします。

sudo yum update
sudo yum --enablerepo=remi update ← 普段無効にしてある「remi」も含める場合

「yum」コマンドを使う際に実行していいかを尋ねられ「y」を押す場面が多いのですが、はじめから「y」を押すことがわかりきっている場合にはオプションとして「-y」を付けておけば勝手に進行してくれます。

sudo yum -y update
sudo yum -y --enablerepo=remi update ← 普段無効にしてある「remi」も含める場合

今回はここまでです。


<その6>では「VSFTPD」と「phpMyAdmin」を導入します。

その6 … VSFTPDの導入、phpMyAdminの導入へ

コメント

 DISQUSコメントシステムとは?
DISQUSコメントシステムFacebook Twitter Google などのアカウントを使用してコメントを残すことができます。
また、それらを使いたくない場合でも メールアドレスのみ でコメントが可能で、その際のアドレスはもちろん非公開です。
YouTubeTweet などはURLを貼ると自動で埋め込み表示されますし、画像をアップすることもできます。
お気軽にコメント頂けると嬉しいです。

New Post



Random


CLOSE