2009年6月26日金曜日

__autoloadとPEAR Pagerでコケる

こんにちは、モリモルです。

smarty->cakePHP1.1->ruby->rails->cakePHP1.2->smartyという流れでsmartyに戻りました。

さて、ページ送りをつけるのに、cakeではPaginationなる便利なものがあるのですが、
フレームワークが使えないので、PEAR Pagerを利用してます。

アプリ全体で、__autoloadを利用していると、Pager::factoryで「Pager_Sliding.phpが見つからないよ!」とエラーになります。
Pager.phpのclass_existsの第二引数にfalseを入れて、__autoloadを抑制するとうまくいくようです。


if (!class_exists($classname, false)) {
include_once $classfile;
}

2009年3月18日水曜日

WEBrick/Windowsでのエラーについて

こんにちは、モリモルです。


windowsでwebrickを動かす際に、「cgi_runner.rb:47:in `exec':Exec format error」が出る際のメモ。
こちらを参考にしたら動きました。

:CGIInterpreterを追加すると解消されました。


server = HTTPServer.new(
:Port => "8088",
:BindAddress => "localhost",
:DocumentRoot => DOCROOT,
:CGIInterpreter => %("C:/Ruby/bin/ruby.exe")
)

2009年3月6日金曜日

Debian/syslog

こんにちは、モリモルです。syslog(ロギングデーモン)のメモです。

サーバープログラムには、ログの出力に「syslogを利用するもの」「使用しないもの」の2種類がある。
Apacheはsyslogを利用しない。



/sbin/syslogd
syslogデーモン

/etc/init.d/sysklogd
起動スクリプト

/var/run/syslogd.pid
pidファイル

/etc/syslog.conf
設定ファイル



設定ファイルの書式

[ファシリティ].[プライオリティ] [アクション]

ファシリティ
auth、authpriv、cron、daemon、kern、mail、syslog、local0 ~ local7など
デーモンがどのファシリティを使うかは、ソフト開発者が指定

プライオリティ
ログの重要度を示す
低 <-- debug、info、、notice、warning、err、crit、alert、emerg --> 高
ソフト開発者が指定

アクション
「ファシリティ」「プライオリティ」で分類されたログをどのように処理するかを指定
・ファイル出力
・コンソール出力
・パイプでプログラムへ渡す
・ユーザーに通知 など


ファシリティ・プライオリティの指定例


mail,ftp.warn
ファシリティ「mail」と「ftp」の「warn」以上を処理

mail.err
ファシリティ「mail」の「err」以上を処理

mail.*;mail.!warn
ファシリティ「mail」の「warn」以下を処理

「*」----全てのプライオリティ

kern.=warn
ファシリティ「kern」の「warn」のみを処理

.;daemon.none
ファシリティ「daemon」以外の全てを処理


アクションの指定例


/var/log/sample.log
ファイルへ出力

| /usr/bin/***.sh
パイプで他のプログラムへ渡す

/dev/console
ローカルコンソールへ出力

@remotehost
リモートホストのsyslogdへ送信

root,morimoru
rootとmorimoruのターミナルへ出力

*
全てのオンラインユーザーのターミナルへ出力



syslogdの設定を変えたら再起動
$sudo /etc/init.d/sysklogd restart

2009年2月28日土曜日

Debian/cronのメモ

こんにちは、モリモルです。

cron(クローン)のメモです。

/etc/init.d/cron
cronのrcスクリプト

/var/log/cron.log
cronのログファイル


ユーザーのcron設定

/var/spool/cron/crontabs/(ユーザー名)
各ユーザーのcronファイル

crontab [-u (ユーザー名)] {-l | -r | -e}

-e:編集、-r:削除、-l:表示

-eで起動するエディタは環境変数EDITOR or alternativeのeditor

書式
分 時 日 月 曜日 コマンド

[分の場合]
*/3 ----- 3分ごとに
0,1,10,45 ----- 0分、10分、45分
0,20-30,50 ----- 0分、20~30分、50分

[曜日の場合]
1-5 ----- 月~金

環境変数の設定
必要な場合は記述できる。

PATH=/usr/local/bin:/usr/bin
# m h dom mon dow command



rootのcron設定

/etc/crontab

# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

test -x /usr/sbin/anacron....run-parts....
anacronがなければ、
run-partsコマンドで/etc/cron.*ディレクトリにある実行ファイルを全て実行する。

/etc/cron.dディレクトリ
細かい設定が必要な場合は、/etc/crontabと同じ書式でファイルを置いておく。

Debian/ユーザー管理

こんにちは、モリモルです。

ユーザー管理のメモです。


グループ

addgroup [--gid 1000] (新規グループ名)
グループIDは1000~29999の間で。

/etc/group
[グループ名]:x:[グループID]:[所属ユーザー]
パスワードはshadowなんでx
所属ユーザーは、デフォルトグループではなく、追加グループとして登録されたユーザー名。

グループにユーザーを追加
usermod [-g (デフォルトグループ)] [-G (追加グループ)] (ユーザ名)
adduser (ユーザー名) (グループ名)

グループの削除
groupdel (グループ名)
デフォルトグループに所属ユーザーがいる場合は削除できない


ユーザー

ユーザー追加
adduser [--uid 1000] [--gid 1000] [--disabled-password] (新規ユーザー名)

--disabled-password
パスワードをロック、プロンプトからログインできない。rootからはログイン可

/etc/skel
新規ユーザーを作成時に/home/ユーザー名でコピーされる

/etc/passwd
(ユーザー名):(ユーザーID):(所属グループID):,,,:(ホームディレクトリ):(シェルのパス)
morimoru:x:1000:1002:morimoru,,,:/home/morimoru:/bin/bash

/etc/shadow
(ユーザー名):(暗号化パスワード):(パスワードの有効期限とか、、)

ユーザー情報の変更
usermod [-d (ホームディレクトリ)] [-L] [-U] (ユーザー名)
-L:パスワードをロック
-U:パスワードをアンロック

ユーザーの削除
userdel [-r] (ユーザー名)
-r:ホームディレクトリも削除

2009年2月21日土曜日

Debian/init、ランレベルとか

こんにちは、モリモルです。

Debianのinitとか、ランレベルのメモです。

ランレベルの変更
telinit [-t 秒数] 【ランレベル】

/etc/iniitabを読み込み
telinit q
kill -HUP 1
initのプロセスIDが1。

以下、起動からの流れ

1--起動

2--init(/sbin/init)

3--/etc/inittabを読み込み

/etc/inittab

id:2:initdefault: <---ランレベルの指定
si::sysinit:/etc/init.d/rcS <---rcSスクリプトを実行

ランレベル
0:停止/1:シングルユーザー/2-5:マルチユーザー/6:再起動


4--rcSを実行、/etc/rcS.d/内のファイルを実行
これらスクリプトは、ハードウェアなどの基本的な設定を行う。

【S or K】【数値】【スクリプト名】
S:起動/K:停止、数値は実行する順番。

各ファイルは/etc/init.d/にある各rcスクリプトへのシンボリックリンクになっている。
/etc/rcS.d/

lrwxrwxrwx 1 root root 18 2009-02-02 22:54 S01glibc.sh -> ../init.d/glibc.sh
lrwxrwxrwx 1 root root 21 2009-02-02 22:55 S02hostname.sh -> ../init.d/hostname.sh



5--指定ランレベルのスクリプトを実行
/etc/rc*.dにあるスクリプトを実行。
rcS.dと同じで、/etc/init.d/にある各rcスクリプトへのシンボリックリンク。
K(停止)→ S(起動)の順で実行。

2009年2月14日土曜日

sudo

こんにちは、モリモルです。

sudoのメモです。

設定ファイル
/etc/sudoers

visudo
visudoコマンドで編集するエディタは、環境変数 EDITORに指定する。
export EDITOR=vim

この環境変数がないと、altervertiveのeditorが使われる。

debian:~# update-alternatives --display editor
editor - status is auto.
link currently points to /bin/nano


【ユーザー名】 【ホスト】=(【代行するユーザ】) 【実行できるコマンド】
morimoru ALL=(ALL) ALL
ユーザーmorimoruは、全てのホストから、全てのユーザーを代行して、全てのコマンドを実行できる。

%【グループ名】 【ホスト】=(【代行するユーザ】) 【実行できるコマンド】
%wheel ALL=(ALL) ALL
wheelグループのユーザーは、全てのホストから、全てのユーザーを代行して、全てのコマンドを実行できる。

(【代行するユーザー】)を省略すると、rootということになります。



Aliasを作っていろいろとまとめる

ローカルネットワークのエイリアス
Host_Alias LOCAL = 192.168.91.0/24

ユーザーをまとめたエイリアス
User_Alias DEV = morimoru, takaki

コマンドをまとめたエイリアス
Cmnd_Alias IFCONFIG = /sbin/ifconfig
Cmnd_Alias REMOVE = /bin/rm, /usr/bin/unlink, /bin/rmdir, /sbin/newfs
Cmnd_Alias SHUTDOWN = /sbin/shutdown, /sbin/halt, /sbin/poweroff


DEV LOCAL=(ALL) ALL, !IFCONFIG, !REMOVE, !SHUTDOWN

ユーザー(morimoruとtakaki)は、ローカルアドレスのホストからののみ、全てのユーザーとして、
コマンドエリアス(IFCONFIG/REMOVE/SHUTDOWN)意外のコマンドを全て実行できる。

morimoru@debian:~$ sudo -u root ifconfig
Sorry, user morimoru is not allowed to execute '/sbin/ifconfig' as root on debian.localdomain.



sudoのログ
sudoしたログは、/var/log/auth.logに記録されます。

morimoru@debian:~$ sudo tail -2 /var/log/auth.log
Feb 18 18:15:02 debian sudo: morimoru : TTY=pts/0 ; PWD=/home/morimoru ; USER=root ; COMMAND=/usr/bin/tail -2 /var/log/auth.log
Feb 18 18:15:14 debian sudo: morimoru : command not allowed ; TTY=pts/0 ; PWD=/home/morimoru ; USER=root ; COMMAND=/sbin/ifconfig