Ubuntu15.04上にRedmine3.0.xをインストールし、gitサーバーと連携する


Redmine3.0.xがリリースされたので早速環境構築してみます。基本的には『Redmine 3.0をCentOS 7.0にインストールする手順』を参考に、Ubuntu用に手順を改良させてもらいました。

目的

  • Redmine3.0.xをインストール
  • gitと連携させる
  • コミット時のメール送信はgmailを利用
  • ウェブサーバはApache + passenger module
  • 手順の使いまわしの為に、スクリプトベースの手順書にする

前提条件

  • Ubuntu15.04のインストール直後を想定
  • sshでのログインが可能なこと

参考サイト

redmine.jpの内容はいつも参考にさせてもらっています。この場を借りてお礼申し上げます。

事前準備

Ubuntu15.04をインストールした直後を想定しているので、下記を実施します。インターフェースは1つだけである想定で、interfacesファイルをバックアップした上で上書きしてしいるので、環境にあっていない場合には、適宜手動で編集してください。

  • IPアドレスの固定化(ウェブサーバが動的IPだと困るので)
  • パッケージの最新化
  • IPv6の無効化
  • sshdのDNSの逆引きを無効にする
sudo apt-get update
sudo apt-get upgrade

export MY_IP=172.20.1.252
export MY_NETWORK=`echo $MY_IP | sed -e "s/[0-9]*$/0/g"`
export MY_GATEWAY=`echo $MY_IP | sed -e "s/[0-9]*$/1/g"`
export MY_BROADCAST=`echo $MY_IP | sed -e "s/[0-9]*$/255/g"`
export MY_NETMASK=255.255.255.0
export MY_NAMESERVERS=172.20.1.1

# interfacesの設定
sudo cp /etc/network/interfaces /etc/network/interfaces.bak

# ヒアドキュメント使っているので、次の_EOF_まで、まとめてコピペ実行すること
sudo tee /etc/network/interfaces <<_EOF_ > /dev/null
auto lo
  iface lo inet loopback

auto eth0
  iface eth0 inet static
  address $MY_IP
  netmask $MY_NETMASK
  network $MY_NETWORK
  broadcast $MY_BROADCAST
  gateway $MY_GATEWAY
  dns-nameservers $MY_NAMESERVERS
_EOF_

sudo su -
echo "UseDNS no" >> /etc/ssh/sshd_config
echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf

reboot

 

必要なパッケージを事前にまとめてインストールする

postfixのインストール時にはインターネットサイトを選択し、Mysqlのインストール時にrootのパスワードを求められたらお好きなパスワードを設定してください。

sudo apt-get install ruby ruby-dev  build-essential libssl-dev \
  zlib1g-dev subversion git mysql-server mysql-client \
  libmysqlclient-dev postfix imagemagick libmagickcore-dev \
  libmagickwand-dev ruby-rmagick libcurl4-openssl-dev \
  apache2-mpm-worker apache2-threaded-dev libapr1-dev \
  libaprutil1-dev

MySQLのロケールを変更してredmine用のDBを作る

Ubuntu15.04のMySQLは、それ以前のものと設定ファイルが異なっています。具体的には、今までは/etc/mysql/my.cnfを設定していましたが、/etc/mysql/my.cnfはただのインクルードのみになり、その中身は/etc/mysql/mysql.conf.d/mysqld.cnfに移っています。

ここで、特に記憶しておく必要もないREDMINE_DBPASSはopensslコマンドでランダムな値で設定しています。この設定値は、Redmineインストール時に使いますので、その手順までOS再起動やログアウトしないで進めてください。心配だったらecho $REDMINE_DBPASSとでもして、パスワードを何処かにコピーしておいてください。

# 下記のMYSQL_ROOT_PASSはMySQLインストール時に
# 設定したパスワードに置き換えてください。
export MYSQL_ROOT_PASS="mysqldbpass"
export REDMINE_DBPASS=`openssl rand -hex 10`
export REDMINE_INSTALL_TO='/var/www/redmine'

sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf.bak
sudo sed -i "s/\[client\]/[client]\ndefault-character-set=utf8/g" \
  /etc/mysql/mysql.conf.d/mysqld.cnf
sudo sed -i "s/\[mysqld\]/[mysqld]\ncharacter-set-server=utf8/g" \
  /etc/mysql/mysql.conf.d/mysqld.cnf
sudo service mysql restart

# utf8になっている事を確認する。
mysql -uroot -p$MYSQL_ROOT_PASS \
  -e "show variables like 'character_set%';"
# +--------------------------+----------------------------+
# | 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/ |
# +--------------------------+----------------------------+

# データベース作成
mysql -uroot -p$MYSQL_ROOT_PASS -e \
  "drop database if exists redmine;"
mysql -uroot -p$MYSQL_ROOT_PASS -e \
  "CREATE DATABASE redmine character set utf8;"
mysql -uroot -p$MYSQL_ROOT_PASS -e \
  "grant all privileges on redmine.* to 'redmine'@'localhost' identified by '$REDMINE_DBPASS';"
mysql -uroot -p$MYSQL_ROOT_PASS \
  -e "flush privileges;"

# 下記の警告が出るが、DB自体の作成は出来ているので、無視して。
# Warning: Using a password on the command line interface can be insecure.

# MySQLのセキュリティ設定を行う。
# 具体的には、rootのパスワード設定とゲストアカウントの無効化、
# それと、リモートからのrootログインの無効化。
# 最初は、mysqlをインストールした時と同じパスワードを回答し、
# それ以降はEnterキーを4回押すのみ。
sudo mysql_secure_installation

 

Redmineのインストールと設定

redmineのインストール中にgmailによるメール送信を設定していますが、その設定でメール送信する場合には、gmailの設定で『安全性の低いアプリのアクセス』をONにしておく必要があり、https://www.google.com/settings/security/lesssecureappsから変更可能です(google のアナウンスはこちら)。gmail以外のメールサーバを持っている場合には、セキュリティ設定を変更せずに、gmail以外を使っても良いと思います。

sudo gem install bundler --no-rdoc --no-ri

sudo svn co https://svn.redmine.org/redmine/branches/3.0-stable $REDMINE_INSTALL_TO

# DBへの接続設定
sudo tee $REDMINE_INSTALL_TO/config/database.yml <<_EOF_ > /dev/null
production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: $REDMINE_DBPASS
  encoding: utf8
_EOF_

# メール送信設定。gmail利用例
# GMAIL,GMAIL_PASSWORDはご自身のアカウント情報を入れてください。
export GMAIL="your_email@gmail.com"
export GMAIL_PASSWORD="yourpassword"

sudo tee $REDMINE_INSTALL_TO/config/configuration.yml <<_EOF_ > /dev/null
production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      #tls: true
      enable_starttls_auto: true
      address: "smtp.gmail.com"
      port: '587'
      domain: "smtp.gmail.com"
      authentication: :plain
      user_name: "$GMAIL"
      password: "$GMAIL_PASSWORD"
_EOF_

# 初期データ登録とセキュリティトークン生成
cd $REDMINE_INSTALL_TO
sudo bundle install --without development test --path vendor/bundle
sudo bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data

# passengerインストール
sudo gem install passenger --no-rdoc --no-ri

# apache2用passengerインストーラを実行します。
# 実行してから、数分待たされることになりますが、
# 実行の一番最後に、設定ファイルに含めるべき内容が出力されます。
sudo passenger-install-apache2-module

Apacheの設定変更

上記のpassenger-install-apache2-modukeを実行した最後の方の出力結果を載せておきます。上から3行目のLoadModuleから始まる箇所が大事なので、これを実際のコンソール画面からコピーして次のスクリプトに放り込んでください。

Please edit your Apache configuration file, and add these lines:

   LoadModule passenger_module /var/lib/gems/2.1.0/gems/passenger-5.0.7/buildout/apache2/mod_passenger.so
   <IfModule mod_passenger.c>
     PassengerRoot /var/lib/gems/2.1.0/gems/passenger-5.0.7
     PassengerDefaultRuby /usr/bin/ruby2.1
   </IfModule>

After you restart Apache, you are ready to deploy any number of web
applications on Apache, with a minimum amount of configuration!

Press ENTER when you are done editing.

実際に実行するスクリプト

# 下記のLoadModuleから下5行を、上記でコピーした文字列に置き換えてから実行する。
sudo tee /etc/apache2/mods-available/passenger.conf <<_EOF_ > /dev/null
   LoadModule passenger_module /var/lib/gems/2.1.0/gems/passenger-5.0.7/buildout/apache2/mod_passenger.so
   <IfModule mod_passenger.c>
     PassengerRoot /var/lib/gems/2.1.0/gems/passenger-5.0.7
     PassengerDefaultRuby /usr/bin/ruby2.1
   </IfModule>
_EOF_

sudo ln -s /etc/apache2/mods-available/passenger.conf /etc/apache2/mods-enabled/passenger.conf

# ここで、VirtualHostに設定するホスト名(FQDN)を組み立てています。
# 面倒だったら、export MY_FQDN="my.redmine.local"のように、
# ダイレクトに指定してしまってください。
export MY_HOSTNAME=`hostname`
export MY_FQDN="redmine.$MY_HOSTNAME.local"

# redmine用のバーチャルホストを追加する。
# sites-availableに設定を入れて、sites-enableに有効にする設定へのシンボリックリンクを張る
sudo tee /etc/apache2/sites-available/$MY_FQDN.conf  <<_EOF_ > /dev/null
   <VirtualHost *:80>
      ServerName $MY_FQDN
      DocumentRoot $REDMINE_INSTALL_TO/public/
      <Directory $REDMINE_INSTALL_TO/public/>
         AllowOverride all
         Options -MultiViews
         Require all granted
      </Directory>
   </VirtualHost>
_EOF_

sudo ln -s /etc/apache2/sites-available/$MY_FQDN.conf /etc/apache2/sites-enabled/$MY_FQDN.conf

sudo chown www-data:www-data -R $REDMINE_INSTALL_TO

# Apache再起動
sudo service apache2 restart
echo "下記のURLにブラウザでアクセスする"
echo "http://$MY_FQDN/"

上記スクリプト中でecho出力したURLにアクセスしてください。ローカル環境でセットアップしていた場合には、バーチャルホストにアクセスする為に、hostsファイルを書き換えてから。windowsの場合には、C:\Windows\System32\drivers\etc\hostsですね。

Redmineの初期ユーザーとパスワードはadmin/adminです。

gitのリポジトリを作成する

リモートからgitサーバーにコミットする事を前提としているので、gitユーザーとgitグループを作っておきます。(groupの方は、ユーザー作成時に一緒に作られる)

sudo adduser git
# ユーザー `git' を追加しています...
# 新しいグループ `git' (1001) を追加しています...
# 新しいユーザー `git' (1001) をグループ `git' に追加しています...
# ホームディレクトリ `/home/git' を作成しています...
# `/etc/skel' からファイルをコピーしています...
# 新しい UNIX パスワードを入力してください:
# 新しい UNIX パスワードを再入力してください:
# passwd: password updated successfully
# Changing the user information for git
# Enter the new value, or press ENTER for the default
#         Full Name []:
#         Room Number []:
#         Work Phone []:
#         Home Phone []:
#         Other []:
# 以上で正しいですか? [Y/n]

# gitユーザーになる
sudo su - git

# リポジトリ作成
mkdir -p repo/chef
cd repo/chef/
git --bare init

Redmineにchefプロジェクトを作ってgitリポジトリと関連付ける

chefリポジトリにしたのは、単純に私がそうしたかっただけです。以降は図解で説明します。

redmine3.010

管理から、プロジェクトを選択する。

redmine3.011

プロジェクトが1つもない状態なので、新しいプロジェクトを選択します。

redmine3.012プロジェクト名や識別子には好きな内容を入れて、作成を押してください。

redmine3.013

プロジェクトが作成出来たら、上記のような画面になります。赤色を付け忘れていますが、上記画面(設定>リポジトリタブ)の下にある、『新しいリポジトリ』をクリックしてください。

redmine3.014

新しいリポジトリの中身は上記のように指定します。リポジトリのパスは、先ほどgitユーザーで作成したリポジトリのパスです。

redmine3.015

作成出来たらこんな感じになります。

軽くgitのコミットテストをしておく

ローカルからですが、簡単にファイルを作成してコミットテストしておきます。

# gitユーザーのまま実行しています。
cd ~/
mkdir test
cd test

# 空のリポジトリの中身をcloneする
git clone file:///home/git/repo/chef/
cd chef/

# 適当なテストファイルを作成してコミットする。
echo "test" > test
git commit -a -m 'test' origin master

# サーバ側(と言ってもローカルだけど)に反映する
git push origin master

# 追記のテスト
echo "testddd" >> test
git commit -a -m 'test 日本語'
git push

テストしてコミットした後は、下記のような感じになりました。

redmine3.016

Redmineへの追加設定が必要であれば、マニュアル参考に追加設定してください。

最後に

今までは、nginxとredmineの連携ばかりやっていたのですが、今回は、『準本番サーバを作ろう!!』と言う目的でOSのインストールから新規に始めたので、Apacheを使っています。その心は、外部公開していないサーバ上に、Redmineとリポジトリを作り、そのウェブサーバ上に更にログ分析用のソフトウェアを載せる必要があった事から、汎用性の高いApacheを利用しています。

タグ付けされた , . ブックマークする へのパーマリンク.

コメントを残す

メールアドレスが公開されることはありません。