- 共有ライブラリの認識 [otsuka]
- 共有ライブラリの認識 [jbking]
- Nagios [otsuka]
- Nagios [kuriyama]
- mod_rewriteの否定パターン [otsuka]
- mod_rewriteの否定パターン [kuriyama]
- PDO_PGSQLのインストール [nabejiru]
- Tracの通知メール改造 [otsuka]
- Tracの通知メール改造 [juno]
- tracマクロ [asd]
- CVS waiting for one's lock [kakuda]
2008年12月30日
Linux | cronでsudo
cronでsudoを含むコマンドを実行させようとしたら、「sorry, you must have a tty to run sudo」というエラーが。visudoコマンドで/etc/sudoersを編集。Defaults requirettyという行をコメントアウトすればエラーは出なくなる。
2008年10月30日
Linux | メールサーバ
メールサーバー構築(Postfix Dovecot) - CentOSで自宅サーバー構築alternatives コマンドというものがあることを初めて知った。(2)メールサーバー切替え
システムで使用するメールサーバー機能をsendmailからPostfixに切替える[root@centos ~]# alternatives --config mta
qmailやcourier-imapをシコシコインストールしていた頃と比べて、最近はメールサーバの構築も簡単だ。昔立てたqmailサーバをpostfixにリプレイスしたいけど、山ほどあるメーリングリストの設定を変えたりすることまで考えると、重い腰は上げられない。
2008年03月30日
Linux | Subversion 変更ファイルリストの出力
Subversionで、特定のリビジョン間で追加・削除・変更を行ったファイルのパスのリストだけを出力したい場合、どうやればいいのか知らなかったのだけど、いろいろと試行錯誤した結果、以下のコマンドでできた。
$ svn diff --summarize -r 236:297 > filelist.txt
次に必要になった時にきっと忘れていると思うのでメモ。
TortoiseSVNでもディレクトリのプロパティを開いて、[Subversion]->[ログを表示]で表示されたリビジョンリストを複数選択すると変更ファイルパスリストが表示されるのだけど、そのリストをコピーすることができなかった。
2007年12月19日
Linux | mod_rewriteでQueryStringを扱う
mod_rewriteはあまり使うことがないので、なかなか設定を覚えられず、毎回調べないといけない。
今回は、/do_something.cgi?id=123 を /do/something/123/ にリライトしたくて調べた。来週になったらもう忘れてそうなのでメモしておく。
まずRewriteRuleでは「?」以降はマッチ対象にならないということが分かった。RewriteCondを使ってQueryStringをマッチさせて、その後でRewriteRuleする。RewriteCondでマッチしたものは%変数に格納され、RewriteRuleで使える。
RewriteCond %{QUERY_STRING} id=(\d+)
RewriteRule ^/do_something.cgi /do/something/%1/ [R=301,L]
これで特に問題なくリライトはされるのだけど、リダイレクトされるURLには /do/something/123/?id=123 とQueryStringがそのまま残ってしまう。このQueryStringがリライト後に付かないようにするには最後に「?」を付ける。
RewriteCond %{QUERY_STRING} id=(\d+)
RewriteRule ^/do_something.cgi /do/something/%1/? [R=301,L]
2007年11月08日
Linux | FFmpegで画像を切り出す
ffmpeg -i 動画ファイル名 -vframes 1 -an -ss 切り出す画像の開始時間(単位は秒) -s 幅x高さ -f mjpeg 出力ファイル名
-vframes 1 を忘れると、やたらとでかい画像ファイルができてしまう。これで嵌ったのでメモ。
調べていたら参考になる記事が。
Youtubeの動画から静止画1枚を抜き出す(FFmpegで時間指定)
なるほど、PNGフォーマットで出力したいときはこうやるのか。
2007年10月28日
2007年10月17日
Linux, Python | 共有ライブラリの認識
Linux上で、PostgreSQL + psycopg2 + Django on Apache with mod_python な環境で次のようなエラーが起こっていたら、Apacheの実行ユーザがPostgreSQLのライブラリを認識できていないということが原因。
Error loading psycopg2 module: libpq.so.5: cannot open shared object file: No such file or directory/etc/ld.so.conf に /usr/local/pgsql/lib を加えて、ldconfig コマンドを実行してシステムにPostgreSQLのライブラリを認識させればOK。
前もこの問題にはまったのに、記憶力が悪いせいでまたはまってしまったのでメモしておく。
2007年09月10日
Linux | ModSecurity
ModSecurity (mod_security) - Open Source Web Application Firewall
サーバサイドのアプリケーションでエラーになった時のPOSTリクエスト内容をアプリケーションやAPサーバではなく、Webサーバでログに残したいという要件があり、調べていたらApacheモジュールのModSecurityで対応できることが分かった。
まだModSecurityが何をしてくれるものなのかちゃんと理解してないけど、とりあえず以下の設定でステータス500番代のレスポンスになる場合のPOSTデータがリクエスト毎にファイルに保存される。
SecRuleEngine DectionOnly SecRequestBodyAccess On SecAuditEngine RelevantOnly SecAuditLogParts ABCFHZ SecAuditLog /path/to/audit.log SecAuditLogStorageDir /path/to/log_dir SecAuditLogType Concurrent SecAuditLogRelevantStatus ^5
以前に「Apacheセキュリティ」という本を買って、ざっと読んで所々に付箋を貼って放置状態になっていたが、この本の著者がModSecurityの開発者らしい。ModSecurityをちゃんと使えるようになれば、いろいろ悪いことを防いでくれるような気がするので、きちんと読み返してみようと思います。
2007年07月02日
Linux | Apache 2.2 - client denied by server configuration
blog.plastik.jp » Apache2.2 デフォルト設定、ちょっとした変更点[アクセス制限]
Apache 2.2系に移行していて、これに気付かずに1時間以上はまった。
2007年06月04日
Linux | DebianにSun JDK
hatayanlog: Debian (sarge) で Java-package をつかって Java をインストール
Debian(etch)にTomcatをインストールしていて、ふと apt-cache search tomcat をやってみたら、Tomcat5.5パッケージがあることに気付いた。
さすがにgcjとかは使う気にならなかったので、以前にアンインストールしてSunのJava6 sdkをそのままインストールしていたのだけど、今日いろいろと調べてみたらdebianパッケージとしてSunのJDKをインストールする方法があることを知った。が、Java6にはまだ対応していないことも分かった。テスト版にもまだないようなので、仕方がない。
ということで、結局Tomcatもパッケージではなくapacheサイトからダウンロードしてインストール。あと一歩でJava環境作りが楽になるんだけどなあ。
2007年04月12日
Linux | Nagios
「Nagios 2.0オープンソースではじめるシステム&ネットワーク監視」を購入して、Nagios使用方法の勉強中。サイトのドキュメントや記事を見て、難しそうだなと思って敬遠してたけど、この本を読みながらやってみると意外に簡単だった。
本ではソースからインストールしているけど、Debianパッケージとして用意されていたNagios 2.6をインストールしてみた。設定ファイルのパスや名前が若干違う位で大きく戸惑うことはなかった。
まだ三分の一位しか読んでないけど、一通り監視できるようになった。これまで監視の必要がある場合、自前でスクリプト書いたりしてたけど、その面倒くささが一気に解消。Nagiosがあると何でも監視したくなる感じ。
ネットワーク上の階層を設定でき、上位階層(例えばルーター)がダウンしている時は下位階層のサーバ監視を行わないという辺りが賢くて気に入った。Webインターフェースではステータスマップがあり、これら機器のツリーと状態が表示され一目瞭然。無駄に(?)VRMLを使った3Dマップも表示できる。
Flash Media Serverのサービス監視はTCPポートによるチェックになるのだろうか。それともHTTPみたいな何か確認する手段があるのだろうか。NagiosExchangeでプラグインを探してみたけど見つからなかった。
2007年02月27日
Linux | DNS 特定のドメインだけ引けない
BINDで特定のドメインだけを別のDNSサーバに問い合わせたい - Linux Square
社内のDNSサーバで、外部の特定ドメインのレコードが何故か参照できない。よそのDNSサーバではそのドメインは問題なく正引きできるのに。前から気付いてて、そのうち直るかもと放置していたんだけど、今日になって他のスタッフがそのドメインのサイトにアクセスし、サーバが落ちていると思い込んでいたので、回避措置として named.conf にそのドメインを登録して、よそのDNSサーバにフォワードするように設定した。
2007年02月05日
2007年01月29日
Linux | mod_rewriteの否定パターン
Apacheのmod_rewirteで、あるパスを除くといった条件をどう書けばいいのだろうと疑問に思っていたがRewriteRuleでも ! で否定パターンを使えることを今日知って、これとChainフラグを使えばRewriteRuleだけで実現できることが分かった。
RewriteRule !^/notrewrite/(.*) - [C]これで例えば、http://example.com/notrewrite/index.html はリライトされず、その他のパスへのアクセスは http://example.com/anydir/index.html → http://example.com/rewrited/anydir/index.html といった具合でリライトされる。
RewriteRule ^/(.*) /rewrited/$1
! を使ったパターンの場合は、グループ化による後方参照は使えないことに注意。
2006年10月25日
Linux | Submission Port
以前にサーバを構築した会社から、「ある拠点からだけ送信サーバにアクセスできなくなった」と問い合わせがあった。聞くと、最近Bフレッツ導入に伴ってプロバイダーを変えて、そのプロバイダーが25番ポートへのアクセスをできなくしているとのこと。替わりに587番を使えと。
そんなの聞いたことないなぁと調べてみたら、去年辺りからプロバイダーで「Outbound Port 25 Blocking(OP25B)」が相次いで導入されていた。世の中変化していたんだね。
とりあえず応急処置として、iptablesのポート転送で対処するかな。
2006年10月03日
Linux | TracとSVN 1.3
今朝目覚めたらイントラサーバのtracがエラーで動かなくなっていた。ログを調べてみると
PythonHandler trac.web.modpython_frontend: TypeError: argument number 0: a 'apr_pool_t *' is expected, 'instance(と、難しそうな内容。検索してみると、どうやらSubversion 1.3系とTracの相性がよろしくないらしい。対処法も難しそうだし、早く直す必要があったので、とりあえずSubversionを1.2系にダウングレードすることに。)' is received
そもそもSubversionのバージョンは1.3だったっけ? と思っていたのだけど、yumの自動アップデートで新しくなっていた模様。1.2系にダウングレードしようとするが、yumでやる場合一旦最新バージョンを削除しなければいけないようで一度削除してから、バージョン指定してインストールした。これで解決した。
で、また最新バージョンが勝手にインストールされてはいけないので、Subversionパッケージが自動アップデートされないようにyum.confを設定した。
2006年08月16日
2006年07月31日
Linux | Woody to Sarge
Debian Woodyで運用しているサーバに入っているPerlやPerlモジュールのバージョンが古くて困ったことになってしまったので、勇気を振り絞ってdist-upgradeした。アップグレード中「失敗したらどうしよー」と、ドキドキが止まらなかったけど、大きなトラブルもなく完了した。さすがだ、Debian。
2006年05月05日
2006年05月02日
Linux | PHP 5.1.3リリース
PHP 5.1.3 Release Announcement
なんてタイミングなんだ。先程PHPで構築したサイトを公開したばかりなのに。
気になってたあのバグも解決されてるし、アップグレードしたいなあ。でもPHPの場合マイナーバージョンアップと言えどもあなどれないしなあ。
と思いつつも、開発サーバのPHPを5.1.3に上げてみることに。
が、早速コンパイルができなくなってた。--with-oci8を指定してあるからなんだけど、
/usr/bin/ld: cannot find -lircこんなエラーが。5.1.2の時は起こらなかったのに。ググってみたら、このページが見つかった。ここに書かれているとおり、
$OCI_HOME/sdk/demo/sysliblistから-lircという記述を削除してconfigureし直したらコンパイルできるようになった。
そしてPDOのアップグレードをして5.1.3への移行完了。
pecl upgrade pdo今のところ問題なく動いてる。
pecl upgrade pdo_pgsql
2006年04月07日
Linux | PDO_PGSQLのインストール
PECL :: Bug #6115 :: PDO_PGSQL cannot be upgradedPDOのPostgreSQLドライバがPEARでインストールできず苦戦していたところ発見した解決法。PHP_PDO_SHARED環境変数をセットすればうまくいった。I discovered while crawling through the configure file of the pdo_pgsql package, that it seems to pretend, that pdo is build statically. It checkes a variable called: PHP_PDO_SHARED So when i do:
export PHP_PDO_SHARED="true"
and than do
pear install -f http://pecl.php.net/get/PDO_PGSQL-1.0.1.tgz
everything installs and works fine.
PDOを共有モジュールとしてインストールしていたからかな。それにしても説明がなさ過ぎる。
とりあえず結果オーライ。
ところでpeclでインストールするのと、pearでインストールするのでは何が違うのでしょうか?
2005年12月01日
Linux | Tracの通知メール改造
Tracから送られてくるメールは単なるテキストなのに、マルチパートメッセージで送ってくるのがちょっと嫌だなあと思い、書いたこともないPythonのコードから該当箇所を探して修正を試みる。
運用中のTracはRPMでインストールしてあるので、とりあえずソースをダウンロードしてメールを送信しているコードを探す。きっと「smtp」という文字が含まれているだろうと予測して検索してみると、いくつか引っかかったファイルの中に「Notify.py」があり、名前からしてこれしかないと断定。
中身を見ると正しくそんな感じ。MIMEMultipart という「ズバリ私が犯人です」と言わんばかりのクラスが使われていた。コードを見る限りマルチパートである必要はなさそうなので、Pythonのリファレンスを見ながら、このクラスをMIMETextクラスに置き換える。
127行目付近
#msg = MIMEMultipart()これで解決。UTF-8ではなくISO-2022-JPにしてみたけど、ダメみたい。どうやら標準だと日本語コードは使えない様子。
#msg.attach(MIMEText(body, 'plain', 'utf-8'))
#msg.epilogue = ''
msg = MIMEText(body, 'plain', 'utf-8')
ちなみにRPMでインストールした僕の環境の場合、/usr/lib/python2.3/site-packages/tracディレクトリにNotify.pyはありました。Tracのバージョンは0.9です。
Log4JのSMTPAppenderもマルチパートでメールを送るようになっていたのだけど(参照)、海外では単なるテキストメールもマルチパートで送るのが一般的なのかな?
2005年11月15日
Linux | tracマクロ
MacroBazaar - The Trac Project - Trac
via marsのメモ
tracのマクロ集。このページの存在に気づかなかった。気づいた今でもどこからリンクされているのか分からない。
trac 0.9が出てるけど、0.84からバージョンアップしても問題ないかな?
最近ストリッパーズでは、サーバサイドのプログラムが必要ないプロジェクトでもTracで主にタスク管理をするようになった。いい傾向だ。
2005年10月17日
Linux | trac データベースエラー
今朝出社して、tracサイトにアクセスすると
Trac detected an internal error:とエラーが表示され、どうすることもできなくなっていた。file is encrypted or is not a database
Traceback (most recent call last):
File "/usr/lib/python2.3/site-packages/trac/core.py", line 531, in cgi_start
real_cgi_start()
File "/usr/lib/python2.3/site-packages/trac/core.py", line 513, in real_cgi_start
env = open_environment()
File "/usr/lib/python2.3/site-packages/trac/core.py", line 190, in open_environment
version = env.get_version()
File "/usr/lib/python2.3/site-packages/trac/Environment.py", line 162, in get_version
cursor.execute("SELECT value FROM system WHERE name='database_version'")
File "/var/tmp/python-sqlite-root//usr/lib/python2.3/site-packages/sqlite/main.py", line 244, in execute
DatabaseError: file is encrypted or is not a database
プロジェクトのタスク管理を任せていたので、やばいなと焦りつつGoogleで検索すると、全く同じ症例と解決法を見つけることが出来た。tracのML過去ログでも同じ解決法が挙げられていたので、やってみたら解決。でもレポートのソートが変わってた。
Googleで見つけたサイトはもうキャッシュにしか残ってないのでここに残しておきます。
We've finally tracked the problem to SQLite version 2.x vs 3.xOn Fedora Core 4, Trac uses SQLite 3.x although the trac.db database in conf directory is in version 2.x format. The solution is to manually upgrade all the Trac environment databases to version 3.x:
mv trac.db trac2.db
sqlite trac2.db .dump | sqlite3 trac.db
2005年09月27日
2005年09月09日
Linux | /tmp/ディレクトリ下のファイルはいつ削除される?
ITmedia エンタープライズ : Linux Tips「/tmp/ディレクトリ下のファイルはいつ削除される?」
僕はこんなことさえ知らなかった。。。
2005年07月15日
2005年06月16日
Linux | Subversionでパーミッションエラー
subversion: Subversion FAQCentOS上でSubversionにWebDav経由でアクセスしようとしたら、「Could not open the requested SVN filesystem」とエラーが出て、埒が明かなくなった。SVNリポジトリにはApacheの実行ユーザが読み書きできるようにしてあるのに。と思いつつ、調べてみたらSELinuxでの制限に因るものらしい。Note for SELinux / Fedora Core 3 / RedHat Enterprise users:
In addition to regular Unix permissions, under SELinux every file, directory, process, etc. has a 'security context'. When a process attempts to access a file, besides checking the Unix permissions the system also checks to see if the security context of the process is compatible with the security context of the file.
Fedora Core 3, among other systems, comes with SELinux installed by default, configured so that Apache runs in a fairly restricted security context. To run Subversion under Apache, you have to set the security context of the repository to allow Apache access (or turn off the restrictions on Apache, if you think all this is overkill). The chcon command is used to set the security context of files (similarly to how the chmod sets the traditional Unix permissions). For example, one user had to issue this command
$ chcon -R -h -t httpd_sys_content_t PATH_TO_REPOSITORY
to set the security context to be able to successfully access the repository.
とりあえず何も分からないまま上記コマンドを打ってみたら、エラーなく動作するようになった。SELinuxについては無知だったけど、ちょっと勉強しないとなあ。
買うならどっちだ!?
・SELinux徹底ガイド
・SELinuxシステム管理
2005年06月10日
2005年06月07日
Linux | CentOS
www.centos.org - The Community ENTerprise Operating System
Debian 3.1を入れようと思って買ったサーバ機が、どうもDebianと相性が悪い。2つCPU積んでいるのに、1つしか認識されてなかったり、メモリも半分しか認識されてなかったり、なぜか半分。インストールし直そうとしたら、インストール自体がうまくできなくなったので、あっさり諦め、Redhatクローンをインストールすることに。
Whitebox Linuxを入れてみたのだけど、どうやらCentOSの方がいいらしいという噂からインストール直後にCentOSに乗り換える。
Redhat系は7.3までしか使っていなかったので、yumの使い方が分からない。
2005年05月02日
2005年03月21日
2005年03月09日
2005年01月30日
2004年11月18日
2004年11月16日
2004年10月31日
2004年10月30日
Linux | djbdnsは遅い!?
先日導入したdjbdns(dnscache)への問い合わせレスポンスが遅い。bindに比べて明らかに。何か設定が間違ってるのか!? でも大して設定する箇所もないし。
大量のDNS問い合わせが発生するApacheのログ解析やメール配信では、bindでやってた頃の倍以上時間がかかるようになってしまった。
こんなのは使ってられないので、またbindに戻した。うーむ、こんなにパフォーマンスに差が付くものなのかなあ???
2004年10月27日
Linux | djbdns
ホームサーバのDNSをbindからdjbdnsに変更した。
確かにbindよりシンプルに設定できた。けど、ZoneファイルのフォーマットはBindに慣れていた分、最初かなり戸惑った。なかなか逆引きの設定がうまくいかなかったり。テキトーにいじってたら突然うまいこといったので、どこが悪かったのか今となっては分からない。
2004年09月17日
Linux | viの文字コード自動判別
viエディタの文字コード自動判別MEMO。$ vi ~/.vimrc
set encoding=euc-jp
set fileencodings=iso-2022-jp,sjis,utf-8
2004年08月04日
2004年07月17日
Linux | PHPのセキュリティアップデート
今夜はPHPの再インストール作業。ソースからインストールしてるので、セキュリティアップデートはぶっちゃけ面倒な作業だ。管理してるサーバのOSとバージョンを揃えていれば、パッケージ化してしまうといいのかも知れないが、あいにくOSとバージョンはバラバラなのでそうもいかない。
まだPHPを入れていないThinkpad Debian(Woody)にはPHP 5をインストールしようと試みたのだけど、いろいろとライブラリのバージョンが合わず、libxml2とかをソースから入れるか、Sargeから引っ張ってこないとダメみたい。今夜は断念。
2004年07月09日
Linux | Debian
3月終わりに使わなくなったThinkpadにDebianをインストールしたのだが、インストールしただけで放置していた。昨日になってようやく開発用サーバにしようと設定を始めた。
今後運用サーバをDebianで、となるかも知れないのでstableリリースを追うことに。が、PostgreSQLやTomcatのバージョンの古さを知り愕然とする。stableとはそういうことなのか。
まだ自分でパッケージは作れないので、結局ソースから入れるしかないのか。むぅ、aptの利点を享受できてないなあ。
qmailのソースからのインストールは相当面倒な様子。Debianとは相性悪いみたいだね。
http://lists.debian.or.jp/debian-users/200405/msg00172.html
前途多難だ。
2004年07月03日
Linux | perl -MCPAN -e shell
CPANをたまにしか使わないので、いつもこのコマンドを忘れてしまう。メモメモ。
設定しているCPANサイトがftp.cpan.jpだったのだが、このホストが反応しない。
この設定を変更しようと、「o conf urllist ftp://ftp.kddlabs.co.jp/CPAN/」とコマンドを打ってみたが変更されない。ここでハマってしまった。結局、urllistの値は配列だったので次のコマンドで変更できた。
o conf urllist pop
o conf urllist push ftp://ftp.kddlabs.co.jp/CPAN/