2done.org

Linuxメインなメモ書き。二度寝してから書く。(ご意見は Twitter あたりで。そのうちコメント欄つけます。)

Redmine 1.1.3 インストール

2011/05/01: 毎回インストール方法を調べるのが面倒なので履歴として。

 

Ruby, MySQL どちらとも詳しくないので間違いがあれば Twitter あたりで教えてください。

また、今回 SELinux を有効にしていますが Passenger の動作が完全には理解できず不完全です。

現段階では passenger + SELinux は避けた方がよさそうです。

 

環境

 

必要なツール群のインストール

コンパイル環境

# yum -y install gcc gcc-c++ make


Redmine 動作環境

# yum -y install mysql mysql-server httpd zlib-devel mysql-devel httpd-devel openssl-devel curl-devel


その他

# yum -y install man wget vim which less lv git policycoreutils-python policycoreutils-newrole setools-console

 

Ruby のインストール

Ruby ソースのダウンロード

以下からソースをダウンロードします。

$ cd /usr/local/src/work
$ wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.tar.bz2
$ tar jxf ruby-1.8.7-p334.tar.bz2
$ cd ruby-1.8.7-p334

 

Ruby のコンパイル

$ ./configure
$ make
# make install
$ ruby -v
ruby 1.8.7 (2011-02-18 patchlevel 334) [x86_64-linux]

 

必要なモジュールのインストール

これらをインストールしないと、gem 辺りでこけます。

# cd /usr/local/src/work/ruby-1.8.7-p334/ext
# cd ./zlib
# ruby extconf.rb && make && make install
# cd ../openssl
# ruby extconf.rb && make && make install

 

RubyGems のインストール

RubyGems のダウンロード

以下からソースをダウンロードします。


注意:

Redmine のインストールマニュアルには RubyGems 1.3.1 が必要と書かれています。

と、いいつつ 1.3.7 をインストール。参考サイトでは 1.4.2 をインストールしています。

1.5.x でも動作しますが、一手間加えないと動きません。

$ cd /usr/local/src/work
$ wget http://rubyforge.org/frs/download.php/70696/rubygems-1.3.7.tgz
$ tar zxf rubygems-1.3.7.tgz
$ cd rubygems-1.3.7
# ruby setup.rb
# gem -v
1.3.7

 

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

バージョンを間違うと動かずにはまります。

# gem install rails -v=2.3.5 --no-ri --no-rdoc
# gem install rack -v=1.0.1 --no-ri --no-rdoc
# gem install i18n -v=0.4.2 --no-ri --no-rdoc
# gem install mysql --no-ri --no-rdoc
# gem install passenger --no-ri --no-rdoc
# rails -v
Rails 2.3.5

 

Redmine Database の作成

MySQL 設定

とりあえず、UTF8 で動くよう設定します。

# vim /etc/my.cnf
# diff -urN /etc/my.cnf.org /etc/my.cnf
--- /etc/my.cnf.org     2011-04-12 13:48:37.000000000 +0900
+++ /etc/my.cnf 2011-04-30 16:12:35.017180332 +0900
@@ -4,7 +4,18 @@
 user=mysql
 # Disabling symbolic-links is recommended to prevent assorted security risks
 symbolic-links=0
+default-character-set=utf8
+character-set-server=utf8

 [mysqld_safe]
 log-error=/var/log/mysqld.log
 pid-file=/var/run/mysqld/mysqld.pid
+
+[mysql]
+default-character-set=utf8
+
+[client]
+default-character-set=utf8
+
+[mysqldump]
+default-character-set=utf8

# chkconfig mysqld on
# service mysqld start

 

ユーザ設定データベースの作成

※ ユーザとパスワードの設定は適切に!

# mysql -uroot
mysql> drop database test;
mysql> use mysql;
mysql> update user set password=password('PASSW0RD') where user = 'root';
mysql> delete from user where user = '';
mysql> create database redmine;
mysql> grant all on redmine.* to redmine identified by 'redminePASSW0RD';
mysql> flush privileges;
mysql> exit;

Redmine の設定

Redmine のダウンロード

以下から Redmine をダウンロードします。

$ cd /usr/local/src/work
$ wget http://rubyforge.org/frs/download.php/74722/redmine-1.1.3.tar.gz
$ tar zxf redmine-1.1.3.tar.gz

 

Redmine ファイルの配置

SELinux ・・・ SELinux ・・・と、言われた気がしたので合わせて設定します。

とりあえず面倒なことをしないよう /var/www/html 直下に展開します。

# mv /usr/local/src/work/redmine-1.1.3/* /var/www/html

 

database.ymlの設定

config/database.yml.example をコピーし、config/database.yml を作s(ry

# cat > /var/www/html/config/database.yml << _EOF_
production:
  adapter: mysql
  database: redmine
  host: localhost
  username: redmine
  password: redminePASSW0RD
_EOF_

 

email.yml の設定

config/email.yml.example をコピーし、config/email.yml を作成s(ry

※ 一人で使っているので使ったことがないです。。

# cat > /var/www/html/config/email.yml << _EOF_
production:
  delivery_method: :smtp
  smtp_settings:
  address: localhost
  port: 25
  domain: mail.example.jp
_EOF_

 

Redmineの初期設定 と データベースのテーブル作成

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

# cd /var/www/html
# rake generate_session_store
# rake db:migrate RAILS_ENV=production

rake db:migrate の実行は任意ですが 強く推奨されるそうです。

これによりデフォルトのロール、トラッカー、ステータス、ワークフロー、列挙項目がロードされます。

 

パーミッションの設定

# cd /var/www/html
# chown -R apache:apache /var/www/html
# restorecon -RF /var/www/html
# chmod -R 755 files log tmp public/plugin_assets

 

SELinux 設定

とりあえず、SELinux を Permissive にします。

# setenforce 0

 

不要な人は素直に無効化します。

# sed -i -e "s/\(SELINUX=\).*/\1disabled/" /etc/selinux/config && shutdown -r 0

 

Phusion Passenger™ (a.k.a. mod_rails / mod_rack) 設定

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

以下を実行すると色々聞かれます。足らなければ怒られますので良しなにします。

# passenger-install-apache2-module


出力例

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.


--------------------------------------------
Deploying a Ruby on Rails application: an example

Suppose you have a Rails application in /somewhere. Add a virtual host to your
Apache configuration file and set its DocumentRoot to /somewhere/public:

   <VirtualHost *:80>
      ServerName www.yourhost.com
      DocumentRoot /somewhere/public    # <-- be sure to point to 'public'!
      <Directory /somewhere/public>
         AllowOverride all              # <-- relax Apache security settings
         Options -MultiViews            # <-- MultiViews must be turned off
      </Directory>
   </VirtualHost>

 

インストールが完了すると必要な設定が出力されます。

万が一見逃したときには次のコマンドを実行することで必要な情報を表示可能です。

# passenger-install-apache2-module --snippet
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

 

Apache 設定ファイルへの追加と修正

今回は、/etc/httpd/conf/public を DocumentRoot に変更します。色々と面倒なんです。すみません。。

# cp -p /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.org
# vim /etc/httpd/conf/httpd.conf
# diff -urN /etc/httpd/conf/httpd.conf.org /etc/httpd/conf/httpd.conf
--- /etc/httpd/conf/httpd.conf.org      2010-10-27 19:01:44.000000000 +0900
+++ /etc/httpd/conf/httpd.conf  2011-05-02 02:59:02.096168432 +0900
@@ -200,6 +200,10 @@
 LoadModule cgi_module modules/mod_cgi.so
 LoadModule version_module modules/mod_version.so

+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
+
 #
 # The following modules are not loaded by default:
 #
@@ -289,7 +293,7 @@
 # documents. By default, all requests are taken from this directory, but
 # symbolic links and aliases may be used to point to other locations.
 #
-DocumentRoot "/var/www/html"
+DocumentRoot "/var/www/html/public"

 #
 # Each directory to which Apache has access can be configured with respect
@@ -314,7 +318,7 @@
 #
 # This should be changed to whatever you set DocumentRoot to.
 #
-<Directory "/var/www/html">
+<Directory "/var/www/html/public">

 #
 # Possible values for the Options directive are "None", "All",
@@ -328,7 +332,7 @@
 # http://httpd.apache.org/docs/2.2/mod/core.html#options
 # for more information.
 #
-    Options Indexes FollowSymLinks
+    Options -Indexes FollowSymLinks -MultiViews

 #
 # AllowOverride controls what directives may be placed in .htaccess files.

 

起動確認・Apache 再起動

設定が完了したら Apache を再起動します。

http://YOURSERVER/ にアクセスし、Redmine の画面が表示されればとりあえず成功です。

SELinux 設定

ここの通りに設定をすると chcon なので間違いなくはまります。

[書きかけなのでメモをとりあえず]

Fedora には passenger 用のタイプを振ります。

# semanage fcontext -a -t httpd_config_t "/var/www/html/config(/.*)?"
# semanage fcontext -a -t httpd_log_t "/var/www/html/log(/.*)?"
# semanage fcontext -a -t httpd_tmpfs_t "/var/www/html/tmp(/.*)?"
# semanage fcontext -a -t httpd_**** "/var/www/html/files(/.*)?"
# semanage fcontext -a -t httpd_**** "/var/www/html/public/plugin_assets(/.*)?"

PassengerTempDir 重要

動きが意味不明すぎて対処できない