月: 2024年1月 Page 2 of 4

Redmine 5.1に文書管理プラグイン(dmsf)をインストール。※脆弱性が存在するバージョンに注意※

概要

https://atelier.reisalin.com/projects/zettel/knowledgebase/articles/39/

こちらの、Redmine5.1バージョンです。

Redmineをファイルサーバのように扱うプラグインをインストールします。

備考

  • この作業、下手すればRedmine全体が使えなくなる作業です。(実際にRedmineが使えなくなりました)
  • そのため、DBのバックアップとリストアによる切り戻し手順も込みです。

2023年11月よりMicrosoftはWebDavを「非推奨」とする方針を打ち出しているため、本手順ではWebDAV設定は省いています。

https://forest.watch.impress.co.jp/docs/news/1544482.html

プラグイン名

動作を確認した環境

  • Ubuntu 22.04
  • Ruby 3.0
  • Redmine 5.1
  • mysql Ver 8.0.35

導入時

  • 追加パッケージのインストール:要
  • Gem追加:要
  • DBマイグレーション:要

実施した手順

さっくりとならなかった手順

  1. 念のためDBバックアップ
  2. SSHログイン後、追加パッケージをインストール
  3. Redmineプラグインに移動
  4. gitでレポジトリをダウンロード
  5. 新規ジェムをインストール
  6. DBマイグレーション
  7. Webサービス再起動
  8. Redmine設定変更
  9. 切り戻し手順(それでも失敗した場合)

バックアップ取得

mysqldumpによるバックアップ

cd /hoge
# 任意のバックアップディレクトリに移動します

mysqldump -h localhost -u redmine -p --no-tablespaces --single-transaction redmine > redmine_backup.$(date +%Y%m%d).sql
# それぞれ -h ホスト名 -u redmine -p ユーザ オプション db名です。
# パスワードはredmineインストール時に設定したDBユーザのものです

環境が許すなら、AWSのようにシステム全体のバックアップを取った方が後腐れがありません。

動作に必要な追加パッケージのインストールと設定

追加パッケージをインストールします。

sudo aptitude install xapian-omega ruby-xapian libxapian-dev poppler-utils antiword  unzip catdoc libwpd-tools libwps-tools gzip unrtf catdvi djview djview3 uuid uuid-dev xz-utils libemail-outlook-message-perl

プラグインのインストール

プラグインを配置します。

cd /home/www-data/redmine/plugins && pwd
# redmineのplugins配下ディレクトリに移動します。

sudo -u www-data git clone -b v3.1.4 https://github.com/danmunn/redmine_dmsf
# 念のため、バージョンを指定します。

ls -ld /home/www-data/redmine/plugins/redmine_dmsf
# このディレクトリがあることを確認します

Gemをインストールします。

cd /home/www-data/redmine/ && pwd
# 自分の環境に合わせます。

sudo -u www-data bundle install
# bundleはかなり時間がかかります。

DBのマイグレーションを行います。

cd /home/www-data/redmine/ && pwd
# 自分の環境に合わせます。

sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production

Webサービスを再起動します。

sudo systemctl restart apache2

Redmine設定変更

WebDAV有効化

  1. Redmineに管理者アカウントでログインします。
  2. 管理>プラグイン>DMSFの「設定」をクリックします。
  3. 以下のように修正します。
  4. 貼り付けを許可にチェックを入れ、アップロードしたファイルをチケットなどに貼り付けられるようにします。
  5. WebDav:無効(デフォルトのままです)
  6. 任意のプロジェクトに移動します。
  7. 「設定」をクリックし、「文書管理」にチェックを入れます。
  8. また、Redmine管理画面の「ロールと権限設定」で、ユーザのアクセス権を忘れないようにしてください。(「文書管理」のセクションです)

以上で設定は完了です。

おまけ:切り戻し手順

この作業、Redmine5.1より手順は楽になったとは言え:やっぱりバージョン変更や設定ミスで軽くRedmine全体が機能不全に陥ります。そのため、切り戻し手順を記しておきます。

通常の切り戻し

ディレクトリ移動

cd /home/www-data/redmine && pwd
# 自分の環境に合わせます。

プラグインアンインストール

sudo -u www-data rake redmine:plugins:migrate NAME=redmine_dmsf VERSION=0 RAILS_ENV=production

ディレクトリ削除

sudo rm plugins/redmine_dmsf -Rf

Webサービス再起動

sudo systemctl restart apache2.service

それでもダメだった切り戻し(DBリストア)

cd /hoge
# mysqldumpを行ったディレクトリ

mysql -h localhost -u redmine -p redmine < redmine_backup.$(date +%Y%m%d).sql
# パスワードはredmineインストール時に設定したDBユーザのものです

sudo systemctl restart apache2.service

Redmine View Customizeを利用した、チケット作成時の定型文挿入。-1-(Issue Template Pluginのワークアラウンド)

概要

メインで使っているRedmineのバージョンは4.2ですが、OSのEOL等に備えて5.1での検証を始めました。

そんな中、活用しているプラグインが使えないのでその対処を行いました。

問題となったプラグイン

こちら、2024/01/19現在、Redmine5.1でインストールできませんでした。

  • チケットを発行するときの定型文を入れたい
  • プロジェクトによっては既に内容が決まっているとなおよい

をモットーにしているだけに、このプラグインが利用できないのはバージョンアップの大きな障害となります。

それを解決するため、RedmineViewCustomizeを使いました。

試した環境

  • Ubuntu 22.04
  • Redmine 5.1
  • Ruby 3.0
  • Apache / ModPassanger
  • 要:ViewCustomizeインストール

https://atelier.reisalin.com/projects/zettel/knowledgebase/articles/31

手順

  1. Redmineに管理者権限でログインします。
  2. 管理>表示のカスタマイズに進みます。
  3. 新しい表示のカスタマイズをクリックします。
  4. 以下の通り、コードを挿入します。

パスのパターン

  • 空白
  • 全プロジェクト

プロジェクトのパターン

空白

挿入位置

全ページのヘッダ

種別

JavaScript

コード

$(function() {
// チケット作成画面のみ対象
if ($('#issue-form').length > 0 && $('#issue_subject').val() == '') {
// 件名の先頭に定型文を追加
$('#issue_subject').val('[起票:] 『件名』(期日:) ');
// 説明に本文を追加 (自身が使うパターンで使ってください。\nで改行を入れられます。)
$('#issue_description').val('### 概要\n\n### 依頼者\n\n### 締切概算\n\n### あるべきゴール\n\n### まずすべきこと\n\n- [ ]');
}
});

コメント

チケット作成時にタイトルを追加


設定反映確認

  1. 任意のプロジェクトで新しいチケットを発行します。
  2. 以下のように自動的にタイトルと説明が入っていればOKです。

Growiの使い勝手を向上。(カスタムスクリプトの利用)

Growiが格段に使いやすくなるTIPSです。

行うこと

  • lang属性の付与

「英語のページを翻訳しますか?」

と、出る時があるので、これに対処します。

  • サイトを新しいタブで開く。

リンクは新しく開きたい派のため、こちらに対応します。

  • 画像のライトボックス化

画像を拡大表示できるようにします。

参考URL

「Growiカスタムスクリプト集」

https://qiita.com/k84rc/items/159a7399c11abd4e3587

手順

Growiに管理者権限でログインします。

ログイン後、

設定>カスタマイズに遷移します。

カスタムスクリプトを修正します。

「カスタムスクリプト」の箇所に、以下のコードを入れます。

function addLangAttrToHtmlTag() {
  var language = window.navigator.language || window.navigator.userLanguage || window.navigator.browserLanguage;
  $('html').attr('lang', language);
}
function openExternalPageInNewTab() {
  $('a[href]').each((i, elem) => {
    var url = elem.href.match(/(?:https?:\/\/([\w:%#\$&\?\(\)~\.=\+\-]+))?(\/?[\w/:%#\$&\?\(\)~\.=\+\-]+)/);
    if (url[1] !== undefined && url[1] !== document.domain) {
      elem.target = '_blank';
    }
  });
}
function applyLightBox() {
  $('head link:last').after('<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/lightbox2@2.10.0/dist/css/lightbox.min.css" />');
  $('head script:last').after('<script src="https://cdn.jsdelivr.net/npm/lightbox2@2.10.0/dist/js/lightbox.min.js"><\/script>');
  $('#page').find('img:not(.emojione)').each(function(i, elem) {
    var a = $('<a>').attr({'href': $(elem).attr('src'), 'data-lightbox': $(elem).attr('alt')||"nothing", 'data-title': $(elem).attr('alt')||"nothing"});
    $(elem).wrap(a);
  });
}

入力後、設定を保存します。

設定反映を確認します。

  1. Growiをログアウトし、再度入り直します。
  2. リンクが別タブで開くことや、画像が拡大表示されることを確認します。

Ubuntu : ディレクトリのバックアップスクリプト。

概要

Linux運用時、特定のディレクトリをバックアップするスクリプトです。

  1. バックアップ元とバックアップ先の変数指定
  2. 世代管理
  3. 直接実行するかCronで設定するか

の変数指定が可能です。

スクリプト内容

  • home_backup.sh

※要管理者権限

# 変数の定義
BACKUP_SOURCE="/home"
BACKUP_DEST="/backup"
GENERATION=3
VERBOSE=false  # バックアップ成功メッセージを表示するかどうか(true/false)

# 一時ディレクトリを作成
temp_dir=$(mktemp -d)

# バックアップを作成する関数
create_backup() {
    # yyymmdd形式の日付を取得
    DATE=$(date +"%Y%m%d")

    # 圧縮ファイルの名前を指定
    ARCHIVE_NAME="backup_$DATE.tar.gz"

    # rsyncを用いてディレクトリを一時ディレクトリにコピー
    rsync -a --delete "$BACKUP_SOURCE/" "$temp_dir/"

    # ディレクトリ全体を圧縮
    tar --ignore-failed-read -czf "$BACKUP_DEST/$ARCHIVE_NAME" -C "$temp_dir" .

    # 古いバックアップを削除
    delete_old_backups

    # メッセージの表示
    if [ "$VERBOSE" = true ]; then
        echo "Backup completed successfully."
    fi
}

# 古いバックアップを削除する関数
delete_old_backups() {
    # バックアップディレクトリ内のバックアップファイルを日付順にソート
    sorted_backups=($(ls -t "$BACKUP_DEST" | grep -E "backup_[0-9]{8}\.tar\.gz"))

    # 不要なバックアップファイルを削除
    while [ ${#sorted_backups[@]} -gt $GENERATION ]; do
        file_to_delete="${sorted_backups[${#sorted_backups[@]}-1]}"
        rm "$BACKUP_DEST/$file_to_delete"
        echo "Deleted old backup: $file_to_delete"
        # 削除したファイルをリストから除外
        sorted_backups=("${sorted_backups[@]:0:${#sorted_backups[@]}-1}")
    done
}

# バックアップの作成
create_backup

# 一時ディレクトリを削除
rm -r "$temp_dir"

作成後、実行権を付与します。

sudo chmod +x home_backup.sh

注意点

  • バックアップ先に十分な空き容量があることを想定しています。
  • rsyncとtarの二重処理なので、割と時間がかかります。

この辺をもう少しうまく処理したいです。

BookStack内のリンクを新しいタブで開く。

とても簡単で、あっさりできるTIPSです。

参照

手順

  1. BookStackに管理者権限でログインします。
  2. 設定>カスタマイズに移動します。
  3. カスタムheadタグに以下を入力し、保存します。
<script type="module">
    const links = document.querySelectorAll('.page-content a');
    for (const link of links) {
        link.target = '_blank';
    }
</script>

動作確認

BookStackでリンクを含む記事をクリックし、新しいタブで開くことができれば完了です。

クッションとファスナー。(百均での収穫)

久しぶりに百均により、ちょっとした補充。

1/12 ビーズクッション

スケールこそ1/12ですが、中身は本物。なので、

より質感の高い「クッション」に座らせることができたという形。

情報カード用ファスナー

そしてもう一つは差し込むだけでファイルングができるもの。

「情報カードをまとめるとき」という需要にピッタリマッチです。

今回、百均で入手は少なめですが、どれもこれからの汎用性を見据えたものになりました。

Ubuntu 22.04系にRedmine5.1をインストール。

OSの刷新に備えて、Ubuntu 22.04に、2024年1月現在の最新版のRedmineを、Ubuntu22.04系にインストールします。

一部を除いてコピペだけで済むように完結しています。

本記事で実施すること

  1. Redmineを動かすためのパッケージがインストールできるように準備をします。
  2. Redmineを動かすためのパッケージ(Ruby/データベース/Webサービスなど)をインストールします。
  3. データベースやWebサービスの基礎設定を行います。
  4. Redmineの動作確認を行います。

想定している読者

  • 「Redmine」をUbuntuにインストールしてみたい
  • まずは動くところまで確認できればいい

前提

  • Ubuntuサーバの初期設定が終わった直後の状態を想定します。
  • DNSでドメインの名前が解決できることを前提としています
  • 環境は以下の通りです。
  • Apache系
  • MySQL
  • Ruby 3.0
  • また、パッケージ管理としてaptitudeを用いています。aptが好みの方はこちらに読み替えてください。

特記事項

  • 本手順ではRedmine 5.1をインストールします。
  • 本記事のredmineの格納ディレクトリは/home/www-data/redmineです。一般的なディレクトリ(/var/lib/redmine)と異なることを最初に注記します。

手順

Apacheのレポジトリを追加します。

sudo add-apt-repository ppa:ondrej/apache2

必要なパッケージをインストールします。

sudo aptitude update

sudo aptitude install build-essential zlib1g-dev libssl-dev libreadline-dev libyaml-dev libcurl4-openssl-dev libffi-dev mysql-server mysql-client apache2 apache2-dev libapr1-dev libaprutil1-dev imagemagick libmagick++-dev fonts-takao-pgothic subversion git ruby libruby ruby-dev libmysqlclient-dev

apacheの追加モジュールをインストールします。

sudo aptitude install libapache2-mod-passenger

rubyのパッケージ管理(gem)を用いて必要なライブラリをインストールします。

sudo gem install bundler racc mysql2
# 「3 gems installed」が表示されればインストール成功です。

必要に応じてmysqlの初期設定を行います。

mysql_secure_installationによる初期設定を行います。

うまくいかない場合は以下を参照してください。

https://atelier.reisalin.com/projects/zettel/questions/5-mysql_secure_installation

mysqlでDBとユーザーを設定します。

mysql -u root -p
# 上記で設定した「mysqlのrootパスワード」を入力し、mysqlにログインします
CREATE DATABASE redmine character set utf8mb4;
/* DB "redmine" を作成します */

CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'password';
/* ユーザ "redmine"を作成し、パスワードを設定します*/
/* この'password'は任意のパスワードに変更してください*/

GRANT ALL ON redmine.* TO 'redmine'@'localhost';
/* DB "redmine"の権限をユーザ "redmine"に委譲します*/

flush privileges;
/* 設定を反映させます*/

exit

設定したDBでログインできることを確認します。

mysql -u redmine -p
SHOW DATABASES;
/* DB:redmineがあることを確認します。 */

exit

Redmineプログラムを配置します。

sudo mkdir -p /home/www-data/redmine

sudo chown -R www-data:www-data /home/www-data

sudo -u www-data svn co https://svn.redmine.org/redmine/branches/5.1-stable /home/www-data/redmine

Redmineのコンフィグを設定します。

sudo cp -pi /home/www-data/redmine/config/database.yml.example /home/www-data/redmine/config/database.yml
  • /home/www-data/redmine/config/database.yml

上記を教義・信仰に従ったエディタで編集してください。

database.yml 編集内容

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  # rootからredmineに変更します
  password: "redmine用のパスワード"
  encoding: utf8mb4
# 本番環境(production)のみ設定を行います

Redmineのマイグレーションを行います。

cd /home/www-data/redmine/ && pwd
# /home/www-data/redmine/ (Redmineを配置したディレクトリ)であることを確認します

sudo -u www-data bundle install --without development test --path vendor/bundle

sudo -u www-data bundle exec rake generate_secret_token

sudo -u www-data RAILS_ENV=production bundle exec rake db:migrate

sudo -u www-data RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data

Apacheの設定ファイルを作成します。

cat <<- __EOF__ | sudo tee -a /etc/apache2/sites-available/redmine.conf
<VirtualHost *:80>
    ServerName hoge.example.com
    # ServerNameは自身が設定したredmineに読み替えてください。
    DocumentRoot /home/www-data/redmine/public
    <Directory /home/www-data/redmine/public>
        Options -MultiViews
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>
__EOF__

設定を反映させます。

ls -l /etc/apache2/sites-available/redmine.conf
# ファイルがあることを確認します。

sudo a2ensite redmine.conf
# 設定ファイルを有効化します

sudo a2dissite 000-default.conf
sudo a2dissite default-ssl.conf
# 初期サイト設定を無効化します

sudo apache2ctl configtest
# Syntax OK を確認します

sudo systemctl restart apache2.service

systemctl status apache2.service

Webページの表示を確認します。

http://設定したRedmineドメイン

でRedmineのトップページが表示されれば成功です。

直ちにadmin/adminでログインし、強固なパスワードを設定し直します。

2024年最初の温泉。

平日休みに湯檜曽温泉に訪れました。

うっすらと雪が積もる中、鮮烈な川を横にして宿に到着。

そして、恒例の川縁の部屋です。

食事も山の幸たっぷりで豪華。特にきのこ類の美味しさは目を見張るものがありました。。

他にも読書やら

ボードゲームと、非常に充実した一泊二日でした。

Growiのインストール手順。(Ubuntu 22.04)

GrowiをUbuntu22.04をインストールしたので、そのときの手順です。一気通貫で行ったので、相当手順は長いです。

環境

  • Ubuntu 22.04
  • Apache 2.4

の基本的な設定が済んだという状況です。

前提

  • 名前解決できるドメインが用意されている。
  • どのドメインに応じた証明書が用意されている。

さっくりとはならない手順

  1. Node.js/npmをインストールします。
  2. Redis-serverをインストールします。
  3. Javaをインストールします。
  4. ElasticSearch 8をインストールします。
  5. ElasticSearchの設定変更を行います。
  6. ElasticSearchのプラグインをインストールします。
  7. ElasticSearchの設定変更を反映します。
  8. MongoDBをインストールします。
  9. MongoDBのデータ格納先を変更します。
  10. MongoDBのアップデートを防ぎます。
  11. MongoDBの設定変更を反映します。
  12. yarnのインストールを行います。
  13. 必要パッケージをインストールします。
  14. turboパッケージをインストールします。
  15. Growiのインストールを行います。
  16. yarnを用いてインストールします。
  17. 自動起動のスクリプトを作成します。
  18. Apacheのリバースプロキシの設定を行います。
  19. ブラウザで起動します。

手順

node18をインストールします。

  • レポジトリ追加
sudo curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash
  • パッケージアップグレード
sudo aptitude update
  • Node.jsインストール
sudo aptitude install nodejs
  • Node.jsバージョン確認
node -v

2024/01/10現在:v18.19.0

  • npmバージョン確認
npm -v

2024/01/10現在:10.2.3

redis-serverをインストールします。

  • インストール
sudo  aptitude install redis-server
  • 起動確認
systemctl status redis-server

active(running)を確認します。

  • 自動起動有効化
sudo systemctl enable redis-server

Javaをインストールします。

  • インストール
sudo aptitude install openjdk-17-jdk

ElasticSearhをインストールします。

  • gpg追加
sudo wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
  • 必要パッケージインストール
sudo aptitude install apt-transport-https
  • レポジトリ追加
sudo echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
  • パッケージのアップグレード
sudo aptitude update
  • ElasticSearchインストール
sudo aptitude install elasticsearch

※この後、デフォルトパスワードが表示されますが、控えておく程度にしましょう。

JVM設定変更
  • バックアップディレクトリ作成
sudo mkdir /etc/elasticsearch/old

※任意のバックアップディレクトリを指定します。

  • 設定ファイルバックアップ
sudo cp -pi /etc/elasticsearch/jvm.options /etc/elasticsearch/old/jvm.options.`date +%Y%m%d`
  • 設定ファイル書き換え
echo -e "-Xms256m\n-Xmx256m" | sudo tee -a /etc/elasticsearch/jvm.options
  • 書き換え確認
sudo diff -u /etc/elasticsearch/old/jvm.options.`date +%Y%m%d` /etc/elasticsearch/jvm.options
  • 差分
+-Xms256m
+-Xmx256m
ElasticSearchの設定変更

※この作業だけ管理者権限で実行します。

  • root昇格
sudo su -
  • 設定ファイルバックアップ
cp -pi /etc/elasticsearch/elasticsearch.yml /path/to/backup/elasticsearch.yml.$(date +%Y%m%d)

任意のバックアップディレクトリを指定します。

  • ファイル書き換え
sed -i -e 's/xpack.security.enabled: true/xpack.security.enabled: false/' \
       -e '/xpack.security.http.ssl:/{n; s/  enabled: true/  enabled: false/}' \
       -e '/xpack.security.transport.ssl:/{n; s/  enabled: true/  enabled: false/}' /etc/elasticsearch/elasticsearch.yml
  • 差分確認
diff -u /path/to/backup/elasticsearch.yml.$(date +%Y%m%d) /etc/elasticsearch/elasticsearch.yml
  • 差分
 # Enable security features
-xpack.security.enabled: true
+xpack.security.enabled: false

 xpack.security.enrollment.enabled: true

 # Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
 xpack.security.http.ssl:
-  enabled: true
+  enabled: false
   keystore.path: certs/http.p12

 # Enable encryption and mutual authentication between cluster nodes
 xpack.security.transport.ssl:
-  enabled: true
+  enabled: false
  • rootから抜ける
exit
ElasticSearchのプラグインを追加
  • analysis-kuromoji インストール
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji
  • analysis-isu インストール
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu
自動起動設定反映
  • 起動
sudo systemctl start elasticsearch
  • 起動確認
systemctl status elasticsearch

active(running)を確認します。

  • 自動起動有効化
sudo systemctl enable elasticsearch

MongoDBインストール

レポジトリ追加

  • 必要パッケージインストール
sudo aptitude install gnupg
  • gpg追加
curl -fsSL https://pgp.mongodb.com/server-6.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg --dearmor
  • レポジトリ追加
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
MongoDBインストール
  • パッケージのアップグレード
sudo aptitude update
  • MongoDBインストール
sudo aptitude install mongodb-org mongodb-org-server mongodb-org-shell mongodb-org-mongos mongodb-org-tools
MongoDBバージョン固定

※2024/01/10現在、GrowiはMongoDBのバージョンが固定されているので、自動更新されないようにします。

sudo aptitude hold mongodb-org

sudo aptitude hold mongodb-org-server

sudo aptitude hold mongodb-org-shell

sudo aptitude hold mongodb-org-mongos

sudo aptitude hold mongodb-org-tools hold
保存先変更(オプション)

MongoDBの格納先を、冗長化構成されているパーティションにするため対応しました。

  • 格納ディレクトリ作成
sudo mkdir /home/mongodb

保存先を変えたいところにします

  • 所有者変更
sudo chown -R mongodb:mongodb /home/mongodb
  • 所有者変更確認
ls -ld /home/mongodb
  • 設定ファイルのバックアップ取得
sudo cp -pi /etc/mongod.conf /path/to/backup/mongod.conf.$(date +%Y%m%d)

任意のバックアップディレクトリを指定します。

  • バックアップ確認
sudo diff -u /etc/mongod.conf /path/to/backup/mongod.conf.$(date +%Y%m%d)

バックアップが保存されたか、差分がないことで確認します。

  • ファイル書き換え
sudo sed -i 's/dbPath: \/var\/lib\/mongodb/dbPath: \/home\/mongodb/' /etc/mongod.conf
  • 差分確認
sudo diff -u /path/to/backup/mongod.conf.$(date +%Y%m%d) /etc/mongodb.conf
  • 差分
-  dbPath: /var/lib/mongodb
+  dbPath: /home/mongodb
自動起動有効
  • mongodサービス起動
sudo systemctl start mongod
  • サービス起動確認
systemctl status mongod

active (running)を確認します

  • 自動起動有効化
sudo systemctl enable mongod

yarnインストール

  • npmでyarnインストール
sudo npm install -g yarn
  • turboインストール

※Growi v6.1.0から必須パッケージとなりました。

sudo yarn global add turbo

Growiインストール

  • git clone
sudo git clone https://github.com/weseek/growi /home/www-data/growi

※任意のディレクトリを指定します。

  • ディレクトリ移動
cd /home/www-data/growi && pwd

先ほどcloneしたディレクトリです。

  • チェックアウト
sudo git checkout -b v6.3.0 refs/tags/v6.3.0

2024/01/09現在の最新版です。

  • yarnによるインストール
sudo yarn

CPUのスペックによっては相当な時間がかかります。

自動起動スクリプトの作成

  • systemd作成
cat <<- __EOF__ | sudo tee -a /etc/systemd/system/growi.service
[Unit]
Description = growi
After=network-online.target mongod.service
ConditionPathExists=【/home/www-data/growi】

[Service]
ExecStart=【/home/www-data/growi/】growi-start.sh
Restart=no
Type=simple

[Install]
WantedBy=multi-user.target
__EOF__

※【】内を、git cloneしたディレクトリにします。

  • Growiインストールディレクトリに作成
cat <<- __EOF__ | sudo tee -a 【/home/www-data/growi】/growi-start.sh
#!/bin/sh
cd 【/home/www-data/growi】
NODE_ENV=production \
AUDIT_LOG_ENABLED=true \
FORCE_WIKI_MODE=private \
MONGO_URI=mongodb://localhost:27017/growi \
ELASTICSEARCH_URI=http://localhost:9200/growi \
REDIS_URI=redis://localhost:6379 \
PASSWORD_SEED=[任意の文字列] \
FILE_UPLOAD=local \
npm start
__EOF__

※【】内を、git cloneしたディレクトリにします。
[]内には任意の文字列を入れます。

  • 権限変更
sudo chmod +x /home/www-data/growi/growi-start.sh
  • systemd設定反映
sudo systemctl daemon-reload
  • growi有効化
sudo systemctl start growi.service
  • growi有効化確認
systemctl status growi.service

active(running)を確認

  • 自動起動有効化
sudo systemctl enable growi.service

Apacheによるリバースプロキシの設定

  • モジュールインストール
sudo a2enmod proxy_http
  • apache再起動
sudo systemctl restart apache2.service
  • ログ保存ディレクトリ作成
suod mkdir /var/log/growi/
  • 所有者変更
sudo chown -R www-data:www-data /var/log/growi
  • 設定ファイル作成
cat <<- __EOF__ | sudo tee -a /etc/apache2/sites-available/growi.conf
#!/bin/sh
<VirtualHost _default_:80>
    ServerName 【hoge.example.com】
    # ドメイン名を指定します
    RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# HTTPアクセスを強制的にHTTPSにリダイレクトします
</VirtualHost>

<VirtualHost _default_:443>
    ServerName 【hoge.example.com】
    # ドメイン名を指定します
    CustomLog /var/log/growi/growi_access.log combined 
    ErrorLog /var/log/growi/growi_error.log

#SSL設定
  SSLEngine on
    Protocols h2 http/1.1
  # SSLを有効化します

SSLCertificateFile 【/etc/certs/hoge.example.com.crt】
# SSL証明書を指定します
SSLCertificateKeyFile 【/etc/private/hoge.example.com.key】
# 秘密鍵を指定します

    # Header に Host: example.com を追加するため
    ProxyPreserveHost On
    # HTTPS利用時: Header に x-forwarded-proto: https を追加するため
    RequestHeader set x-forwarded-proto 'https'
    # Apache では static assets で 304 が返らないことがあるので ETag を無効化する
    <ifModule mod_headers.c>
            Header unset ETag
    </ifModule>
    FileETag None

    # socket.io の path を rewrite する
    RewriteEngine On
    RewriteCond %{REQUEST_URI}  ^/socket.io            [NC]
    RewriteCond %{QUERY_STRING} transport=websocket    [NC]
    RewriteRule /(.*) ws://localhost:3000/$1 [P,L]

    ProxyPass / http://localhost:3000/
    ProxyPassReverse / http://localhost:3000/

</VirtualHost>

SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2
SSLCipherSuite          ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:EC6-GCM-SHA384
SSLHonorCipherOrder     off
SSLSessionTickets       off
__EOF__

【】内を自分の環境に変更してください。

  • 設定反映
sudo a2ensite growi.conf
  • コンフィグ確認
sudo apache2ctl configtest

Syntax OKを確認します。

  • Apache2再起動
sudo systemctl restart apache2.service

Growiインストール確認

http://設定したドメイン でアクセスします。

この初期サイトが表示されたらインストール完了です。

2024年1月の連休の差しゲーム。

友人との差しボードゲームはこんな内容です。

ニュースボーイ

インストしながらのプレイではありましたが、かなりサクサク進みました。

1回目は酷い得点差で敗北。2戦目は下のカラーボーナスを狙い、相手はエリアボーナスを埋めていきます。

結果は同点でしたがタイブレーク(ストライキを行った回数)により、勝利。

カム・セイル・アウェイ!

上記、『ニュースボーイ』と同じ作者の作品。カードの偏りがうまくいかない中、客室を埋めていき、

点数は同じ。しかしながら、タイブレークでの敗北という結果になりました。

宝石の煌めき デュエル

二戦連続で行いました。

  • 一戦目:サファイア10点の戦略が決まって勝利。
  • 二戦目:後1手でエメラルド10点が通るという寸前で……
    • 王冠付きのカードを取得される。
    • それにより貴族訪問、効果は「連続ターン」
    • 更に4点のカードが取られ

二戦目、22点を先取され逆転。たった一手での敗北となりました。

実力が伯仲する相手と遊ぶというのは実に良いものです。

Page 2 of 4

Powered by WordPress & Theme by Anders Norén