ruby thin跑不起来的各种原因大总结

##首先是基本的thin安装与配置,这个没什么好说的,大家都不会出什么意外

1. gem install thin

gem install therubyracer

gem install bson_ext

2. 修改Gemfile

gem 'therubyracer', :platforms => :ruby

gem 'thin'


##接下来稍微“坑”一点的是启动thin服务了

有三种方式启动thin服务,这个需要透彻理解下,不然遇到各种明明sart服务了,但netstat -ntpl查看就是没有thin进程,你就坑爹不知怎么解决了

第一种:cd到项目根目录,直接

$ thin start

# 默认以3000端口开启的thin服务,这个不需要指定thin的yml文件

# 只要bundle install了,就可以在项目根目录下用thin start命令启动,也是检验thin是不是安装成功的好方法

第二种:也是在项目根目录

$ thin start -C config/thin.yml # 这个yml文件可以取你想要的名字

# thin.yml文件定义的方式启动thin服务,可以指定端口,指定项目,设定是development还是production

# 至于config下面的yml文件,可以自己手动创建,也可以用命令创建thin config -C config/thin.yml -c /home/dev/discourse --servers 2 -e production

第三种:在/etc/thin/下放置多个yml文件,用service thin start启动

$ service thin start/restart

# 不限定在项目根目录下

# 可以多个rails程序多站点,通过多个yml文件 service会自动start或者stop这个目录下所有yml对应服务

# 安装thin service启动脚本过程:

1. 需要在项目根目录下使用 :thin install安装 service服务脚本

2. mv /etc/rc.d/thin /etc/init.d/thin /*启动脚本移动到 init.d目录下

3. chkconfig --level 345 thin on /*设置自己启动

4. cp /home/dev/discourse/config/thin.yml /etc/thin/ /*.yml文件移动到/etc/thin/目录下

5. rvm wrapper (确认你当前的ruby版本与gemset,rvm use [email protected]_4_0):

a. rvm wrapper [email protected]_4_0 bootup thin

会生成 :/usr/local/rvm/bin/bootup_thin

非root用户,如discourse用户登录的,会生成:/home/discourse/.rvm/bin/bootup_thin

b. 修改vi /etc/init.d/thin 中:

DAEMON=/usr/local/rvm/bin/bootup_thin

SCRIPT_NAME=/etc/init.d/thin

CONFIG_PATH=/etc/thin


##各种可能遇到的坑点

#容易出错1. 端口占用,

解决:netstat -ntlp 查看端口占用情况,kill -9 1212删除占用即可


#容易出错2. rvm wrapper

解决:确认你当前的ruby版本与gemset

可以创建新的gemset, rvm use 2.0.0@discdev --create --default,再重新bundle install


#容易出错3. Can't start thin `parse!': invalid option: --threadpool-size=20

切换到1.9.3无此问题,在2.0.0下要升级thin到1.6.0,修改Gemfile中 gem 'thin', "1.6.0"


#容易出错4. yml文件内容输入错误

1. chdir 项目文件目录输入错了

2. environment: production 与你在 bundle install RAILS_ENV=development 时设定的环境不一致

3. port: 3000 与你在nginx.conf中设定的端口不一致,这个错了,不影响thin的启动,但nginx的转过来的请求,thin接收不到了


#容易出错5. 当前用户对tmp与log目录及其子目录,没有权限。进去看一下是不是都是root用户组的。chown,chgrp到当前用户

你可能感兴趣的:(Ruby)