個人的には機能が多すぎると思うのだけど,それでもRedmineは便利な道具です.
CentOS7が用意出来たので、設定してみます.
ちなみに大筋Redmine公式の通りでよいのですが えらくハマるポイントがあって試行錯誤した結果が以下になります.
最も困ったのがRubyのOpenSSL設定. こんなにハマるとは...
あと、下記方法ではSELinuxが無効なので,外部に公開するサーバなんかの場合はきちんと設定したほうが良いかと思います.
まずはアカウントを作成
adduser redmine
ネットワーク設定
現状のネットワーク設定の確認
$ nmcli dev Device type STATE Connection eth0 ethernet disconnected --- lo loopback unmanaged --- $ nmcli con NAME UUID Type Device eth0 94d762a4-ec7c-40c0-bd0c-ef78cfb8e094 802-3-ethernet ------
一度古いコネクションを削除
$ nmcli con delete eth0
コネクションを追加・設定
# nmcli con add type eth ifname eth0(<-ここはnmcli devで確認したデバイス名) con-name eth0 # nmcli con mod eth0 ipv4.method manual ipv4.addresses "[IPアドレス]/サブネットの桁数" ipv4.dns [DNSサーバのIP] ipv4.gateway [デフォルトゲートウェイのIP] # nmcli c down eth0 # nmcli c up eth0
この時点でSSHが接続できる.
基本設定
パッケージアップデート
$ yum check-update $ yum update
sudoの設定
# visudo ## Allow root to run any commands anywhere root ALL=(ALL) ALL redmine ALL=(ALL) ALL #<- 追記
SELinux無効化
/etc/sysconfig/selinuxを編集
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. #SELINUX=enforcing SELINUX=disabled
rebootする
httpをファイアーウォールで許可する
[root@localhost ~]# firewall-cmd --zone=public --add-service=http --permanent success [root@localhost ~]# firewall-cmd --reload success [root@localhost ~]# firewall-cmd --zone=public --list-services dhcpv6-client http ssh
インストール
開発ツール(Cコンパイラとか)のインストール
[root@localhost ~]# yum -y groupinstall "Development Tools"
RubyとPassengerのビルドに必要なヘッダ等のインストール
yum -y install openssl-devel readline-devel zlib-devel curl-devel libyaml-devel libffi-devel
PostgreSQLとヘッダファイルのインストール
yum -y install postgresql-server postgresql-devel
Apacheとヘッダファイルのインストール
yum -y install httpd httpd-devel
ImageMagickとヘッダファイル・日本語フォントのインストール
yum -y install ImageMagick ImageMagick-devel ipa-pgothic-fonts
rubyをリビルドする必要があるのでruby-develパッケージを入れる
yum -y install ruby-devel
Rubyをダウンロードしてビルド・インストール
curl -O https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.tar.gz tar xvf ruby-2.2.3.tar.gz cd ruby-2.2.3 ./configure --disable-install-doc make make install cd ..
当初は上述までのRubyのインストールだけで進めていた. しかしSSLエラーが多発する.(GemやBundlerで) 一時しのぎのために以下のように
gem source -a http://rubygems.org/ gem source -r https://rubygems.org/
とするなどして,https通信を避けることで逃げていたが, もちろんそれで最後までうまくいくわけもない そこで下記設定を行うハメになった.
このままじゃ動かないので以下の工程で再ビルドする
cd ruby-2.2.3 ./configure cd ruby-2.2.3/ext/openssl/ ruby extconf.rb --with-openssl-dir=/usr/lib64/openssl/ --enable-shared make make install
PostgreSQLの設定
postgresql-setup initdb
RedmineからPostgreSQLに接続するための設定を追加 /var/lib/pgsql/data/pg_hba.confを編集
# TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local redmine redmine ident local all all peer # IPv4 local connections: host redmine redmine 127.0.0.1/32 md5 host all all 127.0.0.1/32 ident # IPv6 local connections: host redmine redmine ::1/128 md5 host all all ::1/128 ident # Allow replication connections from localhost, by a user with the # replication privilege. #local replication postgres peer #host replication postgres 127.0.0.1/32 ident #host replication postgres ::1/128 ident
PostgreSQLの起動および自動起動の設定
systemctl start postgresql.service systemctl enable postgresql
PostgreSQLのディレクトリに移動
cd /var/lib/pgsql
Redmine用ユーザーの作成
sudo -u postgres createuser -P redmine Enter password for new role: (PostgreSQLの redmine用ユーザーに設定するパスワードを入力) Enter it again: (パスワード再入力)
Redmine用データベースの作成
sudo -u postgres createdb -E UTF-8 -l ja_JP.UTF-8 -O redmine -T template0 redmine
Redmineのインストール
svn co http://svn.redmine.org/redmine/branches/3.2-stable /var/lib/redmine
DB設定
[root@localhost ~]# cd /var/lib/redmine/ [root@localhost redmine]# ls CONTRIBUTING.md Rakefile bin db files plugins test Gemfile app config doc lib public tmp README.rdoc appveyor.yml config.ru extra log script vendor [root@localhost redmine]# cp config/database.yml.example config/database.yml [root@localhost redmine]# vi config/database.yml #以下に変更する production: adapter: postgresql database: redmine host: localhost username: redmine password: [ここにPostgresのパスワードを入れる] encoding: utf8
Redmineのインストールディレクトリへ移動
cd /var/lib/redmine
gemパッケージのインストール パッケージ入れる
bundle install --without development test --path vendor/bundle
エラーが出る. 使う予定もないのにmysqlとnokogiriがいると言う. (ActiveRecordが依存してるっぽい.Redmine内部でもnokogiriとか使ってるのかね?)
入れる
yum -y install mysql-devel yum -y install libxml2-devel yum -y install libxslt-devel
システムライブラリを利用するよう設定
bundle config build.nokogiri --use-system-libraries
セッション改ざん防止用秘密鍵の作成
bundle exec rake generate_secret_token
DBテーブル作成
RAILS_ENV=production bundle exec rake db:migrate
デフォルトデータの登録
RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data
Passengerのインストール
gem install passenger --no-rdoc --no-ri
PassengerのApache用モジュールのインストール(公式では--autoオプションを利用していたが,それでは動かなかった)
passenger-install-apache2-module
画面指示に従うと最後に以下のような内容が示されるので記録しておく.
Please edit your Apache configuration file, and add these lines: LoadModule passenger_module /usr/local/lib/ruby/gems/2.2.0/gems/passenger-5.0.25/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /usr/local/lib/ruby/gems/2.2.0/gems/passenger-5.0.25 PassengerDefaultRuby /usr/local/bin/ruby </IfModule>
Apache用設定内容の確認
下記コマンドを実行するとApacheに追加すべき設定が表示される. この情報はこの後Apacheの設定を行うときに使用する.(記録した内容と同じはず)
passenger-install-apache2-module --snippet
出力結果はこんな感じ
# passenger-install-apache2-module --snippet LoadModule passenger_module /usr/local/lib/ruby/gems/2.2.0/gems/passenger-5.0.25/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /usr/local/lib/ruby/gems/2.2.0/gems/passenger-5.0.25 PassengerDefaultRuby /usr/local/bin/ruby </IfModule>
Apacheの設定
以下の内容で /etc/httpd/conf.d/redmine.conf を作成してください。
# Redmineの画像ファイル・CSSファイル等へのアクセスを許可する設定。 # Apache 2.4のデフォルトではサーバ上の全ファイルへのアクセスが禁止されている。 <Directory "/var/lib/redmine/public"> Require all granted </Directory> # Passengerの基本設定。 # passenger-install-apache2-module --snippet で表示された設定を記述。 # 環境によって設定値が異なるため以下の3行はそのまま転記せず、必ず # passenger-install-apache2-module --snippet で表示されたものを使用すること。 # LoadModule passenger_module /usr/local/lib/ruby/gems/2.2.0/gems/passenger-5.0.21/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /usr/local/lib/ruby/gems/2.2.0/gems/passenger-5.0.21 PassengerDefaultRuby /usr/local/bin/ruby </IfModule> # Passengerが追加するHTTPヘッダを削除するための設定(任意)。 # Header always unset "X-Powered-By" Header always unset "X-Runtime" # 必要に応じてPassengerのチューニングのための設定を追加(任意)。 # 詳しくはPhusion Passenger users guide(https://www.phusionpassenger.com/library/config/apache/reference/)参照。 PassengerMaxPoolSize 20 PassengerMaxInstancesPerApp 4 PassengerPoolIdleTime 864000 PassengerHighPerformance on PassengerStatThrottleRate 10 PassengerSpawnMethod smart PassengerFriendlyErrorPages off
Apache起動
systemctl start httpd systemctl enable httpd
Apache上のPassengerでRedmineを実行するための設定
redmine配置ディレクトリを読み書きできるように権限変更
chown -R apache:apache /var/lib/redmine
httpd.confを編集
DocumentRoot "/var/www/html" ↓ DocumentRoot "/var/lib/redmine/public"
Apache再起動
systemctl restart httpd
起動エラーの時はDB接続エラーやデフォルトデータのロードに失敗している可能性が高い. 実際, Postgresの認証が通っていないことに気づかず,上述の設定値ロードを1度やり直した.
バックアップの設定
ftpを入れる
yum install -y ftp
redmineユーザでバックアップコマンドが動くことを確認
/usr/bin/pg_dump -U <username> -Fc --file=redmine.sqlc <redmine_database>
カレントディレクトリにredmine.sqlcができる.一旦削除.
/home/redmineにバックアップスクリプトを配置
mkdir backup-script backup.shをscpでコピー ftptransport.batをscpでコピー
スクリプトの内容は以下の通り
backup.sh
BACKUP_TIME=`date '+%Y%m%d%I%M%S'` BACKUPS_DIR=/home/redmine/backups DIR_PATH_BASE=${BACKUPS_DIR}/${BACKUP_TIME} rm -rf $BACKUPS_DIR mkdir -p $DIR_PATH_BASE/files mkdir -p $DIR_PATH_BASE/db_dump cp -ra /var/lib/redmine/files/* $DIR_PATH_BASE/files/ /usr/bin/pg_dump -U redmine -Fc --file=$DIR_PATH_BASE/db_dump/redmine.dump redmine cd ${BACKUPS_DIR} tar zcvf ${BACKUP_TIME}_redmine_backup.tar.gz $BACKUP_TIME mkdir -p ${BACKUPS_DIR}/for_transport/ cp -a ${BACKUP_TIME}_redmine_backup.tar.gz ${BACKUPS_DIR}/for_transport/ ftp -n < /home/redmine/backup-script/ftptransport.bat
ftptransport.bat
open [転送先FTPサーバのIP] user [FTPサーバのID] [password] bin prompt cd [転送先FTPサーバのディレクトリ] # リモートでcdにて移動 lcd /home/redmine/backups/for_transport/ # ローカルでcdにて移動 put * bye
cronを設定
crontab -e mailto="hogehoge@fugafuga.jp" 55 23 * * * /home/redmine/backup-script/backup.sh
リストアは以下でできるらしい. 実はDBはためしてない.なんかごめんなさい.
# Postgres pg_restore -C -d postgres redmine # Files restore cp -ar backupdate/files/* /var/lib/redmine/files
上記までで動いた. かなり時間をかけたと思う.
ただ、時間を当てた価値はあったかなと. 最近のRedmineはMarkdownも使えるんだね,知らなかった.ちょー便利だ.