タグ: centos

rsync でバックアップ作り

まずは rsync をインストール。

yum install rsync

rsync で必要なオプションは

  • -a … -rlptgoDの各オプションをまとめてつける
  • -u … 更新日付の新しいものだけ
  • -z … 圧縮して送受信
  • –delete … コピー元にないファイルは削除

ぐらいかな?
テストするときは

  • -v … 転送中のファイルを表示
  • -n … コマンドの動作テスト。

をつけるといいかも。
今の rsync コマンドはrshではなくてsshがデフォルトになっているので

-e 'ssh -i /root/.ssh/id_rsa'

オプションは必要無いっぽい。
なので

rsync --delete -auz root@192.168.1.11:/mnt/E/ /mnt/G/

これで192.168.1.11上の E-Drive から自前の G-Drive へ同期をかけることができる。
詳細なオプションは
管理者必見! ネットワーク・コマンド集 – rsyncコマンド:ITpro
とか
rsync Man Page | SS64.com
このあたりで。

NFS で Mac にマウント

LinuxとかMacがクライアントならsambaを使う必要なかった…
というわけで設定。

とりあえず、minimumインストールだともの自体が入っていないのでインストールから。

yum install rpcbind
yum install nfs-utils

CentOS6 だとrpcbindというものが必要になるので同時に入れておく。
CentOS5 の場合は portmap が必要になるらしい。

マウントされる側(nfsサーバ側)で

vi /etc/exports

として中身を書いていく。

/mnt/2nd 192.168.1.1/24(rw,insecure,no_root_squash,sync)
/mnt/3rd 192.168.1.1/24(rw,insecure,no_root_squash,sync)
/mnt/4th 192.168.1.1/24(rw,insecure,no_root_squash,sync)
/mnt/5th 192.168.1.1/24(rw,insecure,no_root_squash,sync)
/mnt/6th 192.168.1.1/24(rw,insecure,no_root_squash,sync)

こんなカンジ。
Macで接続する必要がある場合は、「insecure」を書いておくこと。
exportsのmanページには

secure
このオプションを指定すると、IPPORT_RESERVED (1024) より小さな internet ポートから発したリクエストしか受けつけない。 このオプションはデフォルトで有効になっている。 無効にするには insecure と指定する。

との記載があるが、MacのNFSクライアントはこの制限に合致しないらしい。

書いたら

/etc/init.d/rpcbind start
/etc/init.d/nfslock start
/etc/init.d/nfs start

でnfsサービスを起動する。

# /etc/init.d/nfs restart
NFS デーモンを終了中:                                      [  OK  ]
NFS mountd を終了中:                                       [  OK  ]
NFS サービスを終了中:                                      [  OK  ]
Shutting down RPC idmapd:                                  [  OK  ]
NFS サービスを起動中:                                      [  OK  ]
NFS mountd を起動中:                                       [  OK  ]
NFS デーモンを起動中:                                      [  OK  ]
RPC idmapd を起動中:                                       [  OK  ]

こんなカンジになればOK。
exportsファイルを書き換えただけであれば

exportfs -a

で再読み込みすることができる。

Macでマウントするときは、Finderの「サーバへ接続」で、

nfs://192.168.1.13/mnt/2nd

のように接続すれば良い。

CentOSでマウントするときは、

vi /etc/fstab

の中に

192.168.1.13:/mnt/D/ /mnt/nfs/D/ nfs defaults 0 0
192.168.1.13:/mnt/E/ /mnt/nfs/E/ nfs defaults 0 0
192.168.1.13:/mnt/F/ /mnt/nfs/F/ nfs defaults 0 0

のように書く。
fstabの再読み込みは

fstab -a

で。

静的ルーティング

NICが2枚あったりすると別々のネットワークに接続できたりするのでなかなか便利。
だけど、それぞれのネットワークにどんなIPが広がっているか設定しておかないといけない。
でないと、どっちから受け取ってもデフォルトゲートウェイのある方へお返事を返してしまう(?)ような気がする。
ので、ルーティングを設定。
いまいちよくわかってないけど、とりあえずこれで出来たので良しとしてしまう。

まず、

ifconfig

で、ネットワークの状況を確認。

eth0 Link encap:Ethernet HWaddr 00:11:22:33:44:55
     inet addr:192.168.1.101 Bcast:192.168.1.255 Mask:255.255.255.0
・・・・・・
・・・・・・
eth1 Link encap:Ethernet HWaddr 00:11:22:33:44:56
     inet addr:10.10.10.101 Bcast:10.10.10.255 Mask:255.255.255.0
・・・・・・
・・・・・・
lo   Link encap:Local Loopback
     inet addr:127.0.0.1 Mask:255.0.0.0
・・・・・・
・・・・・・

みたいな。

続けて、

cat /etc/sysconfig/network

で、デフォルトゲートウェイを確認。

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=katzplus.com
GATEWAY=192.168.1.1

みたいに出てくるので、デフォルトゲートウェイはeth0側に設定されてる、はず。
eth0から来たものはそのまま返して問題ないけど、eth1から来たものがeth0に返されても路頭に迷うだけなので、この部分を指定してあげます。

vi /etc/sysconfig/network-scripts/route-eth1

でeth1側に送り返すアドレスを指定します。
ファイルがなければ[route-eth1]という名前で新規ファイル作成になります。
書き方はこんなカンジ。

# second network
10.0.0.0/8 via 10.10.10.1 dev eth1
・・・・・・

記入が終わったら保存。
有効にするにはネットワークの再起動が必要なので

/etc/init.d/network restart

で再起動して、

インターフェース eth0 を終了中:       [ OK ]
インターフェース eth1 を終了中:       [ OK ]
ループバックインターフェースを終了中    [ OK ]
ループバックインターフェイスを呼び込み中 [ OK ]
インターフェース eth0 を活性化中:     [ OK ]
インターフェース eth1 を活性化中:     [ OK ]

で、すべてOKなら再起動成功です。
正常にアクセスできるかクライアント側から確認します。

motd (Message of the Day)

SSHでログインしたときに表示されるあれ。
Message of the Day の略だったらしい。
とりあえず、

vi /etc/motd

で、このテキストファイルを編集すれば表示されるようになる。

miniDLNAのDB再構築

miniDLNAのファイル名を変更したりするとキャッシュを作成し直す必要が出てきたりする。
立ち上げるときに [ -R ] オプションをつけていても定期更新している様子がないので
SQLiteのファイルを削除/再作成してもらうことで現状落ち着いている。

キャッシュファイルは以下の位置にあるのでこれを消去。
confファイルでキャッシュ位置を指定している場合はこの限りではないです。
消去する前にminiDLNAが起動していたら事前に止めておく。

rm /var/cache/minidlna/files.db

消去したらminiDLNAを立ち上げ直す。

virtualhostの追加

まず、

vi /etc/httpd/conf/httpd.conf


265行目辺りの ServerName をコメントアウト。

265 #ServerName www.example.com:80

972行目辺りの NameVirtualHost のコメントアウトを外す。

972 NameVirtualHost *:80

次に、

vi /etc/httpd/conf.d/virtualhost.conf

で、confファイルを作成。
中に

<VirtualHost *:80>
    ServerAdmin master@katzplus.com
    ServerName www.katzplus.com
    DocumentRoot /var/www/html/www
    ErrorLog logs/www_error_log
    CustomLog logs/www_access_log combined
</VirtualHost>
<VirtualHost *:80>
    ServerAdmin master@katzplus.com
    ServerName storage.katzplus.com
    DocumentRoot /var/www/html/storage
    ErrorLog logs/storage_error_log
    CustomLog logs/storage_access_log combined
</VirtualHost>

こんなカンジ?

文字コードをすべてutf8に

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     | 
| character_set_connection | latin1                     | 
| character_set_database   | utf8                       | 
| character_set_filesystem | binary                     | 
| character_set_results    | latin1                     | 
| character_set_server     | utf8                       | 
| character_set_system     | utf8                       | 
| character_sets_dir       | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

このようになっていたりして予期しないところで化けちゃったりなんだったり。

vi /etc/my.cnf

に以下のものを追加します。

[mysqld]
character-set-server = utf8
default-character-set = utf8
init_connect='SET NAMES utf8'

[client]
default-character-set = utf8

変更したらMySQLを再起動。

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       | 
| character_set_connection | utf8                       | 
| character_set_database   | utf8                       | 
| character_set_filesystem | binary                     | 
| character_set_results    | utf8                       | 
| character_set_server     | utf8                       | 
| character_set_system     | utf8                       | 
| character_sets_dir       | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

mysql> show variables like 'collation_%';
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci | 
| collation_database   | utf8_general_ci | 
| collation_server     | utf8_general_ci | 
+----------------------+-----------------+
3 rows in set (0.00 sec)

この形でOK。

Remiリポジトリの追加

※ Remi をインストールするには事前に epel をインストールしておく必要があります。
CentOS6用のRemiリポジトリをインストールするファイルは Les RPM de Remi にあります。
remi-release-6.rpmを使用します。

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

ここで

警告: remi-release-6.rpm: ヘッダ V3 DSA/SHA1 Signature, key ID 00f97f56: NOKEY
エラー: 依存性の欠如:
	epel-release >= 6 は remi-release-6-1.el6.remi.noarch に必要とされています

と言われてしまったので、

yum --enablerepo=epel install epel-release

で、epel-release をインストールして、再度実行。
これでリポジトリファイルとGPG-KEYが作成されます。

Remiリポジトリはデフォルトでは無効に設定されているので、このままで。
使うときは

yum --enablerepo=remi install mysql

みたいなカンジで。

RPMforgeリポジトリの追加

http://pkgs.repoforge.org/rpmforge-release/に RPMforge の RPMファイルがあるので環境に対応したものを持ってくる。
今回は CentOS6 の 64bit なので、rpmforge-release-0.5.3-1.el6.rf.x86_64.rpmになります。
CentOS5 の 32bit なら、rpmforge-release-0.5.3-1.el5.rf.i386.rpmで。

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

これでだけで リポジトリファイルとGPG-KEYが作成される。

このままだと RPMforge がデフォルトで有効になっているので

vi /etc/yum.repos.d/rpmforge.repo

で[rpmforge]の設定値を
enabled = 0
に変更しておく。
[rpmforge-extras]と[rpmforge-testing]はデフォルトでオフになっているので変更しなくて大丈夫。

ここまでやったら

yum --enablerepo=rpmforge update

rpmforge                                                   | 1.9 kB     00:00
rpmforge/primary_db                                        | 2.5 MB     00:02

のようなカンジで読み込まれているか確認する。

epelリポジトリの追加

Extra Packages for Enterprise Linuxという便利なパッケージ集があるので、このリポジトリを追加してみる。

まず、GPG-Keyを/etc/pki/rpm-gpg/にダウンロードする。
EPELのGPG-Keyはrikenのサイトの中にあるのでここから。

cd /etc/pki/rpm-gpg/
wget http://ftp.riken.jp/Linux/fedora/epel/RPM-GPG-KEY-EPEL-6

取り込んだら/etc/yum.repos.d/にEPEL用のファイルを作成する。

vi /etc/yum.repos.d/epel.repo
#Extra Packages for Enterprise Linux (EPEL)
[epel]
name=Extra Packages for Enterprise Linux (EPEL)
baseurl=http://ftp.riken.jp/Linux/fedora/epel/6/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

ファイル名 … *****.repoであれば好きなもので。
[*****] … 適当に。他のリポジトリ名とかぶらなければOK。
name … 適当に。これも他のリポジトリとかぶらなければ大丈夫だと。
baseurl … ダウンロードしに行くところ。「$basearch」は「x86_64」だったり「i386」だったりのアーキテクチャが自動で入る。
HTTPでもFTPでも大丈夫なので

http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/$basearch/

とか

ftp://ftp.kddilabs.jp/Linux/distributions/fedora/epel/6/$basearch/

でもOK。
enabled … 有効/無効。デフォルトは1(有効)。デフォルトで入っているリポジトリ以外のものを有効にしていると予期しないアップデートが入っちゃったりするので自分で追加したものは基本は0(無効)にしておく。
gpgcheck … GPG-Keyをチェックするか否か。デフォルトは0(無効)。せっかく取り込んでいるので1(有効)に設定。
gpgkey … ダウンロードしたGPG-Keyの位置。この指定方法がいけるならHTTPでもいけそう。

gpgkey=http://ftp.riken.jp/Linux/fedora/epel/RPM-GPG-KEY-EPEL-6

でもいけました…。

ファイル作成まで終了したら

yum --enablerepo=epel update

とかで

epel                                                       | 3.7 kB     00:00
epel/primary_db                                            | 3.1 MB     00:02

のようなカンジで読み込まれているか確認する。

もし、何がしかのエラーが出るということであれば、
yum clean metadata
yum clean all
rpm –rebuilddb
あたりを試してみる。

Apache起動時のメッセージ

[root@localhost /]# /etc/rc.d/init.d/httpd start
httpd を起動中: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
                                                           [  OK  ]

こんなカンジで出てくるのが邪魔。
なのでこれを消すために /etc/hosts に、httpd.confに設定しているServerNameを書き足す。
ServerNameは275行目あたりに書いてある。

192.168.1.2 katzplus.com

これで再起動しても出ない?

もう一つできることがあるっぽいのでそれもやっておく。

vi /etc/hosts

で、

127.0.0.1               localhost localhost.localdomain

127.0.0.1               localhost.localdomain localhost

に変更する。

[root@localhost /]# /etc/rc.d/init.d/httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

wgetのproxy越え

[ wget ] も社内からネットに接続するにはプロキシの設定が必要。

vi /etc/wgetrc

で確認すると78行目ぐらいに以下の記述がある。

#http_proxy = http://proxy.yoyodyne.com:18023/

コメントアウトをはずす&改変して終了。