« 2005年08月 | メイン | 2005年10月 »

2005年09月30日

echo の改行抑制

echo "hogehoge" で、自動で改行されるが
これを抑制したい場合は
echo -n "hogehoge" でおっけい

投稿者 muuming : 15:59 | コメント (0)

2005年09月27日

everyday サーバいじり記録

・NTPのコマンドがうごかんなー  コマンド自体はあるが
[root@everyday cron.daily]# /usr/sbin/ntpdate clock.nc.fukuoka-u.ac.jp;hwclock -w 2>&1 > /dev/null
/usr/sbin/ntpdate: error while loading shared libraries: libcap.so.1: cannot open shared object file: No such file or directory

つーことで上書きしてやれ
apt-get install ntp

Preparing... ########################################### [100%]
1:libcap ########################################### [ 50%]
2:ntp 警告: /etc/ntp.conf created as /etc/ntp.conf.rpmnew
警告: /etc/ntp/drift created as /etc/ntp/drift.rpmnew
警告: /etc/ntp/keys created as /etc/ntp/keys.rpmnew
警告: /etc/ntp/step-tickers created as /etc/ntp/step-tickers.rpmnew
警告: /etc/rc.d/init.d/ntpd saved as /etc/rc.d/init.d/ntpd.rpmorig
警告: /etc/sysconfig/ntpd created as /etc/sysconfig/ntpd.rpmnew
########################################### [100%]

何とか動くようになりました。

・apacheのログがローテとしてない!
 /etc/logrotate.d/apache は存在している、が動いてない。
 なんで??とおもったら cronが起動されていない!
 
 余計なcrontabがないことを 
/var/spoll/cron/以下
/etc/crontab
/etc/cron.*以下見回して確認
/etc/init.d/crond start で起動


あうー なんかエラーメールがドンドコとんでくる
/etc/cron.d/以下にも残骸が! webminのモニターリング用クーロンジョブが登録されてたので消し。

/etc/cron.d/sysstat これもコメントアウト

アパッチのログはdaily にてログローテート
ログローテートするか明日確認

ちなみに/etc/logrotate.d/apache は以下のようになっている
--------------------------------------------------------------------------
/usr/local/apache/logs/*log {
daily
missingok
notifempty
sharedscripts
postrotate
/bin/kill -HUP `cat /usr/local/apache/logs/httpd.pid 2>/dev/null` 2> /dev/null || true
/home/backup/dailybackup.sh >/dev/null 2>&1
endscript
}
-------------------------------------------------------------------------------------

解説/usr/local/apache/logs/*logs という名前のファイルをローテートする
daily 毎日やる
missingok なんやったかの覚えてないわ
notifempty なんやったかの覚えてないわ
sharedscripts なんやったかの覚えてないわ

postrotate ~ endscript 間はローテートを行った後に行うスクリプトを記述
/bin/kill -HUP `cat /usr/local/apache/logs/httpd.pid 2>/dev/null` 2> /dev/null || true
これは apacheが今までつかんでいたログファイルを一旦手放して新しいログファイルに記入するためにアパッチに信号を送るためのスクリプト

/home/backup/dailybackup.sh >/dev/null 2>&1
これは自前で用意したアパッチのログをBKサーバに転送するためのスクリプト

要はログをローテートしたついでにBKサーバにログを転送するようになっている。
明日BKサーバに転送されているかな??要確認

・さて、次はコンテンツのバックアップを考えるか・・・

1、まずはバックアップサーバ側にNFSでマウント可能になるよう設定
 バックアップサーバにログイン 裏回線からプライベートIPでSSHにて侵入
 NFSの事よく知らんのだよな・・・・
 とりあえずマウント用ディレクトリつくっとくか
 cd /var/backup
mkdir everyday

 everydayサーバにてマウントさせる場所を作成
 mkdir /backup
 とりあえずマウントさせてみるか
 mount -t nfs バックアップサーバIP:/var/backup/everyday /backup
 mount: バックアップサーバIP:/var/backup/everyday failed, reason given by server: 許可がありません

 ハイ 許可が出てないらしいです。どこでやるんだっけ
 ツー事でバックアップサーバにもどり
 ちょっと調べると
 最初にNFSサーバの設定を行う。NFSの設定は、/etc/exports でうんたらかんたら
 あーこれこれだ
 中に以下を追加
 /var/backup/everyday everydayサーバプライベートIP(rw,sync,no_root_squash)
 

 これでマウントできるだろ
 再びeverydayサーバへ戻る
 mount -t nfs バックアップサーバIP:/var/backup/everyday /backup
 mount: バックアップサーバIP:/var/backup/everyday failed, reason given by server: 許可がありません
 まだ 怒られるよ!

 あーNFSを再起動してないからか
 またまたバックアップサーバにて
 /etc/init.d/nfs restart
 
 コンドこそー
 mount -t nfs バックアップサーバIP:/var/backup/everyday /backup
 
 できますた。バックアップサーバの一部マウント完了!


2、まずコンテンツのバックアップとるじょ
 メール、その他のバックアップはこの鯖はいらね
 バック取るのって /usr/local/apache/htdocs/everyday/以下でええんかな
 他の鯖は週一全体バック 日々差分だけど、こいつは量すくないし
 毎日全体バックとってやれ
 

3、データベースのバックアップ

 rootのcrontabに登録
01 3 * * * sh /usr/local/bin/backup_full2

以下 /usr/local/bin/backup_full2 の中身


-----------------------------------------------------------------------------------------

mount -t nfs バックアップサーバIP:/var/backup/everyday /backup

#本日日付
time=`date +%y%m%d`

#日付名のディレクトリ作成
mkdir /backup/${time}
chmod 777 /backup/${time}
tar czvf /backup/${time}/mycom.tar.gz /usr/local/apache/htdocs/everyday


#データベースバックアップ
su - postgres -c "/var/pgsql/bin/pg_dumpall > /backup/${time}/db_back.out
/var/pgsql/bin/vacuumdb -a --analyze


#90日前のバックは消す
rmdir_name=`date --date '90 days ago' +%y%m%d`
rm -rf /backup/${rmdir_name}


umount /backup

---------------------------------------------------------------------------------------


以上完成

mount -t nfs 10.0.0.3:/var/backup/iljsv01 /backup

投稿者 muuming : 19:02 | コメント (0)

2005年09月20日

subversion

やった事を記録

ちなみにrootでなければ権限無いものもあるので、注意

rpmで入れようと思ったが
mod_dav_svn.so がどーも手に入らない。
なので以下参照してソースでいれました。

http://www.atmarkit.co.jp/flinux/special/webdav03/webdav02a.html
ここ参照ね 本あんま役にたってない・・・


1、バークレイDBのインスコ
http://www.sleepycat.com/ より

db-4.0.14.tar.gz
をダウンロード解凍 #バージョンもちっと新しかったな

tar xzvf db-4.....
cd db-4.
cd build_unix
なんかしらんがこのディレクトリにていつもの呪文 
このbuild_unixでconfigureやらんとエラーなるぽ

../dist/configure
make
make install
終わると次のように言われるので
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/BerkeleyDB.4.3/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,--rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
ちゅうことで
lv /etc/ld.so.conf にて

/usr/local/BerkeleyDB.4.3/lib
を書き加え

そして
/sbin/ldconfig
これで バークレイDBのインスコ完了

2、あぱっちー
configureオプション

モジュール最小の場合
./configure --enable-so=yes --enable-dav=yes \
--with-berkeley-db=/usr/local/BerkeleyDB.4.3

モジュール最大の場合
./configure --enable-module=most\
--enable-shared=max \
--enable-dav=yes \
--with-berkeley-db=/usr/local/BerkeleyDB.4.3

まぁ どっちにしろ
--with-berkeley-db=/usr/local/BerkeleyDB.4.3 と
--enable-dav=yes がありゃいいのかな

今回は最小でやってみようー
make
make installじゃ!

ハァハァできた

3、本家本丸のsubversionのインスコ!


subversion-1.1.4.tar.gz をおとしてきますた
tar xzvf subversion-1.1.4.tar.gz
cd subversion-1.1.4

configure オプション!
./configure --with-apxs=/usr/local/apache2/bin/apxs \
--with-apr=/usr/local/src/httpd-2.0.54/srclib/apr \
--with-apr-util=/usr/local/src/httpd-2.0.54/srclib/apr-util \
--with-berkeley-db=/usr/local/BerkeleyDB.4.3

2行目は/usr/local/src に今回はソースを置いてるので
ま、それぞれインストールするときの状況にあわせてちょ
んで
make
rm -f /usr/local/lib/libsvn*
make install

2行目は初めてのインスコ時はやらんでいいらしい。

これでインスコ関係終了~ 

4、下準備

リポジトリを /var/www/corp/totuya に作るとする!
http://ホスト名:8080/sub/でリポジトリにアクセスさせよかね
4-1、apacheの下準備
conf に以下追加 場所はどこら辺がええんだろ
わからんので最後に追加しとくか

<Location /sub>
DAV svn
SVNPath /var/www/corp/totuya
</Location>

あとは 8080をListenするよにしとこかね
Listen 80 を変更
↓↓↓↓↓↓↓
Listen 8080
アパッチの準備完了

4-2リポジトリの準備
#リポジトリの作成 これは空ディレクトリじゃないとだめらしい。
svnadmin create /var/www/corp/toptuya
chown -R nobody:nobody /var/www/corp/totuya

4-3 あぱち起動してみよう
/usr/local/apache2/bin/apachectl start
起動できたー

4-4、リポジトリにソース?インポート

svn import /var/www/corp/totuyatest http://localhost:8080/sub/

こんなん言われました・・・
svn: ログメッセージを取得するのに外部エディタを使えませんでした。$SVN_EDITOR 環境変数を設定するか、--message (-m) か --file (-F) オプションを用いてみてください


面倒なので以下にコマンドを変更

svn import -m 'yazuya'/var/www/corp/yazuyatest http://localhost:8080/sub/

-m 'totuya' ←コメントね

これでインポート完了


5、テスト環境に即座に反映するために

元のテスト環境を退避
sudo mv /var/www/corp/totuyatest /var/www/corp/totuyatest_org

テスト環境用のディレクトリを新たに作成
sudo mkdir /var/www/corp/totuyatest
sudo chown nobody.nobody /var/www/corp/totuyatest

リポジトリからチェックアウトしてくる
cd /var/www/corp/totuyatest
sudo -u nobody svn checkout http://localhost:8080/sub/ .

これでテスト環境に元のソースが入っているはずなので動作確認
http://192.168.1.175

動作がうまくいっているようであれば、コミットされるたびに動くファイルにスクリプト作成

sudo touch /var/www/corp/totuya/hooks/post-commit
sudo chown nobody.nobody /var/www/corp/totuya/hooks/post-commit
sudo chmod 755 /var/www/corp/totuya/hooks/post-commit

どのファイルがいつ動くかはテンプレートファイルに記載があるので、それを参照の事

とりあえず、post-commit は コミットされた動きます。

中身はこんなかんじ
------------------------------------------------------
cd /var/www/corp/totuyatest/
svn update
-------------------------------------------------------
これだけです。
テスト環境でアップデートかけているだけです。

以上でコミットされると最新状態にテスト環境もなります。

投稿者 muuming : 14:59 | コメント (0)

2005年09月13日

制御文字の作り方

ctrl+v
F1キー
esc

以上で ^[

ctrl+v
ctrl+^
return

これで^M 改行コード

sed 's/^M//g' で改行コード除去可能

投稿者 muuming : 16:27 | コメント (0)

Base64 エンコードのデコード方法について

sharutils-4.2.1-14.i386.rpm を入れ込もう

すると
uuencode uudecode コマンドが使用可能になる。

エンコードされたファイルの一行目に
begin-base64 644 test.tar.gz

一番最後に
====

このファイル名を hoge とすると
uudecode hoge で 同じ階層に644 の権限で test.tar.gz ファイルがデコードされて現れます。


他の方法

perl のモジュール MIME-Base64-3.05.tar.gz をインストール

これを使っていかのようなスクリプトで変換可能~

#!/usr/bin/perl

use MIME::Base64;
$ster = "テスト";
$decodede="GyRCPkMkOyRrN1Y4dyVaJXMbKEIuZ2lm";

$str = decode_base64($decodede);
$encoded_str = encode_base64($ster);

print $encoded_str;
print $str;
 

いまんとここんな感じです。
PHPでもあるでしょねえ

投稿者 muuming : 13:26 | コメント (0)