##首先是基本的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到当前用户