めもめも のーと

ハマったこととか、覚えたこととか

CentOS6 + Apache2.4 + Redmine3を構築した時のメモ

以下の環境でRedmineを立てた時の手順を記します。

CentOS 6.6(64bit)
Apache 2.4.6
Ruby 2.2.2p95
Rails 4.2.3
MariaDB 10.1
Redmine 3.0.4

Apache

インストール

centos6系はyumでインストールするとApache2.2.15になるので、2.4系を入れるためにリポジトリを追加。

# cd /etc/yum.repos.d/
# wget http://repos.fedorapeople.org/repos/jkaluza/httpd24/epel-httpd24.repo

# yum install httpd24.x86_64 httpd24-httpd-devel.x86_64 httpd24-mod_ssl.x86_64 httpd24-apr-devel.x86_64 httpd24-apr-util-devel.x86_64
# /opt/rh/httpd24/root/usr/sbin/httpd -version
Server version: Apache/2.4.6 (Red Hat)
Server built:   Sep 25 2013 05:25:46
自動起動をON
# chkconfig httpd24-httpd on
# chkconfig --list |grep httpd
httpd24-httpd   0:off   1:off   2:on    3:on    4:on    5:on    6:off

Apache2.4系はデフォルトのインストール先が/opt/rh/httpd24/root/~になるようです。 コマンドで打つ時にパスが長くなるので、シンボリックリンクを貼りました。

# ln -s /opt/rh/httpd24/root/etc/httpd /etc/
# ln -s /opt/rh/httpd24/root/var/www /var
その他モジュールをインストール
# yum -y \
gcc \
gcc-c++ \
libtool \
gcc-c++ \
net-snmp \
net-snmp-utils \
ntp \
make \
ImageMagick \
libjpeg-devel \
libpng-devel \
curl-devel \
freetype-devel \
libtool-ltdl-devel \
zlib-devel \
patch \
nkf \
telnet \
zip \
openssl-devel \
readline-devel \
curl-devel \
libyaml-devel \
libffi-devel

ImageMagic関係もインストール

# yum -y install ImageMagick ImageMagick-devel ipa-pgothic-fonts

nokogiriでパース処理に必要なので以下もインストール

# yum -y install libxml2-devel libxslt-devel

httpd.confに以下のVirtualHostの設定をしました。

<VirtualHost 10.2.200.16:80>
    ServerName example.com
    DocumentRoot /var/lib/redmine/public
    SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(css)|(js)|(woff)$" no_log
    CustomLog "| /opt/rh/httpd24/root/usr/sbin/rotatelogs /var/log/httpd/customlog/access_log.%Y%m%d 86400 540" combined env=!no_log
</VirtualHost

MariaDB

CentOS7からはMySQLの代わりにMariaDBが標準になったりredmineの3系インストール手順で使われていたりと、最近はMariaDBを使う傾向があるみたいなので使ってみました。

インストール

PGP keyをインストール。

# rpm --import https://yum.mariadb.org/RPM-GPG-KEY-MariaDB

リポジトリを追加

# vi /etc/yum.repos.d/mariadb.repo

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1.0/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
enabled=1

mysql関係のライブラリが入っていると干渉してインストールに失敗することがあるそうなので削除してからインストール。

# yum remove mysql-libs
# yum -y install MariaDB-devel MariaDB-client MariaDB-server

chown: cannot access `/var/lib/mysql': No such file or directoryというメッセージが出ましたが、そのまま進みます。

起動
# /etc/init.d/mysql start
Starting MySQL. SUCCESS!
初期設定
# /usr/bin/mysql_secure_installation
Set root password? [Y/n] Y
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
ログイン確認
# mysql -u root -p xxx
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.1.0-MariaDB MariaDB Server

Copyright (c) 2000, 2014, Oracle, SkySQL Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>
起動設定とログディレクトリ作成
# vi /etc/my.cnf.d/server.cnf
[mysqld]
character-set-server=utf8
general_log=ON
general_log_file=/var/log/mariadb/query.log
log-bin=mysql-bin


# mkdir /var/log/mariadb
# chown -R mysql:mysql /var/log/mariadb
Redmine用データベース作成

db_redmine という名前のデータベースを作ります。 ID/PW=user_redmine / redmine

mysql -uroot -p
> CREATE DATABASE db_redmine DEFAULT CHARACTER SET utf8;
> GRANT ALL ON db_redmine.* TO user_redmine@localhost IDENTIFIED BY 'redmine';
> FLUSH PRIVILEGES;
> EXIT;

git, rbenv, rubyのインストール

git
# yum install git
rbenv
# cd /usr/local
# git clone https://github.com/sstephenson/rbenv.git
# git clone https://github.com/sstephenson/ruby-build.git ./rbenv/plugins/ruby-build


どのログインユーザでもrubyが使えるよう、(ログイン時に読みこせるために)/etc/profileに下記内容でシェルを作っておきます。
# vi /etc/profile.d/rbenv.sh
export RBENV_ROOT="/usr/local/rbenv"
export PATH="${RBENV_ROOT}/bin:${PATH}"
eval "$(rbenv init --no-rehash -)"
ruby
# rbenv install 2.2.2
# rbenv global 2.2.2
# gem install bundler --no-ri --no-rdoc

Redmineのインストール

redmineのソース取得

# cd /root/install
# curl -O http://www.redmine.org/releases/redmine-3.0.4.tar.gz
# tar xzvf redmine-3.0.4
# mv redmine-3.0.4 /var/lib/redmine

DBの接続設定

# cp -p /var/lib/redmine/config/database.yml.example /var/lib/redmine/config/database.yml
# vi /var/lib/redmine/config/database.yml

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

メールとImagemagicの設定

# cp -p /var/lib/redmine/config/configuration.yml.example  /var/lib/redmine/config/configuration.yml
# vi /var/lib/redmine/config/configuration.yml

production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: "localhost"
      port: 25
      domain: "example.com"
  rmagick_font_path: /usr/share/fonts/ipa-pgothic/ipagp.ttf

gemインストール

# cd /var/lib/redmine/
# bundle install --without development test --path vendor/bundle

途中でこういうエラーが出た場合、表示される手順の通りbundel installします。

An error occurred while installing nokogiri (1.6.6.2), and Bundler cannot continue.

======================================================
gem install nokogiri -- --use-system-libraries
    [--with-xml2-config=/path/to/xml2-config]
    [--with-xslt-config=/path/to/xslt-config]

If you are using Bundler, tell it to use the option:

    bundle config build.nokogiri --use-system-libraries
    bundle install
======================================================
# bundle config build.nokogiri --use-system-libraries
# bundle install --without development test --path vendor/bundle

終わった後のgem listは以下のような感じになりました。

# cd /var/lib/redmine
# bundle exec gem list

*** LOCAL GEMS ***

actionmailer (4.2.3)
actionpack (4.2.3)
actionpack-action_caching (1.1.1)
actionpack-xml_parser (1.0.2)
actionview (4.2.3)
activejob (4.2.3)
activemodel (4.2.3)
activerecord (4.2.3)
activesupport (4.2.3)
arel (6.0.1)
builder (3.2.2)
bundler (1.10.5)
coderay (1.1.0)
erubis (2.7.0)
globalid (0.3.5)
i18n (0.7.0)
jquery-rails (3.1.3)
json (1.8.3)
loofah (2.0.2)
mail (2.6.3)
mime-types (2.6.1)
mini_portile (0.6.2)
minitest (5.7.0)
mysql2 (0.3.18)
net-ldap (0.3.1)
nokogiri (1.6.6.2)
protected_attributes (1.1.0)
rack (1.6.4)
rack-openid (1.4.2)
rack-test (0.6.3)
rails (4.2.3)
rails-deprecated_sanitizer (1.0.3)
rails-dom-testing (1.0.6)
rails-html-sanitizer (1.0.2)
railties (4.2.3)
rake (10.4.2)
rbpdf (1.18.6)
redcarpet (3.1.2)
request_store (1.0.5)
rmagick (2.13.4)
ruby-openid (2.3.0)
sprockets (3.2.0)
sprockets-rails (2.3.2)
thor (0.19.1)
thread_safe (0.3.5)
tzinfo (1.2.2)

Redmineセキュリティートークンの生成とマイグレーションの実行、Redmine初期データの投入。

# bundle exec rake generate_secret_token
# RAILS_ENV=production bundle exec rake db:migrate
# RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data

Redmine用ユーザの作成

redmine用のユーザ「redmine」を作成し、ソースの権限を変更します。

# useradd redmine
# passwd redmine
# chown -R redmine:redmine /var/lib/redmine/

Passengerのインストール

※ここはかなりはまって、結局素直にインストール完了できなかったのでモンキーパッチ的な対応を取ることになりました。 CentOS6ではApache2.2系にしか対応してないとかあるのかな。。

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

# export HTTPD="/opt/rh/httpd24/root/usr/sbin/httpd"
# export APXS2="/opt/rh/httpd24/root/usr/bin/apxs
# export APR_CONFIG="/opt/rh/httpd24/root/usr/bin/apr-1-config"
# export APU_CONFIG="/opt/rh/httpd24/root/usr/bin/apu-1-config"

# passenger-install-apache2-module

すると、下記のようなエラーがでます。

cannot open /httpd/build/config_vars.mk: No such file or directory at /opt/rh/httpd24/root/usr/bin/apxs

ここを参考に、直接 $installbuilddir を指定することにします。 serverfault.com

- get_config_vars("$installbuilddir/config_vars.mk",\%config_vars);
+ get_config_vars("/opt/rh/httpd24/root/usr/lib64/httpd/build/config_vars.mk",\%config_vars);

改めて# passenger-install-apache2-moduleを実行し、最後に表示される以下のスクリプトを控え、Apacheから読み込ませます。 Apahceのhttpd.confに Include *.confとか書いてあれば、confファイルは自動で読み込まれるので、passenger.confを作ります。

# vi /opt/rh/httpd24/root/etc/httpd/conf.d/passenger.conf

LoadModule passenger_module /usr/local/rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/passenger-5.0.13/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/passenger-5.0.13
  PassengerDefaultRuby /usr/local/rbenv/versions/2.2.2/bin/ruby
</IfModule>

apacheを再起動します。

# service httpd24-httpd start

DocumentRootのパスにブラウザでアクセスし、Redmineの画面が表示されたら完了です。

感想

CentOS6に、無理にApache2.4系を入れたのはいいのか疑問(今のところ普通に動いてます)。

参考:

Redmine 3.0をCentOS 7.0にインストールする手順 | Redmine.JP Blog