読者です 読者をやめる 読者になる 読者になる

さかめも

人生を楽しく豊かにする方法

Amazon EC2 にRedmine 1.2 をインストールする手順

Amazon AWS

ルート権限に

sudo su

必要なパッケージのインストール

yum groupinstall "Development Tools"
yum install openssl-devel readline-devel zlib-devel curl-devel
yum install mysql-server mysql-devel
yum install httpd httpd-devel

Ruby Enterprise Editionをインストール

wget http://rubyenterpriseedition.googlecode.com/files/ruby-enterprise-1.8.7-2011.03.tar.gz
tar xvfz ruby-enterprise-1.8.7-2011.03.tar.gz
ruby-enterprise-1.8.7-2011.03/installer --dont-install-useful-gems --no-dev-docs

途中でインストール先(Target Directory)の入力を求められるが、
今回はそのままエンター

gemのインストール

wget http://rubyforge.org/frs/download.php/74954/rubygems-1.8.5.tgz
tar xzvf rubygems-1.8.5.tgz
cd rubygems-1.8.5
ruby setup.rb
gem -v
cd ..

Rack 1.1.1のインストール

Redmine1.2を実行するために必ずRack 1.1.1のバージョンにする。

gem install rack -v=1.1.1 --no-rdoc --no-ri

rake 0.8.7のインストール

Redmine1.2を実行するために必ずrake 0.8.7のバージョンにする。

gem install rake -v=0.8.7 --no-rdoc --no-ri

i18n 0.4.2のインストール

Redmine1.2を実行するために必ずi18n 0.4.2のバージョンにする。

gem install i18n -v=0.4.2 --no-rdoc --no-ri

RubyMySQLドライバのインストール

yum install ruby-devel

上のコマンドを先に打たないとエラーが出た。

gem install mysql --no-rdoc --no-ri


デフォルトキャラクタセットをutf8に設定。

vi /etc/my.cnf

以下の太字部分を追加。

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

default-character-set=utf8

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[mysql]
default-character-set=utf8

MySQLの起動および自動起動の設定

/etc/init.d/mysqld start
chkconfig mysqld on

以下で
character_set_filesystem
character_sets_dir
以外、すべてutf8になっていることを確認。
なっていなければ、my.cnfの設定が正しいか、MySQLの再起動を行ったか確かめる。

mysql -uroot
mysql> show variables like 'character_set%';

Variable_name Value
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
8 rows in set (0.00 sec)

rootユーザーのパスワード変更・匿名ユーザー削除

mysql -u root
mysql> use mysql;
mysql> update user set password=password('********') where user = 'root';
mysql> delete from user where user = '';
mysql> flush privileges;
mysql> exit;

上の********には任意のパスワード


Redmine用データベースとユーザーの作成

mysql -u root -p
mysql> create database db_redmine default character set utf8;
mysql> grant all on db_redmine.* to user_redmine identified by '********';
mysql> flush privileges;
mysql> exit;

上の********には任意のパスワード

Redmineのインストール

wget http://rubyforge.org/frs/download.php/74944/redmine-1.2.0.tar.gz
tar zxvf redmine-1.2.0.tar.gz

Redmineの配置先のディレクトリ決めて、そこに展開したファイルを移動させる。
ここでは/var/lib/redmineとする。

mv redmine-1.2.0 /var/lib/redmine
cd /var/lib/redmine
vi config/database.yml

以下の内容で保存

production:
  adapter: mysql
  database: db_redmine
  host: localhost
  username: user_redmine
  password: ********
  encoding: utf8

'********には先ほど設定したパスワードを入力。


configuration.yml.exampleをコピーしてconfig/configuration.ymlファイルを作成する。

vi config/configuration.yml

以下を追加して保存する。

production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: "localhost"
      port: 25
      domain: 'foo.com'

foo.comにはRedmineを実行するサーバのFQDNを入力。


セッションデータ暗号化用鍵の生成とテーブル作成を行う。

rake generate_session_store
rake db:migrate RAILS_ENV=production

Passengerのインストール

gem install passenger --no-rdoc --no-ri

PassengerのApache用モジュールのインストール

passenger-install-apache2-module

インストール成功後に表示される以下のメッセージの太字部分3行を記録しておく。
apache2-module --snippetコマンドであとからも見られるみたいだが、違っていた。

The Apache 2 module was successfully installed.

Please edit your Apache configuration file, and add these lines:

   LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.7/ext/apache2/mod_passenger.so
   PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.7
   PassengerRuby /usr/local/bin/ruby

After you restart Apache, you are ready to deploy any number of Ruby on Rails
applications on Apache, without any further Ruby on Rails-specific
configuration!

Press ENTER to continue.

Apacheの設定

vi /etc/sysconfig/httpd

以下の部分をコメントインして保存。

HTTPD=/usr/sbin/httpd.worker
vi /etc/httpd/conf.d/passnger.conf

以下のように編集して保存。

# Passengerの基本設定。
#
LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.7/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.7
PassengerRuby /usr/local/bin/ruby

# Passengerが追加するHTTPヘッダを削除するための設定。
#
Header always unset "X-Powered-By"
Header always unset "X-Rack-Cache"
Header always unset "X-Content-Digest"
Header always unset "X-Runtime"

# 必要に応じてPassengerのチューニングのための設定を追加。
#
PassengerMaxPoolSize 20
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 3600
PassengerUseGlobalQueue on
PassengerHighPerformance on
PassengerStatThrottleRate 10
RailsSpawnMethod smart
RailsAppSpawnerIdleTime 86400
RailsFrameworkSpawnerIdleTime 0

太字部分には先ほど記録した3行を上書きする。


Apacheの起動および自動起動の設定

/etc/init.d/httpd start
chkconfig httpd on

Apache上のPassengerでRedmineを実行するための設定

chown -R apache:apache /var/lib/redmine

webサーバのルートディレクトリでRedmineを実行するための設定を行う。

vi /etc/httpd/conf/httpd.conf

以下のように、DocumentRootをRedmineのpublicディレクトリに変更して保存。

#DocumentRoot "/var/www/html"
DocumentRoot "/var/lib/redmine/public"
/etc/init.d/httpd configtest
/etc/init.d/httpd graceful

エラーが出ているのでここから先はいろいろ試してみたコマンド一覧

Apacheの再起動

/etc/rc.d/init.d/httpd restart
/etc/rc.d/init.d/httpd restart

「undefined method `name' for "abstract":String」エラーが出る場合

gem update --system 1.7.2
gem -v

以下のエラーが出る場合
ActiveRecord::StatementInvalid (Mysql::Error: Table 'db_redmine.settings' doesn't exist: SHOW FIELDS FROM `settings`):

rake db:migrate RAILS_ENV="production"

それでもエラーの場合、以下あたりを参考にする。
http://unicus.jp/wp/archives/46
http://applescripts.seesaa.net/article/163907530.html