連載第28回
2014年3月8日
初めて使うwebminでやっておくべき事(その4)

 前回はwebminが通るポートの番号を変更しました。今回はセキュリティとは全く関係ないのだけれど、メモリ使用量の削減に関してアレコレ努力してみたいと思います。以前、自分に割り当てられている1GBという少量のメモリを最大限に活用しようと「第16回:ServersMan@VPS 不要なサービスを停止する」では不要なアプリの稼働を停止させたりしましたが、今回webminを導入したことによってどれだけメモリを喰っているのか?早速、webminにアクセスしている状態で「free -m」を入力しチェックしてみると192MB使っていました。次に「# service webmin stop」でwebminを終了させて、再度「free -m」を入力してみると、20MB減少して172MBに。

メモリの使用状況チェック

# service webmin stop
# free -m

 以前、不要サービスを停止させた時は、サーバーを再起動して未使用メモリを解放したのですが、しかしここでも同様に再起動させると、せっかく停止させたwebminがまた起動してしまうのではないか…。

xinetd(ザイネットデー)とは?

 さて。サーバー引っ越しで最低限のセキュリティ設定をしておこうと思うきっかけになったこちらの記事「西川和久の不定期コラム■個人/小規模用のネットサーバーにPCはもう不要!?」に再度目を通してみると、当時はまだメモリ提供量が少なかったものの「512MBであってもサクサク」という感想が見られ、それなら現状webminを稼働させたままでも800MB超残っているのですから然程心配することもなさそうです。しかし今回、メモリ周りの話を持ち出したのは、こちらのユーザー記事の後半を読んで「xinetd」なるものを知ったからです。普段webminを使用していないときは停止させておけるのなら、是非活用してみたいと思いました。

ServersMan@VPSで使用するWebminの最初の設定(zundairo)

 では「xinetd」とは何なのか?実は第16回でもチラっと出てきてたんですね。改めてネットで色々ググってみると、別名「スーパーデーモン」とも呼ぶのだそうな。凄く強そうである。

外部サイト参考記事
Linux Tips「Xinetdの使い方を知りたい」(ITmediaエンタープライズ)
xinetd の設定方法(NEC)

 どちらも詳細な説明が書かれてあるのですが、どうも概要が分かりにくい…。スーパーデーモンとは一体何を実現するためのサービスなのか?僕にはこちらの紹介が一番すんなり理解できました。

デーモンとスーパーデーモン(daemon) (workinghinaの日記)

 ネット越しにアクセスがあると、それを感知して予め指定しておいたサービスを起動させる…という解釈でOKでしょうか。しかしここで疑問なのは、一旦起動したサービスを停止させるにはどうするのでしょう?これまで通り「# service ●●● stop」とターミナルを使ってコマンド入力しないといけないのなら、最初からターミナルでサービスの起動&停止を手動で行うのと、あんまり手間は変わらないような気もします…。

webminの「起動及びシャットダウン」がよく分からない

 ところで、実はwebminの中に「起動及びシャットダウン」という項目があって、どうやら各種サービス個別の稼働状況のコントロールが出来るようなのですが、どうも今一つ設定方法(下部にあるメニューの意味)が分からない。そこで今回はターミナルを使って、xinetdでのwebmin稼働設定をしてみようと思います。では早速、zundairoさんの記事と、クラウド備忘録さんの記事に目を通しながら、順を追って作業。基本的なところは公式サイトのFAQに手順が紹介されています。

外部サイト参考記事
xinetd経由でWebmin起動(クラウド備忘録)

1.Webmin の常駐解除

 xinetd自体は第16回でもチラと登場したように、最初からServersMan@VPSにインストール済みのようなので、まずは何よりwebminを停止させ、さらに常駐解除します。この辺りは第16回の復習となります。どちらのコマンドもroot権限で行います。

webminを終了

# service webmin stop

サーバーの再起動時にwebminを自動起動させない

# chkconfig webmin off

2.Webmin をスーパーデーモン(xinetd)から起動するように設定

 次にwebminの初期設定ファイル「miniserv.conf」を「vi」を使って修正し、スーパーデーモン経由で起動するように設定します。

webminの初期設定ファイルを開く

# vi /etc/webmin/miniserv.conf

webminの初期設定ファイルを開く

#session=1
inetd=1

1行目:この行を見つけ、先頭に#を付けてコメントアウト。
2行目:この行を追加し「:wq」で上書き保存。

3.xinetdの設定

 次にxinetdが扱うサービスとしてwebminを登録するため、「/etc/xinetd.d/」というディレクトリに「webmin」という設定ファイルを作成。

webmin設定ファイル作成

# vi /etc/xinetd.d/webmin

 開いた白紙のファイル内に、次のテキストをコピペ。それぞれのパラメータの意味は、コチラの記事や、コチラの記事などを参照してください。丸投げやん。

設定内容を記述

service webmin
{
user = root
env = LANG=
port = zzzzz
socket_type = stream
protocol = tcp
wait = no
disable = no
type = UNLISTED
server = /usr/libexec/webmin/miniserv.pl
server_args = /etc/webmin/miniserv.conf
}

5行目:ポート番号は前回変更したものを指定。

4.xinetd 再起動(xinetd設定の有効化)

 xinetdを再起動します。が、何となくメモリを解放したくて、VPSサーバー自体も再起動させました。

再起動する

# service xinetd restart

# shutdown -r now

1行目:xinetdを再起動。
3行目:続けてサーバーの再起動。

さて、結果は如何に

  上記設定作業を終え、サーバーを再起動した後、まずは「netstat -nl」でwebminが起動していないかどうか確認。すると前回でwebminに設定したポート番号「zzzzz」が表示されています(ピンクの箇所)。ありゃ?
 サーバーの再起動時に、webmin自体は起動しないよう設定したつもりなのですが、どこかでミスをしたのか。そこでメモリの使用状況をチェックしてみると、webminインストール以前の42MBという状態にちゃんと戻っています(たぶん、これまでいろいろ操作してきてゴミが一掃されリフレッシュしたのでしょう)。では、上記ポート番号(zzzzz)は一体何のサービスが待機状態になっているのか??

 そこで今度は「netstat -anp」を入力してみると…。

 なるほど、xinetdが待機状態で使用しているのですね。

 では早速「https://www.♥♡♥.com: zzzzz」にアクセスしてみると、これまではwebminデフォルトのログイン画面が表示されていたのに、今回からは左図のようなログインウィンドウが出てきました。つまり、背後ではまだwebminが起動しておらず、xinetdが「あんた誰?」と聞いている状態なのですね。モザイクになっている箇所には「www.♥♡♥.com: zzzzz」が表示されています。

 rootとパスワードでログインして、ちょっとあちこちを表示してみた後にメモリ使用状況を見てみると、先と然程かわっていませんでした(50MBくらい)。冒頭で192MBも使っていたのは、ここしばらくサーバーの再起動をせずにいろいろ操作していたからなのでしょうか。その辺りはよく分からないですが、ではとりあえずログアウトしようと思ったところ、いつもの場所の表示が「ユーザーを切替え…」に変化しているのに気付きました(前回までは「ログアウト」でした)。webminを終了することが出来ないのかしらんと思い、とりあえずクリックしてみると、また上図のログインウィンドウが表示され待機状態に遷移。

 これが「webminが停止状態になっている」ことを示しているのかどうか判断出来ないのだけれど、この状態でのメモリ使用状況が50MB辺りで大きな変化も見られないので、これで良しとします。たま〜にターミナルでチェックしてみて、ゴミが溜まっているようであれば再起動すれば済む事ですし、今回は深く追求せずこの辺でドロンするとします。つづく。