ubuntu13.10+redmine2.4+unicorn+nginxの環境構築


解説無で備忘録としてコマンドのみ記載します。ubuntu13.10上にredmine2.4をインストールします。サーバはunicorn+nginxです。Ubuntu13.10はserver版をSSHのみ有効にして新規インストールした物をベースにしています。ローカルLAN内での利用のみを想定しているため、セキュリティは考慮していません。

2014/6/28追記 ubuntu14.04上にredmine2.5+nginx+unicorn環境をセットアップを別途書きました。そちらをご参照ください。

初期設定

実行しなくても良いです。何時も管理人が実行しているお決まりの設定で、IPv6の無効化やSSHでDNSの逆引きを行わない設定、マウントオプションの微修正等です。

 

# sudoでは実行できないコマンドも幾つかある為、基本的にはrootで実行します。
su -
apt-get update
apt-get upgrade
apt-get remove tcpdump telnet w3m ntfs-3g nano memtest86+
apt-get install sysv-rc-conf postfix

echo "UseDNS no" >> /etc/ssh/sshd_config

# fstabのマウントオプションにrelatimeを付与(飛ばしてもOK)。
vi /etc/fstab
-----------------------------------------
UUID=1e17df30-54d5-4f0b-84b2-eefa6b509fba /               ext4,relatime    errors=remount-ro 0       1
-----------------------------------------

# 再起動
reboot

必要パッケージのインストール

ここからは共通で必要。必要なパッケージを纏めて導入します。

apt-get install ruby2.0 ruby2.0-dev build-essential libssl-dev
  zlib1g-dev ruby-switch subversion git
apt-get install rails3
apt-get install nginx unicorn
apt-get install mysql-server mysql-client libmysqlclient-dev
apt-get install imagemagick libmagickcore-dev libmagickwand-dev ruby-rmagick

MySQL5.5の設定

設定ミスによる文字化けは面倒なので予めデフォルトでUTF-8にしておく。

vi /etc/mysql/my.cnf

下記を追記する。

[client]
default-character-set=utf8

[mysqld]
character-set-server=utf8
service mysql restart

mysql -uroot -p
create database redmine character set utf8;
grant all on redmine.* to redmine@localhost identified by 'yourpassword';
flush privileges;
quit;

MySQL5.5のDBの格納先変更(読み飛ばしてOK)

MySQLのDBファイルの格納先を他の場所に移したい場合のみ実施。例えば/varには5Gしか領域を割り当てていないとか、他の場所にマウントされているパーティションにDBデータを格納したい場合に追加で設定します。redmineの動作には影響を及ぼしません。

service mysql stop
mv /var/lib/mysql /db

vi /etc/mysql/my.cnf
[mysqld]
#datadir                = /var/lib/mysql
datadir         = /db
apparmorのmysqldがアクセス可能なディレクトリの設定を修正します。
vi /etc/apparmor.d/usr.sbin.mysqld
[mysqld]
#  /var/lib/mysql/ r,
#  /var/lib/mysql/** rwk,
  /video/mysql/ r,
  /video/mysql/** rwk,

redmine2.4のインストール

mkdir /var/www/
cd /var/www/
svn checkout http://svn.redmine.org/redmine/branches/2.4-stable redmine
cd redmine

vi Gemfile

Gemfileを編集

# gem 'unicorn'をgem "rails"の下あたりに追記
gem 'unicorn'
mv config/database.yml.example config/database.yml
vi config/database.yml

config/database.ymlにMySQLへの接続設定を記載。productionのみで良い。

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: "yourpassword"
  encoding: utf8
bundle install
rake generate_secret_token

RAILS_ENV=production rake db:migrate

# 基本データの投入。途中の質問はjaを選択。
RAILS_ENV=production rake redmine:load_default_data

# 既にディレクトリが存在していればディレクトリ作成は飛ばしてOK。
mkdir tmp
mkdir public/plugin_assets

sudo chown -R www-data:www-data files log tmp public/plugin_assets
sudo chmod -R 755 files log tmp public/plugin_assets

touch log/unicorn.stdout.log
touch log/unicorn.stderr.log
chown www-data:www-data log/unicorn.*

vi /etc/default/unicorn
# Change paramentres below to appropriate values and set CONFIGURED to yes.
CONFIGURED=yes

# Default timeout until child process is killed during server upgrade,
# it has *no* relation to option "timeout" in server's config.rb.
TIMEOUT=60

# Path to your web application, sh'ld be also set in server's config.rb,
# option "working_directory". Rack's config.ru is located here.
APP_ROOT=/var/www/redmine

# Server's config.rb, it's not a rack's config.ru
CONFIG_RB="$APP_ROOT/config/unicorn.rb"

# Where to store PID, sh'ld be also set in server's config.rb, option "pid".
PID=/run/unicorn.pid

# Additional arguments passed to unicorn, see man (1) unicorn.
UNICORN_OPTS="-D -E production -c $CONFIG_RB"

HOME=/var/www/redmine;
vi ./config/unicorn.rb
worker_processes 2
working_directory("/var/www/redmine")

listen File.expand_path("tmp/unicorn.sock", ENV['RAILS_ROOT'])
pid File.expand_path("tmp/unicorn.pid", ENV['RAILS_ROOT'])

preload_app true

stdout_path "/var/www/redmine/log/unicorn.stdout.log"
stderr_path "/var/www/redmine/log/unicorn.stderr.log"

GC.respond_to?(:copy_on_write_friendly=) and GC.copy_on_write_friendly = true

before_fork do |server, worker|
defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect!
old_pid = "#{server.config[:pid]}.oldbin"
if old_pid != server.pid
begin
sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU
Process.kill(sig, File.read(old_pid).to_i)
rescue Errno::ENOENT, Errno::ESRCH
end
end
sleep 1
end

after_fork do |server, worker|
defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection
end
service unicorn start

# unicornの起動確認
netstat an | grep unicorn

# 下記のようにソケットが作られていたらOK。
# unix  2      [ ACC ]     STREAM     LISTENING     31464    /tmp/unicorn.sock

ngnixの設定

ここまででunicornが起動出来ている為、そのunicornで実行されているredmineに対してのリバースプロキシの設定を行います。

vi /etc/nginx/nginx.conf
# httpセクションの一番下に追記する。
http {
        upstream redmine {
                server unix:/tmp/unicorn.sock;
        }
}
vi /etc/nginx/sites-enabled/default
server {
        listen 80;
        root /var/www/redmine/public;
        index index.html index.htm;
        server_name redmine.senritu.net;

        access_log /var/log/nginx/redmine.access.log;
        error_log /var/log/nginx/redmine.error.log;

        proxy_connect_timeout 60;
        proxy_read_timeout 60;
        proxy_send_timeout 60;

        location / {
                root /var/www/redmine/public;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-Host $host;
                proxy_set_header X-Forwarded-Server $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                fastcgi_buffers 16 16K;
                fastcgi_buffer_size 32K;
                proxy_pass http://redmine/;
                proxy_redirect off;
        }
}

メール設定

既にメールサーバがローカルに存在する事とします。

cd /var/www/redmine/config/
mv configuration.yml.example configuration.yml
vi configuration.yml
# 下記のdefaultにemail_deloveryがあるので、そこの内容を修正する。

# default configuration options for all environments
default:
  # Outgoing emails configuration (see examples above)
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      enable_starttls_auto: false # ローカルのメールサーバを使うのでTLSをOFFにする
      address: localhost
      port: 25
      domain: redmine.senritu.net
#      authentication: :login
#      user_name: "redmine@example.net"
#      password: "redmine"

redmineにログインする

admin/adminでログイン可能。簡単に動作確認を済ませて、redmineが正常に動くことを確認しておく。

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 []:

mkdir -p /opt/git
chown git:git /opt/git
sudo git -

export PRJ_NAME=usblinux
mkdir $PRJ_NAME && cd $PRJ_NAME && git --bare init

cd ~/
mkdir $PRJ_NAME && cd $PRJ_NAME
git config --global user.email "you@example.com"
git config --global user.name "Your Name"

git init
date >> test.txt
git add .

# .git/configを編集してpushは常にmasterに行われるようにする。
vi .git/config

.git/configを下記のような感じに編集する


[core]
  repositoryformatversion = 0
  filemode = true
  bare = false
  logallrefupdates = true
[remote "origin"]
  url = file:///opt/git/projectname
  fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
  remote = origin
  merge = refs/heads/master

コミットテスト

git commit -m '初回コミット'
git push

redmineでのgitの設定は下記のように行う。

redmine

上記までで一通り設定が出来たので完了とする。

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

コメントを残す

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