チラシの裏

2009 年 6 月 27 日

FTP専用ユーザを作成したい

カテゴリー: Linux, ProFTPD — root @ 10:17 AM

●/etc/shellsに/sbin/nologinを追加する
# vi /etc/shells
/sbin/nologin

●ユーザ作成時に/sbin/nologinを割り当てる。
# useradd -s /sbin/nologin hoge

2009 年 6 月 26 日

locateが壊れた?

カテゴリー: Linux — root @ 5:30 AM

ウチのvineちゃんでlocateを使ったら妙なエラーがでるようになった。

decode_db(): read: Input/output error

ググっても全く引っかからないし・・・・・・
とりあえず、slocateの再インストールでもしてみるか。

# apt-get remove slocate

# apt-get install slocate

# updatedb

これで解決した。けど、原因が分からないのが気持ち悪いなぁ。

MyISAMのデータがご臨終した?

カテゴリー: Linux, MySQL — root @ 3:36 AM

突然、MySQLのテーブルのデータがselectできなくなった(‘A`) 。
もしかして、MyISAMのテーブルがぶっとんだのか?
グーグル先生でmyisamchkというものを発見したので使ってみた。

# myisamchk db/daily_report.MYI
Checking MyISAM file: db/daily_report.MYI
Data records: 69451 Deleted blocks: 0
myisamchk: warning: 2 clients are using or haven’t closed the table properly
- check file-size
- check record delete-chain
- check key delete-chain
- check index reference
- check data record references index: 1
- check record links
MyISAM-table ‘db/daily_report.MYI’ is usable but should be fixed

これは、データは残ってるけど読み出せない状態になっているという
ことなのかな・・・・・

とりあえず、壊れているテーブルをダンプしてリストアしたら
selectできるようになったが、解決方法としては良かったのかな・・・・。

2009 年 6 月 21 日

はじめてのSubversion

カテゴリー: Linux, Subversion — root @ 12:20 PM

Subversion(サブバージョン)の基本的な使い方をお勉強しました。

●まず、Subversionのインストール。
Redhat系なら
# yum install subversion

debian系なら
# apt-get install subversion

●リポジトリの作成
(/var/svnの中にkというリポジトリを作る場合
# mkdir -p /var/svn/k

# svnadmin --fs-type fsfs create /var/svn/k

●リポジトリにディレクトリを作成
# svn mkdir file:///var/svn/k/trunk -m “create”
# svn mkdir file:///var/svn/k/branches -m “create”
# svn mkdir file:///var/svn/k/tags -m “create”

trunk 開発を進めていくところ
branches ブランチ用
tags リリース用

●カレントディレクトリ内のk/をリポジトリにtrunkとしてインポート
# svn import k file:///var/svn/k/trunk -m “import”

●リポジトリの内容を表示
# svn list -v file:///var/svn/k

●リポジトリからファイルを取得
# svn checkout file:///var/svn/k/trunk k

●作業コピーとリポジトリの差分をチェック
# svn diff k

●リポジトリとリポジトリの比較
# svn diff -r 2:3 rules.txt

●作業コピーとリポジトリの比較
# svn diff -r 3 rules.txt

●リポジトリと同期させる
# svn update k

●リポジトリの更新履歴を表示
# svn log -v file:///var/svn/man/trunk

●trunkをRelease1.0としてtags内にコピー
# svn copy file:///var/svn/k/trunk file:///var/svn/k/tags/1.0 -m “Release 1.0″

●作業コピー内の変更をリポジトリ内に反映
# svn commit k -m “cmd.txtの編集”

●リポジトリにファイルを追加
# svn add hoge.c

●リポジトリにパスワード制限をかけたい場合は下記ファイルを修正する
(このパスワード制限はTortoiseSVN等でリポジトリにアクセスした場合に対して有効
/var/svn/k/conf/passwd
/var/svn/k/conf/svnserve.conf

http://tortoisesvn.tigris.org/

2009 年 6 月 6 日

プロセスの再起動に失敗する場合

カテゴリー: Linux — root @ 12:26 PM

サーバが高負荷状態の時はプロセスの再起動に失敗することがあります。
(たとえば service apache2 restart

このようなエラーは制御スクリプト内のstop()に失敗している時に起こります。
(そもそもstop()に失敗しているのにstart()しようとしている

このような事態に陥ってしまった時は、生き残っているプロセスを全てkillしてから
startさせれば大抵解決します。

●まず、生き残っているプロセスのIDを調べます。

# ps -ef | grep apache
root 5515 1 0 Jul03 ? 00:00:00 /usr/sbin/apache2
apache 13475 5515 0 04:02 ? 00:00:00 /usr/sbin/apache2
apache 13476 5515 0 04:02 ? 00:00:00 /usr/sbin/apache2
apache 13477 5515 0 04:02 ? 00:00:00 /usr/sbin/apache2
apache 13478 5515 0 04:02 ? 00:00:00 /usr/sbin/apache2
apache 13482 5515 0 04:02 ? 00:00:00 /usr/sbin/apache2
apache 13483 5515 0 04:02 ? 00:00:00 /usr/sbin/apache2
apache 13484 5515 0 04:02 ? 00:00:00 /usr/sbin/apache2
apache 13485 5515 0 04:02 ? 00:00:00 /usr/sbin/apache2

●killコマンドでプロセスを殺します。
(一番小さいプロセスIDをkillすると大抵は全部killできます。

# kill 5515

●もしくはkillallで一気に消すことも可能です。
(LinuxのkillallとSunOSのkillallは意味が違いますので注意してください。

# killall apache2

●生き残っているプロセスを全部殺せたらstartしましょう。

# service apache2 start

これでOK^^

●極稀に、こういう問題も起こるようです
[root@s1 root]# ipcs -s | grep apache
0×00000000 524288 apache 600 1
0×00000000 557057 apache 600 1
0×00000000 589826 apache 600 1
0×00000000 622595 apache 600 1
0×00000000 655364 apache 600 1
0×00000000 688133 apache 600 1

プロセスは死んでるはずなのに、ipcリソースだけ残ってる・・・・・

そういう場合は、 
# ipcrm sem 524288
という感じで残ってるリソースを全部削除してからstartすれば解決するはずです。
一個ずつ消すのがマンドクセという人はipcsの出力結果をawk等で
処理して一気に消せばいいでしょう。

例:
# ipcs -s | grep apache | awk ‘{print $2}’ | xargs ipcrm sem

「ディレクトリごと削除」に失敗する場合

カテゴリー: Linux — root @ 12:25 PM

ディレクトリごと削除したい場合は
# rm -rf dir/ で良いはずですが、ディレクトリ内のファイル数が
多すぎると削除に失敗することがあります。

こんな時の解決方法をいくつか紹介しましょう。

●rmにxargs経由でファイル名を渡す。

# echo dir/* | xargs rm

●rmのまえに\(バックスラッシュ)をつける
# \rm -rf dir/

●リダイレクトとxargsを使う。

# ls > hoge.dat
# xargs rm < hoge.dat

これでOK^^

2009 年 6 月 2 日

apacheの停止で自分の心臓も停止?

カテゴリー: Apache, Linux — root @ 1:37 AM

会社でお客さんにレンタルしている共用サーバの
apacheに新しいヴァーチャルホストの設定を追加することになったのだが、
思わぬ落とし穴が。。。。

●vi で開いて前回追加したヴァーチャルホストの設定をコピペして
ドメインの部分だけ変更し、apacheを再起動すればいいはず・・・・
[root@s1 conf]#vi httpd.conf
省略・・・

●apache2 -S での構文チェックは問題なし・・・
[root@s1 conf]# apache2 -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
_default_:443 new.host.name (/etc/apache2/conf.d/ssl.conf:90)
*:80 is a NameVirtualHost
default server sabakan.org (/etc/apache2/conf/apache2.conf:1028)
port 80 namevhost xxxxxx.co.jp (/etc/apache2/conf/apache2.conf:1028)
port 80 namevhost hoge.xxxxxx.com (/etc/apache2/conf/apache2.conf:1068)
port 80 namevhost hoge2.xxxxxx.com (/etc/apache2/conf/apache2.conf:1091)
Syntax OK

●apacheの再起動
[root@s1 conf]# service apache2 restart
httpdを停止中: [ OK ]
httpdを起動中: [ 失敗 ]

あれれ?
失敗したぞ???

●エラーログを見てみよう
[root@s1 conf]# tail /var/log/apache2/error_log
[Tue Jun 02 01:12:43 2009] [notice] caught SIGTERM, shutting down
Unable to open logs

ログがオープンできない?


あ、そうか!!
新しいドメイン用のログディレクトリを作成してなかったのが原因か。
httpd.confのログの出力先に存在してないディレクトリを指定すると
apache2 -S ではSyntax OKになるけどapacheの起動はエラーになるのか・・・・

●ログディレクトリを作成してapacheの再起動・・
[root@s1 conf]# mkdir /var/log/apache2/hoge2.xxxxxx.com

[root@s1 conf]# service apache2 start
httpdを起動中: [ OK ]

[root@s1 conf]# ps -ef | grep apache2
root 9142 1 8 01:15 ? 00:00:00 /usr/sbin/apache2
apache 9145 9142 0 01:15 ? 00:00:00 /usr/sbin/apache2
apache 9146 9142 0 01:15 ? 00:00:00 /usr/sbin/apache2
apache 9147 9142 0 01:15 ? 00:00:00 /usr/sbin/apache2
apache 9148 9142 0 01:15 ? 00:00:00 /usr/sbin/apache2
apache 9149 9142 0 01:15 ? 00:00:00 /usr/sbin/apache2
apache 9150 9142 0 01:15 ? 00:00:00 /usr/sbin/apache2
apache 9151 9142 0 01:15 ? 00:00:00 /usr/sbin/apache2
apache 9152 9142 0 01:15 ? 00:00:00 /usr/sbin/apache2
root 9158 8994 0 01:15 pts/0 00:00:00 grep apache2

これでOK。
マジで心臓が止まるかと思ったです・・・ハァハァ

Powered by WordPress