お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2009-01-09 10:49:51

uchan21
メンバ
登録日: 2008-12-25

ser (0.9.7-1) が起動できません

SIPサーバのアプリケーション ser (0.9.7-1) を起動しようとすると、次のようなエラーが出て起動させることが出来ません。

  /usr/sbin/serctl start

 Starting SER : PID file /var/run/ser.pid does not exist -- SER start failed

何が原因か教えて頂けますでしょうか?


Ubuntuのバージョンは、8.04 LTS (デスクトップ版)です。
serのインストールはSynapticパッケージマネージャで実行しました。
インストール直後に自動で起動する際は問題なく起動できたのですが、いったん終了して、再度起動しようとするとダメでした。
以降、何度か起動を試みましたが、同じ現象が続いています。

よろしくお願い致します。

オフライン

 

#2 2009-01-09 11:35:18

mizuno
管理者
From: Kyoto
登録日: 2007-02-28

Re: ser (0.9.7-1) が起動できません

エラーメッセージをそのまま解釈すればPIDファイルが存在していないようですが、/var/run/ser/pid というファイルは存在しますか?
自動起動する場合のスクリプトを調べてみると、/usr/sbin/serctl をキックする場合との違いがわかるかもしれません。

オフライン

 

#3 2009-01-09 11:57:25

uchan21
メンバ
登録日: 2008-12-25

Re: ser (0.9.7-1) が起動できません

mizuno様 ご回答ありがとうございます。

mizuno による投稿:

エラーメッセージをそのまま解釈すればPIDファイルが存在していないようですが、/var/run/ser/pid というファイルは存在しますか?

/var/run/ser.pid というファイルはエラーメッセージ通り、存在しません。

#なぜ、このファイルが存在しない(生成されていない)のですか? と質問させて頂いた方が良かったですね。

ser.cfg を見てみたんですが、それらしい記述は見つかりませんでした。
Googleで同様の症状が報告されているサイトを見つけ、そこでは、moduleをloadする際に対象のmoduleのpathが
ser.cfgの中で正しく記述されていないことが原因でした。なので、ser.cfgをチェックしてみたんですが、moduleのpathは正しく
記述されていました。

mizuno による投稿:

自動起動する場合のスクリプトを調べてみると、/usr/sbin/serctl をキックする場合との違いがわかるかもしれません。

「自動起動する場合のスクリプト」はどうやって確認すればよろしいでしょうか?

よろしくお願い致します。

オフライン

 

#4 2009-01-09 22:02:35

ry
メンバ
登録日: 2008-07-30

Re: ser (0.9.7-1) が起動できません

uchan21 による投稿:

「自動起動する場合のスクリプト」はどうやって確認すればよろしいでしょうか?

誠に恐縮ながら、自身では ser をインストールすらしていないので、的確な回答では無いかもしれないことをあらかじめお断りしておきます

ubuntu (Debian 派生デストリビューション) では、Synaptic パッケージマネージャなどを用いて導入したサーバーアプリケーションの起動、終了には /etc/init.d/ 以下にあるスクリプトを使うようになっています
ser の場合は多分 /etc/init.d/ser というスクリプトを使うようになっていると思います
具体的には、以下のように引数を付けて実行します

起動: /etc/init.d/ser start
終了: /etc/init.d/ser stop
終了後再起動: /etc/init.d/ser restart

結局はスクリプトの中で /usr/sbin/serctl (もしくは /usr/sbin/serctl が呼び出す ser の本体部プログラム)  を呼び出しているだけのことですが、その前後に雑多な設定を行っていることもあります
エラーメッセージから予想するに、この場合は /var/run/ser.pid を作成しておいてから /usr/sbin/serctl start を呼び出すとか、別の場所 (多分 /var/run/ser/ser.pid) の PID ファイルを使うようにしている可能性が考えられます

一度 /etc/init.d/ ディレクトリの中を覗いてみて ser の起動スクリプトだと思われるもの使ってみてはどうでしょう

オフライン

 

#5 2009-01-09 22:54:44

uchan21
メンバ
登録日: 2008-12-25

Re: ser (0.9.7-1) が起動できません

ry様 ご回答ありがとうございます。

ryさん:一度 /etc/init.d/ ディレクトリの中を覗いてみて ser の起動スクリプトだと思われるもの使ってみてはどうでしょう

教えていただきました通り、/etc/init.d/ser ありました。全部を下の方にコピペしました。
また、serctlの対応すると思われる部分も抜粋してみました。
ただ、両者を比べて見ても、私にはどうすればよいか、見当がつきません。。
何かアドバイスしていただけることはありますでしょうか?
よろしくお願い致します。

---- serctlより抜粋 ----

# configuration for starting/stopping ser
PID_FILE=/var/run/ser.pid
SYSLOG=1 # 0=output to console, 1=output to syslog
STARTOPTIONS= # for example -dddd
DIR=`dirname $0`
SERBIN=$DIR/ser
AWK=awk

--------------------


---- /etc/init.d/ser の内容 ----

#! /bin/sh
#
# skeleton    example file to build /etc/init.d/ scripts.
#        This file should be used to construct scripts for /etc/init.d.
#
#        Written by Miquel van Smoorenburg <[email protected]>.
#        Modified for Debian GNU/Linux
#        by Ian Murdock <[email protected]>.
#
# Version:    @(#)skeleton  1.8  03-Mar-1998  [email protected]
#
#  adapted for ser by Andrei Pelinescu-Onciul <[email protected]>
# $Id: ser.init,v 1.3.2.1 2006/01/11 00:23:10 janakj Exp $

### BEGIN INIT INFO
# Provides:          ser
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# Should-Start:     
# Should-Stop:       
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: SIP Express Router
# Description:       Start the SIP Express Router daemon.
### END INIT INFO


PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/ser
NAME=ser
DESC=ser
PIDFILE=/var/run/$NAME/$NAME.pid
PARAMS="-P $PIDFILE -u ser -g ser"

test -f $DAEMON || exit 0

set -e

case "$1" in
  start)
    echo -n "Starting $DESC: $NAME"
    start-stop-daemon --start --quiet --pidfile $PIDFILE \
        --exec $DAEMON -- $PARAMS
    echo "."
    ;;
  stop)
    echo -n "Stopping $DESC: $NAME"
    start-stop-daemon --oknodo --stop --quiet --pidfile $PIDFILE \
        --exec $DAEMON
    echo "."
    ;;
  #reload)
    #
    #    If the daemon can reload its config files on the fly
    #    for example by sending it SIGHUP, do it here.
    #
    #    If the daemon responds to changes in its config file
    #    directly anyway, make this a do-nothing entry.
    #
    # echo "Reloading $DESC configuration files."
    # start-stop-daemon --stop --signal 1 --quiet --pidfile \
    #    $PIDFILE --exec $DAEMON
  #;;
  restart|force-reload)
    #
    #    If the "reload" option is implemented, move the "force-reload"
    #    option to the "reload" entry above. If not, "force-reload" is
    #    just the same as "restart".
    #
    # Check if ser configuration is valid before restarting the server
        (($DAEMON -c 2>&1) | grep "config file ok, exiting") > /dev/null
    if [ $? -ne 0 ]; then
            ($DAEMON -c 2>&1)
        echo -e "\nThere are errors in the configuration file. Please fix them first"
        echo -e "\n$out\n"
        exit 0
    fi
    echo -n "Restarting $DESC: $NAME"
    start-stop-daemon --oknodo --stop --quiet --pidfile \
        $PIDFILE --exec $DAEMON
    sleep 1
    start-stop-daemon --start --quiet --pidfile \
        $PIDFILE --exec $DAEMON  -- $PARAMS
    echo "."
    ;;
  *)
    N=/etc/init.d/$NAME
    # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
    echo "Usage: $N {start|stop|restart|force-reload}" >&2
    exit 1
    ;;
esac

exit 0

オフライン

 

#6 2009-01-09 23:06:36

yama
メンバ
登録日: 2006-10-23

Re: ser (0.9.7-1) が起動できません

ry さんの言う通り、

コード:

起動: sudo /etc/init.d/ser start
終了: sudo /etc/init.d/ser stop
終了後再起動: sudo /etc/init.d/ser restart

でサーバーのスタート、ストップ、リスタートが操作できます。
私もserを入れてないので確実ではないですが、ubuntuでサーバーの起動操作の作法はそうなっていますよ。

オフライン

 

#7 2009-01-10 07:02:42

ry
メンバ
登録日: 2008-07-30

Re: ser (0.9.7-1) が起動できません

問題になっている pid ファイルに関する部分だけを抜粋します

serctl
PID_FILE=/var/run/ser.pid

/etc/init.d/ser
NAME=ser
PIDFILE=/var/run/$NAME/$NAME.pid

これをみると、明らかに pid ファイルを作成する場所が互いに異なっていることが分かります
つまり、ubuntu のパッケージを使って ser をインストールしたときは、ser の起動、終了などの操作に serctl を使うと問題が生じる可能性が高い (というより明らかに問題が生じる) ということです
ubuntu のサーバーアプリケーション制御の作法に則って、/etc/init.d/ser を使うようにしましょう

オフライン

 

#8 2009-01-10 14:54:05

uchan21
メンバ
登録日: 2008-12-25

Re: ser (0.9.7-1) が起動できません

ry様、yama様 ありがとうございます。

sudo /etc/init.d/ser start を使うと、起動は出来ました。
しかし、SIPクライアントからの登録処理が出来ませんでした。
起動はしたんだけど、正しく動作していない状況なのかもしれません。

---

次に、serctlを次のように変更して、

 serctl
 PID_FILE=/var/run/ser/ser.pid

 /etc/init.d/ser
 NAME=ser
 PIDFILE=/var/run/$NAME/$NAME.pid

/usr/sbin/serctl startを実行したところ、

 $ /usr/sbin/serctl start
 Starting SER : PID file exists! () already running?

 $ /etc/init.d/ser stop
 Stopping ser: ser.

 $ /usr/sbin/serctl start
 Starting SER : PID file exists! () already running?

となって、起動できませんでした。
上記の引用は、startしたら、今度はPID file exists!と言われたので、/etc/init.d/ser stopで止めてから、
再度トライしたけどダメだった、という一連の流れです。

---

さらに、次に、serctlへ加えた変更を元に戻して、sudoを付けて起動したところ、

 $ sudo /usr/sbin/serctl start

 Starting SER : started pid(8539)

起動できました。
SIPクライアントからの登録処理も成功した。
おそらく、1回目にうまく起動できたのと同じ状態ではないかと思います。

---

結論としては、/usr/sbin/serctl startを実行する時に、sudoを付けていなかっただけということなんですが、
今回の状況の原因として、妥当と言えるのでしょうか?
もし、そうであれば、大変お騒がせしてしまい申し訳ありません。

オフライン

 

#9 2009-01-11 09:14:37

ry
メンバ
登録日: 2008-07-30

Re: ser (0.9.7-1) が起動できません

多分、serctl ファイル中の

コード:

PID_FILE=/var/run/ser/ser.pid


コード:

NAME=ser
PIDFILE=/var/run/$NAME/$NAME.pid

に変更したときでも、sudo serctl start とすれば起動できたと思います

システムの動作に関する操作をする (管理者権限が必要な) ときは、原則としてそれらのコマンドの前に sudo をつけて実行します
ここまでの私のコメントでは、そのことを失念していたため不要な手間を掛けさせてしまっていたかもしれません

さて

uchan21 による投稿:

さらに、次に、serctlへ加えた変更を元に戻して、sudoを付けて起動したところ、

 $ sudo /usr/sbin/serctl start

 Starting SER : started pid(8539)

起動できました。
SIPクライアントからの登録処理も成功した。
おそらく、1回目にうまく起動できたのと同じ状態ではないかと思います。

インストール直後は、sudo /etc/init.d/ser start を使って自動的に起動されるので、若干違いがあると思います

先に提示いただいた内容からすると、/etc/init.d/ser start では /usr/sbin/ser -P /var/run/pid/ser.pid -u ser -g ser を起動しているようです
serctl の方では (これを修正する前は)、/usr/sbin/ser -P /var/run/ser.pid のように起動していると思われます
この場合、/usr/sbin/ser を起動するユーザー、グループは root、root になるので、/usr/sbin/ser -u root -g root で起動したのと同じことになります

このことから

uchan21 による投稿:

sudo /etc/init.d/ser start を使うと、起動は出来ました。

しかし、SIPクライアントからの登録処理が出来ませんでした。

このような状況になる原因としては、SIP クライアントからの登録情報を書き込む場所 (ファイル、ディレクトリ) のアクセス許可が、ユーザー: ser、グループ: ser に対して割り当てられていない可能性が考えられます

多分、serctl ファイル中の

コード:

STARTOPTIONS= # for example -dddd


コード:

STARTOPTIONS= -u ser -g ser # for example -dddd

のように修正して、sudo /etc/init.d/ser start を実行したときと同様に、/usr/sbin/ser がユーザー: ser、グループ: ser で起動するようにすると、SIP クライアントからの登録処理ができなくなると思います
逆に、/etc/init.d/ser ファイル中の

コード:

PARAMS="-P $PIDFILE -u ser -g ser


コード:

PARAMS="-P $PIDFILE -u root -g root
    または
PARAMS="-P $PIDFILE

のように修正して、sudo /etc/init.d/ser start とすれば、SIP クライアントからの登録もうまくいくような気がします

最後の編集者: ry (2009-01-11 09:16:05)

オフライン

 

#10 2009-01-11 10:56:32

uchan21
メンバ
登録日: 2008-12-25

Re: ser (0.9.7-1) が起動できません

ry様 詳細なご回答をありがとうございます。

”権限”の関係は、Linux初心者の私には、鬼門の一つであります。
後々、同じようなトラブルに遭遇した時のために、肝に銘じておきたいと思います。
ところで今回の件は、serのバグというわけではないと考えてよろしいですよね。 
 
 ↑ こういう質問は未だ私の知識が心許ないレベルであることを曝していますがご容赦いただければ幸です。

#Ubuntuの画面は、ウィンドウズに比べるとソフトで、目にやさしいですね。
#最近目が疲れやすくてウィンドウズPCをいじってると、しばしば目から来ると思われる頭痛に悩まされるのですが、Ubuntuだと幾分楽です。

オフライン

 

Board footer

Powered by FluxBB