プロジェクト

全般

プロフィール

Redmineプラグイン開発環境

CentOS 7 開発者のホームディレクトリ下に展開

RedmineをCentOS 7の個人領域にインストールして開発用に使用する構築手順です。
注)tarボールをダウンロードする方法を記載していますが、Redmineのリポジトリからクローンしてくる方がよいかと思います。

redmineの展開

~$ mkdir work
~$ cd work
work$ tar xzf ~/redmine-3.3.0.tar.gz
  :
work$ cd redmine-3.3.0
redmine-3.3.0$ 

データベース設定ファイルの作成

開発用の環境なので、sqliteをデータベースに使用します。
Redmineインストールディレクトリの下で、config/database.yml.example を参考に、database.ymlファイルを作成します。

production:
  adapter: sqlite3
  database: db/redmine.sqlite3

development:
  adapter: sqlite3
  database: db/redmine.sqlite3

Linuxにsqlite開発パッケージのインストール

$ sudo yum install sqlite-devel
  :

設定ファイルの作成

redmine-3.3.0$ cd config
config$ cp -p configuration.yml.example configuration.yml

必要なRubyモジュールの取得

データベース設定に基づき必要なデータベースコネクションモジュールを読み込むので、データベースの設定ファイルの作成が終わってから実行します。

redmine-3.3.0$ bundle install --path vendor/bundler

セッション秘密鍵の生成

redmine-3.3.0$ bundle exec rake generate_secret_token

データベースの初期化(テーブル作成)

redmine-3.3.0$ bundle exec rake db:migrate
redmine-3.3.0$ REDMINE_LANG=ja bundle exec rake redmine:load_default_data
Default configuration data loaded.

ファイアウォールにポート3000を設定

CentOS 7の場合次の設定をします。

~$ sudo firewall-cmd --zone=public --add-port=3000/tcp --permanent
success
~$ sudo firewall-cmd --reload
success
~$ sudo firewall-cmd --zone=public --list-port
21/tcp 3000/tcp 8008/tcp
~$

Redmineの実行

Redmineに標準で搭載されているWEBrickサーバーを使って実行します。

redmine-3.3.0$ ruby bin/rails server -b 0.0.0.0
=> Booting WEBrick
=> Rails 4.2.6 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2016-10-07 22:24:03] INFO  WEBrick 1.3.1
[2016-10-07 22:24:03] INFO  ruby 2.3.1 (2016-04-26) [x86_64-linux]
[2016-10-07 22:24:03] INFO  WEBrick::HTTPServer#start: pid=23239 port=3000

ブラウザからポート3000へアクセスするとRedmine画面が表示されます。

  • -b 0.0.0.0 について
    WEBrickサーバーは、デフォルトでは、localhost(127.0.0.1)にbindするため、別マシンからのアクセスを受け付けません。そこで、0.0.0.0(どのアドレスからも接続可)を指定します。

Fedora 26 の開発者アカウント下に展開

先のCentOS 7への展開との差分だけ記述します。
Redmineのソースコードは、redmineのレポジトリからチェックアウトします。Fedoraは、yumではなくdnfでRPMパッケージをインストールするのでそのコマンドを記載しています。

redmine自身のソースコード一式をチェックアウト

~$ cd Documents
Documents$ mkdir redmine
Documents$ cd redmine
redmine$ svn co http://svn.redmine.org/redmine/branches/3.4-stable
  :
redmine$ ls
3.4-stable
redmine$

データベースの設定

database.ymlの記述は先のものと同一

Linuxにsqlite開発パッケージのインストール

$ sudo dnf install sqlite-devel
  :

Linux Subsystem for WindowsのopenSUSE上へのインストール

先のCentOS 7への展開との差分だけ記述します。

Windows 10(2017-10に更新が提供された Fall Creators Update以降で正式搭載)のLinux Subsystem for Windows で、openSUSEを使用した環境でのRedmineのプラグイン開発環境の構築をします。

2017-11-10現在、openSUSE Leap 42です。
rubyはデフォルトでは2.1ですが、openSUSEのパッケージリポジトリにはruby2.4も存在しています。プラグイン開発環境ということで、ここではデフォルトを使います。

GitでRedmine自体を取得

Subversionは標準では入っていなかったので、Redmineのリポジトリをミラー(?)しているGithubから取得しました。

~/redmine$ git clone -b 3.4-stable https://github.com/redmine/redmine.git
Cloning into 'redmine'...
remote: Counting objects: 144588, done.
remote: Compressing objects: 100% (34/34), done.
remote: Total 144588 (delta 27), reused 26 (delta 17), pack-reused 144537
Receiving objects: 100% (144588/144588), 49.38 MiB | 4.08 MiB/s, done.
Resolving deltas: 100% (113230/113230), done.
~/redmine$

必要なOSパッケージの追加

SQLite3

$ sudo zypper install sqlite3

ruby gem bundler

$ sudo zypper install ruby2.1-rubygem-bundler

gemのインストール・ネイティブビルド・実行に必要なパッケージ

gemインストール時に以下がないとエラー

  • ruby-devel
  • zlib-devel
  • ImageMagick-devel
  • sqlite3-devel

bundle exec rake generate_secret_token実行時にnokogiriが吐くlibexslt.soがないとエラー

  • libxslt1
    libexslt.soを含むパッケージはlibxslt1ですが、ネイティブビルド時にdevelパッケージも必要ではないか?と思い、libxml2-devel と libxslt-devel を入れています。

bundle exec rake db:migrate実行時にZoneInfoDirectoryNotFound といったエラー

  • timezone
    OSのパッケージの方です。

gemのインストール

3.4-stable$ bundle install --path vendor/bundler

ツールの使い方

SQLite3

次のコマンドで、Redmineのデータベースを開き対話モードに入ります。

3.4-stable$ sqlite3 db/redmine.sqlite3
sqlite>

テーブル一覧

sqlite> .tables
attachments                          members
auth_sources                         messages
boards                               news
  :

テーブルの構造(スキーマ)

sqlite> .schema wikis
CREATE TABLE IF NOT EXISTS "wikis" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "project_id" integer NOT NULL, "start_page" varchar(255) NOT NULL, "status" integer DEFAULT 1 NOT NULL);
CREATE INDEX "wikis_project_id" ON "wikis" ("project_id");
sqlite>

クリップボードから画像を追加 (サイズの上限: 1 GB)