Redmine(非パッケージ)をUbuntu14.04にインストールする手順(暫定)





整理すると、導入して稼働させたのは以下。
Redmine: 2.5-stable(SVNリポジトリ)版
OS: Ubuntu 14.04 amd64
LAMP選択: Ruby, Apache2, MySQL の組み合わせを採用
LAMP導入: Ubuntu14.04標準パッケージを使用
その他(Ruby gem他): Ubuntu14.04標準パッケージを使用


Redmine本体以外は、Ubuntuの標準パッケージを使うことにこだわった。
これは導入の面倒を可能な限り省くためである。
結果的に、Ubuntu14.04が出たばかりの時期であることもあり、バージョン齟齬による問題は起こらなかった。

反対に、 Ubuntuで提供されているRedmineの標準パッケージを使わなかったのは、Redmineの特定バージョン(新版など)を使いたくなった場合に、この導入手順が役に立つよう。
単純に、Ubuntuパッケージ版では最新でない2.4.2が提供されており、最新の2.5版が使いたかったことも理由である。

LAMPは、Rubyはともかく、ほかはApache2/MySQLとした。
Redmineは各種DB・サーバアプリケーションに対応しており、Ruby界隈は新技術との親和性が高いため、Apache2/MySQL以外のアプリケーションを使った手順を紹介している場合もある。
(もちろんこの場合、Apache2/MySQLに読み替えるか、そちらのアプリケーションを使うことになる)
これは、私が使い慣れていて、他に何か始めた際に邪魔にならないのがApache2/MySQLであるというだけの理由。
(今回nginxを導入したとして、後でApache2と共存させるのに頭を悩ませるようなことを避けたかった。)

タイトルの"(暫定)"は、『とりあえず動いていますよ』という意味で、導入手順の最後に、Redmineをサブディレクトリに導入しておきながらApacheの設定ファイルには"DocumentRoot /var/www/html/redmine"と指定する行儀の悪い設定ファイルを書いているため。
たぶん、調べればすぐ解決する問題だが、操作に慣れる目的で導入した、自分でしか使わないRedmineなので、次にインストールする時か、実際に問題が表面化するまでは放置することとした。

Redmine公式サイトのインストール手順を参考にした。
サブディレクトリへのRedmine導入は、公式インストール手順では『2.』として説明されている。

なお、本記事はRedmine導入作業中に書いたメモを元にしている。
そのため、十分に整理・説明されていない。
クリーンな環境での確認もしていないので、抜けている箇所があるかもしれない。
誰か、綺麗な手順に書きなおすか、導入スクリプトにまとめてくれると嬉しく思う。

###### 依存アプリケーションのインストール

## 標準パッケージ(apt)
sudo apt-get install ruby2.0 mysql-server apache2 -y

その他、gemなどのパッケージはあとで導入。

###### Redmineのダウンロードと配置

公式サイト(http://redmine.jp/download/)に書いてあるとおりに、SVNリポジトリから2.5版を取得

sudo apt-get install subversion -y
cd /var/www/html
svn checkout http://svn.redmine.org/redmine/branches/2.5-stable redmine


###### mysqlの設定

テーブルは自動生成? 設定する必要はないらしい。

## UTF-8

各セクションに下記文字コード設定を追記
詳しくは公式インストール手順にて。

vim /etc/my.cnf

[mysqld]
character-set-server=utf8
[mysql]
default-character-set=utf8


sudo service mysql restart

公式インストール手順の通りにUTF-8設定になったことを確認
mysql -u root -p
mysql> show variables like 'character_set%';



## redmineのmysqlユーザを作成

パスワードは適切に設定する。

mysql -u root -p
mysql> create database db_redmine default character set utf8;
mysql> grant all on db_redmine.* to user_redmine@localhost identified by 'パスワード';
mysql> flush privileges;
mysql> exit;


###### Redmine設定ファイル

## データベース設定

vim redmine/config/database.yml


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


## Redmine設定

vim redmine/config/configuration.yml

production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: "localhost"
      port: 25
      domain: "redmine.example.com"
      # localhostのSMTPサーバを使用する場合

  rmagick_font_path: /usr/share/fonts/truetype/fonts-japanese-gothic.ttf

database_cipher_key: ******



###### 追加のアプリケーション

gem -> bundler -> 各種パッケージ
Redmineに添付されているbundlerインストール設定ファイルを使って、必要なパッケージを導入する。

sudo gem install bundler
bundle install --without development test


下記エラーが出るので、必要なパッケージをAptでUbuntuに導入していくことで対応。
##

An error occurred while installing json (1.8.1), and Bundler cannot continue.
Make sure that `gem install json -v '1.8.1'` succeeds before bundling.


とりあえずこちらに従い、
sudo apt-get install ruby-dev -y

##

An error occurred while installing mysql2 (0.3.16), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.3.16'` succeeds before bundling.


sudo apt-get install libmysqlclient-dev -y

##

An error occurred while installing rmagick (2.13.3), and Bundler cannot
continue.
Make sure that `gem install rmagick -v '2.13.3'` succeeds before bundling.


こちらに従い、
sudo apt-get install libmagick++-dev -y

とりあえず、
"Your bundle is complete!"
と出ればOK。(bug reportについてメッセージが出ましたが。)


#### Redmineの初期設定とデータベースのテーブル作成

bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate


#### Passengerのインストールと(apacheへの)設定

Passengerを導入する。
sudo gem install passenger --no-rdoc --no-ri
// 実際には下記のコマンドを使ったのだったか、あるいは両方必要だった気もする。
sudo apt-get install libapache2-mod-passenger -y

導入後、インストールとは別にビルドコマンドを呼ぶ必要があったらしい。
(https://hirooka.pro/?p=6904)
passenger-install-apache2-module
この際、curl-configなどが足りないと言われるので、
sudo apt-get install apache-dev libcurl4-gnutils-dev -y
導入。

passenger-install-apache2-module --snippet
にて、apacheに設定すべき内容を確認。
コマンドで直接、Passenger設定をApache設定ファイルに書き込む。
sudo sh -c " passenger-install-apache2-module --snippet > /etc/apache2/conf-available/passenger.conf"

sudo service apache2 restart


######## 起動

導入方法および導入先ディレクトリは、『パターン2: サブディレクトリでRedmineを実行』を採用。
sudo vim /etc/apache2/conf-enabled/passenger.conf


RackBaseURI /redmine

LoadModule passenger_module /var/lib/gems/1.9.1/gems/passenger-4.0.49/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /var/lib/gems/1.9.1/gems/passenger-4.0.49
  PassengerDefaultRuby /usr/bin/ruby1.9.1
</IfModule>


として、RackBaseURIさえ追記すれば終了のはずだったのだが。

######apache2リスタート時のエラーメッセージ


AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message

こちらにある通り、
sudo gedit /etc/apache2/httpd.conf
ServerName localhost』を追記
で解決。




### 『redmineがディレクトリで見える』問題



 passenger-status
が動いていなかった。

sudo passenger-status

Version : 4.0.49
Date    : 2014-08-23 16:56:42 +0900
Instance: 5702
----------- General information -----------
Max pool size : 6
Processes     : 0
Requests in top-level queue : 0

----------- Application groups -----------



とりあえずconf-enabled/passenger.confに設定を書いて解決。
追記

   PassengerAppRoot /var/www/html/redmine
   DocumentRoot /var/www/html/redmine
   RackBaseURI /redmine
 』
コメントアウト

 #LoadModule passenger_module /var/lib/gems/1.9.1/gems/passenger-4.0.49/build    out/apache2/mod_passenger.so






Passenger動作確認。

sudo passenger-status 

Version : 4.0.49
Date    : 2014-08-23 18:11:16 +0900
Instance: 10272
----------- General information -----------
Max pool size : 6
Processes     : 2
Requests in top-level queue : 0

----------- Application groups -----------
/var/www/html/redmine#default:
  App root: /var/www/html/redmine
  Requests in queue: 0
  * PID: 10393   Sessions: 0       Processed: 7       Uptime: 32s
    CPU: 3%      Memory  : 48M     Last used: 8s ago
  * PID: 10401   Sessions: 0       Processed: 3       Uptime: 31s
    CPU: 2%      Memory  : 41M     Last used: 8s ago





Github上のmasterブランチを削除


Githubでgh-pagesを使う場合、master/gh-pagesブランチの同期をとる問題が発生しますが、最も簡単な対応は、masterブランチを削除してしまうことです。

そういうわけで、すでにGithub上に上げてあったmasterブランチを削除することにしたのですが、ちょっと手間取ってしまったので防備録。

前提として、gh-pagesブランチの作成とGithubへのプッシュは終了しているものとします。
(このあたりの手順は防備録がこちらにまとめてあります。)

まず、ローカルでmasterブランチを削除します。
git checkout gh-pages
git branch -d master

リモートブランチの削除に使うコマンド自体は、復習 Git: GitHub のブランチを削除する.に書かれている、
git push origin :master

でOKです。
ただし、何もせずただこのコマンドを打っても、以下のエラーが発生する場合があります。
 (エラーメッセージは抜粋)
remote: error: refusing to delete the current branch: refs/heads/master
 ! [remote rejected] master (deletion of the current branch prohibited)

これは、Github上のカレントのリポジトリがmasterであるため、これを削除することはできない、というエラーメッセージです。
(ローカルでもmasterを削除する前にgh-pagesをチェックアウトしている。)
Github上でリポジトリ変更作業を行うには、対象プロジェクトのGithubページから"Setting"をクリックし、Settings項目のDefault Branchをgh-pagesに切り替えるだけです。

Githubのプロジェクト上のSettings画面

フリーのルーン文字フォント集を公開しました

フリーフォントをリリースしました。
複数個のルーン文字フォントで、名称は RuneAssignMN シリーズです。

(update:2015/03/05アップデートしました。)  
(update:2015/07/03アップデートしました。) 
 
RuneAssignMNフォント各種サンプル

イラスト制作向けに特化したルーン文字のフォントで、書体が3種類あり、・イラスト/デザインで自己責任を前提に自由に使えるライセンス
・ルーン文字をパソコンで入力するための面倒な作業が不要
となるよう作られています。

また、サンプルページも用意してあります。

ダウンロード

ダウンロードはSourceForgeのdaisy_bell_フリーフォント公式配布ページからどうぞ。

あるいはBOOTHアカウントをお持ちの方はBOOTHのページからダウンロード可能です。
あなたが、フォント制作に興味のあるLinuxユーザであるならば、フォント制作のために作った素材画像からビルドスクリプトまで、プロジェクトすべてをフリーなライセンスで公開しています。GithubのRuneAssignMN Series Fontsプロジェクトページから、ダウンロードすることが可能です。

使い方

ルーン文字を、ラテン・アルファベットのA~zに割り当ててあります。
自分で英文・ローマ字文章を打ち込むことでルーン文字の文章を描くことができます。
また、フリーの英文を用意してこのフォントを適用するだけで、不自然な繰り返しのないルーン文字で書かれた長文を用意することができます。

Lorem ipsumにRuneAssignフォントを適用した例

割り当て表(フォントに添付してある)

今後の予定

あくまで予定ですが
・フォント作成した際の手順や、制作中に得たノウハウを記事にする
・さらに装飾性が高い書体を増やす
・Gimp2.8環境で、記号がデフォルトフォントにより描画されてしまう問題を解消する
・ルーン文字のユニコード領域を埋める(これは要望があれば)

2014/09追記:姉妹版フォント「OlChikiAssignMN_Series_Font」をリリースしました。

Linuxコマンドライン上でSVGベクタ画像をJPG等へラスタライズ変換する

 Linuxコマンドライン上でSVGベクタ画像をJPG等へラスタライズ変換することができるが、上手く変換されない場合がある。   以前作った魔法陣イラスト素材をイラスト素材ストックサイトへ登録しようと思い立ち、改めて素材用にラスタライズ変換をかけようとした。   ラスタライズ変換...