Linuxのサーバー上にあるログファイルの容量が大きくなったとき、今までは1回ファイルを消してから同名のファイルを作って権限とパーミッションを合わせるとか、めさくさめんどうなことしてた気がします。
先日調べてたら見つけました。ファイルの中身を空にする、とんでもなく簡単なコマンドを。
:> hoge.txt
# useradd -s /sbin/nologin -M ftpuser # passwd ftpuser # mkdir -p /ftp/userdir # usermod -d /ftp/userdir ftpuser # chown ftpuser:ftpuser /ftp/userdir # chmod 705 /ftp/userdir
useradd で /sbin/nologin を指定することで、telnet などでログインできないユーザを作成できる。また、-M オプションを付けると、ホームディレクトリを作成せずにユーザを作成するので、不要なメールボックスが作成されないで済む。FTP先のディレクトリは、 usermod で後から設定してあげればOK。
1.必要なRPM-GPG-KEYを取得
# rpm –import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
2.リポジトリ参照の設定を追加
# vi /etc/yum.repos.d/utterramblings.repo
―ここから―
[utterramblings]
name=Jason’s Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
―ここまで―
3.PHPのversionUPをする
# yum update php
※PHPを指定しないとMySQLとか他のパッケージもアップグレードされますので注意
4.【2.】で追加したリポジトリ参照の設定を無効にする
# vi /etc/yum.repos.d/utterramblings.repo
―変更前―
enabled=1
―変更前―
―変更後―
enabled=0
―変更後―
5.Apacheの再起動
# /etc/rc.d/init.d/httpd restart
6.phpinfoにてVersion確認(Apacheのドキュメントルートに保存)
# vi phpinfo.php
―ここから―
phpinfo();
?>
―ここまで―
7.ブラウザにてhttp://ドメイン/phpinfo.phpへアクセスし
PHPのversionが5.2系である事を確認する。
8.phpinfo.phpの削除
# rm phpinfo.php
Apache のログの管理って意外と面倒です。通常は Apache 付属の rotatelogs で日時でログローテートして仁別に切り出されたログを圧縮して保存なんて運用をされているかと思います。例えば、全ログ + 日別のログを保持するなら
CustomLog /var/logs/access.log common
TransferLog “|/usr/local/apache/bin/rotatelogs /var/logs/access.log 86400″
日別のログだけを保持するなら
CustomLog “|/usr/local/apache/bin/rotatelogs /var/logs/access.log 86400″ common
としていることでしょう。
Apache 2 系の rotatelogs は多機能なので問題が生じませんが、Apache 1.3 系の rotatelogs はファイル名に命名規則を与えたりはできなかったりと機能的にもの足りません。そこで登場するのが cronolog です。簡単に言えば、Apache 2 系のrotatelogs をもう少し多機能にしたログローテートのプログラムなわけです。
■パス(PATH)はとは? 簡単に(楽に)コマンドを実行するために、
パスの設定をする事を『 パスを通す 』と言います。
たとえば /usr/local/pgsql/bin/psql というコマンドを psql とだけ入力して実行させるとします。
この場合 psql というコマンドがある場所が /usr/local/pgsql/bin です。
つまり、/usr/local/pgsql/bin にパスを通す(環境変数 PATH で指定)事で、
【 psql 】と入力するだけで、実行することが出来るようになります。
■パスを確認するには?
コマンド【 echo $PATH 】(もしくは、env | grep PATH)でどこにパス(PATH)が通っているか確認できます。
$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/vine/bin:/home/zem/bin
パスは『 : 』(コロン)で区切られています。
■パスの優先度は?
パスの優先度は左の方が『 優先 』されます。
コマンド『 echo $PATH 』あるいは『 env | grep PATH 』で出てきた左が優先されます。
たとえば、/usr/local/bin/perl と /usr/bin/perl があるとします。
環境変数 PATH で /usr/local/bin の方が優先されると、
実際に実行されるコマンドは /usr/local/bin/perl となります。
■パスの設定方法 環境変数 $PATH を書き換えます。
たとえば /usr/local/pgsql/bin へパスを通したい場合
$ PATH=$PATH:/usr/local/pgsql/bin $ export PATH
このように入力します。
『 $PATH 』とは “現時点で環境変数 PATH に設定されているパス名”です。
これまで “/usr/local/bin” にパスが通っている場合は、”/usr/local/bin” に加えて
“/usr/local/bin/pgsql”がパスに加えられます。
複数のパスを加えるためには : で区切って指定します。
/usr/local/mysql/bin も一緒に指定する場合は次のようになります。
$ PATH=$PATH:/usr/local/pgsql/bin:/usr/local/mysql/bin $
export PATH
ちなみに、コマンド『 export PATH 』は必須。
環境変数 PATH をエクスポート(出力)=環境変数を設定するという意味があります。
コマンドは『 export PATH=$PATH:/foo 』のように1行に纏めてもかまいません。
■ログインする度に自動で設定するには?
毎回ログインする度にパスの指定をするのは面倒なものです。
その場合、ホームディレクトリ配下にある .bash_profile を編集します。
.bash_profile の中に PATH=$PATH:~ と export の記述をするだけで、
毎回ログインするたびに自動で環境変数が設定されます。
環境変数の設定をサーバ内の全ユーザに対して指定したい場合は
/etc/profile ファイルを開き、末尾に PATH=$PATH:~ と export を追加する方法が確実でしょう。
各ユーザの .bash_profile の中には、ログイン後に /etc/profile
ファイルを読み込むような記述があるからです。