アクセスありがとうございます!次は「とあるエンジニアのエソラゴト」で検索して頂けると嬉しいです!

【実例付き】EC2にRedmineをインストールする手順

どうも、当ブログ(とあるエンジニアのエソラゴト)を運営している、エンジニアのエソラ(@ya6madev)です。

普段はSIer企業でDXとかAI開発をしながら、自社サービスの開発をしています。

EC2にRedmineをインストールしました!せっかくの機会なんで、作業メモをここに残します。

今回は、AWSのEC2にRedmineをインストールしていきますが、別にEC2でなくても手順は同じです。

前提条件

今回、インストールしていくソフトウェアのバージョンは以下の通りです。

ソフトウェアバージョン
httpd2.4.46
MySQLVer 14.14 Distrib 5.6.50
Ruby2.5.0
Ruby on Rails6.1.0
passenger6.0.7
Redmine4.0.1
ソフトウェアとそのバージョン

EC2のOSはAmazon Linux 2 AMI (HVM), SSD Volume Typeです。

モジュールのインストール

まず最初にrootユーザーに切り替えます。

$ sudo -s

色々とインストールしていきます。

$ yum -y update
$ yum -y install selinux-policy-targeted policycoreutils-python
$ yum -y install gcc kernel-devel kernel-headers gcc-c++ glibc-headers openssl-devel
$ yum -y install git
$ yum -y install readline-devel libxml2 libxslt libxml2-devel libxslt-devel
$ yum -y install curl-devel
$ yum -y install ImageMagick ImageMagick-devel

SELINUX=disabledにします。

$ vim /etc/sysconfig/selinux

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

httpdをインストール

以下のコマンドでhttpdをインストールします。

$ yum install -y httpd httpd-tools httpd-devel httpd-manual

以下のコマンドで、httpdが正常にインストール出来ているか確認します。

$ httpd -v

Server version: Apache/2.4.46 ()
Server built:   Aug 24 2020 18:54:20

次に所有者を変更して、自動起動を有効にします。

$ chown -R apache. /var/log/httpd/
$ chkconfig httpd on

情報:'systemctl enable httpd.service'へ転送しています。
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

MySQLのインストール

以下のコマンドでMySQLをインストールします。

$ rpm -ihv http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
$ yum -y install mysql-server mysql-devel

MySQLが正常にインストール出来ているか確認します。

$ mysql --version

mysql  Ver 14.14 Distrib 5.6.50, for Linux (x86_64) using  EditLine wrapper

MySQLの起動

MySQLの起動コマンドを実行します。

MySQLが起動するまでは、少し時間がかかるので焦らずに待つ。

$ chkconfig mysqld on
$ service mysqld start

Starting mysqld (via systemctl):                           [  OK  ]

MySQLの設定

では次に、初期セットアップを行います。

$ /usr/bin/mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MySQL to secure it, we'll need the current
password for the root user.  If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

Set root password? [Y/n] y
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] n
 ... skipping.

By default, MySQL comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
ERROR 1008 (HY000) at line 1: Can't drop database 'test'; database doesn't exist
 ... Failed!  Not critical, keep moving...
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

All done!  If you've completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!


Cleaning up...

データベースの作成

Redmineで使うためのDBを作成します。

$ mysql -uroot -p

mysql> create database redmine default character set utf8;
Query OK, 1 row affected (0.00 sec)

DBが出来ているかを確認します。

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| redmine            |
+--------------------+
4 rows in set (0.00 sec)

GRANT権限を持つユーザを作ります。これで特定のデータベースだけにアクセス出来るユーザーが出来ます。

mysql> GRANT ALL PRIVILEGES ON `redmine`.* TO 'redmine'@'localhost' identified by 'redmine';
Query OK, 0 rows affected (0.00 sec)

mysql> exit;
Bye

Rubyをインストール

rbenvをインストール

Rubyのバージョンを複数管理出来るように、rbenvをインストールします。

インストールが終わったら、reboot(再起動)をします。

$ git clone https://github.com/sstephenson/rbenv.git /usr/local/src/.rbenv/
$ echo 'export RBENV_ROOT="/usr/local/src/.rbenv"' >> /etc/profile.d/rbenv.sh
$ echo 'export PATH="${RBENV_ROOT}/bin:${PATH}"' >> /etc/profile.d/rbenv.sh
$ echo 'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh

$ cat /etc/profile.d/rbenv.sh
export RBENV_ROOT="/usr/local/src/.rbenv"
export PATH="${RBENV_ROOT}/bin:${PATH}"
eval "$(rbenv init -)"

$ reboot

reboot(再起動)をすると、EC2からログアウトされるので、再度rootユーザーでログインし直します。

$ env | grep RBENV
RBENV_ROOT=/usr/local/src/.rbenv
RBENV_SHELL=bash

$ rbenv --version
rbenv 1.1.2-40-g62d7798

$ git clone https://github.com/sstephenson/ruby-build.git /usr/local/src/.rbenv/plugins/ruby-build

Rubyのインストール

rbenvを経由して、Rubyをインストールします。

$ rbenv install -v 2.5.0

$ rbenv rehash

$ rbenv global 2.5.0

$ ruby -v
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]

Railsをインストール

以下のコマンドでRailsをインストールします。

$ gem update --system
$ gem install nokogiri -- --use-system-libraries
$ gem install bundler -N
$ gem install -N rails
$ rbenv rehash
$ rails -v
Rails 6.1.0

Passengerをインストール

ここで事前にRedmineをインストールするフォルダを作成します。

$ mkdir -p /opt/local/redmine/src

そして、Passengerをインストールしていきます。

インストールに少々時間がかかると思います。

$ gem install passenger -N
$ rbenv rehash
$ passenger-install-apache2-module
$ passenger-install-apache2-module --snippet > /etc/httpd/conf.d/passenger.conf

Passengerの設定

Passengerのインストールが完了したら、設定ファイルを以下のように修正します。

$ vim /etc/httpd/conf.d/passenger.conf
<Directory "/opt/local/redmine/src/redmine-4.0.1/public">
  Require all granted
</Directory>
LoadModule passenger_module /usr/local/src/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/passenger-6.0.7/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/src/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/passenger-6.0.7
  PassengerDefaultRuby /usr/local/src/.rbenv/versions/2.5.0/bin/ruby
</IfModule>

Redmineのインストール

さて、いよいよRedmineのインストールに進みます。あと少しです!

まずはRedmine本体をダウンロードしてきます。

$ cd /opt/local/redmine/src
$ wget http://www.redmine.org/releases/redmine-4.0.1.tar.gz
$ tar zxf redmine-4.0.1.tar.gz

次にDBの設定ファイルである「database.yml」を修正します。

$ cd redmine-4.0.1/
$ cp config/database.yml.example config/database.yml

$ vim config/database.yml

# Default setup is given for MySQL with ruby1.9.
# Examples for PostgreSQL, SQLite3 and SQL Server can be found at the end.
# Line indentation must be 2 spaces (no tabs).

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine # <= ここを変更する
  password: redmine # <= ここを変更する
  encoding: utf8

そして、bundleをインストールしていきます。

$ mkdir -p app/assets/config
$ touch app/assets/config/manifest.js
$ vim app/assets/config/manifest.js
  //= link_tree ../images
  //= link_directory ../javascripts .js
  //= link_directory ../stylesheets .css

$ bundle install --without development test
$ 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

httpdの設定更新

Redmineのインストールが終わったら、httpdの設定を更新します。

$ vim /etc/httpd/conf/httpd.conf
DocumentRoot "/opt/local/redmine/src/redmine-4.0.1/public"

$ cd /opt/local/redmine/src/
$ chown -R apache. redmine-4.0.1
$ service httpd restart
Redirecting to /bin/systemctl restart httpd.service

$ service httpd status
Redirecting to /bin/systemctl status httpd.service
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since 火 2020-12-22 10:32:35 UTC; 16s ago
     Docs: man:httpd.service(8)
 Main PID: 13971 (httpd)
   Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes served/sec:   0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─13971 /usr/sbin/httpd -DFOREGROUND
           ├─13974 /usr/sbin/httpd -DFOREGROUND
           ├─13975 /usr/sbin/httpd -DFOREGROUND
           ├─13976 /usr/sbin/httpd -DFOREGROUND
           ├─13977 /usr/sbin/httpd -DFOREGROUND
           └─13978 /usr/sbin/httpd -DFOREGROUND

12月 22 10:32:35 ip-10-0-1-10.ap-northeast-1.compute.internal systemd[1]: Starting The Apache HTTP Server...
12月 22 10:32:35 ip-10-0-1-10.ap-northeast-1.compute.internal systemd[1]: Started The Apache HTTP Server.

Redmineの起動

ここまでの作業が完了したら、「http://インスタンスのパブリックIP」をブラウザに入力して、Enterボタンを押下して下さい!

Redmineのホーム画面が出てくれば、インストールは成功しています。

お疲れさまでした!

ここまでお読み頂き、ありがとうございました。

もし、「面白かった」、「参考になった」という方がいましたら、以下のソーシャルボタンからシェア頂けると泣いて喜びます!!

エソラ
エソラ
またブログランキングにも参加しています。
よろしければ、ポチッとお願いしまーす!

それでは、良いエンジニアライフをお過ごし下さい!

スキマ時間で効率的に読書をしたいなら、聴く読書「Audible」が最強!

読者
技術の勉強もしないと、どんどんと周りに置いてかれてしまう…
ビジネス書も読まないと、良いサービスが作れない…
自己啓発書も読んでおかないと、出世ができない…でも、そんな時間が自分にはない!
そんな悩みを抱えているのであれば、Audibleが解決策になるかも知れません!
\今なら30日間無料体験!聴く読書で効率的に勉強して、スキルアップしたいなら!/

聴く読書「Audible」がヤバイ!!

AudibleはAmazonが提供している「オーディオブック・サービス」です。
読者
つまり書籍の内容をナレーターが読んでくれるってこと?
そういうことです!
ということで、通勤をしながら、家事育児をしながら読書ができるので、
忙しい人にぴったりです!
書籍のラインナップも豊富で、どんどん新しい書籍が追加されていっているよ!
\今なら30日間無料体験!聴く読書で効率的に勉強して、スキルアップしたいなら!/

Audibleのメリット

読者
良さそうだと思うけど、聴く読書って本当に効果あるの?
聴くだけで本当に頭に入るの?
例えば、音楽を何気なく聴いていると、自然と歌詞が頭に入っているという経験はない?
読者
あるね〜
好きな音楽をヘビロテで聴いていると、自然と歌えるようになっているね!
そうそう!
そんな感じで何度も聴いていれば自然と頭に入っていくよ!
メリットをまとめていくと以下のような感じだね!
読者
なるほど〜!
忙しくても手軽に読書ができて、
記憶にも残りやすく、
当たり前だけど、目を使わないので目にも優しいんだね!
\今なら30日間無料体験!聴く読書で効率的に勉強して、スキルアップしたいなら!/

今なら30日間、無料体験!

読者
試してみたいと思ったけど、本当に自分に必要なサービスなのか分からないな〜
じゃあ、30日間なら無料で体験ができるから、
無料体験期間で使いまくって、合わなければ辞めたら?
無料期間内にサービスを停止したら、お金はかからないよ!
読者
なるほど〜
じゃあ、気軽に始めてみるか!
無料期間内に辞めても、一冊は無料でプレゼントされるから、
一冊もらう目的で登録しても良いと思うよ!
読者
神やん!
さっそく登録してみるよ〜
\今なら30日間無料体験!聴く読書で効率的に勉強して、スキルアップしたいなら!/
最新情報をチェックしよう!