Fedora 16 に Redmine を

Facebooktwittergoogle_plustumblrmail
勤務先で副社長から「 PM が来れば開発計画がもっとスムーズのなるのに」等と言われ続けてはや 4 ヶ月、しかしその PM とやらは一向に来る気配が無いので、まずは自分達でどうにかしてみましょうと言いたいのはヤマヤマなのですが、先立つ物も無くそんなことを言うと今更 Excel で計画引くとか言い出しそうな気が大変いたしますので、まずは先立つ物を作ってみる事にしました。

概要

環境は以下。
  • Fedora Core 16
  • Redmine 1.4.0 (2012-Apr-14)
  • 社内イントラの中だけで使用
参考にしたサイト。以下の 2 つのやり方を良い所取りして試した。
以降、全て root で作業。

yum-fastmirror のインストール

yum 利用時に高速なサーバを選んで貰うべく、真っ先に yum-fastmirror をインストール。
# yum install yum-fastestmirror

System update

# yum check-update
# yum update

SELinux 無効化

良く分かってないんですが、参考にしたサイトに書いてあったので。 /etc/sysconfig/selinux の SELINUX の値を disabled にする。
# vim /etc/sysconfig/selinux

## SELINUX=enforcing
SELINUX=disabled
ここでシステムを再起動、 getenforce コマンドを実行して SELinux が無効になったのを確認する。
# getenforce
Disabled

iptables で HTTP 許可 (CentOS 専用?)

/etc/sysconfig/iptables へ 80/tcp を許可。
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
その後 iptables を再起動。
# /etc/init.d/iptables restart

yum

# yum groupinstall "Development Tools"
# yum install openssl-devel readline-devel zlib-devel curl-devel
# yum install mysql mysql-server mysql-devel
# yum install httpd httpd-devel
# yum install ImageMagick ImageMagick-devel
# yum install git
NOTE: git は Redmine がリポジトリを参照する為に必要。

デーモン起動設定

Fedora 起動時に MySQL デーモンも起動する設定、ついでに MySQL デーモンを起動。
# systemctl enable mysqld.service
# systemctl start mysqld.serivce
Apache も同様。
# systemctl enable httpd.service
# systemctl start httpd.service

Ruby

Ruby Enterprize Edition (http://www.rubyenterpriseedition.com/download.html) をパッケージで持ってきて make する。
# mkdir /tmp/ruby_tmp
# tar xvfz ruby-enterprise-1.8.7-2012.02.tar.gz -C /tmp/ruby_tmp
# cd /tmp/ruby_tmp
# ruby-enterprise-1.8.7-2012.02/installer --dont-install-useful-gems --no-dev-docs
NOTE:
  • –dont-install-useful-gems : gem のインストールを抑える。
  • –no-dev-docs : ドキュメントのインストールを抑える。

エラーが出た時の対処

途中エラーが出るので適当にパッチ当てて対処。まず ruby-enterprise-1.8.7.2012.02/source/distro/google-perftools-1.7/src/tcmalloc.cc 。
- void *(*__memalign_hook)(size_t, size_t, const void *) = MemalignOverride;
+ void *(* volatile __memalign_hook)(size_t, size_t, const void *) = MemalignOverride;
次に ruby-enterprise-1.8.7.2012.02/source/ext/dl/ 。
  • mkcallback.rb
  • mkcall.rb
  • mkcbtable.rb
これら 3 つの Ruby スクリプトは C 言語のソースを生成するのだが、どうも make 中に一時的に利用している Ruby のミニ版 (?) が STDOUT へのフラッシュに不都合がある様で、出力されるファイルの中身が壊れる。ループで print しソースを吐いている箇所があるので、そのループで毎回明示的に STDOUT.flush を呼び出す 1 行を加えると不具合が治る。
e.g.
for n in 0..{MAX_CALLBACK - 1)
print(mkfunc(t, n, 15), "nn")
STDOUT.flush
end

Bundler

Redmine 1.4 は Bundler を使って必要な gem パッケージを一度にインストールできる。なので先に Bundler だけインストール。
# /usr/local/bin/gem install bundler

Redmine と MySQL

本家からソースをダウンロードして /var/lib/redmine へインストール。
# tar xvfz redmine-1.4.0.tar.gz -C /var/lib
# mv /var/lib/redmine-1.4.0 /var/lib/redmine
# /usr/local/bin/gem
Bundler で gem パッケージをインストール。
# cd /var/lib/redmine
# /usr/local/bin/bundle install --without development test postgresql sqlite

MySQL の Character set を変更

/etc/my.cnf の [mysqld] セクションへ character-set-server=utf8 を追加、そしてまた [mysql] へ default-character-set=utf8 を追加。
# chmod 600 /etc/my.cnf
# vim /etc/my.cnf

[mysqld]
character-set-server=utf8

[mysql]
default-character-set=utf8
再起動後、変更が反映されている事を確認。
# systemctl stop mysqld.service
# systemctl start mysqld.serivce
# 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/ |
+--------------------------+----------------------------+

ユーザ追加

Linux ユーザを追加 (user=redmine, group=redmine) 。
# groupadd redmine
# useradd -g redmine redmine
MySQL のアカウント root のパスワードを変更して、また anonymous ユーザを削除する。 そして redmine ユーザを追加。
# mysql -uroot
mysql> use mysql;
mysql> update user set password=password('my_root_passwd') where user = 'root'
mysql> delete from user where user = '';
mysql> flush privileges;
mysql> create database redmine character set utf8;
mysql> create user 'redmine'@'localhost' identified by 'your_passwd';
mysql> grant all privileges on redmine.* to 'redmine'@'localhost';

Redmine の MySQL アクセス設定

production セクションを変更。内容は以下の様に。
# cd /var/lib/redmine/config
# cp database.yml.example database.yml
# vim database.yml

production:
adapter: mysql
database: redmine
host: localhost
username: redmine
password: your_passwd

Redmine のログ設定

Redmine の独自 Logger を使う設定を追加。
# cd /var/lib/redmine/config
# cp additional_environment.rb.example additional_environment.rb
# vim additional_environment.rb

#Logger.new(PATH,NUM_FILES_TO_ROTATE,FILE_SIZE)
config.logger = Logger.new(config.log_path, 2, 1000000)
config.logger.level = Logger::INFO

Session Store Key を作成

# cd /var/lib/redmine
# rake generate_session_store

デフォルト Database を作成

デフォルトの Database を作成し、これに production のエントリを作り、アドミニストレータのアカウントを追加。 さらにデフォルトのデータをロード。
# cd /var/lib/redmine
# RAILS_ENV=production rake db:migrate
# RAILS_ENV=production rake redmine:load_default_data
# RAILS_ENV=production rake redmine:load_default_data

ファイルパーミッションを調整

# cd /var/lib/redmine
# chown -R redmine:redmine files log tmp public/plugin_assets
# chmod -R 755 files log tmp public/plugin_assets

WEBrick で一時的に動作確認

ここまで来ると、一応動くのが見れる。 WEBrick で Redmine を起動して、 web ブラウザから http://localhost:3000/ をアクセス。 Sign in では admin/admin 。
# cd /var/lib/redmine
# ruby script/server webrick -e production

Redmine を Apache から動かす

ファイルパーミッションを調整

上で Redmine WEBrick 用にパーミッションを調整したけれども、本番では Apache を通して使うので、それ用にパーミッションを設定しなおす。
# cd /var/lib/redmine
# chown apache:apache -R ./
# chown redmine -R files log tmp public/plugin_assets

Passenger

インストール
# gem install passenger --no-rdoc --no-ri
# passenger-install-apache2-module
passenger-install-apache2-module のインストールでは「 1 」の「 The Apache 2 module 」を選択する。一通り make が走り、最後にガイダンスが出る。これは Apache2 の設定に使う内容。
--------------------------------------------
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.12/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.12
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!

--------------------------------------------
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:


ServerName www.yourhost.com
# !!! Be sure to point DocumentRoot to 'public'!
DocumentRoot /somewhere/public

# This relaxes Apache security settings.
AllowOverride all
# MultiViews must be turned off.
Options -MultiViews



And that's it! You may also want to check the Users Guide for security and
optimization tips, troubleshooting and other useful information:

/usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.12/doc/Users guide Apache.html
NOTE: passenger-install-apache2-module –snippet を実行すれば、この内容はいつでも読む事ができる。
/etc/httpd/conf.d/passenger.conf を作り、いま言われた設定をコピペ。そして Rails 用の RailsBaseURI 行を追加。
# cd /etc/httpd/conf.d
# touch passenger.conf
# vim passenger.conf

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

シンボリックリンク作成

# ln -s /var/lib/redmine/public /var/www/html/redmine

Apache 再起動

# systemctl stop httpd.service
# systemctl start httpd.service
Facebooktwittergoogle_plustumblrmail
Yusuke Dada K.
Yusuke Dada K.
台湾の現地企業で主に組み込みソフトウエアの研究開発をしている日本人です。我人是個日本人,負責軟體的研究開發。在臺灣的科技公司工作。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です