0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS】EC2+RDSを使用したRedmine構築(エラー発生時の備忘録含む)

Posted at

はじめに

 今回は、AWSコンソール上にEC2とRDSを作成し、その上でRedmine手動構築(Linux + Apache + Passenger + Redmine)を行うハンズオンとなります。詰まった部分がありますので、備忘録として共有させていただきます。(見づらかったらすいません。。。)
※ちなみに、ChatGPT4oを使用しての構築作業となります。

構成概要

サービス 用途
EC2 Redmineアプリケーションサーバー(Webサーバ)
RDS(MySQL) Redmineのデータベース

前提条件

・EC2:Amazon Linux 2 または Ubuntu 20.04(ここでは Amazon Linux 2 で進行)

・RDS:MySQL 8.0

・Redmineバージョン:5.1系推奨

構築手順

1.EC2インスタンス作成(Amazon Linux 2)
2.RDS(MySQL)インスタンスの作成
3.EC2内にRedmineをインストール
4.Passenger + Apacheの設定
5.ブラウザで確認

1.EC2インスタンス作成(Amazon Linux 2)
・Amazon Linux 2 を選択

・インスタンスタイプ:t2.micro(無料枠)使用 ※t3.small以上推奨

・セキュリティグループで以下を許可
 TCP 22 (SSH)
 TCP 80 (HTTP)

2.RDS(MySQL)インスタンスの作成
RDS > 「データベース作成」

エンジン:MySQL

DBバージョン:8.0

DBインスタンス識別子:redmine-db

マスターユーザー:admin

パスワード:任意(控えておく)

パブリックアクセス不可

セキュリティグループにEC2のアクセスを許可

3.EC2内にRedmineをインストール
① 依存ライブラリのインストール

sudo yum install -y gcc gcc-c++ make zlib-devel curl-devel openssl-devel httpd-devel mariadb-devel git

② Ruby(rbenv + ruby-build)

git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init - bash)"' >> ~/.bash_profile
source ~/.bash_profile

git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
rbenv install 3.2.2
rbenv global 3.2.2

【備忘録】
rbenv install 3.2.2コマンド実行時エラー発生、
エラー内容:Ruby 3.2.2 を rbenv でインストールする際に 必要なネイティブライブラリが不足しているため に一部の拡張(fiddle, psych, readline)がビルドできず、最終的にビルド失敗していた模様
解決手順:以下のコマンドで必要な開発パッケージを追加インストール

sudo yum install -y gcc gcc-c++ make \
  openssl-devel readline-devel zlib-devel \
  libffi-devel libyaml-devel \
  bzip2 tar git

上記ののエラーで必要なのは以下のパッケージです。

拡張機能 解決するパッケージ
fiddle libffi-devel
psych libyaml-devel
readline readline-devel
③ Redmine本体のダウンロード
```cd /var/www
sudo git clone https://github.com/redmine/redmine.git -b 5.1-stable redmine
cd redmine

④ データベース設定

cp config/database.yml.example config/database.yml
vi config/database.yml

【編集内容】

production:
  adapter: mysql2
  database: redmine
  host: <RDSエンドポイント>
  username: admin
  password: <RDSパスワード>
  encoding: utf8mb4

【備忘録】
/var/www/redmine配下の実行権限がないため、redmineインストール後に権限付与

chmod 777 /var/www/redmine

⑤ Gem・Bundle設定

bundle config set --local without 'development test'
bundle install

【備忘録】
bundle installコマンド実行時、エラー発生
エラー内容:nokogiri のプリコンパイル済みバイナリ(gem)が、Amazon Linux 2 の GLIBC バージョンと互換性がないこと
※Amazon Linux 2 の glibc は通常 2.26 です。しかし nokogiri のバイナリは GLIBC_2.28 以上を必要としているそうです。
解決方法:

方法 内容 難易度 推奨度
✅ 方法① Nokogiri のバージョンを 1.15.7 に下げる ◎ 初心者にもおすすめ
方法② libxml2 をソースからビルドしてインストール 中〜高 ◯ 理解ある人向け
方法③ OSを Amazon Linux 2023 や Ubuntu に変更 ◯ 新規環境ならおすすめ

今回は、➀を採用しました。
方法①:Nokogiri のバージョンを下げる
・Gemfile を以下のように修正

gem 'nokogiri', '~> 1.15.7'

・そのあとの操作

bundle config --delete build.nokogiri
bundle install --redownload --force

※bundle show nokogiri の出力が -x86_64-linux-gnu でなければ成功です。

⑥ 初期化コマンド

RAILS_ENV=production 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

【備忘録】
RAILS_ENV=production bundle exec rake generate_secret_tokenコマンド実行時、エラー発生
エラー内容:

secret_token.rb ファイルを書き込もうとしたが、現在のユーザー(おそらく ec2-user)に書き込み権限がない
Errno::EACCES: Permission denied @ rb_sysopen - /var/www/redmine/config/initializers/secret_token.rb

解決方法:
➀Redmineディレクトリの所有者を ec2-user に変更

sudo chown -R ec2-user:ec2-user /var/www/redmine

➁再実行

cd /var/www/redmine
bundle exec rake generate_secret_token

【備忘録】
RAILS_ENV=production bundle exec rake db:migrateコマンド実行時エラー発生
エラー内容:Redmine が接続しようとしている MySQL データベース redmine がまだ存在していない

ActiveRecord::NoDatabaseError: Unknown database 'redmine'

解決方法:
➀MySQLクライアントをインストール

sudo yum install -y mariadb

➁RDSに接続

mysql -h <RDSのエンドポイント> -u admin -p

➂データベース作成

CREATE DATABASE redmine CHARACTER SET utf8mb4;
EXIT;

4.Passenger + Apacheの設定

sudo yum install -y httpd
gem install passenger
passenger-install-apache2-module

【備忘録】
passenger-install-apache2-moduleコマンド実行時エラー発生
エラー内容:C++ コンパイラ(g++)がコンパイル中にメモリ不足で強制終了された

c++: internal compiler error: Killed (program cc1plus)

※ EC2 t2.micro や t3.micro のような 低メモリインスタンス(1GB RAM) ではよくある問題らしいです。
解決方法:スワップ領域を追加する。
➀スワップファイルを作成(1GB〜2GB 推奨)

sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

➁再実行

passenger-install-apache2-module

【httpd.conf に追加】
LoadModule passenger_module /home/ec2-user/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/passenger-6.0.17/buildout/apache2/mod_passenger.so

PassengerRoot /home/ec2-user/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/passenger-6.0.17
PassengerDefaultRuby /home/ec2-user/.rbenv/versions/3.2.2/bin/ruby


ServerName redmine.local
DocumentRoot /var/www/redmine/public

Require all granted
Options -MultiViews

【Apache再起動】
```sudo systemctl start httpd
sudo systemctl enable httpd

5.ブラウザで確認
・http:// にアクセス

・ログイン:admin / admin

・初回ログイン時にパスワード変更画面が表示されます

おわりに

予期せぬエラーが発生して、何度もやり直しして、心が折れそうになりましたが、ChatGPTを活用して構築を進めていくと、エラーが発生した時の解決までの理解が深まりました。
この備忘録をもとにきれいな構築手順を次回は画像付きで作成させていただきます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?