如果您正在運行Ubuntu(或其他基於Upstart的Linux),我已經使用以下腳本和服務配置來運行EventMachine服務。也許它會爲你工作。對於其他基於init的系統,您可以修改該方法。
在這個例子中,SVC是我的應用程序的名稱,BASEHOME是我把它安裝到(在我的情況/usr/share
)
位置爲您EM服務器創建初始化控制腳本
將該文件放在您的EM應用程序的lib目錄中,並更新SVC和BASEDIR適當。
#!/bin/bash
SVC=em-server
BASEHOME=/usr/share
BASEDIR=$BASEHOME/$SVC
echo Starting $SVC: `date`
echo Running as: `whoami`
echo Running in: $BASEDIR
### Set RVM source if you are using it, otherwise remove these two lines
source "/usr/local/rvm/scripts/rvm"
rvm use 2.1
###
cd $BASEDIR
ruby $BASEDIR/lib/em_server.rb
配置新貴運行控制腳本
sudo -i
SVC=em-server
BASEDIR=/usr/share/$SVC
adduser $SVC --system
usermod -a -G em-service $SVC
chown --recursive $SVC:$SVCGRP $BASEDIR
chmod --recursive 660 $BASEDIR
chmod 550 $BASEDIR/lib/start_em_service_upstart.sh
chmod 550 $BASEDIR/scripts/*
cat > /etc/init/$SVC.conf <<EOF
description "EM Server"
start on (starting network-interface
or starting network-manager
or starting networking)
stop on runlevel [!2345]
setuid $SVC
exec $BASEDIR/lib/start_em_service_upstart.sh
respawn
EOF
initctl reload-configuration
exit
運行sudo service em-server start
嘗試一下。
務必檢查/var/log/upstart/em_server.log
以獲取有關服務是否按預期啓動或發生其他問題的反饋。
此外,請注意RVM可能會導致各種問題。在我的例子中,我將其設置爲多用戶,以避免惱人的Ruby和Bundler發行者。雖然
可能不理想在調用守護進程或更高版本後執行停止嗎? – itdoesntwork
之後。它從終端分離,創建pid文件,然後沒有其他事情發生。在日誌中沒有任何東西出現(如果我禁用守護進程,日誌接收輸入) – DVG
我從gem提供的示例代碼中取得了[this](https://gist.github.com/sid-code/8ddb4573ea683bf6bec9 )。它工作正常。這是否將問題隔離到記錄器? – itdoesntwork