我已经在混合模式下安装了RVM,并让Phusion Passenger以独立模式运行。
我发现这个init脚本在启动时启动我的Phusion Passenger独立服务器:http://memcloud.com/note/show/167
仅修改规定值,它给了我以下错误,但仍然会运行
-su: /home/myuser/.rvm/bin/rvm: No such file or directory
我在which rvm
中运行myuser
,发现RVM在/usr/local/rvm/bin/rvm
。因此,我更新了RVM
变量以反映这一点,并将RVM="$USER_HOME/.rvm/bin/rvm"
更改为RVM="/usr/local/rvm/bin/rv"
。现在它给了我以下信息,但它仍在运行。
RVM is not a function, selecting rubies with 'rvm use ...' will not work.
如果系统正在运行,不确定它是否有问题,但我只是想确定。
答案 0 :(得分:0)
我会说这个脚本错了,你应该使用更像这样的东西:
#!/usr/bin/env bash
### BEGIN INIT INFO
# Provides: my-app passenger in standalone
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/stop my-app web site
### END INIT INFO
# BEGIN MINIMAL CHANGES
USER=www-data
USER_HOME=/var/www
APP_PATH=/var/www/my-app/current
GEM_SET=ruby-1.8.7-p330@my-app
ADDRESS=127.0.0.1
PORT=3000
ENVIRONMENT=production
# END MINIMAL CHANGES
RVM="/usr/local/rvm/bin/rvm"
PASSENGER="$USER_HOME/.rvm/gems/$GEM_SET/bin/passenger"
PASSENGER="cd $APP_PATH; $RVM $GEM_SET do $PASSENGER"
CMD_START="$PASSENGER start -a $ADDRESS -p $PORT -e $ENVIRONMENT -d"
CMD_STOP="$PASSENGER stop -p $PORT"
. /lib/lsb/init-functions
case "$1" in
start)
echo "Starting myapp passenger"
echo $CMD_START
su - $USER -c "$CMD_START"
;;
stop)
echo "Stopping myapp passenger"
echo $CMD_STOP
su - $USER -c "$CMD_STOP"
;;
*)
echo "Usage: $0 start|stop" >&2
exit 3
;;
esac
您还可以替换GEM_SET=.
以使rvm使用ruby存储在.rvmrc
中,但这需要$USER
信任.rvmrc
...这也可以在此处完成脚本:
su - $USER -c "rvm rvmrc trust $APP_PATH"
在start)