WindowsPCに「VMWare Player」を使用して仮想サーバを構築&CentOS6.5インストール


Windowsパソコンに、VMWare Player を使用して、Linuxサーバーのテスト環境を実装する。

目次
1.VMWare Player のインストール
2.CentOS6.5 のダウンロード
3.CentOS6.5 のインストール
4.TeraTerm から SSH 接続する
5.WinSCP を使用してファイル転送を行う

 

1.VMWare Player のインストール

ダウンロード VMware Player 6.0より、【VMware Player for Windows】をダウンロードして、インストールを行います。

 

2.CentOS6.5 のダウンロード

Download CentOSにアクセスして、画面中央下部の「Older Versions」より【then click here »】をクリックします。

ダウンロードしたいバージョンを選んでダウンロードする。
今回は、64bitのCentOS6.5を入れたいので、6.5の【x86_64】を選択します。
適当なミラーサイトを選んで【CentOS-6.5-x86_64-bin-DVD1.iso】をダウンロードします。

 

3.CentOS6.5 のインストール

1.VMware Player を起動し、【新規仮想マシンの作成】を選択

VMwareにCentOS6.5のインストール

 

2.【インストーラディスクイメージファイル】の【参照】で先ほどダウンロードした【CentOS-6.5-x86_64-bin-DVD1.iso】を選択

VMwareにCentOS6.5のインストール

 

3.アカウント設定

VMwareにCentOS6.5のインストール

ユーザー名とパスワードはログインで使用するので忘れないようにメモる。
今回はローカル環境なので、パスワードは簡単にしています。

 

4.仮想マシン名とディレクトリの設定

VMwareにCentOS6.5のインストール

 

5.ディスク容量の指定

VMwareにCentOS6.5のインストール

 

6.準備完了

VMwareにCentOS6.5のインストール

【完了】を押すとインストールが始まります。

 

7.CentOS起動

VMwareにCentOS6.5のインストール

インストールが終わると、起動するOSの選択画面が表示されるので【CentOS 6.5】を選んで起動。

VMwareにCentOS6.5のインストール

パスワードの入力を求められるので、「3.アカウント設定」で設定したパスワードを入力します。
これでインストールは終わりました。

 

8.仮想サーバのIPアドレスを確認

VMwareにCentOS6.5のインストール

メニューから、【Applications】>【System Tools】>【Terminal】と進み、ターミナルを起動し、下記のコマンドを打ちます。
 ※ 2014/09/17 「ifconfig」は非推奨コマンドのため「ip addr」に訂正

ip addr

VMwareにCentOS6.5のインストール

次に下記のコマンドで、SSH が稼働中か確認します。

/etc/rc.d/init.d/sshd status

VMwareにCentOS6.5のインストール

「running…」と表示されればOK。

次は接続環境を整えます。

 

4.TeraTerm から SSH 接続する

TeraTermを起動し、先ほど確認したIPアドレスを入力します。

VMwareにCentOS6.5のインストール

認証画面では、アカウント設定の際に入力した、ユーザー名とパスワードを入力します。

VMwareにCentOS6.5のインストール

ログインに成功すれば、コマンド入力画面が表示されます。

ただ、毎回パスワードを入力して接続するのは面倒なので、オートログインができるショートカットを作成しておきます。

下記の内容をテキストファイルに保存し、ファイル名は「VMware_CentOS.ttl」などとする。

USER_NAME = 'user'
PASSWD = 'pass'
HOST_NAME = '192.168.240.131'
PORT = '22'

sprintf '%s:%s /ssh /auth=password /user=%s /passwd=%s' HOST_NAME PORT USER_NAME PASSWD
COMMAND = inputstr

connect COMMAND

end

拡張子「ttl」のファイルが TeraTerm に関連付けされていれば、ダブルクリックするだけで、ログインできるようになります。

※関連付けの方法などは、以前書いた記事に載せているのでそちらをどうぞ。
Tera Termマクロ(SSH自動ログイン)

 

5.WinSCP を使用してファイル転送を行う

ソフトのダウンロードはWinSCP :: Downloadより、「Installation package」を選択。
インストールが完了したら、WinSCP を起動します。

VMwareにCentOS6.5のインストール

転送プロトコル:SFTP
ホスト名:IPアドレスを入力
ポート番号:22
ユーザ名:設定したユーザー名
パスワード:設定したパスワード

これらを入力したら【保存】を行い【ログイン】します。

これで作業環境が整いました。


サービスを停止せずにログローテーション(logrotate)を行う


さくらVPSにて行った設定。
サーバー設定に関しては素人の域を出ておらず、今回行った設定についても改善点は多いかとは思いますが、備忘録として残しておきます。
(もしかしたら解釈が間違っているものもあるかもしれません)

logrotate の設定

vim /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
#weekly
daily

# keep 4 weeks worth of backlogs
#rotate 4
rotate 7

logrotate の実行を週1(weekly)から、毎日(daily)に変更。
ログを残すのは4世代分から7世代分に変更。

HTTPデーモンのログローテーション設定

vim /etc/logrotate.d/httpd
/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
#    delaycompress
    postrotate
#        /sbin/service httpd reload > /dev/null 2>/dev/null || true
        /sbin/service httpd graceful > /dev/null 2>/dev/null || true
    endscript
}

「delaycompress」は、設定ファイル(/etc/logrotate.conf)で圧縮をかけない設定になっているためコメントアウト。
圧縮する設定になってないと無視されますが、不必要ならコメントアウトするか削除しておかないと、他の人がみたときに「圧縮処理をかけたいのに設定ファイルを書き換え忘れている」のか「無視されるから残している」のか判断がつき辛いですからね。
で、削除するとログの容量が増えてきて圧縮が必要になった時に戻すのが面倒なので、コメントアウトにしています。

「httpd reload」となっていたところを、「httpd graceful」に変更。
これにより、稼働中のプロセスは終了することなく、再起動の処理が行われる。
logrotate 実行時に稼働中だったプロセスは、そのまま旧ファイルにログが書き込まれる。

PHPのログローテーション設定

vim /etc/logrotate.d/php
/var/log/php/php_errors.log {
    missingok
    notifempty
    delaycompress
    copytruncate
}

先ほどの「httpd」のローテートとは違い、こちらでは「copytruncate」を使用してログファイルのローテーションをさせています。
「copytruncate」では、現在のログファイルをコピーして旧世代のファイルを作成しています。
その後現在のログファイルの中身を消去することで、再起動処理を必要とすることなくログのローテーションを可能としています。
ただしこの方法では、「ファイルコピー ~ 中身の消去」の間に発生したログは、どちらのファイルにも残らないという欠点があります。

PHPのログはそこまでの精度を求めていないのと、「httpd graceful」を行うよりサーバーへの負担が軽いのかな?と思って「copytruncate」にしていますが、もしかしたら両方「httpd graceful」でやった方が良いのかもしれません。
この辺の知識がまだまだ足りてないため、現在はこの設定にしています。
もう少し詳しくなったら、また設定を変えるかもしれません。

ディレクティブ説明

missingok 指定のログファイルが実在しなかったとしてもエラーを出さずに処理続行
notifempty 元のログファイルが空ならばローテーションしない
sharedscripts ローテーションの条件に合致するログが複数あった場合に、prerotate, postrotate のスクリプトを一度だけ実行する
delaycompress 圧縮処理を、その次のローテーションの時まで遅らせる。compress も指定しないと無意味
postrotate

endscript
実際にローテーションが行われた後 (lastaction よりは前) に実行するスクリプト。
copytruncate copy の動作を行った後、内容を消去する。これはログファイルをリロードする術のないプログラムへの対処法のひとつ。

参考サイト
Stray Penguin – Linux Memo (logrotate)

デバッグ

# 全テスト
logrotate -dv /etc/logrotate.conf

# 個別にテスト
logrotate -dv /etc/logrotate.d/httpd

「-d」でデバッグモード、「v」をつけると詳細表示。

実行ログの確認

less /var/lib/logrotate.status