[Linux]さくらVPSのCentOSにRedmineをインストール
前回の続き
[Linux]さくらVPSのCentOSにApacheをインストール - daybreaksnow's diary
Redmineの公式サイトを参考にした。
Redmine 2.4をCentOS 6.4にインストールする手順 | Redmine.JP Blog
SELinuxを無効にする
セキュリティ管理用のモジュールらしい。
http://itpro.nikkeibp.co.jp/article/COLUMN/20070827/280414/
無効にしないでもインストールできるらしい(http://h2np.net/docs/redmine-selinux.html)が、さくらのデフォルトでdisabledになっていたので修正なし
EPELパッケージのインストール
以下から最新のパッケージのパスを確認
http://dl.fedoraproject.org/pub/epel/6/x86_64/repoview/epel-release.html
最新のパッケージのパス
http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
インストール
#rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
さくらのデフォルトではインストール済みだった。
開発ツール(Cコンパイラ等)のインストール
yum groupinstall "Development Tools"
以下のメッセージが出た。メッセージを見る限り引数が不正なようだが、このまま進んでも問題なかった。
Warning: Group development does not have any packages. No packages in any requested group available to install or update
※2014/8/29追記
日本語化している(/etc/sysconfig/i18nでLANG=ja_JP.UTF-8としている)場合、「開発ツール」としなければならない。
RubyとPassengerのビルドに必要なヘッダファイルなどをインストール
yum install openssl-devel readline-devel zlib-devel curl-devel libyaml-devel
Is this ok?と聞かれるので、y。
再度にComplete!と出て完了。
ImageMagickとヘッダファイル・日本語フォントのインストール
これは任意だが、ImageMagickは添付ファイルのサムネイル表示に使うということなので、入れておく。
yum install ImageMagick ImageMagick-devel yum install ipa-pgothic-fonts
ipa-pgothic-fontsはデフォルトで入っているようだ。
Package ipa-pgothic-fonts-003.02-4.1.el6.noarch already installed and latest version Nothing to do
Rubyのインストール
最新のtarballを落とす
http://www.ruby-lang.org/ja/downloads/
前世代の安定版: Ruby 2.0.0-p353 を落とした。
http://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.tar.gz
MySQLの設定
MySQLを起動、自動起動ON
service mysqld start chkconfig mysqld on
ここでmsqldの起動でエラーとなった。
ログを見てみる
- コマンド
less /var/log/mysqld.log
- 中身
[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
上記エラーメッセージでググってみると、mysql_install_dbコマンドを実行すればよいらしい。
root権限で実行、再度mysqldをstartすると、今度は起動に成功した。
rootにパスワード設定
このままだとmysql -u rootでパスワードなしでログインできてしまう。
rootにパスワードを設定する。
sudo mysqladmin -u root password [パスワード]
エンコード確認
mysqlにログイン後、以下のコマンドを実行
show variables like 'character_set%';
以下のように全てUTF-8になっていればOK。
+--------------------------+----------------------------+ | 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/ | +--------------------------+----------------------------+
不要なユーザを除去
- ユーザ確認SQL
use mysql; select user from user;
- 実行結果
以下のように名前なしユーザが二人いた。
mysql> select user from user; +------+ | user | +------+ | root | | | | root | | | | root | +------+ 5 rows in set (0.00 sec)
匿名のユーザを削除する。
delete from user where user = '';
Redmine用データベースとユーザーの作成
create database db_redmine default character set utf8; grant all on db_redmine.* to user_redmine identified by 'パスワード'; flush privileges;
Redmineのインストール
以下からRedmineのtarballをダウンロード
http://www.redmine.org/projects/redmine/wiki/Download
解凍したらRedmineの配置先に移動する。
mv redmine-2.4.3 /var/lib/redmine
データベースへの接続設定
/var/lib/redmine/config/database.ymlを作成。
database.yml.sampleをコピーして、以下を修正した。
production: database: db_redmine username: user_redmine password: パスワード (Redmine用データベースとユーザーの作成で設定したもの)
configuration.ymlの設定
/var/lib/redmine/config/configuration.ymlを作成。
configuration.yml.sampleをコピーして、以下を修正した。
production: smtp_settings: address: "localhost" domain: 'サーバのIPアドレス' rmagick_font_path: /usr/share/fonts/ipa-pgothic/ipagp.ttf
ここで:の後の半角スペースがないと、後でrake db:migrateの実行時にエラーとなるので注意。
サーバのIPアドレスと書いたところは、サーバのFQDNとなっているが、ドメインを取っていないのでIPアドレスにした。これでいいかは不明。
SMTPの設定なので、メール通知を使わないなら適当でもOK?
Gemパッケージのインストール
redmineが必要とするライブラリを入れる。
redmineのインストールディレクトリ(/var/lib/redmine)で以下を実行
# bundle install --without development test
実行後、以下のメッセージが出た
rubyのバージョンは2.0.0のため、nothing to doに当てはまり、追加のインストールは必要ない。
Depending on your version of ruby, you may need to install ruby rdoc/ri data: <= 1.8.6 : unsupported = 1.8.7 : gem install rdoc-data; rdoc-data --install = 1.9.1 : gem install rdoc-data; rdoc-data --install >= 1.9.2 : nothing to do! Yay!
Redmineの初期設定とデータベースのテーブル作成
セッションデータ改竄防止用鍵の生成とテーブル作成
Redmineのインストールディレクトリで以下のコマンドを実行
bundle exec rake generate_secret_token RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=productionは単に環境変数にproductionを入れるだけ。
rubyではこの環境変数でdevelopment、test、productionなどのモードを切り替えるとのこと。
db:migrateはその名前の通りDBのマイグレーションを行う。あらかじめ定義したDDLを実行する感じか?
bundle execと、直接rakeを呼ぶのでは、以下のような違いがある。
rake:Railsの共通のライブラリ保存場所から読みだす bundle exec:プロジェクトのライブラリ保存場所から読み出す
参考:http://ka-zoo.net/2013/07/difference-of-rake-xxx-and-bundle-exec-rake-xxx/
Passengerのインストール
Passengerとは:apacheでrubyアプリを動かすためのapacheモジュール
gem install passenger --no-rdoc --no-ri passenger-install-apache2-module
rdocとはJavaDoc的なものか。
文字化けが出たがそのままエンターで進んだ。
- 出力結果
LoadModule passenger_module /usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.37/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.37 PassengerDefaultRuby /usr/local/bin/ruby </IfModule>
Passengerの設定
- 作成ファイル
/etc/httpd/conf.d/passenger.conf
- 記述内容
# Passengerの基本設定。 # passenger-install-apache2-module --snippet を実行して表示される設定を使用。 # LoadModule passenger_module /usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.37/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.37 PassengerDefaultRuby /usr/local/bin/ruby </IfModule> # 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のチューニング。 # TODO Phusion Passenger users guide(http://www.modrails.com/documentation/Users%20guide%20Apache.html)を参照。 PassengerMaxPoolSize 20 PassengerMaxInstancesPerApp 4 PassengerPoolIdleTime 3600 PassengerHighPerformance on PassengerStatThrottleRate 10 PassengerSpawnMethod smart RailsAppSpawnerIdleTime 86400 RailsFrameworkSpawnerIdleTime 0
Redmineを公開する(サブディレクトリでRedmineを実行)
redmineのインストールディレクトリへのシンボリックリンクを作成
ln -s /var/lib/redmine/public /var/www/html/redmine
/etc/httpd/conf.d/passenger.confに以下を追記。
RackBaseURI /redmine
apacheを再起動。
service httpd graceful
restartはhttpd プロセスを完全に停止してから再起動する。
gracefulは httpd プロセスの通信が終わるのを待って、順次新しい設定を反映した httpd を起動させる。