サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
2024年ランキング
linux.mini13i.gotdns.org
バージョン情報の表示 † 忘れがちなのが、ヘッダやエラーページなどに表示される、Apacheのバージョンの表示方法の設定。実際にどのようになっているかの確認は、wgetを使うと簡単。 % wget -S http://localhost/ --14:02:43-- http://localhost/ => `index.html' localhost をDNSに問いあわせています... 127.0.0.1 localhost|127.0.0.1|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... HTTP/1.1 200 OK Date: Sun, 23 Apr 2006 05:02:43 GMT Server: Apache/2.0.55 (Gentoo) DAV/2 SVN/1.2.3 Last-Modified: Mon,
IPアドレスで接続規制をかけるような場合、ネットマスクの計算をする必要が出てくる。/24など、分かり易ければいいのだが、そうでない場合、とっても面倒だ。すくなくとも、私の場合は。 たまたまそれを簡単に行えるスクリプトを発見した。 _ ipcount Gentoo Linuxだと、dev-perl/Net-IP に、Debian sargeだと、libnet-ip-perl に含まれる(FedoraCoreとかでも同様にperlのライブラリがあるはず)、ipcount というスクリプトだ。Debianの方が、/usr/share/doc/libnet-ip-perl/examples/ipcount にあるので、CPANから NET::IP を入れれば、使えるのだろう。 % ipcount Usage: ipcount [-r] [-d <prefix>] address -r: Prin
_ 導入 Debianにも、Gentooにも、パッケージがない。なので、Tar ballを持ってきて展開する必要がある。が、実際はスクリプトにより大体の設定を行ってくれる。「大体」というのは、全ての設定をスクリプトで行える訳ではないのと、私の環境では、スクリプト実行の際にエラーがでてしまった為。また、暫く前からアップデートされていないようで、Kernel-2.6の機能を使うには(最近のlm-sensorsから得られる情報などを使うためには)、CVSから一番新しいソースを持ってくる必要がある。 ↑ Install † まず、Tar ballのソースを持ってくる。最新リリースは、0.5.0-pre5なのだが、開発版のSnap Shotの方が新しいので問題がなければこちらの方がいいかもしれない。 とりあえず、tar ballを適当なディレクトリへ展開する。 % tar zxf hotsanic
_ EnableSendfile 有効にすると、ファイルの内容が動的に変化(cgi等)しない画像ファイルなどの送信時、バッファを介さずに直接ファイルを送信できる。kernel-2.4以降+apache-2.0.44以降で使用可能で、defaultでOnとなっている。ただし、NFSマウントされている場合は、無効にしないと問題になる事があるらしい。 この機能を有効に使うために、DBに画像を突っ込んでいるような場合、それらを定期的に個別ファイルに落とすなどにより、ファイルへアクセスさせるようにした方がよい。そうでない場合、DB->バッファ->送信->DB->バッファ->送信の様になり、遅延が発生する。 EnableSendfile ディレクティブ - Apache HTTPサーバ ↑ _ HostnameLookups これをOnにしておくと、アクセスごとにクライアントのホスト名をDNSに
_ LVMとは LVM(Logical Volume Manager)は、パーティションを動的に管理するためのものだ。通常、あるパーティションの大きさを変更する場 合、そのパーティションをumountし、*fdiskにてパーティションサイズを変更し、必要ならリブートし、ファイルシステムの拡張を行って初めて、マウントすることが出来る。LVMでは、これらの処理をより簡単に行うためのもので、ファイルシステムによっては、umountさえ必要なく、大きさを変更することが可能。 あるいは、2つのハードディスクを組み合わせて、仮想的に1つのハードディスクとして使うというようなことが出来る。RAID化したデバイスでも使用できる。 Gentoo Linux Documentation -- Gentoo LVM2インストール 最近のディストリビューションでは、インストーラーが対応している。例えば、Feco
_ UDFとは CD-RW、DVD±RWなどで、他のファイルシステム同様、ファイル単位でのアクセス(読み書き)を可能とするファイルシステム。そうでない場合、書き込みはディスク全体へ一度に行うことしか出来ない、ISO9660となる。 ↑ カーネルのサポート † UDFを扱うには、カーネルでUDFがサポートされている必要がある。自分でカーネルの再構築をしている場合などは、要チェック。 あらかじめインストールされているカーネルをそのまま使っている場合など、モジュール化している場合、以下によりモジュールをロード。 # modprobe pktcdvd ↑ udftoolsのインストール † まずは、UDFを扱うために必要な、udftoolsをインストールする。 Gentoo Linux の場合、udftools によりインストールされる、/etc/init.d/pktcdvd を実行することで、
_ カーネル システム パラメタの設定 sysctlにより変更することの出来る、カーネル システム パラメタ(の一部)を紹介する。コンパイル無しで行える、カーネル チューニングだ。カーネル システム パラメタは、カーネルのバージョン毎に異なるので、詳しくは、 /usr/src/linux/Documentation/sysctl/README /usr/src/linux/Documentation/networking/ip-sysctl.txt /usr/src/linux/Documentation/filesystems/proc.txt % man 5 proc を参照。また、手元のGentoo Linuxでは、kernel-2.4のものとなっているが、 % man 7 tcp % man 7 ip で、tcp,ip関係のものを見ることが出来る。特にネットワーク関係については、
_ 概要 SGI IRIX用に開発されたファイルシステムを、Linux用に移植したもの。RHES、CentOSなどで使用するには、カーネルのコンパイル、xfsprogsのインストールが必要。CentOSでは、CentOS Plusの方に含まれているようだ。 公式サイト ↑ 注意 † 32bit OSでマウントしたときの journal log と、64bit OSでマウントしたときの journal log とには、パッチを当てないと互換性がない。そのため、システムの移行の際は注意(通常の shutdown または umount を行っていれば問題は起きない)。パッチは、2006/05/24 に、xfs MLへポストされたTAKE 952214 - log recovery compat on 32/64 bit 。 ↑
Lighttpd にて Rails を使う場合の設定を紹介する。 _ アプリ毎に VirtualHost を設定する場合 Rails(Ruby on Rails) を Lighttpd で使うには、Virtualhost を用いて、以下のように設定する。ここで、Rails のディレクトリを、/var/www/localhost/htdocs/rails とする。 $HTTP["host"] == "rails.example.com" { var.servername = "rails.example.com" accesslog.filename = "/var/log/lighttpd/" + var.servername + "/access.log" $HTTP["remoteip"] == "192.168.0.0/24" { accesslog.filename = "/va
hashed b-treeの使用 † hased b-treeを使用し、ファイルが多いディレクトリ内での検索(と言うか参照)を高速化する。ただし、kernel-2.6以降のみ対応。 ファイルシステム作成時に指定するか、 # mkfs.ext3 -j -O dir_index /dev/hdxx 既存の物に対しtune2fsの後、e2fsck -Dを行い、既存のディレクトリ インデックスをhashed b-treeに変換する。 # tune2fs -O dir_index /dev/hdxx # e2fsck -D /dev/hdxx ↑ journal log を別デバイスに置く † ext3を/dev/hdxx、journal logを置くデバイスを/dev/sdxx、journal log size(block数)をssssとすると、パーティションを新たに作成する場合は、 # mke2
ここでは、サーバパラメタの最適化によるMySQLのチューンについて紹介する。 _ パラメタのチェック 現在の設定値を確認するには、 # mysqld --help とする。 MySQL-5.xでは、 # mysqld --verbose --help としないと、確認できなかった。 あるいは、クライアントから、 mysql> SHOW VARIABLES; でもOK。 ↑ key_buffer_size † MyISAM テーブルのインデックスを保存しておくバッファの大きさ。サーバ全体で共有される。メモリに余裕があれば、MyISAMのみのMySQL専用サーバなら、RAMの1/2、Apache などと共用なら、RAM の1/4程度とする。ただし、サイズを大きくすると、OSのページングのために、逆に遅くなることもあるので注意。 set-variable = key_buffer=256M M
Apacheで帯域制限を行うためには、モジュールを組み込むことで対応可能。 Apache-2系だと、 mod_limitipconn 接続制限 mod_dosdetector 接続制限 mod_bwshare 接続制限+帯域制限 mod_bw(bw_mod) 接続制限+帯域制限 mod_cband 接続制限+帯域制限 が選択肢にあるようだ。 _ mod_limitipconn 接続数での制限を行う。その他、制限をかけるファイル種別を設定できる。 接続数/帯域制限で無法なダウンローダを撃退(4/4) - @IT ↑
NFSを用いずに、ssh を使ってネットワーク経由でファイルへアクセスする方法がある。それが sshfs。fsということで、mount することが可能。 仕組みとしては、リモート側で sftp を起動させ、ローカル側での操作を反映させるのを、fuse を用いて実現しているようだ。 _ 必要なファイルのインストール まず、カーネルで、fuse が使えるようにしておく必要がある。通常は、モジュールとしてインストールされているだろうから、 # modprobe fuse で組み込む。 自分でカーネルをビルドしている場合、CONFIG_FUSE_FS を有効にしてビルドする。 さらに、ソフトウェアの方のfuse をインストールする。パッケージ管理システム(yum, apt, emerge等)を使う場合、sshfsをインストールする際に、一緒にインストールされると思う。 そして、メインの sshf
_ keep alive デフォルトの設定は、 server.max-keep-alive-requests = 128 server.max-keep-alive-idle = 30 server.max-read-idle = 60 server.max-write-idle = 360 の様になっている。それぞれ、 server.max-keep-alive-requests keep alive数の最大値 server.max-keep-alive-idle keep aliveの切断後、再接続可能になるまでの時間(秒) server.max-read-idle keep alive接続でないときに、readコネクションを切断するまでの時間(秒) server.max-write-idle keep alive接続でないときに、writeコネクションを切断するまでの時間(秒) で
mod_perl, mod_ruby などが、HTTPDのモジュールとしてプログラム(perl,ruby)を動かすのに対し、FastCGI は、HTTPDとは別のプロセスとしてプログラムを起動し、ソケットを介して通信する仕組みになっているらしい。起動されたプログラムは、CGIと違い、処理終了後もそのまま留まる。別サーバに置くことも出来るので、負荷分散も可能。 どちらも、プログラムの起動を早くする仕組みであることに違いはないが、perl, ruby, phpなどの複数のスクリプトを扱う場合、全てを Apache のモジュールとしてしまうと HTTPD が肥大化してしまい、静的コンテンツへのアクセスも重くなるなどのことが起こるため、そういった場合に有効なのかもしれない。一方、ノーマルのCGIだと、プログラムの起動が遅いし。 私の場合、mod_rubyでは tdiaryの2つのドキュメントスタイ
_ fastcgiの設定 FastCGIの設定には2種類の方法がある。lighttpdから起動する方法と、プログラムをspawn-fcgiを使って起動し、lighttpdからportやunix-domain socketを使って通信する方法だ。他のサーバでFastCGIを実行させる場合は、必然的にportとなるだろう。php以外のruby,perl,pythonなどはこの様に、各cgi毎に設定を行う必要がある。perlについては、wrapperを使うことで、Apache の mod_perlのような使いかたをすることも可能のようだ。 mod_perlのような使い方 また、phpについてはcgi毎に管理するのではなく、apacheのmod_phpの様に、phpのみを起動しておく形になる。phpのacceleratorも使用できる。その設定は、こちら。 ↑ lighttpdから起動する方法
MySQLの最適化については、マニュアルにも書かれている。最適化の方法は、サーバ自体を最適化する、DBを最適化する、SQLのクエリを最適化するという方法に別れる。 これまでのコンテンツは、MySQL/最適化/サーバパラメタへ移動しました MySQL/最適化/サーバパラメタ MySQL/最適化/テーブル
phpでは、実行の際、スクリプトを中間言語に変換してから、実行するという手順が取られ、実行後、その中間言語形式のものは破棄されるらしい。詳細については、他で探してもらうとして、ここでは、キャッシュを用いた Optimizer (正確には、opcode cacher?)の比較をする。 _ 種類 APC(Alternative PHP Cache) PECLに含まれる。Yahooも使っているらしい。 eAccelerator Trunk MMCacheが元になっている。 xcache 新たに作られたcacher。 ionCube PHP Accelerator Yahooが使ってるのはこっちだった。暇があったらベンチマークしてみよう。…と思ったが、バージョン5.xには未対応だ。 Zend Optimizer PHPの開発にも貢献している、Zend社のOptimizer。名前のとおり
lighttpdで perl を使う場合、wrapper を利用することで Apache の mod_perl のように使うことができる。 以下のようなスクリプト(dispatch.fcgiとする) #!/usr/bin/perl use strict; use CGI::Fast; use Embed::Persistent; { my $p = Embed::Persistent->new(); while (new CGI::Fast) { my $filename = $ENV{SCRIPT_FILENAME}; my $package = $p->valid_package_name($filename); my $mtime; if ($p->cached($filename, $package, \$mtime)) { eval {$package->handle...
Lighttpdとは、Apacheなどと同じhttpdサーバ。その名から連想されるように、「light=軽い」ということを特徴としているようだ。 その他、セキュリティ、柔軟性なども売りにしているらしい。また、apache2+mod_perlよりもlighttpd+fastcgiの方がパフォーマンスが上という、ベンチマークも本家サイトにある。こちらにも ウチのサーバの場合、apache2+fastcgiの構成なので、ちょっと試してみたくなった。おそらく、apacheよりは機能が限定されるだろうが、きっとこのサーバで使ってるものはあるんじゃないかと…思ったが、mod_layoutはない。 _ 各種設定 Lighttpd/FastCGI Lighttpd/FastCGI/Rails Lighttpd/FastCGI/perl Lighttpd/VirtualHost Lighttpd/rrdt
FTP/HTTP/SCPなどで、巨大なファイル(GBクラス)の転送に失敗するときがある。そんな時は、window scalingの設定を見直すと、直る場合がある。 _ 設定 現在の設定を確認するには、 % sysctl net.ipv4.tcp_window_scaling とする。kernel-2.6.8からは、ディフォルトで1:有効になっているようだ。この設定でも、本来ならば問題なく動くはずなのだが、相手側(の設定?)が原因で問題となる場合がある。この時は、設定を0:無効としてやると良い。 # sysctl net.ipv4.tcp_window_scaling = 0 なお、上のやり方では、リブート時にに設定がクリアされてしまうため、これを防ぐには、/etc/sysctl.conf に、 net.ipv4.tcp_window_scaling = 0 を追加してやると良い。そうする
次のページ
このページを最初にブックマークしてみませんか?
『FrontPage - Linux Tips』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く