ArchLinuxにRedmineを導入する手順・構築編
ArchLinuxにRedmineを構築したのでメモ
とりあえずRedmine自体の構築のみ
本番環境とSSL/TLSを利用する場合の設定は別に書きます
必要なもの
- データベース
- mysql(mariadb)とかsqliteとかperaconaとかお好みで選べるらしい
- 今回はmariadbを使用する。
$ sudo pacman -S mariadb
- webサーバ(Apache)
- 今回はApacheを使用します。
$ sudo pacman -S apache
- ImageMagick
- 画像を表示させたりするやつ
$ sudo pacman -S imagemagick
- git
- Redmineと連携
リリースパッケージのダウンロードと展開
Redmineのサイトからダウンロード。
$ wget http://www.redmine.org/releases/redmine-3.0.3.tar.gz
$ wget http://www.redmine.org/releases/redmine-3.0.3.tar.gz.md5
md5でハッシュを確認しておく
$ md5sum redmine-3.0.3.tar.gz > 493463.... $ cat redmine-3.0.3.tar.gz.md5 > 493463....
tarをお好みの場所に展開する。
自分は/srvに展開しました。
$ sudo tar fvxz redmine-3.0.3.tar.gz -C /srv/
データベースの用意
コマンドがmysqlとなっているが、あくまでmariadbはmysqlの実装なのでmysqlのコマンドが使える。
データベースの初期設定
デフォルトのテーブルのインストール
自分の環境だとこれをやらないと後でmysqld.serviceが起動できなくなってしまった。
ArchWikiのトラブルシューティングの項目に載っていた
# cd /usr # mysql_install_db --user=mysql --ldata=/var/lib/mysql/
を実行
mysqlの起動
systemdでmysqlを起動してみる。
$ sudo systemctl start mysqld
うまく起動できたら起動時に実行されるようにしておく
$ sudo systemctl enable mysqld
データベースの初期化
セットアップスクリプトの実行
$ sudo mysql_secure_installation
rootのpassを聞かれるが、まだパスワードを設定していないのでそのままEnter
> Enter current password for root (enter for none) :
新しいrootのパスワードを設定するか聞かれるので"y"
> Set root password? [Y/n] : y
> New password:
設定したいパスワードを入力
> Re-enter new password:
設定したいパスワードを再入力
匿名ユーザーを削除する
> Remove anonymous users? [Y/n] :
Enter
リモートからのrootログインを拒否
> Disallow root login remotely? [Y/n] :
Enter
testテーブルを削除する。
testテーブルは誰でもアクセスできてしまう。セキュリティ的に消したほうがいいらしいので消す
> Remove test database and access to it? [Y/n] :
Enter
権限テーブルをリロードする
> Reload privilege tables now? [Y/n] :
Enter
設定は以上で終わり
データベースの文字コード
文字コードをUTF-8に変更します。
ArchWikiに載っていた方法だとうまく変更できなかったので他のサイトで見つけてきた方法で変更します。
ちなみに、RedmineはUTF-8に設定しておけば文字化けはしないそうです。
とりあえず先に現在の文字コードを確認
$ mysql -uroot -p
mysql> show variables like "chara%";
Variable_name | Value |
---|---|
character_set_client | latin1 |
character_set_connection | latin1 |
character_set_database | utf8 |
character_set_filesystem | binary |
character_set_results | latin1 |
character_set_server | utf8 |
character_set_system | utf8 |
character_sets_dir | /usr/share/mysql/charsets/ |
mysqlの設定ファイルを編集し、[client]と[mysqld]に次の行を追加
$ sudo vim /etc/mysql/my.cnf
[client] default-character-set=utf8 [mysqld] character-set-server=utf8
他の設定項目を見ると、アンダーバーとハイフンの2通りの設定項目がありますが、mysqlの設定ファイルの場合、どちらでも問題は無いようです。
ちなみに、default-character-set=utf8
とcharacter-set-server=utf8
は同じ意味だそうです。
詳しくはここ
もう一度確認してみます。
mysql> show variables like "chara%";
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/ |
データベースユーザの作成
Redmineが使用するMySQLのユーザを作成します。
MySQLにログインし、次の3行を入力
CREATE DATABASE redmine CHARACTER SET utf8; CREATE USER 'redmine'@'localhost' IDENTIFIED BY '[パスワード]'; GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
データベースの設定
"production"環境用のデータベース設定をする。
Railsではproduction、development、testなどの本番環境や開発環境で環境をわけれるらしい?
productionが本番環境用で、developmentは開発環境
違いはdevelopmentはある程度のエラーは許容するみたい
ここでは、一旦Redmineのデータベースの設定を行います。
実際のテーブルとかは後で作成します。
config/database.ymlの作成
Redmineの展開ディレクトリに移動して
$ sudo cp config/database.yml.example config/database.yml
設定ファイルの編集
# vim config/database.yml production: adapter: mysql2 database: redmine host: localhost username: redmine password: "[パスワード]" encoding: utf8
bundlerのインストール
インストール
$ sudo gem install --no-user-install bundler
ArchLinuxでは、デフォルトではgemはシステム全体ではなく、個別にインストールされるようになっている。
--no-user-install
オプションを追加することで、システム全体(/usr/lib/ruby/gems/)にインストールされる
gemのインストール
Redmineの展開したディレクトリの中で
$ bundle install --without development test postgresql sqlite
$ sudo -uhttp bundle install --without development test postgresql sqlite
今回はMySQLを使用するので、postgresqlとsqliteのgemを省略します。
ImageMagickをインストールしていない場合は--withoutオプションにrmagickを追加します。
インストールしている場合、エラーが出ることがあるそうです。
その場合はこことかが参考になりそうです
bundleコマンドは基本的にはsudoを使用しなくて問題ないみたいです。
sudoでbundleを使用したら怒られました
root権限が必要なときはその時にパスワードを求めてくるそうです。
セッションストア秘密鍵の生成
Redmineの展開ディレクトリで下記コマンドを実行
$ sudo rake generate_secret_token
データベース上にテーブルを作成
Redmineの展開ディレクトリに移動
データベースにテーブルを作成
テーブルとRedmineの管理者アカウントが作成される
$ RAILS_ENV=production rake db:migrate
デフォルトデータをデータベースに登録
デフォルトのロール、トラッカー、ステータス、ワークフロー、列挙項目がロードされる
使用言語を聞かれるのでja
と解答
$ RAILS_ENV=production rake redmine:load_default_data
パーミッションの設定
Redmineの展開ディレクトリ内で、
$ sudo mkdir tmp public/plugin_assets
$ sudo chown -R http:http [Redmine全体]
$ sudo chmod -R 755 files log tmp public/plugin_assets
ちなみにRedmine Guideによると、
Railsアプリケーションのディレクトリ($RAILS_ROOT)および$RAILS_ROOT以下のファイル・ディレクトリのオーナーは、root以外としてください。 Passengerでは、root権限でRailsアプリケーションを動かすことはできません。Railsアプリケーションが動作するユーザーは$RAILS_ROOT/config/environment.rbのオーナーとなりますが、environment.rbがrootの場合はnobodyユーザーで動作します。このとき、オーナーがrootである$RAILS_ROOT/logディレクトリや$RAILS_ROOT/tmpディレクトリに書き込みができず、アプリケーションが動作しないことがあります。
rootだとダメみたいです。
構築できたか確認
うまく構築できたか一度確認します。
$ sudo ruby script/rails server webrick -e production
script/railsは無いとか怒られたんでbin/railsを使用します。
$ sudo ruby bin/rails server webrick -e production
外部のVPSなどで起動する場合、そのVPSのIPをオプションで設定してあげる必要があります。
$ sudo ruby bin/rails server webrick -e production -b 157.7.53.36
WEBrickを起動して、http://[ホスト名]:3000/ にアクセスするとRedmineが開けるはずです。
(ポートの開け忘れに注意!)
WEBrickはRedmine Guideによると、
注意: Webrickは通常は開発時に使用すものであり、通常の運用には適していません。動作確認以外には使用しないでください。本番運用においてはPassenger (mod_rails)、FCGI、またはRackサーバ(Unicorn, Thin, Puma, hellipなど)の利用を検討してください。
とのことなので、本番環境を何で動かしゃいいのかググった結果、 ArchWikiに本番環境はApacheにPassengerを導入したものでいいみたいなことが書いてあったので、そうしたいと思います。
本番環境の構築と、設定などは次の記事で書きたいと思います。
ちなみにWEBrickでも login: admin password: admin でログインして設定変更とかは出来ます。