$value ) if( $value['eid'] == $eid ) return $value; return null; } function RecommendedEntry_updateIndexFile( $eid_updated, $eid, $direction ) { $filename = '/var/www/VirtualDomain/kenji00.com/blog/recommend_data'; is_dir( $filename ) || mkdir( $filename ); $filename .= '/'. substr( $eid_updated, -1 ); is_dir( $filename ) || mkdir( $filename ); $filename .= sprintf( '/%d.txt', $eid_updated); file_exists( $filename ) || touch( $filename ); $fp = @fopen( $filename, 'r+' ); if( $fp ) { if( flock( $fp, LOCK_EX | LOCK_NB )) { $ret = ''; $not_found = 1; while( !feof( $fp ) && ( $buf = fgets( $fp ))) { list( $_eid, $_n0, $_n1 ) = split( "[\t\r\n]", $buf ); if( $eid == $_eid ) { $not_found = 0; $direction ? $_n1++ : $_n0++; } $ret .= sprintf( "%d\t%d\t%d\n", $_eid, $_n0, $_n1 ); } if( $not_found ) $ret .= sprintf( "%d\t%d\t%d\n", $eid, 1 - $direction, $direction); rewind( $fp ); fwrite( $fp, $ret, strlen( $ret )); } fclose( $fp ); } } function RecommendedEntry_incoming() { $eid_prev = $_COOKIE['mtrcmnd_eid']; if( isset( $eid_prev )) { if( $eid_prev != 140 && RecommendedEntry_getEntryData( $eid_prev )) { RecommendedEntry_updateIndexFile( 140, $eid_prev, 0 /*incoming_from*/ ); RecommendedEntry_updateIndexFile( $eid_prev, 140, 1 /*outgoing_to*/ ); } } else { RecommendedEntry_updateIndexFile( 140, 140, 0 /*incoming_from*/ ); } } RecommendedEntry_incoming(); function RecommendedEntry_outgoing() { setcookie( 'mtrcmnd_eid', 140, time() + 2592000, '/' ); } RecommendedEntry_outgoing(); function RecommendedEntry_initialize( $mode = 0 ) { global $RecommendedEntry_table; $RecommendedEntry_table = array(); $filename = '/var/www/VirtualDomain/kenji00.com/blog/recommend_data/'. substr( '140', -1 ). '/140.txt'; $fp = @fopen( $filename, 'r' ); if( $fp ) { if( flock( $fp, LOCK_SH | LOCK_NB )) { while( !feof( $fp ) && ( $buf = fgets( $fp ))) { list( $_eid, $_n0, $_n1 ) = split( "[\t\r\n]", $buf ); if( 140 == $_eid ) continue; else if( $mode == 1 ) $RecommendedEntry_table{$_eid} = $_n0; else if( $mode == 2 ) $RecommendedEntry_table{$_eid} = $_n1; else $RecommendedEntry_table{$_eid} = $_n0 + $_n1; } arsort( $RecommendedEntry_table, SORT_NUMERIC ); } fclose( $fp ); } } function RecommendedEntry_GetEntry( $_index ) { global $RecommendedEntry_table; foreach( $RecommendedEntry_table as $eid => $count ) { if( --$_index ) continue; $entry = RecommendedEntry_getEntryData( $eid ); if( $entry ) $entry['count'] = $count; return $entry; } } ?> webminをxinetd経由+SSL化して使う - 寝不足にて候(仮)
Feb
10
2008

webminをxinetd経由+SSL化して使う

久々に素のOSを育ててますが、トキメキよりも面倒くささが先にたち、「あぁ、もうオッサンだなぁ」と嘆息しているわけです。先ほどTSUTAYAに返しに行ったDVDには「北の国から 83 冬」が混じってましたし、一番最近買ったCDは、盗んだバイクで走り出す人を謳ったモノ(BookOFFで250円)だし。

なので、configファイルをviでガシガシ編集するよりも、適当なツールで基本設定をしてもらうという手抜き工事に走っています。

となると俄然便利なのがwebmin

ただし、このコは結構なメモリ喰い。常駐させるのはヤな感じです。
そういう時は、xinetdでアクセスした時だけ起動させましょう。

先ずは、xinetdをインストール。なんて楽なんでしょう。PKG管理バンザイ。

# yum install xinetd
# sbin/chkconfig xinetd on

続いて、webminのインストール。これも楽勝。

# wget http://prdownloads.sourceforge.net/webadmin/webmin-1.400-1.noarch.rpm
# rpm -Uvh webmin-1.400-1.noarch.rpm

常駐でOKならば、ここで # /sbin/chkconfig webmin on しちゃえばいいですが、webminのFAQで手順を確認しつつ、xinetd経由に設定しましょう。

ちなみに、webminはdefaultでは、10000番のポートを使用するようになっていますが、このポート番号はndmpに予約されちゃってますので、ianaのポート番号表を確認のうえ、適当な空きポートに設定しましょう。
49152以上はPRIVATE PORTSなので、ココを使うのが無難でしょう。
「会社からは80番しか行けないんだよ。」な場合はReverse Proxyするということで。

# vi /etc/services
webmin 49152/tcp
# vi /etc/webmin/miniserv.conf
#port=10000
port=49152
#session=1
inetd=1
# vi /etc/xinetd.d/webmin
service webmin
{
user = root
env = LANG=
port = 49152
socket_type = stream
protocol = tcp
wait = no
disable = no
type = UNLISTED
server = /usr/libexec/webmin/miniserv.pl
server_args = /etc/webmin/miniserv.conf
}

# /etc/init.d/xinetd restart

ついでですから、SSL対応も済ませちゃいましょう。perl-Net-SSLeayモジュールが必要になりますので、入ってない場合は

# yum install perl-Net-SSLeay

してから、Webminの[Webmin設定]->[SSL暗号化]メニューで設定。

userminを導入する場合も、PATHと使用ポート以外は全く同じ設定でイケます。

このエントリを読んだ人はこんなんも読んでいます

トラックバック(0)

トラックバックURL: http://blog.kenji00.com/MT/mt-tb.cgi/139

コメントする

過去のエントリ(一覧)

Powered by Movable Type 4.261
Creative Commons License
このブログはクリエイティブ・コモンズでライセンスされています。