目次
Redmine構築メモ
どうも、合同会社Celalinkの代表をやっているヤナイ( @yusuke_celalink )です。
前回はConohaでRedmineを爆速で構築する記事を書きましたが、今回はサーバーの初期状態からインストールする手順について書いていこうと思います。
※Conohaでアカウントをすでに取得していることを前提に書いていきます。
前回同様、今回も俺の中のLittleヤナイに構築してもらうという程で茶番にお付き合いいただきながら書いていきます。
参考
まず最初に、非常に参考にさせていただいたサイトを紹介させていただきます。
めちゃくちゃ助かりました!!
いざ、Redmine構築!
俺「くそ、せっかくRedmine作ってやったのにあの社長ときたら・・・・」
俺「実はインフラ全然わかんないんだよなぁ、、、、まぁやるしかない!」
(さっそくConohaポチッ)
俺「よし、まずはサーバーを作ってと。」
俺「よし、ここからIPアドレスを確認してSSHで接続すればオッケーだな」
# ssh root@ConohaのIPアドレス
俺「とりあえずyumのアップデートをして、、、、」
# yum update
俺「よし、これでスタート位置に立った感じかな」
※ここからはrootを使ったことを想定して書いていきます。他のユーザーの場合はsudoつければいけるはず
MySQLインストール
MariaDBを削除
俺「ふむふむ、デフォルトでMariaDBがインストールされているけど競合する可能性があるのか。まずは消してみよう」
# yum remove mariadb-libs
# rm -rf /var/lib/mysql/
リポジトリの取得
俺「なるほど、リポジトリを追加すれば良いのか」
// yum リポジトリの追加
# yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
// 追加されたことを確認する
# yum info mysql-community-server
インストール
俺「よし、インストールだ!!」
# yum -y install mysql-community-server
サービスの開始と自動起動
俺「これでMySQLの開始と自動起動ができるのか、なるほど」
# systemctl start mysqld.service
# systemctl enable mysqld.service
初期設定
俺「ふむ、初期設定が必要なのか」
俺「まずはRootパスワードの確認をして、、、」
# cat /var/log/mysqld.log | grep "localhost"
[Note] A temporary password is generated for root@localhost: FeiAL.oQU4pE
赤字部分が初期パスワードとして設定されている
俺「設定のコマンドを叩くと・・・」
# mysql_secure_installation
「Enter password for user root:」が表示されたら初期パスワードを入力
画面の指示にそって設定していく
Change the password for root ? ((Press y|Y for Yes, any other key for No) : ←rootのパスワードを変更しないので「No」を入力
-- 略 --
Remove anonymous users? [Y/n] ←匿名ユーザーを削除するので「Y」を選択
Success. ←これが表示されれば成功!※以降すべてのcommandの結果はこれで確認する。
-- 略 --
Disallow root login remotely? [Y/n]←リモートからrootをログインさせないため「Y」を選択
-- 略 --
Remove test database and access to it? [Y/n]←テスト用データベースを削除するため「Y」を選択
-- 略 --
Reload privilege tables now? [Y/n] ←権限テーブルの再読み込みを行うため「Y」を選択
-- 略 --
All done! ←これがでたら設定完了
接続確認
# mysql -u root -p
接続できればOK
『exit;』を入力して画面を抜ける
俺「ふぅ、、、、とりあえずMySQLはこれで(๑˃̵ᴗ˂̵)و ヨシ!」
Rubyのインストール
俺「次にredmineを動かすためにRubyをインストールするのか」
※こちらの記事を参考にRubyをインストールしました。
Redmineに必要なバージョンはRuby2.6の最新版を選択すればOKです。
記事の最後にあるbundlerも必要になるのでインストールを忘れずに!
俺「よし、これでRubyのインストールも完了だ!」
svn インストール
俺「ふぅ、、、、結構やること多いな、、、、、SVNもインストールしなきゃいけないのか」
SVNがインストールされているか確認する
- インストールの確認
# yum list installed | grep subversion
- インストールされていなければインストールする
# yum install subversion
- バージョン確認
# svn --version
俺「よーし、これでRedmineインストールの準備ができたぞー!」
redmineのインストール
俺「よし、公式ドキュメントを・・・・」
俺「英語/(^o^)\ナンテコッタイ」(グーグル翻訳ぽちー)
※ここからは必ずしも公式ドキュメントと同じ手順じゃありません。インストールするパスとかは自由に決めて適宜読み替えてください
インストール場所の作成
# mkdir /var/lib/redmine
# cd /var/lib/redmine
ダウンロード
# svn co https://svn.redmine.org/redmine/branches/4.1-stable redmine-4.1
(R)eject or accept (t)emporarily? ←「t」を選択(証明書を一時的に許可)
ダウンロードできたか確認
# ls
redmine-4.1
MySQLにredmineのテーブルを準備
MySQLにログインをしてデータベースとユーザーを作成する。
CREATE DATABASE redmine CHARACTER SET utf8mb4;
CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'my_password';
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
設定ファイルの作成
作業ディレクトリの変更
# cd redmine-4.1
サンプルファイルをコピーして設定ファイルを作成する
# cp config/database.yml.example config/database.yml
設定ファイルの編集
# vi config/database.yml
production:
adapter: mysql2
database: redmine
host: localhost
username: redmine
password: "my_password"
usernameとpasswordを変更すればおk
セッションストアシークレットの生成
railsがセッションデータを格納するCookieをエンコードするために使用するランダムキーを生成し、改ざんを防止します。
# yum install mysql-devel
# bundle install
# bundle exec rake generate_secret_token
初期設定
# RAILS_ENV=production bundle exec rake db:migrate
DBにデフォルトデータを登録する
# RAILS_ENV=production bundle exec rake redmine:load_default_data
// 言語の選択 「ja」を入力する
Select language: ar, az, bg, bs, ca, cs, da, de, el, en, en-GB, es, es-PA, et, eu, fa, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sq, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en]
ポート開放
# firewall-cmd --add-port=3000/tcp --zone=public
サーバー起動
# bundle exec rails server webrick -e production
※Ctrl + cで停止
※ポートは後で閉じるのでこのまま進んでおkです。
「http://ipアップデート:3000」で画面が開けばOK!
俺「いやー、長かった!!とりあえず起動できた!」
Unicornのインストール
俺「なるほど、webrickで起動はあまりよろしくないのか。ふむふむ、Unicorn、、、なんかかっけぇ」
俺「JavaでいうところのTomcatみたいなアプリケーションサーバーって感じかな。多分」
俺「さっそく入れてみるか」
インストール
# vim Gemfile // gem “unicorn”を追加
# bundle update
動作確認
# bundle exec unicorn_rails -l 3000 -E production
※Ctrl + cで停止
※ここでもう一度画面が開くことを確認!
ポート閉じる
# firewall-cmd --reload
Service登録用のファイルを作成
# vi config/unicorn.rb
※コピペしてOKですがパスだけ適宜置き換えてください
# -*- coding: utf-8 -*-
# Unicorn設定ファイル
worker_processes 2
listen "/var/lib/redmine/redmine-4.1/tmp/sockets/redmine.sock", :backlog => 32
timeout 30
pid "/var/lib/redmine/redmine-4.1/tmp/pids/redmine.pid"
stderr_path '/var/lib/redmine/redmine-4.1/log/unicorn.stderr.log'
stdout_path '/var/lib/redmine/redmine-4.1/log/unicorn.stdout.log'
preload_app true
check_client_connection false
before_fork do |server, worker|
# Railsでpreload_appをtrueにしているときは強く推奨
defined?(ActiveRecord::Base) and
ActiveRecord::Base.connection.disconnect!
end
after_fork do |server, worker|
# Railsでpreload_appをtrueにしているときは必須
defined?(ActiveRecord::Base) and
ActiveRecord::Base.establish_connection
begin
uid, gid = Process.euid, Process.egid
# user, group = "redmine", "redmine"
# ENV["HOME"] = "/home/redmine"
target_uid = Etc.getpwnam(user).uid
target_gid = Etc.getgrnam(group).gid
worker.tmp.chown(target_uid, target_gid)
if uid != target_uid or gid != target.gid
Process.initgroups(user, target_gid)
Process::GID.change_privilege(target_gid)
Process::UID.change_privilege(target_uid)
end
rescue
if RAILS_ENV = "development"
STDERR.puts "could not change user, oh well"
else
STDERR.puts "could not change user, oh well"
raise e
end
end
end
サービス起動用ファイル作成
# vi /usr/lib/systemd/system/redmine.service
※こちらもパスにご注意ください
[Unit]
Description=Redmine Unicorn Server
[Service]
WorkingDirectory=/var/lib/redmine/redmine-4.1/
Environment=RAILS_ENV=production
SyslogIdentifier=redmine
PIDFile=/var/lib/redmine/redmine-4.1/tmp/pids/unicorn.pid
# /usr/localのrbenvにパスを通す
ExecStart=/usr/local/rbenv/shims/bundle exec "unicorn_rails -c /var/lib/redmine/redmine-4.1/config/unicorn.rb -E production"
ExecStop=/usr/bin/kill -QUIT $MAINPID
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
// 起動確認
# systemctl start redmine
// 動作確認
# systemctl status redmine
// activeになっていることを確認
● redmine.service - Redmine Unicorn Server
Loaded: loaded (/usr/lib/systemd/system/redmine.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2020-06-16 10:31:16 JST; 11s ago
Main PID: 3700 (ruby)
CGroup: /system.slice/redmine.service
├─3700 unicorn_rails master -c /var/lib/redmine/redmine-4.1/config/unicorn.rb -E production
├─3733 unicorn_rails worker[0] -c /var/lib/redmine/redmine-4.1/config/unicorn.rb -E production
└─3734 unicorn_rails worker[1] -c /var/lib/redmine/redmine-4.1/config/unicorn.rb -E production
Jun 16 10:31:16 118-27-39-108 systemd[1]: Started Redmine Unicorn Server.
// 自動起動の設定
# systemctl enable redmine
俺「よーし、これでUnicornのインストールも完了だ!今ならデストロイモードが使えそうだぜ!」(※ガンダムユニコーンで検索)
NginXインストール
俺「最後にWebサーバーを入れれば完璧かな」
// リポジトリの追加と設定
# yum install -y yum-utils
# vi /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
- インストール
// インストール
# yum install -y nginx
// NginXの設定
# vi /etc/nginx/conf.d/redmine.conf
※こちらもパスにご注意してコピペしてください
※server_name はConohaのIPアドレスを設定してください。ドメインがある方はドメイン名でも大丈夫です。
upstream unicorn-redmine {
server unix:/var/lib/redmine/redmine-4.1/tmp/sockets/redmine.sock;
}
server {
listen 80;
server_name 118.27.39.108;
root /opt/redmine/public;
client_max_body_size 1G;
location / {
try_files $uri/index.html $uri.html $uri @app;
}
location /redmine/ {
try_files $uri/index.html $uri.html $uri @app;
}
location @app {
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_connect_timeout 60;
proxy_read_timeout 60;
proxy_send_timeout 600;
proxy_pass http://unicorn-redmine;
}
error_page 500 502 503 504 /500.html;
}
NginX起動
// 起動
# service nginx start
// 確認
# service nginx status
// Activeになっていることを確認
Redirecting to /bin/systemctl status nginx.service
● nginx.service - nginx - high performance web server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2020-06-16 10:49:19 JST; 31s ago
Docs: http://nginx.org/en/docs/
Process: 4077 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
Main PID: 4078 (nginx)
CGroup: /system.slice/nginx.service
├─4078 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
└─4079 nginx: worker process
Jun 16 10:49:19 118-27-39-108 systemd[1]: Starting nginx - high performance web server...
Jun 16 10:49:19 118-27-39-108 systemd[1]: Started nginx - high performance web server.
NginX自動起動
# systemctl enable status
ポート開放
// http
# firewall-cmd --zone=public --add-service=http --permanent
// https
# firewall-cmd --zone=public --add-service=https --permanent
// 再読み込み
# firewall-cmd --reload
俺「やっと終わったー!!!」
良いRedmineライフを!!
俺「社長、サーバーの立ち上げからRedmineインストールしてやりましたよ」
社長「えっ、すごくない?やばっ、、、、」
俺「まぁ俺がちょちょいと本気出せば余裕っすよ(画面みせながら)」
社長「おぉ、本当だ!すごい!」
社長「あっ、でも、、、、」
俺「え?」
社長「なんか便利なプラグイン探して入れといてよ(にっこり)」
俺「はぁぁぁぁぁぁ!!自分で入れろや!!!」
社長「ひぇ、、、、だってできないもん、、、、、」
俺「・・・・はぁ(くそデカため息」
そんな感じで次はカスタマイズの沼にハマっていくのであった。
最後に
非常に長くなりましたが無事にインストールできたでしょうか?
正直はまりまくって何回もサーバー消して作ってを繰り返してようやくできました。
これからRedmineを構築する人は是非!
ちなみに最初CentOS8でやってみたんですけど、どうしても解決できずにCentOS7を使いました。
時間がある時にもう一度CentOS8も再挑戦したいと思います。
コメント