Redmine + AWS(EC2)
AWS(EC2)の無料枠で、Redmineが動かす手順を残します。
できるだけ最新のアプリケーションで動かしたいので、bitnamiやAMIを使ったRedmineを利用するのではなく、1からインストールします。
(Redmine5.0.3にしたかったのですが、実用性を考えるとまだ4.2.8でしょうか。
Software | Version |
---|---|
httpd | 2.4.57 |
MySQL | 8.0.34 |
Ruby | 3.1.4 |
Ruby on Rails | 7.0.6 |
passenger | 6.0.18 |
Redmine | 5.0.5 |
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
/etc/sysconfig/selinuxはデフォルトでSELINUX=disabledになってるけど一応確認します。
下記のDisabledが表示されたら大丈夫です。
# getenforce
Disabled
もし、Disabledになっていなければ、下記に変更します。
# vim /etc/sysconfig/selinux
SELINUX=disabled
httpdをインストールします。
# yum install -y httpd httpd-tools httpd-devel httpd-manual
httpdが正常にインストールできているか確認します。
# httpd -v
所有者の変更と自動起動を設定しておきます。
# chown -R apache. /var/log/httpd/
# chkconfig httpd on
MySQLのインストール前に、作成初期からインストールされているMariaDB用パッケージを削除します。
# yum remove mariadb-*
上記の処理を行います。よろしいでしょうか? [y/N]y
Is this ok [y/d/N]: y
最新のMySQLをインストールします。
# rpm -ihv https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
# yum install --enablerepo=mysql80-community mysql-community-server
上記の処理を行います。よろしいでしょうか? [y/N]y
上記の処理を行います。よろしいでしょうか? [y/N]y
MySQLに関係のあるパッケージを出力確認します。
# yum list installed | grep mysql
ログファイルを作ります。
# touch /var/log/mysqld.log
MySQLの自動起動をオンにします。
次にmysqldを起動して状況確認します。
# chkconfig mysqld on
情報:'systemctl enable mysqld.service'へ転送しています。
# systemctl start mysqld
# systemctl status mysqld.service
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since 火 2022-11-22 02:52:03 UTC; 1s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 24493 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 24570 (mysqld)
Status: "Server is operational"
CGroup: /system.slice/mysqld.service
└─24570 /usr/sbin/mysqld
11月 22 02:51:55 ip-172-31-33-200.ap-northeast-1.compute.internal systemd[1]: Starting ...
11月 22 02:52:03 ip-172-31-33-200.ap-northeast-1.compute.internal systemd[1]: Started M...
Hint: Some lines were ellipsized, use -l to show in full.
rootパスワードを調べておきましょう。(後ろの gRn%Tzk#U2k2 がパスワードになります)
# less /var/log/mysqld.log
2022-11-22T02:51:58.928762Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: gRn%Tzk#U2k2
q で離脱
パッケージをインストールします。
# yum -y install mysql-server mysql-devel
MySQLが正常にインストールできているかバージョンチェックします。
# mysql --version
mysql Ver 8.0.34 for Linux on x86_64 (MySQL Community Server - GPL)
rootパスワードを変更して、データベースを作ります。
(難しいパスワードではないとエラーで弾かれます)
# mysql -uroot -p
Enter password: ←さっき見つけたパスワードを入れる(コピペでもOK)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'redMine,616'; ← パスワード変更(忘れないように)
mysql> create database redmine default character set utf8;
データベースを確認してみます。
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| redmine |
| sys |
+--------------------+
5 rows in set (0.01 sec)
Redmineで使う、GRANT権限のユーザを作ります。
mysql> CREATE USER 'redmine'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Redmine616,r';
Query OK, 0 rows affected (0.01 sec)
mysql> GRANT ALL ON redmine.* TO 'redmine'@'localhost';
mysql> exit;
Bye
Rubyのバージョンを複数管理出来るように、rbenvをインストールします。
# exit
$ sudo git clone https://github.com/sstephenson/rbenv.git /usr/local/src/.rbenv/
$ sudo -s
# 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 -)"
# source .bash_profile
一旦再起動します。
# reboot
もう一度サーバに接続してrootユーザにします。
% ssh -i "~/.ssh/artjunkie.pem" ec2-user@123.456.789.012
$ sudo -s
rbenvはちゃんと機能しているか確認をして、バージョンもチェックします。
# env | grep RBENV
RBENV_ROOT=/usr/local/src/.rbenv
RBENV_SHELL=bash
# rbenv --version
rbenv 1.2.0-70-g4fec76f
既存のリポジトリを複製しておきます。
# git clone https://github.com/sstephenson/ruby-build.git /usr/local/src/.rbenv/plugins/ruby-build
rbenv経由でRubyをインストールします。
2023/07/24 UPDATE
(バージョンは2.8.0 3.2.0以下じゃないとすすみません)2.7.6 3.1.4があるのでそれにしましょう。
# rbenv install --list
3.0.6
3.1.4
3.2.2
jruby-9.4.3.0
mruby-3.2.0
picoruby-3.0.0
truffleruby-23.0.0
truffleruby+graalvm-23.0.0
# rbenv install -v 3.1.4
NOTE: to activate this Ruby version as the new default, run: rbenv global 2.7.6
# rbenv global 3.1.4
# rbenv rehash
# ruby -v
ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux]
Railsをインストールします。
# gem update --system
# gem install nokogiri -- --use-system-libraries
# gem install bundler -N
# gem install rails -N
# rbenv rehash
# rails -v
Rails 7.0.6
Redmineをインストールするフォルダを用意します。
# mkdir -p /opt/local/redmine/src
Passengerをインストールしたいけどメモリ不足で死ぬからスワップ領域展開します。
t2.micro は実メモリが 1 GBなので2 GBにします。
# dd if=/dev/zero of=/tmp/swap.img bs=1M count=2048
2048+0 レコード入力
2048+0 レコード出力
2147483648 バイト (2.1 GB) コピーされました、 31.4867 秒、 68.2 MB/秒
# chmod 600 /tmp/swap.img
# mkswap /tmp/swap.img
スワップ空間バージョン 1 を設定します。サイズ = 2 GiB (2147479552 バイト)
ラベルはありません, UUID=3f9a835a-b4c3-46eb-a96f-a0178d214127
# swapon /tmp/swap.img
# free
total used free shared buff/cache available
Mem: 988916 435104 61572 544 492240 414224
Swap: 2097148 0 2097148
Passengerをインストールします。
(時間がかかります)
# gem install passenger -N
# rbenv rehash
# passenger-install-apache2-module (すごい時間かかる)
Press Enter to continue, or Ctrl-C to abort. ←ENTER
‣ ⬢ Ruby
⬢ Python
⬢ Node.js ←一応これもスペースボタンでチェックしてENTER(全角だと反応しないよ)
⬡ Meteor
Press ENTER when you are done editing. ←ENTER(約10分後に出るよ)
Press ENTER to continue. ←ENTER
Passenger® is a registered trademark of Phusion Holding B.V.
# passenger-install-apache2-module --snippet > /etc/httpd/conf.d/passenger.conf
スワップ領域収束しておきます。
# swapoff /tmp/swap.img
# rm -rf /tmp/swap.img
Passengerの既存設定に3行追記します。
$ vim /etc/httpd/conf.d/passenger.conf
<Directory "/opt/local/redmine/src/redmine-5.0.5/public">
Require all granted
</Directory>
LoadModule passenger_module /usr/local/src/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/passenger-6.0.18/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/local/src/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/passenger-6.0.18
PassengerDefaultRuby /usr/local/src/.rbenv/versions/3.1.4/bin/ruby
</IfModule>
# passenger-config --version
Phusion Passenger(R) 6.0.18
Redmineをダウンロードして展開します。
# cd /opt/local/redmine/src
# wget http://www.redmine.org/releases/redmine-5.0.5.tar.gz
# tar zxf redmine-5.0.5.tar.gz
database.ymlを修正してDB設定をします。
# cd redmine-5.0.5/
# cp config/database.yml.example config/database.yml
# vim config/database.yml
production:
adapter: mysql2
database: redmine
host: localhost
username: redmine
password: "Redmine616,r"
# Use "utf8" instead of "utfmb4" for MySQL prior to 5.7.7
encoding: utf8mb4
マニフェストファイルに下記を記載します。
# 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
多分、手動でmysql.sockを作成する必要があります。
(不要みたいなので飛ばしてね)
# touch /var/lib/mysql/mysql.sock
# chown mysql:mysql /var/lib/mysql/mysql.sock
bundleをインストールします。
# 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
Default configuration data loaded.
httpdの設定をします。
(DocumentRootの部分を書き換えます)
# vim /etc/httpd/conf/httpd.conf
DocumentRoot "/opt/local/redmine/src/redmine-5.0.5/public"
redmineのディレクトリをapacheユーザが使えるようにします。
# cd /opt/local/redmine/src/
# chown -R apache. redmine-5.0.5
# service httpd restart
Redirecting to /bin/systemctl restart httpd.service
apacheの動作確認します。
# 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 火 2022-11-22 04:30:19 UTC; 11s ago
Docs: man:httpd.service(8)
Main PID: 3320 (httpd)
Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes served/sec: 0 B/sec"
CGroup: /system.slice/httpd.service
├─3320 /usr/sbin/httpd -DFOREGROUND
├─3343 Passenger watchdog
├─3346 Passenger core
├─3356 /usr/sbin/httpd -DFOREGROUND
├─3357 /usr/sbin/httpd -DFOREGROUND
├─3358 /usr/sbin/httpd -DFOREGROUND
├─3359 /usr/sbin/httpd -DFOREGROUND
└─3360 /usr/sbin/httpd -DFOREGROUND
11月 22 04:30:19 ip-172-31-33-200.ap-northeast-1.compute.internal systemd[1]: Starting ...
11月 22 04:30:19 ip-172-31-33-200.ap-northeast-1.compute.internal systemd[1]: Started T...
Hint: Some lines were ellipsized, use -l to show in full.
一応再起動してからIPにアクセスします。
# reboot
ブラウザを立ち上げて、IPを叩きます。
無事にredmineが立ち上がりましたか?
ログインID/パスワードは共に、adminなので、早く変更しましょう。
今後の予定
- https:// で利用できるようにする
<編集中>Gmail のアカウントでメール配信設定
アプリパスワードを生成します。
https://myaccount.google.com/apppasswords
ここに生成の仕方を載せる予定。
その後、下記のように設定でGmailを使ってRedmineからメールが届くようになります。
$ ssh -i "~/.ssh/WebServer.pem" ec2-user@52.198.21.72
$ sudo -s
# cd /opt/local/redmine/src/redmine-5.0.5/config/
# cp configuration.yml.example configuration.yml
# vim configuration.yml
default:
email_delivery:
delivery_method: :smtp
smtp_settings:
enable_starttls_auto: true
address: "smtp.gmail.com"
port: 587
authentication: :plain
domain: 'smtp.gmail.com'
user_name: 'examp@gmail.com'
password: 'App-PassWord'
# service httpd restart