-- Redmine

# nginx mysql 安装 google

useradd -g 100 -u 200 user_00

mkdir -p /usr/local/services/src

chown -R user_00.users /usr/local/services/

su - user_00; cd /usr/local/services/src


# Libyaml

wget -c http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz

tar xf yaml-0.1.4.tar.gz

cd yaml-0.1.4

./configure --prefix=/usr/local/services >/dev/null

make >/dev/null && make install >/dev/null

cd ..


# Imageagick

wget -c ftp://ftp.u-aizu.ac.jp/pub/graphics/p_w_picpath/ImageMagick/p_w_picpathmagick.org/ImageMagick-6.8.5-9.tar.gz

tar xf ImageMagick-6.8.5-9.tar.gz

cd ImageMagick-6.8.5-9

./configure --prefix=/usr/local/services/ >/dev/null

make >/dev/null && make install >/dev/null

cd ..


# Ruby

wget -c http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.gz

tar xf ruby-2.0.0-p0.tar.gz

cd ruby-2.0.0-p0

./configure \

CPPFLAGS=-I/usr/local/services/include \

--prefix=/usr/local/services \

--enable-shared \

--enable-pthread \

--disable-install-doc >/dev/null

make >/dev/null && make install >/dev/null

cd ..


# ruby config

sudo vim /etc/profile

# 文件尾增加

PATH=/usr/local/services/bin:$PATH

source /etc/profile

ruby --version

ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-linux]


# 修改Ruby源

gem sources --remove http://rubygems.org/

gem sources -a http://ruby.taobao.org/

gem sources -l  # 确认修改成功否


# Rake/Rails

gem install rdoc

gem install rake

gem install rails


# redmine install

wget http://rubyforge.org/frs/download.php/76867/redmine-2.3.0.tar.gz

tar xf redmine-2.3.0.tar.gz

sudo mkdir -p /data/www/redm.domain.com

sudo chown -R user_00.users /data/www

cp -Rp redmine-2.3.0/* /data/www/redm.domain.com


# 修改bundle ruby源

cd /data/www/redm.domain.com

vim Gemfile

source 'http://ruby.taobao.org'


# 安装redmine 依赖

PKG_CONFIG_PATH=/usr/local/services/lib/pkgconfig gem install rmagick

bundle install


# 配置Redmine

mv config/database.yml.example config/database.yml  

vim config/database.yml

production:

 adapter: mysql2

 database: redmine

 host: 192.168.1.93

 username: rmuser

 password: rmpass

 encoding: utf8


# 创建DB用户

mysql -uroot -p

create database redmine character set utf8;

grant all privileges on redmine.* to 'redmu'@'192.168.1.96' identified by 'redmp';


# 生成会话存储

rake generate_secret_token


# 创建redmine表

RAILS_ENV=production rake db:migrate


# 启动

ruby script/rails server thin -e production -p 8000

http://ip:8000       # redmine页面正常, 至此redmine配置完成

-- Nginx+Thin


# 安装thin

sudo gem install thin


# thin install

sudo thin install

cd /data/www/redm.domain.com

thin -v     # 查看thin版本号

vim Gemfile

gem "thin", "~>1.5.1"


# thin config

# 监听方式

sudo thin config \

--config /usr/local/services/etc/thin.yml \

--chdir /data/www/redm.domain.com \

--pid log/thin.pid \

--log log/thin.log \

--user user_00 \

--group users \

--port 3001 \

--address 127.0.0.1 \

--servers 2 \

--max-conns 4096 \

--environment production


# --------------------------------------------------------------

# socket 方式

sudo thin config \

--config /etc/thin/thin.yml \

--chdir /data/www/redm.domain.com \

--pid log/thin.pid \

--log log/thin.log \

--user user_00 \

--group users \

--socket /dev/shm/thin.sock \

--servers 2 \

--max-conns 4096 \

--environment production


# 参数说明

--config        # 存放thin配置文件的目录

--chdir         # ruby项目目录

--pid           # thin 存放pid文件

--log           # thin 存放 log文件

--user          # thin 运行用户

--group         # thin 运行用户组

--port          # 监听端口

--address       # 监听地址

--max-conns     # 最大连接数

--environment   # 启用生产模式(development)


# thin 启动/停止脚本配置

mv /etc/rc.d/thin /etc/init.d/

vim /etc/init.d/thin


DAEMON=/usr/local/services/bin/thin

SCRIPT_NAME=/etc/init.d/thin

CONFIG_PATH=/etc/thin


# Nginx 配置

cd /usr/local/services/nginx-0.8.54/conf/

vim thin.conf


# 监听方式

vim thin.conf

upstream thin

{

   server 127.0.0.1:3001;

   server 127.0.0.1:3002;

}

# --------------------------------------------------------------

# SOCK 方式

vim thin.conf

upstream thinserver

{

   server unix:/dev/shm/thin.0.sock;

   server unix:/dev/shm/thin.1.sock;

}


# redmine nginx配置文件

vim vhosts/redm.domain.com

   server {

       listen       80;

       server_name  redm.domain.com;

       root         /data/www/redm.domain.com;


       location / {

           try_files         $uri @ruby;

           proxy_set_header  X-Real-IP  $remote_addr;

           proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;

           proxy_set_header  Host $http_host;

           proxy_redirect    off;

       }


       location @ruby {

           proxy_pass http://thinserver;

       }

   }


# 修改nginx.conf

vim nginx.conf

include thin.conf;

include vhosts/redm.domain.com;


# 重新加载nginx配置

nginx -s reload


# access

http://redm.domain.com


# 配置邮件功能

cd /data/www/redm.domain.com/config

vim configuration.yml

# 邮件配置


production:

   email_delivery:

       delivery_method: :smtp

       smtp_settings:

           address: "mail.domain.com"

           port: 25

           domain: 'domain.com'

           authentication: :login

           user_name: 'redmine@domain.com'

           password: '123456'


development:

   email_delivery:

       delivery_method: :smtp

       smtp_settings:

           address: "mail.domain.com"

           port: 25

           domain: 'domain.com'

           authentication: :login

           user_name: 'redmine@domain.com'

           password: '123456'


/etc/init.d/thin restart


# 邮件测试

   管理 -->配置 -->邮件通知 -->发送测试邮件

-- 安装问题


# WARN  Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true

'''

   vim /usr/local/services/lib/ruby/1.9.1/webrick/httpresponse.rb

   if chunked? || @header['content-length']  # 将这一行换成下面行

   if chunked? || @header['content-length'] || @status == 304 || @status == 204

'''


# /usr/local/services/lib/ruby/gems/2.0.0/gems/thin-1.5.1/lib/thin/connection.rb:31:in `post_init': cannot load such file -- thin/request (LoadError)

#   from /usr/local/services/lib/ruby/gems/2.0.0/gems/eventmachine-1.0.3/lib/em/connection.rb:58:in `block in new'

#   from /usr/local/services/lib/ruby/gems/2.0.0/gems/eventmachine-1.0.3/lib/em/connection.rb:49:in `instance_eval'

#   from /usr/local/services/lib/ruby/gems/2.0.0/gems/eventmachine-1.0.3/lib/em/connection.rb:49:in `new'

#   from /usr/local/services/lib/ruby/gems/2.0.0/gems/eventmachine-1.0.3/lib/eventmachine.rb:1467:in `event_callback'

#   from /usr/local/services/lib/ruby/gems/2.0.0/gems/eventmachine-1.0.3/lib/eventmachine.rb:187:in `run_machine'

#   from /usr/local/services/lib/ruby/gems/2.0.0/gems/eventmachine-1.0.3/lib/eventmachine.rb:187:in `run'

#   from /usr/local/services/lib/ruby/gems/2.0.0/gems/thin-1.5.1/lib/thin/backends/base.rb:63:in `start'

#   from /usr/local/services/lib/ruby/gems/2.0.0/gems/thin-1.5.1/lib/thin/server.rb:159:in `start'

#   from /usr/local/services/lib/ruby/gems/2.0.0/gems/thin-1.5.1/lib/thin/controllers/controller.rb:86:in `start'

#   from /usr/local/services/lib/ruby/gems/2.0.0/gems/thin-1.5.1/lib/thin/runner.rb:187:in `run_command'

#   from /usr/local/services/lib/ruby/gems/2.0.0/gems/thin-1.5.1/lib/thin/runner.rb:152:in `run!'

#   from /usr/local/services/lib/ruby/gems/2.0.0/gems/thin-1.5.1/bin/thin:6:in `<top (required)>'

#   from /usr/local/services/bin/thin:23:in `load'

#   from /usr/local/services/bin/thin:23:in `<main>'

'''

cd /data/www/egaplay/redm.egaplay.com

vim Gemfile

thin -v      # 获取thin版本号

gem "thin", "~>1.5.1"

'''