Redmineを入れてみましょう、ということでドえらくハマったこと...。
・Redmine 3.4をCentOS 7.3にインストールする手順 | Redmine.JP Blog
⇧ 上記サイト様を参考にさせていただいています。
Redmineとは
Redmineはオープンソースのプロジェクト管理ソフトウェアです。タスク管理、進捗管理、情報共有が行えます。ソフトウェア開発やwebサイト制作等のITプロジェクトをはじめ、汎用性が高いため幅広い用途に活用できます。
ということみたいです。 Redmine自体がRuby on Railsでできているらしいです。
Redmineのインストールに必要なもの
・Redmineのインストール - Redmine Guide 日本語訳
⇧ にも記載されていますが、仮想マシンで導入していくのに必要なものを一応まとめると、「Webサーバ」「Ruby」「Rubyが動くアプリケーションサーバ」「データベース」があれば大丈夫そうです。
- Webサーバ
- Ruby
- Rubyが動くアプリケーションサーバ
- データベース
- MySQL 5.0以上
- MariaDB
- PostgreSQL 8.2以降
- Microsoft SQL Server 2012以降
- ※ MySQL 5.6以降とMariaDBは既知の問題があります (#19344, #19395, #17460).
- ※ PostgreSQL 8.4.0 と 8.4.1に存在するバグに起因するRedmineの不具合が報告されています(#4259, #4259)。それらのバグはPostgreSQL 8.4.2で修正済みです。
Redmineのインストールに必要なものをそろえる
今回、用意したものはこんな感じです。
機能 | 内容 |
---|---|
OS | CentOS 7.3 |
Webサーバ | Apache Httpd 2.4.27 |
言語 | Ruby 2.4.2 |
アプリケーションサーバ | Phusion Passenger 5.1.8 |
Webサーバのモジュール ※Apache Httpd利用の場合 |
passenger-install-apache2-module |
データベース | MySQL 5.7.19 |
Database adapter ※MySQL利用の場合 |
mysql2 |
Redmine自体がRuby on Railsでできてるので、Ruby on Railsは入れなくても大丈夫かと思われます。
⇩ Vagrant、VirtualBox、Webサーバ、Rubyはこちらを参考に
CentOS7.4を使う場合は、Apached Httpdのインストールがもう少し手軽におこなえるようです。
・CentOS 7.4 で手軽になった HTTP/2 対応 Apache のインストールメモ | あぱーブログ
ということで、VagrantでVirtualBoxに作成した仮想マシン(CentOS 7.3) に、Apached Httpd 2.4.27、Ruby 2.4.2がインストールされたというところからスタートしていきます。
・Redmine 3.4をCentOS 7.3にインストールする手順 | Redmine.JP Blog
⇧ 上記サイト様の「必要なパッケージのインストール」のものをインストールしておいたほうが良いかと思われます。(今回、MySQLを使うので、PostgreSQLとかは必要ないです。)
bundlerのインストール
Ruby用のパッケージ管理ツールであるbundlerをインストールします。Redmineが使用するgemパッケージをインストールするのに使われます。
gem install bundler --no-rdoc --no-ri
MySQLのインストールとRedmine用のデータベース作成など
・CentOS7.3 に MySQL5.7 をインストールした時のメモ - Qiita
MariaDBが入ってたら削除する必要があるようです。
rpm -qa | grep maria yum remove mariadb-libs rm -rf /var/lib/mysql/
MySQL5.7 インストール
yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm yum install mysql mysql-devel mysql-server mysql-utilities
MySQL5.7インストールできたか確認
rpm -qa | grep mysql mysqld --version
初期化
mysqld --user=mysql --initialize
自動起動にする
systemctl enable mysqld.service
起動
systemctl start mysqld.service
初回起動時にrootの初期パスワードが自動設定される。 ログに出力されるので確認する。
grep password /var/log/mysqld.log
「root@localhost: 初期パスワード」の初期パスワードを使ってMySQLにログインします。ログイン後、rootのパスワードを変更。(後で「mysql_secure_installation」で改めてrootパスワードを決めるので、ここは仮のパスワードみたいな感じです。)
mysql -u root -p SET PASSWORD = PASSWORD('新しいパスワード');
一旦、ログアウトし、MySQLの初期設定。パスワードは上記で設定した仮パスワードを入力します。
mysql_secure_installation
「VALIDATE PASSWORD PLUGIN のインストール」を聞かれますが、個人でMySQLを使う分には特に入れなくても良かったみたいです。「y」を選択してしまいましたが。
「Change the password for root?」と聞かれるので、ここでrootパスワードを改めて設定できます。仮で設定したパスワードを使う場合は、「y」以外を押せば良いみたいです。
「Remove anonymous users ?」 と聞かれるので、「anonymous ユーザを削除」する場合は、「y」
「Disallow root login remotely? 」と聞かれるので、「ローカルホスト以外からアクセス可能な root アカウントを削除」する場合は「y」
「Remove test database and access to it?」と聞かれるので「test データベースの削除」する場合は「y」
vim /etc/my.cnf
「/etc/my.cnf」の[mysqld]ブロックに追記します。
character-set-server = utf8 default_password_lifetime = 0
Redmine用のデータベース作成
CREATE DATABASE redmine DEFAULT CHARACTER SET utf8mb4; CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'stepRedmine'; GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
Redmineのインストール
svn コマンドを使って「/var/lib/redmine」にRedmineをインストール
svn co http://svn.redmine.org/redmine/branches/3.4-stable /var/lib/redmine
データベース接続設定
cp /var/lib/redmine/config/database.yml.example /var/lib/redmine/config/database.yml vim /var/lib/redmine/config/database.yml
「production」のほうの設定の「database」、「username」、「password」にRedmine用のデータベース作成で作成したデータベースの情報を指定します。
cd /var/lib/redmine
Rubyのパッケージ管理ツール「bundler」を使用してRedmineが依存するgemパッケージをインストールします。
bundle install --without development test --path vendor/bundle
で、エラー。
ImageMagickとヘッダファイル・日本語フォントのインストールをしてなかったのでインストール。
yum -y install ImageMagick ImageMagick-devel ipa-pgothic-fonts
再び、
bundle install --without development test --path vendor/bundle
今回はエラーとして出なかったんですが、RedmineでMySQLを使うためのMysql2で『libmysqlclient-dev』 or 『mysql-devel』を入れれば動くみたいなエラーが出たときは、「yum install mysql-devel」とかすれば大丈夫かと。
The Mysql2 gem is meant to serve the extremely common use-case of connecting, querying and iterating on results. Some database libraries out there serve as direct 1:1 mappings of the already complex C APIs available. This one is not.
It also forces the use of UTF-8 [or binary] for the connection [and all strings in 1.9, unless Encoding.default_internal is set then it'll convert from UTF-8 to that encoding] and uses encoding-aware MySQL API calls where it can.
The API consists of three classes:
Mysql2::Client
- your connection to the database.
Mysql2::Result
- returned from issuing a #query on the connection. It includes Enumerable.
Mysql2::Statement
- returned from issuing a #prepare on the connection. Execute the statement to get a Result.
Redmineの初期設定と初期データ登録
セッション改ざん防止用秘密鍵の作成
bundle exec rake generate_secret_token
データベースのテーブル作成
config/database.yml で指定したデータベースにテーブルを作成します。
RAILS_ENV=production bundle exec rake db:migrate
デフォルトデータの登録
作成したテーブルにデフォルトデータのロードを行います。この操作によりトラッカー、優先度、ステータス、ロール、ワークフローなどの初期値が登録されます。
RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data
Passengerのインストール
Apache上でRedmineなどのRailsアプリケーションを実行するために使われるPhusion Passengerをインストールします。
gem install passenger --no-rdoc --no-ri
passenger-install-apache2-moduleのインストール
PassengerをApacheで使うためのApache用のモジュールのビルドとインストール
passenger-install-apache2-module --auto --languages ruby
はい、エラー。ソースコードでインストールしたApached Httpd 2.4.27は無視される感じですかね...というかyumでも入れろ的な感じですかね。
yum -y install httpd httpd-devel
再び、
passenger-install-apache2-module --auto --languages ruby
Apache用設定内容の確認
passenger-install-apache2-module --snippet
出力された内容は、テキストエディタなどにコピペしときます。
で、今回はソースコードでインストールしたApached Httpd 2.4.27が動いているので、
sudo mkdir /usr/local/apache2/conf.d
して、
sudo vim /usr/local/apache2/conf.d/redmine.conf
# Redmineの画像ファイル・CSSファイル等へのアクセスを許可する設定。 # Apache 2.4のデフォルトではサーバ上の全ファイルへのアクセスが禁止されている。 <Directory "/var/lib/redmine/public"> Require all granted </Directory> # Passengerの基本設定。 # passenger-install-apache2-module --snippet で表示された設定を記述。 # 環境によって設定値が異なるため以下の5行はそのまま転記せず、必ず # passenger-install-apache2-module --snippet で表示されたものを使用すること。 LoadModule passenger_module /usr/local/src/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/passenger-5.1.8/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /usr/local/src/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/passenger-5.1.8 PassengerDefaultRuby /usr/local/src/rbenv/versions/2.4.2/bin/ruby </IfModule> # サブディレクトリでRedmineを実行するための設定 # 『http://仮想マシンのIPアドレス/redmine』でアクセスできるようにする Alias /redmine /var/lib/redmine/public <Location /redmine> PassengerBaseURI /redmine PassengerAppRoot /var/lib/redmine </Location>
Apache上のPassengerでRedmineを実行するための設定
Redmineを配置したディレクトリ以下のファイルを、Apacheを実行するユーザー・グループ(CentOSの場合はいずれも"apache")で読み書きできるよう、オーナーを変更します。
chown -R apache:apache /var/lib/redmine
sudo systemctl restart httpd
ブラウザで『http://仮想マシンのIPアドレス/redmine』にアクセス。
nmcli device show
で確認できるようです。
今回は、Vagrantfileで『config.vm.network "private_network", ip: "192.168.33.10"』を有効にしてるので、『IP4.ADDRESS[1]:』の『192.168.33.10/24』の『192.168.33.10』の部分がアドレスになってます。
・CentOS7で、マシンのIPアドレスやMACアドレスを確認する | 自由とテクノロジーを愛す者のサイト