redmine3.3.2 を redmine5.0 に移行する。ついでにtextile形式からmarkdown形式に変換もする。

redmine3.3.2 を redmine5.0 に移行する。ついでにtextile形式からmarkdown形式に変換もする。

2023/10/15 21:00:00
Program
Ubuntu, Vps, Kagoya, Redmine

前提 #

  • 移行元は GMO vps で centos6.0 + apache + mariadb? + redmine3.3.2
  • 移行元のredmineはdb含めてバックアップ済みであること
    バックアップ対象は以下の2個
    • redmineディレクトリのfilesディレクトリ(添付ファイル一式)
    • redmine db のバックアップ
      # db バックアップのコマンド
      $ mysqldump -u [ユーザ] -p[パスワード] [DB名] > redmine332_msqldump.txt
      
  • 移行元のredmineはtextile形式で移行先はmarkdown形式に変換する
  • 移行先は kagoya vps で ubuntu20.04 + apache2.4 + mariadb15.1 + redmine5.0
  • kagoya vps は契約済みであること
  • ruby1.8.7 で動作させたいwebアプリがあるため ubuntu20.04 にしている
    ubuntu22.04 だと apache 経由でruby1.8.7のcgiが動作しない。セグメンテーション違反が発生する

kogoya vps インスタンス起動 #

  1. OS選択
    Ubuntu20.04 を選択する
  2. アプリケーションセットアップ設定
    特に追加設定はなし
  3. スペック選択
    2コア/2GB/SSD 200GB 選択
    「スタンダードタブ」にはないので、「大容量」タブを選択すること
  4. ログイン用認証キー登録
    以下の画面の「ログイン用認証キー追加」ボタンをクリックすると追加画面に遷移する

    基本的に以下の「ログイン用認証キー名」を入力し、登録ボタンを押下すると、ssh接続用認証キーが生成され、ssh 接続用のkeyはブラウザが自動でダウンロードしてくれる
    ここでは kagoya.ubuntu20.04.root.key としておく   備考欄は何のキーなのかわかるように記載しておくと便利かもしれない。
    ※ rootログイン用なのでセキュリティ的に問題になりそうなので、サーバ構築完了したらば削除していいはず。

    登録完了すると、「ログイン用認証キー名」が表示される
  5. virtio, セキュリティグループ, ネットワーク設定
    デフォルトから変更しない
  6. コンソールログインパスワードを登録
    ssh 接続せずに、kagoya コンソール使って、ログインする時のパスワードを設定する。
    ※ これもセキュリティ的に問題になりそうなので最終的にはログイン不可にする必要があるかもしれない。
    → root ログインを禁止すればいいだけのはず。
  7. ユーザデータ設定 何も設定しない。
    たぶん、インスタンス生成時に実行したいコマンドを記載する箇所と思う。Dockerfileみたいなものやと思う
  8. インスタンス名設定 インスタンス名を設定する
  9. 備考設定
    必要があれば情報を記載しておくこと。
  10. 料金を確認とインスタンス作成
    料金を確認に、問題なければ「インスタンス作成」ボンタンを押下する
  11. 生成したインスタンスのグローバルIPアドレスを確認しておく
    ここでは、123.45.678.9 としておく

kakogya vps に接続 #

  1. 「ログイン用認証キー登録」でダウンロードしたkagoya.ubuntu20.04.rootを~/.ssh ディレクトリに配置
    $ cp kagoya.ubuntu20.04.root ~/.ssh/.
    $ chmod 600 ~/.ssh/kagoya.ubuntu20.04.root.key
    
  2. ssh 設定 「ログイン用認証キー登録」でブラウザがダウンロードしたkeyをssh設定に追加する
    ip アドレスはインスタンス一覧画面で確認した 123.45.678.9 としている

    $ emacs ~/.ssh/config

    1Host kagoya.ubuntu20.04.root
    2HostName 123.45.678.9
    3Port 22
    4User root
    5IdentityFile ~/.ssh/kagoya.ubuntu20.04.root.key
    
  3. ssh 接続確認 以下のコマンドで生成したインスタンスにrootとしてログインできるはず
    $ ssh kagoya.ubuntu20.04.root
    

ubuntu20.04 基本設定 #

$ ssh kagoya.ubuntu20.04.root で接続すると root でログインしている

  1. ユーザ追加
    #  -mオプションによって、ユーザのホームディレクトリが作られる
    $ useradd -m developer
    $ passwd developer
    password-string
    # sudo コマンド有効にしておく
    $ visudo
    ...
    developer ALL=(ALL) ALL
    
    # 以後、developerユーザで操作する
    $ su - developer
    # ユーザ確認
    $ whoami
    developer
    
  2. システム更新 時間がかかるが以下を実施するとシステムが最新になる
    $ sudo apt update && sudo apt upgrade -y
    
  3. git 設定
    # git インストール
    $ sudo apt install git
    git version 2.25.1
    
    # git 最低限設定
    $ git config --global core.autocrlf false
    $ git config --global push.default simple
    $ git config --global core.ignorecase false
    $ git config --global core.quotepath false
    $ git config --global pull.rebase false
    $ git config --global core.filemode true
    $ git config --global user.name "名前" <--- 書き換えること
    $ git config --global user.email "メール"  <--- 書き換えること
    $ git config --global credential.helper store
    
  4. emacs インストール
    # インストール可能バージョン確認
    $ apt list emacs -a
    Listing... Done
    emacs/focal,focal 1:26.3+1-1ubuntu2 all
    
    # 新しめの emacs28 リポジトリ追加
    $ sudo add-apt-repository ppa:kelleyk/emacs
    $ sudo apt update
    # 再確認
    $ apt list -a emacs28
    Listing... Done
    emacs28/focal 28.1~1.git5a223c7f2e-kk3+20.04 amd64
    
    # emacs28 インストール
    $ sudo apt install emacs28
    $ emacs --version
    GNU Emacs 28.1
    Copyright (C) 2022 Free Software Foundation, Inc.
    GNU Emacs comes with ABSOLUTELY NO WARRANTY.
    You may redistribute copies of GNU Emacs
    under the terms of the GNU General Public License.
    For more information about these matters, see the file named COPYING.
    
    # emacs 設定
    $ git clone https://github.com/oya3/.emacs.d
    $ sudo apt install ripgrep
    # emacs 初回起動し、設定内容を反映させる
    # - 起動に時間はかかるが、問題なく初期設定されるはず
    # - 使い方は .emacs.d/readme.txt みれば理解できるはず
    # - .emacs.d/init.el に設定内容は集約している
    $ emacs
    
    # emacs でpython静的解析用パッケージをインストールしておく
    $ ls -la /usr/bin/python*
    lrwxrwxrwx 1 root root       9  8月 18  2020 /usr/bin/python3 -> python3.8
    -rwxr-xr-x 1 root root 5494584  5月 26 23:05 /usr/bin/python3.8
    
    $ sudo apt install python3-pip
    $ pip3 install --upgrade pip setuptools
    # 警告出るけど無視
    # 以下の手順で解決できるかもしれない
    # $ pip3 install testresources
    # $ echo 'export PATH=$PATH:/home/developer/.local/bin' >> ~/.bashrc
    # $ source ~/.bashrc
    # $ pip3 install --upgrade pip setuptools
    
  5. fish インストール
    $ sudo apt install fish
    # fish の場所を確認
    $ cat /etc/shells
    ...
    /usr/bin/fish
    $ chsh -s /usr/bin/fish
    Password: password-string
    
    # 再ログイン
    $ exit
    $ su - developer
    # curl インストール
    $ sudo apt install curl
    
    # fisherman インストール
    $ curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher
    
    # fish テーマをインストール
    $ fisher install oh-my-fish/theme-bobthefish
    
    # peco (履歴)
    $ sudo apt install peco
    $ fisher install oh-my-fish/plugin-peco
    
    fish にテーマ設定とpeco(履歴)設定を反映させる
    また、theme-agnoster テーマは python 仮想環境を表示するのでfish側を非表示にしておく

    $ emacs ~/.config/fish/config.fish

     1...
     2# デフォルトの pyenv 名表示非表示( oh-my-fish/theme-bobthefish に任せる )
     3set -gx VIRTUAL_ENV_DISABLE_PROMPT 1
     4# bobthefish テーマのカラーをドラキュラにする
     5set -g theme_color_scheme dracula
     6
     7# peco history
     8# set fish_plugins theme peco
     9function fish_user_key_bindings
    10  bind \cr peco_select_history
    11end
    
    fish 設定反映
    $ exec $SHELL -l
    
    その他、追加設定
    # bd で候補選択開始できる
    $ fisher install 0rax/fish-bd
    # z で候補選択開始できる
    $ fisher install jethrokuan/z
    
  6. tig インストール
    $ sudo apt install tig
    
  7. git, tig 等のdiffカラー設定 diff ハイライトをシステムに反映
    $ sudo chmod +x /usr/share/doc/git/contrib/diff-highlight/diff-highlight
    $ sudo ln -s /usr/share/doc/git/contrib/diff-highlight/diff-highlight /usr/local/bin/diff-highlight
    
    diff ハイライトを tig に反映

    $ emacs ~/.tigrc

    # 差分表示に diff-highlight を使う (要 tig 2.2.1 以降. diff-highlight が $PATH にあること)
    set diff-highlight = true
    
    # カラー設定
    # カーソル
    color cursor black cyan
    # diff-view で境界が見やすくなるように変更
    color  diff-header       default magenta
    color  diff-chunk        black   white
    
    diff ハイライトを git に反映
    ※ git の diff show log でも単語単位色替えに対応させておく

    $ emacs ~/.gitconfig

    ...
    [pager]
        log = diff-highlight | less
        show = diff-highlight | less
        diff = diff-highlight | less
    
  8. anyenv install
    $ git clone https://github.com/anyenv/anyenv ~/.anyenv
    # 現 fish_user_paths の確認(何もないはず)
    $ echo $fish_user_paths
    
    $ set -Ux fish_user_paths $HOME/.anyenv/bin $fish_user_paths
    # fish_user_paths に anyenv/bin が追加される
    $ echo $fish_user_paths
    /home/developer/.anyenv/bin
    
    $ ~/.anyenv/bin/anyenv init
    # Load anyenv automatically by adding
    # the following to ~/.config/fish/config.fish:
    
    status --is-interactive; and source (anyenv init -|psub)
    
    ↑の指示に従い、anyenv init を呼び出し。ただし、fish, version 3.3.1 の場合、最初からis-nteractive分岐があるので、そこに記載する

    $ emacs .config/fish/config.fish

    1...
    2status --is-interactive; and source (anyenv init -|psub)
    3...
    
    ターミナル再起動し、反映/初期設定する
    $ exec $SHELL -l
    # ANYENV_DEFINITION_ROOT(/home/developer/.config/anyenv/anyenv-install) doesn't exist. You can initialize it by:
    # > anyenv install --init
    $ anyenv install --init
    Manifest directory doesn't exist: /home/developer/.config/anyenv/anyenv-install 
    Do you want to checkout https://github.com/anyenv/anyenv-install.git? [y/N]: y # <--- anyenv 管理ディレクトリがないからcheckoutして作成することを聞いてきている。
    Cloning https://github.com/anyenv/anyenv-install.git master to /home/developer/.config/anyenv/anyenv-install...
    Cloning into '/home/developer/.config/anyenv/anyenv-install'...
    remote: Enumerating objects: 71, done.
    remote: Counting objects: 100% (14/14), done.
    remote: Compressing objects: 100% (13/13), done.
    remote: Total 71 (delta 4), reused 4 (delta 1), pack-reused 57
    Receiving objects: 100% (71/71), 13.15 KiB | 1.01 MiB/s, done.
    Resolving deltas: 100% (11/11), done.
    Completed!
    # 再度ターミナル再起動し反映させる
    $ exec $SHELL -l
    

developerユーザでログインできるようにする #

root ユーザでsshログインするのは問題があるのでdeveloperユーザでログインできるようにする

# developerユーザの暗号鍵生成と設定
$ ssh-keygen -t rsa
Enter file in which to save the key (/home/oya/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):password-string
Enter same passphrase again:password-string

$ cd .ssh
$ mv id_rsa.pub  authorized_keys
$ chmod 600 authorized_keys
$ la
total 16K
drwx------ 2 developer developer 4.0K 10月 10 01:22 ./
drwxr-xr-x 8 developer developer 4.0K 10月 10 01:20 ../
-rw------- 1 developer developer  578 10月 10 01:20 authorized_keys
-rw------- 1 developer developer 2.6K 10月 10 01:20 id_rsa
$ exit

接続元へ鍵を転送しssh接続設定を追加しておく

$ scp kagoya.ubuntu20.04.root:/home/developer/.ssh/id_rsa ~/.ssh/kagoya.ubuntu20.04.developer.key
$ chmod 600 ~/.ssh/kagoya.ubuntu20.04.developer.key

ssh config に追記

$ emacs ~/.ssh/config

Host kagoya.ubuntu20.04.developer
  HostName 123.45.678.9
  Port 22
  User developer
  IdentityFile ~/.ssh/kagoya.ubuntu20.04.developer.key

developer ユーザでssh接続できるか確認しておく

$ ssh kagoya.ubuntu20.04.developer

developerで接続できれば、ここでは実施してないがrootログインを禁止しておいたほうがいい。

apache インストール&設定 #

# 現状のサービス一覧確認しておく(apacheが存在しないことを確認)
$ service --status-all
 [ + ]  acpid
 [ + ]  alsa-utils
 [ - ]  anacron
 [ - ]  apparmor
 [ + ]  apport
 [ + ]  atd
 [ - ]  avahi-daemon
 [ - ]  bluetooth
 [ - ]  console-setup.sh
 [ + ]  cron
 [ - ]  cryptdisks
 [ - ]  cryptdisks-early
 [ - ]  cups
 [ - ]  cups-browsed
 [ + ]  dbus
 [ - ]  gdm3
 [ - ]  grub-common
 [ - ]  hwclock.sh
 [ + ]  irqbalance
 [ - ]  iscsid
 [ - ]  kerneloops
 [ - ]  keyboard-setup.sh
 [ + ]  kmod
 [ - ]  lvm2
 [ - ]  lvm2-lvmpolld
 [ + ]  multipath-tools
 [ - ]  network-manager
 [ - ]  open-iscsi
 [ - ]  open-vm-tools
 [ - ]  openvpn
 [ - ]  plymouth
 [ - ]  plymouth-log
 [ - ]  pppd-dns
 [ + ]  procps
 [ + ]  pulseaudio-enable-autospawn
 [ - ]  rsync
 [ + ]  rsyslog
 [ + ]  saned
 [ - ]  screen-cleanup
 [ - ]  speech-dispatcher
 [ + ]  spice-vdagent
 [ + ]  ssh
 [ + ]  udev
 [ + ]  ufw
 [ + ]  unattended-upgrades
 [ - ]  uuidd
 [ - ]  whoopsie
 [ - ]  x11-common

# apache install

$ sudo apt install apache2 apache2-dev
$ systemctl status apache2
● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2023-10-10 02:27:44 JST; 24s ago
       Docs: https://httpd.apache.org/docs/2.4/
   Main PID: 12089 (apache2)
      Tasks: 55 (limit: 2203)
     Memory: 4.9M
     CGroup: /system.slice/apache2.service
             ├─12089 /usr/sbin/apache2 -k start
             ├─12090 /usr/sbin/apache2 -k start
             └─12091 /usr/sbin/apache2 -k start

rbenv インストール #

$ anyenv install rbenv
$ exec $SHELL -l
$ sudo apt install build-essential checkinstall zlib1g-dev

# ruby 1.8.7 が必要ない場合は、redmine インストールまで進むこと。
# ruby 1.8.7 インストール(他のwebサービスで使うため。ここではインストール方法を残すために記載しておく)
$ rbenv install --patch 1.8.7-p249 < (curl -sSL https://git.io/ruby-1.8.7-p249-patch | psub)
# apache2 cgi 有効(apacheでcgiとしてruby実行したい場合、必要)
$ sudo a2enmod cgid

redmine インストール #

  1. 準備
    # svn インストール
    $ sudo apt install -y subversion
    
    # RubyとPassengerのビルドに必要な開発ツールやヘッダファイルのインストール
    $ sudo apt install -y build-essential zlib1g-dev libssl-dev libreadline-dev libyaml-dev libcurl4-openssl-dev libffi-dev
    
    # 日本語フォントのインストール
    $ sudo apt install -y imagemagick fonts-takao-pgothic
    
    # mariadb(mysql)インストール
    $ sudo apt install -y mariadb-server mariadb-client libmysqlclient-dev
    
    $ sudo mysql_secure_installation
    # root の現在のパスワードを入力 (なしの場合は入力):
    # ルートパスワードを設定しますか? [はい/いいえ]
    # 匿名ユーザーを削除しますか? [はい/いいえ]
    # リモートでの root ログインを禁止しますか? [はい/いいえ]
    # テスト データベースを削除してアクセスしますか? [はい/いいえ]
    # 今すぐ特権テーブルをリロードしますか? [はい/いいえ]。
    Enter current password for root (enter for none):
    Set root password? [Y/n]:n
    Remove anonymous users? [Y/n]:y
    Disallow root login remotely? [Y/n]y:
    Remove test database and access to it? [Y/n]:y
    Reload privilege tables now? [Y/n]:y
    
    # mysql コマンド
    # user 一覧
    # > select user,host from mysql.user;
    # user 削除
    # > drop user user_redmine@localhost;
    # database一覧
    # > show databases;
    # db 削除
    # > drop database xxxx;
    # table一覧
    # > show tables from xxx;
    
    # root でログイン(パスワードなし)
    $ sudo mysql -u root -p
    Enter password:      <--- エンター押下のみ
    > CREATE DATABASE redmine50 default CHARACTER SET utf8mb4;
    > CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'password-string';
    > GRANT ALL PRIVILEGES ON redmine50.* TO 'redmine'@'localhost';
    > flush privileges;
    > exit;
    
    # redmine ユーザでログインしてredmine_5_0があるか調べる
    $ sudo mysql -u redmine -p
    Enter password:password-string
    > show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | redmine50          |
    +--------------------+
    2 rows in set (0.005 sec)
    > exit;
    
  2. redmine5.0 を取得とrubyバージョン設定 redmine5.0 は /home/developer/redmine-5.0 に配置するようにする
    $ svn co https://svn.redmine.org/redmine/branches/5.0-stable redmine-5.0
    $ cd redmine-5.0
    $ rbenv install 3.1.4 
    $ rbenv local 3.1.4
    $ rbenv versions
    * 3.1.4  (set by /home/developer/redmine-5.0/.ruby-version)
    $ ruby -v 
    
  3. db 設定 サンプルをコピーして編集する
    $ cp config/database.yml.example config/database.yml
    

    $ emacs config/database.yml

    1production:
    2  adapter: mysql2
    3  database: redmine50
    4  host: localhost
    5  username: redmine
    6  password: "password-string" 
    7  encoding: utf8mb4
    
  4. apache に redmine サイト設定を追加 redmine.test.com とサブドメインでredmineを運用する場合の設定

    $ sudo emacs /etc/apache2/sites-available/redmine50.conf

     1<VirtualHost *:80>
     2    ServerName redmine.test.com
     3    DocumentRoot /home/developer/redmine-5.0/public
     4    <Directory "/home/developer/redmine-5.0">
     5        Options Includes ExecCGI FollowSymLinks
     6        AllowOverride All
     7        Order allow,deny
     8        Allow from all
     9        Require all granted
    10    </Directory>
    11</VirtualHost>
    
    redmine50.conf 反映
    # テスト実施
    $ sudo apache2ctl configtest
    # apache に適用
    $ sudo a2ensite redmine50
    # apache 設定反映
    $ sudo systemctl reload apache2
    
  5. gem install
    redmine-5.0 ディレクトリで実施
    ここでは、旧redmine3.3.2 のtextile形式をmarkdown形式に変換するためにpandoc gemも追加インストールしている
    まずは、redmine5.0のbundle installを実施
    $ bundle config set --local without 'development test'
    $ bundle i
    
    textile2md2 を実行するために pandoc 追加
    $ sudo apt install pandoc
    

    $ emacs Gemfile

    1...
    2gem 'pandoc-ruby'
    3...
    
    再度、bundle install を実施(pandoc-ruby 一式がインストールされる)
    $ bundle i
    
    textile形式からmarkdownに変換するスクリプトを取得して、lib/tasksに配置する
    この変換スクリプトはpandocとオリジナルの変換ロジックを混ぜて作成した自作スクリプト。
    pandoc だけでは完全な形式に変換することは不可能なので、必要に応じてスクリプトを変更することで期待の変換ができるかもしれない。
    現状は自分の都合のよい変換結果となるように細工してあるだけで、完璧に変換はできないので問題があれば頑張って変更してみてもいいかも。。。
    $ wget https://github.com/oya3/textile2md2/raw/main/textile2md2.rake
    $ mv textile2md2.rake lib/tasks/.
    
  6. バックアップしたdbdump/fileを書き戻す 旧サーバからコピーしておくこと。

    $ scp redmine332_msqldump.txt kagoya.ubuntu20.04.developer:/home/developer/redmine-5.0/. $ scp -r files kagoya.ubuntu20.04.developer:/home/developer/redmine-5.0/.

    $ sudo mysql -u redmine -p redmine50 < redmine332_msqldump.txt 
    
  7. 鍵生成
    $ bundle exec rake generate_secret_token
    
  8. 全体DB更新
    $ bundle exec rake db:migrate RAILS_ENV=production
    
  9. クリーンナップ
    $ bundle exec rake tmp:cache:clear RAILS_ENV=production 
    
  10. textile 形式から markdown形式 に変換
    $ bundle exec rake textile2md2:execute RAILS_ENV=production  
    
    もし、textile2md2 実行中にメモリ不足が発生した場合、以下を実施し一時的にスワップファイルを作成する
    $ dd if=/dev/zero of=/tmp/swap.img bs=1M count=10240
    $ chmod 600 /tmp/swap.img
    $ mkswap /tmp/swap.img
    $ sudo swapon /tmp/swap.img
    
  11. passenger 設定
    passenger インストールと動作確認
    $ gem install passenger -N
    $ passenger-install-apache2-module --auto --languages ruby
    
    # apache に設定する passernger 設定を確認
    $ passenger-install-apache2-module --snippet
    LoadModule passenger_module /home/developer/.anyenv/envs/rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/passenger-6.0.17/buildout/apache2/mod_passenger.so
    <IfModule mod_passenger.c>
      PassengerRoot /home/developer/.anyenv/envs/rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/passenger-6.0.17
      PassengerDefaultRuby /home/developer/.anyenv/envs/rbenv/versions/3.1.2/bin/ruby
    </IfModule>
    
  12. apache conf-available に passenger 設定追加
    ここでは、versions/3.1.2/bin/rubyの固定バージョンではなく、shims/ruby にしているので注意

    $ sudo emacs /etc/apache2/conf-available/passenger.conf

    1LoadModule passenger_module /home/developer/.anyenv/envs/rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/passenger-6.0.18/buildout/apache2/mod_passenger.so
    2<IfModule mod_passenger.c>
    3  PassengerRoot /home/developer/.anyenv/envs/rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/passenger-6.0.18
    4  PassengerDefaultRuby /home/developer/.anyenv/envs/rbenv/shims/ruby    <--- ここ変更している
    5  PassengerUserSwitching off
    6  PassengerDefaultUser developer
    7</IfModule>
    
  13. passenger 設定をapacheに反映
    $ sudo apache2ctl configtest
    Syntax OK
    $ sudo a2enconf passenger
    # redmine 再起動
    $ sudo systemctl restart apache2
    

redmine 起動確認と初期設定 #

  1. ブラウザで redmine.test.com にアクセスする
  2. ログイン画面が表示されたらadminでログインする
  3. テキスト形式を textile形式からmarkdown(CommonMark Markdown(GitHub Flavored) experimental)に変更しておく 管理→設定→全般タブに「テキスト形式」設定欄がある
    1. 管理に移動
    2. 設定に移動
    3. markdownに変更

https アクセス設定 #

  1. certbot インストール

    $ sudo apt -y install certbot
    
  2. apache ssl & rewrite設定有効

    $ sudo a2enmod ssl rewrite
    
  3. https 接続用証明書一式作成

    $ sudo certbot certonly --webroot -w /home/developer/redmine-5.0/public -d redmine.test.com -m "メールアドレス"
    # 以下の選択しが表示されるはず。
    # 1. 利用規約同意 yes
    # 2. メール通知許可 yes(no でもいいかもしれない)
    

    上記コマンドで以下が生成されていれば成功

    • SSLCertificateFile 用が /etc/letsencrypt/live/test.com/cert.pem
    • SSLCertificateKeyFile 用が /etc/letsencrypt/live/test.com/privkey.pem
    • SSLCertificateChainFile 用が /etc/letsencrypt/live/test.com/fullchain.pem
  4. redmine50.conf に https アクセス設定を追加
    以下の設定でhttps接続追加と、httpにアクセスした場合、https に転送される設定が追加される

    $sudo emacs /etc/apache2/sites-available/redmine50.conf

     1<VirtualHost *:80>
     2    ServerName redmine.test.com
     3    DocumentRoot /home/developer/redmine-5.0/public
     4    <Directory "/home/developer/redmine-5.0">
     5        Options Includes ExecCGI FollowSymLinks
     6        AllowOverride All
     7        Order allow,deny
     8        Allow from all
     9        Require all granted
    10    </Directory>
    11    # 転送設定
    12    RewriteEngine On
    13    RewriteCond %{HTTPS} off
    14    RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]
    15</VirtualHost>
    16
    17<VirtualHost *:443>
    18    ServerName redmine.test.com
    19    DocumentRoot /home/developer/redmine-5.0/public
    20    <Directory "/home/developer/redmine-5.0">
    21       Options Includes ExecCGI FollowSymLinks
    22       AllowOverride All
    23       Order allow,deny
    24       Allow from all
    25       Require all granted
    26    </Directory>
    27    SSLEngine on
    28    SSLCertificateFile      /etc/letsencrypt/live/test.com/cert.pem
    29    SSLCertificateKeyFile   /etc/letsencrypt/live/test.com/privkey.pem
    30    SSLCertificateChainFile /etc/letsencrypt/live/test.com/fullchain.pem
    31</VirtualHost>
    

    https アクセス設定を反映

    $ sudo apache2ctl configtest
    Syntax OK
    # redmine 再起動
    $ sudo systemctl restart apache2
    

その他 #

DNS 設定 #

https://redmine.test.com でアクセスできることを想定して以下の設定にしている
※ a * 123.45.678.9, a @ 123.45.678.9 だけでも問題ないかもしれないが試してない

a * 123.45.678.9
a www 123.45.678.9
a redmine 123.45.678.9
a @ 123.45.678.9