[Ubuntu]Apache2.2 + Ruby1.9 + Redmine2.4 + FastCGI Install

Redmine 是一套利用Ruby開發的issue tracking system

Step 1.準備工作
安裝Apache及MySQL

apt-get apache2-mpm-worker mysql-server

安裝必要套件

#libmagickwand 為ImageMagick套件
#libmysqlclient 為連結MySQL的套件
#libapache2-mod-fastcgi 為FastCGI
apt-get install libmagickwand-dev libmysqlclient-dev libapache2-mod-fastcgi

Step 2.安裝Ruby 1.9
Redmine在Ruby 1.8會遇到一些問題,因此需要將Ruby版本升成1.9
因為系統預設都是1.8,所以要透過RVM來切換版本
RVM(Ruby Version Manager)是一套可以同時安裝不同版本Ruby的工具

安裝RVM

#安裝完後要重開SHELL視窗
curl -L https://get.rvm.io | bash -s stable --ruby

安裝Ruby 1.9

#安裝
rvm install 1.9.3
#切換global版本
rvm 1.9.3 --default
#查詢版號
ruby -v

Step 3.安裝Redmine 2.4
到官網下載原始檔並解壓縮

wget http://www.redmine.org/releases/redmine-2.4.2.tar.gz
tar -zxvf redmine-2.4.2.tar.gz
cd redmine-2.4.2

(注意:接下來的動作皆在redmine專案根目錄)

建立資料庫(請自行進入MySQL command line)

#建立資料庫
CREATE DATABASE redmine CHARACTER SET utf8;
#建立使用者
CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'redmine';
#修改權限
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';

複製redmine資料庫設定檔

cp config/database.yml.example config/database.yml

修改config/database.yml(注意 ruby1.9 adapter要用mysql2)

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: "redmine"
  encoding: utf8

安裝bundler,並透過bundler安裝相關套件

gem install bundler
#可以透過without參數排除不想裝的套件
bundle install --without development test

在這邊如果安裝失敗,會有提示訊息,可以google看是否有哪些套件沒裝(例如沒裝libmysqlclient-dev,mysql2會安裝失敗)

初始化

#產生token
rake generate_secret_token

#產生資料表
RAILS_ENV=production rake db:migrate

#產生初始資料
RAILS_ENV=production rake redmine:load_default_data

建立上傳檔案及外掛套件資料夾權限

mkdir -p tmp tmp/pdf public/plugin_assets
sudo chown -R www-data:www-data files log tmp public/plugin_assets
sudo chmod -R 755 files log tmp public/plugin_assets

複製.htaccess 及 dispatch 建立網站進入點

cp public/htaccess.fcgi.example public/.htaccess
cp public/dispatch.fcgi.example public/dispatch.fcgi

設定寄信的信箱(透過gmail寄信)

cp config/configuration.yml.example config/configuration.yml

config/configuration.yml

  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: smtp.gmail.com
      port: 25
      domain: smtp.gmail.com
      authentication: :login
      user_name: "xxxx@gmail.com"
      password: "xxx"

Step 4.安裝 Passenger
注意:這邊不要安裝系統預設的libapache2-mod-passenger,因為會安裝到相容於預設1.8的版本而且會順便安裝ruby1.8…

透過gem安裝

gem install passenger --no-rdoc --no-ri
#安裝apache2 passenger套件
passenger-install-apache2-module

手動新增設定檔
在 /etc/apache2/mods-available 新增兩個檔案:passenger.conf 與 passenger.load

passenger.conf

#路徑在跑完passenger-install-apache2-module會有系統提示
<IfModule mod_passenger.c>
    PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p484/gems/passenger-4.0.29
    PassengerDefaultRuby /usr/local/rvm/wrappers/ruby-1.9.3-p484/ruby
</IfModule>

passenger.load

LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.3-p484/gems/passenger-4.0.29/buildout/apache2/mod_passenger.so

手動啟動module

cd /etc/apache2/mods-enabled
ln -s /etc/apache2/mods-available/passenger.conf
ln -s /etc/apache2/mods-available/passenger.load

Step 5.Apache設定
Virtual設定

<VirtualHost *:80>
    DocumentRoot /var/www/redmine/public
    ServerName redmine.johnsonlu.org
    CustomLog /var/log/apache2/redmine-access.log combined
    ErrorLog /var/log/apache2/redmine_error

    RailsBaseURI /var/www/redmine
    <Directory "/var/www/redmine/public">
        Options Indexes ExecCGI FollowSymLinks
        Order allow,deny
        Allow from all
        AllowOverride all
    </Directory>
</VirtualHost>

重啟apache

service apache2 restart

小提醒:如果redmine一直吐500並顯示Application Error,可能是同時裝到1.8 1.9造成衝突,只要把1.8系列套件全砍了就好了

[Python]pyenv

[Ubuntu]Gitolite