linux でシステムコールをトレースするには、straceを用いるけど
FreeBSD では、trussを用いるらしい。
truss COMMAND
2012年10月30日火曜日
2012年10月29日月曜日
[FreeBSD] ログについて
サーバーを構築したらすることそれは証拠を残す事。
今回は、カーネルからのログを例にまとめてみる。
まずは、何のログをどういう重要度のログを記録するか?
[1] kernelのログで重要度notice以上のログを取る (syslogの設定)
まず、ログファイルを作成しておく。(勿論以下は、rootで)
touch /var/log/kernel.log
次に/etc/syslog.confに以下を追加
kernel.notice /var/log/kernel.log
noticeの後は、タブでセパレートするのがポイント。設定を反映させるために下記コマンドを実行。
/etc/rc.d/syslogd
[2] ログローテーション
Linuxの場合は、logrotateだけど FreeBSDの場合は、newsyslog
設定ファイルは、「/etc/newsyslog.conf」書き方の詳しい説明は「man newsyslog.conf」に載っている。ここでは、以下を追加。
/var/log/kernel.log 644 5 100 * JC
この意味は、ログファイルPATH Permission ローテーション回数 100K Byteになったらローテートする。JCは、Jがbzip2で圧縮。 Cは、ファイルが無い場合は作成、を意味する。
そして、設定を反映させるために
newsyslogを実行
[おまけ] apacheのログをローテート
「/etc/newsyslog.conf」に以下を追加
/var/log/httpd-access.log 644 4 * $W5D18 JC /va/run/httpd.pid
/var/log/httpd-error.log 644 4 * $W5D18 JC /va/run/httpd.pid
「* $W5D18」*の意味は、ログファイルのサイズを指定しないという意味。$5D18の意味は、毎週金曜日の18:00にローテートするという意味。
この設定の場合1ヶ月でログファイルが消えていく事になる。
今回は、カーネルからのログを例にまとめてみる。
まずは、何のログをどういう重要度のログを記録するか?
[1] kernelのログで重要度notice以上のログを取る (syslogの設定)
まず、ログファイルを作成しておく。(勿論以下は、rootで)
touch /var/log/kernel.log
次に/etc/syslog.confに以下を追加
kernel.notice /var/log/kernel.log
noticeの後は、タブでセパレートするのがポイント。設定を反映させるために下記コマンドを実行。
/etc/rc.d/syslogd
[2] ログローテーション
Linuxの場合は、logrotateだけど FreeBSDの場合は、newsyslog
設定ファイルは、「/etc/newsyslog.conf」書き方の詳しい説明は「man newsyslog.conf」に載っている。ここでは、以下を追加。
/var/log/kernel.log 644 5 100 * JC
この意味は、ログファイルPATH Permission ローテーション回数 100K Byteになったらローテートする。JCは、Jがbzip2で圧縮。 Cは、ファイルが無い場合は作成、を意味する。
そして、設定を反映させるために
newsyslogを実行
[おまけ] apacheのログをローテート
「/etc/newsyslog.conf」に以下を追加
/var/log/httpd-access.log 644 4 * $W5D18 JC /va/run/httpd.pid
/var/log/httpd-error.log 644 4 * $W5D18 JC /va/run/httpd.pid
「* $W5D18」*の意味は、ログファイルのサイズを指定しないという意味。$5D18の意味は、毎週金曜日の18:00にローテートするという意味。
この設定の場合1ヶ月でログファイルが消えていく事になる。
[dialog] FreeBSD 9.0 のインストーラで使われてるのを試してみた
FreeBSD 9.0 のインストーラに採用されている。Dialogコマンドを試してみた。
dialog --title 'Hello Title' --msgbox 'Hello World' 5 20
ここで、5,20はそれぞれ、ダイアログボックスの縦と横のサイズ。
dialog --infobox 'Please wait' 10 30;sleep 4
sleep無しだとすぐプロンプトに戻る。
次は、シェルスクリプト(c shell)で
set NAME=`dialog --stdout --inputbox 'Enter your name:' 8 40`
echo "your inpted name is $NAME"
入力値の出力先を標準出力に変更しています(デフォルトは、標準エラー出力)。
次は、yes/no の選択
1 dialog --title "title" --yesno "Are you ready?" 6 25
2 switch($status)
3 case '0':
4 echo "Let's go !!"
5 breaksw
6 case '1':
7 echo "Hurry up !!"
8 breaksw
9 default:
10 echo "Invalid return val."
11 breaksw
12 endsw
次は、先ほどのシェルスクリプトを閲覧する
dialog --textbox main.csh 10 60
スクロールも可能になっている。j/kのvimのキーバインドでもスクロールできる。
次は、複数のリストから一つを選択。
1 set COLOR=`dialog --menu --stdout "Choose one:" 10 30 2 1 red 2 green 3 blue ` # 10-> ボックスの高さ 30-> ボックスの幅 2 -> メニューの高さ
2 switch ($COLOR)
3 case 1:
4 echo "You choosed red"
5 breaksw
6 case 2:
7 echo "You choosed green"
8 breaksw
9 case 3:
10 echo "You choosed blue"
11 breaksw
12 endsw
項目数よりメニューの高さが小さいとスクロールできるようになります。
次は、portsのコンパイルでおなじみ複数の項目を選択する。checklist スペースで項目の選択/非選択をスイッチします。
1 set LIST=`dialog --stdout --separate-output --checklist "test" 10 40 3 \
2 1 first item \
3 2 secound item \
4 3 third item`
5 foreach i ($LIST)
6 echo "Proccessing for $i"
7 end
次は、複数の項目から1つの項目を選択する。RadioBox
1 set ITEM=`dialog --stdout --backtitle "Your OS" --radiolist "Select your OS. " 10 40 4 1 Windows off 2 Mac on 3 Linux off 4 FreeBSD off`
2 echo "Your OS is $ITEM"
参考サイト: http://www.linuxjournal.com/article/2807?page=0,0
dialog --title 'Hello Title' --msgbox 'Hello World' 5 20
ここで、5,20はそれぞれ、ダイアログボックスの縦と横のサイズ。
dialog --infobox 'Please wait' 10 30;sleep 4
sleep無しだとすぐプロンプトに戻る。
次は、シェルスクリプト(c shell)で
set NAME=`dialog --stdout --inputbox 'Enter your name:' 8 40`
echo "your inpted name is $NAME"
入力値の出力先を標準出力に変更しています(デフォルトは、標準エラー出力)。
次は、yes/no の選択
1 dialog --title "title" --yesno "Are you ready?" 6 25
2 switch($status)
3 case '0':
4 echo "Let's go !!"
5 breaksw
6 case '1':
7 echo "Hurry up !!"
8 breaksw
9 default:
10 echo "Invalid return val."
11 breaksw
12 endsw
次は、先ほどのシェルスクリプトを閲覧する
dialog --textbox main.csh 10 60
スクロールも可能になっている。j/kのvimのキーバインドでもスクロールできる。
次は、複数のリストから一つを選択。
1 set COLOR=`dialog --menu --stdout "Choose one:" 10 30 2 1 red 2 green 3 blue ` # 10-> ボックスの高さ 30-> ボックスの幅 2 -> メニューの高さ
2 switch ($COLOR)
3 case 1:
4 echo "You choosed red"
5 breaksw
6 case 2:
7 echo "You choosed green"
8 breaksw
9 case 3:
10 echo "You choosed blue"
11 breaksw
12 endsw
項目数よりメニューの高さが小さいとスクロールできるようになります。
次は、portsのコンパイルでおなじみ複数の項目を選択する。checklist スペースで項目の選択/非選択をスイッチします。
1 set LIST=`dialog --stdout --separate-output --checklist "test" 10 40 3 \
2 1 first item \
3 2 secound item \
4 3 third item`
5 foreach i ($LIST)
6 echo "Proccessing for $i"
7 end
次は、複数の項目から1つの項目を選択する。RadioBox
1 set ITEM=`dialog --stdout --backtitle "Your OS" --radiolist "Select your OS. " 10 40 4 1 Windows off 2 Mac on 3 Linux off 4 FreeBSD off`
2 echo "Your OS is $ITEM"
参考サイト: http://www.linuxjournal.com/article/2807?page=0,0
2012年10月22日月曜日
[mediawiki] インストール
freebsd + apache + php5 + mySQL
に mediawikiをインストールした。
mediawiki 本家サイトから本体をDLそして、展開
wget http://download.wikimedia.org/mediawiki/1.19/mediawiki-1.19.2.tar.gz
tar xvf mediawiki-1.19.2.tar.gz
そして、apacheの公開ディレクトリに適当に配置して所有権をapacheを走らせるユーザーに変える。その後、http://your-host/mediawiki/mw-config/index.php
にアクセス。
Fatal error: Call to undefined function xml_parser_create() in/usr/local/www/apache22/data/wiki/includes/installer/PhpBugTests.php on line 37
と言われた。「php-xml」モジュールが入っていなかったためで、portsで「php5-xml」をインストール。
次に、データベースと、mediawiki用DBユーザーの作成。(password等は適宜変更)
あとは、mediawiki の質問にいくつか答えれば、インストール完了。
に mediawikiをインストールした。
mediawiki 本家サイトから本体をDLそして、展開
wget http://download.wikimedia.org/mediawiki/1.19/mediawiki-1.19.2.tar.gz
tar xvf mediawiki-1.19.2.tar.gz
そして、apacheの公開ディレクトリに適当に配置して所有権をapacheを走らせるユーザーに変える。その後、http://your-host/mediawiki/mw-config/index.php
にアクセス。
Fatal error: Call to undefined function xml_parser_create() in/usr/local/www/apache22/data/wiki/includes/installer/PhpBugTests.php on line 37
と言われた。「php-xml」モジュールが入っていなかったためで、portsで「php5-xml」をインストール。
次に、データベースと、mediawiki用DBユーザーの作成。(password等は適宜変更)
reate database wikidb; grant create, select, insert, update, delete, alter, lock tables, index on wikidb.* to 'wikiuser'@'localhost' identified by 'password'; flush privileges;
あとは、mediawiki の質問にいくつか答えれば、インストール完了。
2012年10月14日日曜日
2012年10月13日土曜日
[redmine] INSTALL on FreeBSD
Ubuntu にインストールしようとしてweb Serverとしてapacheを使う当たりで断念したredmine FreeBSDでインストールを試みた所成功したみたいなのでメモ
当方環境:FreeBSD 9.0-RELEASE
portsでインストールされたredmine : 1.3.1.stable
インストールは主に下記ステップで行っていく。
[1] redmine のインストール
[2] DBの用意と接続設定 (MySQL)
[3]DB テーブル等作成
[4]軽量サーバーでテスト
[5] apache上で稼働させる
それでは、スタート
[1] redmine のインストール
cd /usr/ports/www/redmine
make config-recursive
configでは、以下を有効にした
use animation progree bar
LDAP
そして、
make install
これでうまく行けば、/usr/local/www/redmine/ にインストールされている。
cd /usr/local/www/redmine/
[2] DBの用意と接続設定 (MySQL)
以下でDB とredmine用のアカウントを作成する。パスワードは適宜変更する。
そして、BD接続用の設定。サンプルファイルをコピーする。
cd config
cp database.yml.example database.yml
そして、先ほど作成したDBとアカウントの情報に適宜変更する。password は#で伏せてます。
production:
adapter: mysql
database: redmine
host: localhost
username: redmine
password: ######
encoding: utf8
development:
adapter: mysql
database: redmine_development
host: localhost
username: redmine
password: ######
encoding: utf8
[3]DB テーブル等作成
セッションの暗号化の為に下記コマンドを実行
[redmine install directory]/app に移動して初期テーブルおよびレコードを作成のために下記コマンドを実行
cd app
[4]軽量サーバーでテスト
ここで、本家wikiでは、一時ディレクトリ等の作成を行っているが、FreeBSDインストールの場合インストール時に作成されているのでスキップして軽量サーバーでここまでがうまく行っているかどうかテスト。
そして、サーバーの3000番ポートにアクセスして表示されればおk。
[5] apache上で稼働させる
passengerを試用してRuby on Rails アプリケーションをapache上で稼働させます。
まず、passengerのインストール
gem install passenger
そして、モジュールのコンパイル。この段階の最後の方でapacheの設定追加事項のサンプルが表示されるので適宜コピーしておきたい。
passenger-install-apache2-module
無事完了したら、apacheの設定ファイル。/usr/local/etc/apache22/httpd.conf と同/extra/http-vhosts.conf にそれぞれ以下を追加する。
-/usr/local/etc/apache22/httpd.conf -
## passenger cofiguration
PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.17
PassengerRuby /usr/local/bin/ruby18
PassengerDefaultUser www
RailsBaseURI /redmine
-/usr/local/etc/apache22/extra/http-vhosts.conf-
<VirtualHost*:80>
PassengerAppRoot /usr/local/www/redmine
RailsBaseURI /redmine
RailsEnv production
</VirtualHost>
そして、apacheの公開ディレクトリからredmineのpublicディレクトリにシンボリックリンクを張る
cd /usr/local/www/apache22/data/
ln -s /usr/local/www/redmine/public/ redmine
最後に設定を反映させるためにapacheの再起動
/usr/local/etc/rc.d/apache22 restart
そして、http://server-address/redmine にアクセスして表示されれば無事終了!
[参考サイト]
本家redmine wiki http://www.redmine.org/projects/redmine/wiki/RedmineInstall
当方環境:FreeBSD 9.0-RELEASE
portsでインストールされたredmine : 1.3.1.stable
インストールは主に下記ステップで行っていく。
[1] redmine のインストール
[2] DBの用意と接続設定 (MySQL)
[3]DB テーブル等作成
[4]軽量サーバーでテスト
[5] apache上で稼働させる
それでは、スタート
[1] redmine のインストール
cd /usr/ports/www/redmine
make config-recursive
configでは、以下を有効にした
use animation progree bar
LDAP
そして、
make install
これでうまく行けば、/usr/local/www/redmine/ にインストールされている。
cd /usr/local/www/redmine/
[2] DBの用意と接続設定 (MySQL)
以下でDB とredmine用のアカウントを作成する。パスワードは適宜変更する。
create database redmine character set utf8; create user 'redmine'@'localhost' identified by 'my_password'; grant all privileges on redmine.* to 'redmine'@'localhost';
そして、BD接続用の設定。サンプルファイルをコピーする。
cd config
cp database.yml.example database.yml
そして、先ほど作成したDBとアカウントの情報に適宜変更する。password は#で伏せてます。
production:
adapter: mysql
database: redmine
host: localhost
username: redmine
password: ######
encoding: utf8
development:
adapter: mysql
database: redmine_development
host: localhost
username: redmine
password: ######
encoding: utf8
[3]DB テーブル等作成
セッションの暗号化の為に下記コマンドを実行
rake generate_session_store
[redmine install directory]/app に移動して初期テーブルおよびレコードを作成のために下記コマンドを実行
cd app
RAILS_ENV=production rake db:migrate
RAILS_ENV=production rake redmine:load_default_data
[4]軽量サーバーでテスト
ここで、本家wikiでは、一時ディレクトリ等の作成を行っているが、FreeBSDインストールの場合インストール時に作成されているのでスキップして軽量サーバーでここまでがうまく行っているかどうかテスト。
ruby script/server webrick -e production
そして、サーバーの3000番ポートにアクセスして表示されればおk。
[5] apache上で稼働させる
passengerを試用してRuby on Rails アプリケーションをapache上で稼働させます。
まず、passengerのインストール
gem install passenger
そして、モジュールのコンパイル。この段階の最後の方でapacheの設定追加事項のサンプルが表示されるので適宜コピーしておきたい。
passenger-install-apache2-module
無事完了したら、apacheの設定ファイル。/usr/local/etc/apache22/httpd.conf と同/extra/http-vhosts.conf にそれぞれ以下を追加する。
-/usr/local/etc/apache22/httpd.conf -
## passenger cofiguration
PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.17
PassengerRuby /usr/local/bin/ruby18
PassengerDefaultUser www
RailsBaseURI /redmine
-/usr/local/etc/apache22/extra/http-vhosts.conf-
<VirtualHost*:80>
PassengerAppRoot /usr/local/www/redmine
RailsBaseURI /redmine
RailsEnv production
</VirtualHost>
そして、apacheの公開ディレクトリからredmineのpublicディレクトリにシンボリックリンクを張る
cd /usr/local/www/apache22/data/
ln -s /usr/local/www/redmine/public/ redmine
最後に設定を反映させるためにapacheの再起動
/usr/local/etc/rc.d/apache22 restart
そして、http://server-address/redmine にアクセスして表示されれば無事終了!
[参考サイト]
本家redmine wiki http://www.redmine.org/projects/redmine/wiki/RedmineInstall
2012年10月2日火曜日
bzip2 と xz
この両者の圧縮形式について既出のサイトもあるけど自ら確かめるという意味で
を圧縮->伸長してみた。。。
結果から言うとbzip2は、比較的圧縮が速く、伸長が比較的遅い。xzはその逆。
両者ともtimeコマンドの結果。
[圧縮]
zip2 : 0.015u 0.001s 0:00.01 100.0% 0+0k 2+6io 21pf+0w
xz : 0.027u 0.006s 0:00.03 66.6% 0+0k 0+0io 0pf+0w
[伸長]
bzip2 : 0.007u 0.002s 0:00.01 0.0% 0+0k 0+9io 9pf+0w
xz : 0.001u 0.001s 0:00.00 0.0% 0+0k 1+4io 2pf+0w
あとは、メモ マニュアリーにtarで丸めてxzで圧縮。
tar cvf - testData | xz > testData.txz
マニュアリーに伸長してtar戻す
xzcat testData.txz | tar xvf -
を圧縮->伸長してみた。。。
結果から言うとbzip2は、比較的圧縮が速く、伸長が比較的遅い。xzはその逆。
両者ともtimeコマンドの結果。
[圧縮]
zip2 : 0.015u 0.001s 0:00.01 100.0% 0+0k 2+6io 21pf+0w
xz : 0.027u 0.006s 0:00.03 66.6% 0+0k 0+0io 0pf+0w
[伸長]
bzip2 : 0.007u 0.002s 0:00.01 0.0% 0+0k 0+9io 9pf+0w
xz : 0.001u 0.001s 0:00.00 0.0% 0+0k 1+4io 2pf+0w
あとは、メモ マニュアリーにtarで丸めてxzで圧縮。
tar cvf - testData | xz > testData.txz
マニュアリーに伸長してtar戻す
xzcat testData.txz | tar xvf -
[Mac] gitとp4mergeのインストール
port search git
で検索
sudo port git-core
これでgitのインストール完了。
p4mergeのインストール
http://www.perforce.com/downloads/complete_list
より自分の環境のバイナリをDL
Macの場合は、dmgファイルをDLしてマウント。
p4.merg.appを/Applications/に入れる。
そして、gitから起動用のシェルスクリプトを2つ作成。
[p4merge]
#!/bin/sh
P4MERGE=/Applications/p4merge.app/Contents/MacOS/p4merge
${P4MERGE} $*
[p4diff]
#!/bin/sh
P4MERGE=/Applications/p4merge.app/Contents/MacOS/p4merge
[$# -eq 7 ]&& ${P4MERGE} "$2" "$5"
実行権限を与えてPATHを通したディレクトリに置いておく。
そして、.gitconfigでmergtoolの設定。
[~/.gitconfig]
merge]
keepBackup = false;
tool = p4merge
[mergetool "p4merge"]
cmd = p4merge "$BASE" "$LOCAL" "$REMOTE" "$MERGED"
keepTemporaries = false
trustExitCode = false
keppBackup = false
[diff]
external = p4diff
以上でgitを使った快適環境の完成
で検索
sudo port git-core
これでgitのインストール完了。
p4mergeのインストール
http://www.perforce.com/downloads/complete_list
より自分の環境のバイナリをDL
Macの場合は、dmgファイルをDLしてマウント。
p4.merg.appを/Applications/に入れる。
そして、gitから起動用のシェルスクリプトを2つ作成。
[p4merge]
#!/bin/sh
P4MERGE=/Applications/p4merge.app/Contents/MacOS/p4merge
${P4MERGE} $*
[p4diff]
#!/bin/sh
P4MERGE=/Applications/p4merge.app/Contents/MacOS/p4merge
[$# -eq 7 ]&& ${P4MERGE} "$2" "$5"
実行権限を与えてPATHを通したディレクトリに置いておく。
そして、.gitconfigでmergtoolの設定。
[~/.gitconfig]
merge]
keepBackup = false;
tool = p4merge
[mergetool "p4merge"]
cmd = p4merge "$BASE" "$LOCAL" "$REMOTE" "$MERGED"
keepTemporaries = false
trustExitCode = false
keppBackup = false
[diff]
external = p4diff
以上でgitを使った快適環境の完成
登録:
投稿 (Atom)