権限のないユーザーとして実行されるSage Cell Server(オープンソース数学エンジン)を設定しようとしています。sagecell
これを行うために権限のないユーザーを作成しました。正常にインストールされ、正常に実行された場合
sagecell@primary-server:~/sage/devel/sagecell$ ../../sage web_server.py
その後、すべてが期待どおりに機能します。このアプリケーションの興味深い要件(関連する場合もあればそうでない場合もあります)は、パスワードのないSSHログイン(つまりssh localhost
動作する)が必要であることです。操作を実行するために、SSHキーを使用して権限のないアカウントを設定しました。
サーバーを起動した後、スクリーンセッションを手動で作成し、スクリーンセッションで実行するのではなく、次の設定を使用して新しいジョブを作成しようとしています。
description "Sage Cell Server Starter"
start on runlevel [2345]
stop on starting rc runlevel=[016]
kill timeout 5
exec su -s /bin/sh -c 'exec "$0" "$@"' sagecell -- /home/sagecell/sage/sage /home/sagecell/sage/devel/sagecell/web_server.py
しかし、これはうまくいきません。 /var/log/upstart/sagecell.log を見ると、次のエラーが表示されます。
2013-02-20 00:11:09,665 sagecell:INFO starting tornado web server
Traceback (most recent call last):
File "/home/sagecell/sage/devel/sagecell/web_server.py", line 78, in <module>
application = SageCellServer()
File "/home/sagecell/sage/devel/sagecell/web_server.py", line 57, in __init__
kernel_timeout=kernel_timeout)
File "/home/sagecell/sage-5.7.rc0/devel/sagecell-main/trusted_kernel_manager.py", line 28, in __init__
self._sender = sender.AsyncSender() # Manages asynchronous communication
File "/home/sagecell/sage-5.7.rc0/devel/sagecell-main/sender.py", line 22, in __init__
self.router.bind(self.filename)
File "socket.pyx", line 489, in zmq.core.socket.Socket.bind (zmq/core/socket.c:4797)
zmq.core.error.ZMQError: Permission denied
編集:アプリケーションがポート8080にバインドされていることに注意してください(わかっている限り8080のみ)。重要なのは、実行すると権限なしで実行されますが、Upstartが同じユーザーとして実行しても実行されないことです。
ユーザーの下でうまく実行されているアプリケーションがsagecell
スクリプトASを実行する起動操作の下で実行されない理由を誰が教えてもらえますかsagecell
?