このシリーズも揃ってきました。

今回入手した丸善コラボのLAMY。色はローズです。


この淡いのに目立つ色は視認性も抜群ですし、こういう撮影にも映えます。

- 比較的入手しやすい価格
- デザインに統一感があり
- コラボや限定などの豊富なバリエーション
- 勝手知ったる書き心地
- スクリュー式でないためにさっと書ける
のはLAMYの強みです。
とても安価なのに書き味がよく、コンバータと組み合わせることで様々なインクを入れることができる万年筆「プレピー」。
シールキャップによりインクの持ちが良かったのが(自分にとって)徒となりました。
調子に乗って本数を増やし、その場のノリでインクを詰めていたので、いざ、インクを補充する時に
「これ、何色を詰めたっけ」
という疑問が湧き起こります。特に、青系のインクは似通っていたので更に迷いました。
そこで、ほとんどのプレピーのインクが尽きたタイミングを見計らって
でした。
分解洗浄後、1週間ほど乾燥させるので作業忘れを懸念。そこで、Redmineでチケットを発行。早速の作業を開始です。
水を入れた容器に浸しつつ、インクを抜いては水をコンバータ内に入れて洗っていきます。定期的に水を交換し、インクの水色がなくなるまで繰り返します。
全てのパーツを分解。
更に超音波洗浄器に入れてこびりついたインクを抜きます。全部で9本あったのでここが一番時間がかかりました。
入念に乾燥。ほぼ1週間をかけました。これで、ようやく準備が整います。
同じ轍を踏まないように、以下、何を詰めたかの記録を行ってからインクを詰めます。
万年筆ボディ | インク色 | 備考 |
---|---|---|
プレピー黒(0.3mm) | 霧雨 | 蜂のシール |
プレピー黒(0.2mm) | 竹炭 | |
プレピー黒(0.2mm) | LAMY黒インク | マステ |
プレピー黄色(0.3mm) | 蛍火 | |
プレピー紫(0.3mm) | 写楽黒茶 | |
プレピー緑(0.3mm) | 竹林 | |
プレピー赤(0.3mm) | 歌麿梅紫 | |
プレピーピンク(0.3mm) | 秋桜 | |
プレピー青(0.3mm) | 深海 |
こうしてできあがったのがこちら。
こういう洗浄は他にも定期的に行いたいものです。
また、こういう風にいくつかのステップがある作業をRedmineのチケットに残すことの重要さを改めて思い知りました。
Redmineのメンテナンスの中で重要となるDBのバックアップは記載しました。
ここでは、それ以外のファイル一式をバックアップするスクリプトを作成することで不測の事態に備えます。
基本的に、以下のファイル群が残っていれば復旧は(理論上)可能です。
sudo mkdir -p /home/backup/redmine
# 運用に合わせて指定ください
sudo chown -R www-data:www-data /home/backup/redmine
# Redmineディレクトリの所有者に設定します
cd /home/backup/redmine && pwd
# 指定したディレクトリに移動します
バックアップから切り戻すとき、作業者はかなり焦るものです。そこで、簡単な手順をバックアップファイル一式に配置しておけばスムーズな復旧を行うことができます。
以下の内容を教義・信仰に沿ったエディタで作成します。(ここでは筆者が用いているテキスト内容です。必要に応じて修正してください)
# Redmine復旧方法
## 前提環境
- Ubuntu 20.04系サーバ
- MySQL 8.3以上
- Apache 2.4系
- Redmineの実行ユーザはデフォルトのwww-data
## 【リストア/移行方法】
### 移行先にRedmineを作成
1. 新たにRedmineサイトを立ち上げます。(移行元と移行先のバージョンは合わせます)
2. リストア先/移行先のdb名/dbユーザはバックアップ元と同じにします。
3. バックアップされたdatabase.ymlを /redmine/config/配下に上書きます。dbパスワードを設定してください。
4. この状態で、Redmineのデータマイグレーションまで行います。
### バックアップされたファイル一式の再配置
- files/ディレクトリ一式は /redmine/配下に上書きしてください。
- plugins/ディレクトリ一式は /redmine/配下に上書きしてください。
- themesディレクトリ一式は /redmine/public/配下に格納してください。
- configuration.yml : (あるなら)/redmine/config/配下に上書き。メールパスワードを設定してください。
- additional_environment.rb : (あるなら)/redmine/config/配下に上書きします。
※ それぞれのディレクトリ/ファイルの所有者を「www-data」にします。
sudo chown -R www-data:www-data /redmine格納ディレクトリ/
> 例 sudo chown -R www-data:www-data /var/lib/redmine
### プラグインのDBマイグレーション
1. redmineを配置したディレクトリに移動します。(例; cd /var/lib/redmine/
2. 以下のコマンドを発行して、プラグインのマイグレーションを行います。
sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production
### プラグインマイグレーション後のApache再起動
1. 以下を実施してWebサービスを再起動します。
sudo systemctl restart apache2.service
### DBのリストア
1. 別途、バックアップしたRedmineのsqlファイルを移行先サーバの任意のディレクトリに転送します。
2. 以下のコマンドを発行して、DBをリストアします。
mysql -u redmineのdbユーザ -p redmineのdb名 < バックアップしたsql
> 例 mysql -u redmine -p redmine < redmine_backup
### DBリストア後のApache再起動
1. 以下を実施してWebサービスを再起動します。
sudo systemctl restart apache2.service
### 動作確認
移行先(または復旧した)Redmineのホストにブラウザでアクセスし、バックアップした時の状態になっているかを確認します。
以下の内容を教義・信仰に沿ったエディタで作成します。
#!/bin/bash
### ▼ここからはスクリプトの変数を定義します。""の記述は自身の環境に合わせて修正ください。▼ ###
# バックアップ先のディレクトリを指定します。
backup_dir="/home/backup/redmine"
# バックアップ元のRedmineが格納されているディレクトリを指定します。
redmine_dir="/home/www-data/redmine"
# ファイルに付与する日付/作業ディレクトリ名/バックアップファイル名を指定します。
current_date=$(date +%Y%m%d)
backup_name="redmine_backup_${current_date}"
zip_file="redmine_backup.${current_date}.zip"
# 保存する日数を指定します。(ここでは3日にします。)
retention_period=3
### ▲変数はここまでです▲ ###
# 一時的なバックアップディレクトリを作成します。
mkdir "${backup_dir}/${backup_name}"
# # Redmineのユーザデータ/プラグイン/テーマをバックアップディレクトリにコピーします。
cp -R "${redmine_dir}/plugins" "${backup_dir}/${backup_name}"
cp -R "${redmine_dir}/files" "${backup_dir}/${backup_name}"
cp -R "${redmine_dir}/public/themes" "${backup_dir}/${backup_name}"
# マイグレーション時に必要となるdatabase.ymlをコピーします。この時、パスワードが書かれている行をマスクします。
cp $redmine_dir/config/database.yml $backup_name
sed -i 's/password:.*/password: "type your db password"/' $backup_name/database.yml
# メール設定などでconfiguration.ymlを設定している場合、これもコピーします。(存在しない場合はコピーしません)
# 同様にパスワードが書かれていたらその行はマスクします。
if [ -f $redmine_dir/config/configuration.yml ]; then
cp $redmine_dir/config/configuration.yml $backup_name
sed -i 's/password:.*/password: "type your password"/' $backup_name/configuration.yml
fi
# プラグイン設定などでadditional_environment.rbを設定している場合、これもコピーします。(存在しない場合はコピーしません)
if [ -f $redmine_dir/config/additional_environment.rb ]; then
cp $redmine_dir/config/additional_environment.rb $backup_name
fi
# スクリプトと同じディレクトリにあるhow_to_restore.txtをバックアップディレクトリに流し込みます。(存在しない場合はコピーしません)
if [ -f $backup_dir/how_to_restore.txt ]; then
cp $backup_dir/how_to_restore.txt $backup_name/how_to_restore.md
fi
# バックアップディレクトリをzip形式で圧縮します。
cd "${backup_dir}"
zip -r "${zip_file}" "${backup_name}"
# 一時的なバックアップディレクトリを削除します。
rm -rf "${backup_dir}/${backup_name}"
# 上記retention_periodで指定した日数前のバックアップしたzipファイルを削除します。
find "${backup_dir}" -type f -name "redmine_backup.*.zip" -mtime +"${retention_period}" -delete
chmod +x redmine_daily_backup.sh
sudo -u www-data bash redmine_daily_backup.sh
# 管理者権限で実行する場合は sudo bash redmine_daily_backup.sh
以下を確認します。
sudo crontab -e -u www-data
# 管理者が実行する場合は sudo crontab -e -u root
5 0 * * * /home/backup/redmine/redmine_daily_backup.sh
# 実行時刻、頻度などは自分の運用形態に合わせます。
sudo tail -20 /var/log/cron.log
操作時刻に
が表示されれば設定は完了です。
2023/02/08
ふと思い立っての検証です。
別サイトに記載しているRedmine4.2のインストール手順。
https://atelier.reisalin.com/projects/zettel/knowledgebase/articles/19
この手順で「Redmine 5.0を設定できるか?」と思い立ち、検証用のまっさらなUbuntu 20.04を用意しました。
以下を設定しています。
上記のリンクの手順に沿いました。異なっている点は、Redmine 5.0をダウンロードするため、
sudo -u www-data svn co https://svn.redmine.org/redmine/branches/5.0-stable /home/www-data/redmine
としただけです。
無事にRedmine5.0が動き、以下の参照どおりにSSLを設定。
https://atelier.reisalin.com/projects/zettel/knowledgebase/articles/20
これで試しにと思いましたが、
「どうしても使いたいプラグインがRedmine 5.0に対応していない」事情により継続利用は無理だと断念。特に
の2つが利用できないのは非常に痛い状況でした。
そこで、インストールしたばかりのRedmine5.0を4.2に即座に戻すことにします。
この手順は、データが全く入っていない状況で可能な作業です。「こんな手法を採ったのがいる」程度に参照ください。
sudo systemctl stop apache2.service
#これを行わないと後述のDBが消去できません
sudo mysql -u root -p
DROP DATABASE redmine;
# DBを削除します
CREATE DATABASE redmine character set utf8mb4;
# DB "redmine" を再作成します
exit
sudo rm -rf /home/www-data/redmine
# Redmineを配置したディレクトリごと削除します
sudo -u www-data svn co https://svn.redmine.org/redmine/branches/4.2-stable /home/www-data/redmine
# 設定したときと同じディレクトリに4.2を再配置します
sudo cp -pi /home/www-data/redmine/config/database.yml.example /home/www-data/redmine/config/database.yml
sudo vi /home/www-data/redmine/config/database.yml
# 教義・信仰に従ったエディタで編集してください。
production:
adapter: mysql2
database: redmine
host: localhost
username: redmine
# rootからredmineに変更します
password: "redmine用のパスワード"
encoding: utf8mb4
# 本番環境(production)のみ設定を行います
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上でRedmineを動かす手はずは整っており、プログラムの実行ディレクトリも同じ。ならば、設定ファイルは修正せずに済むという判断のもとに実行。
sudo apache2ctl configtest
# Syntax OK を確認します
sudo systemctl restart apache2.service
systemctl status apache2.service
http://設定したRedmineドメイン
でRedmineのトップページが表示されれば成功です。
検証段階だからこそ行えた手荒な手段でした。
こちらの記事を2023年2月時点での運用に併せ、以下、修正しました。
Redmineのメンテナンスの中で、「データベースのバックアップ」は非常に重要なものです。
そこで、改めて、シェルスクリプトとCronによるバックアップ手順を整理しました。
mysql -u root -p
これを行わないとDump処理ができませんでした。
GRANT RELOAD ON *.* TO '【RedmineのDBユーザ】'@'localhost';
FLUSH PRIVILEGES;
EXIT
sudo mkdir -p /home/backup/mysql
# 運用に合わせて指定ください。ファイルサーバや別パーティションにマウントしている方がサーバ事態の障害発生でも冗長化を持たせられます。
sudo chown -R hoge:hoge /home/backup/mysql
# ディレクトリの所有者をログインユーザに修正します
cd /home/backup/mysql && pwd
# 指定したディレクトリに移動します
※このファイルを作成しないと、「安全ではない」とエラーが出ます。
以下の内容を教義・信仰に沿ったエディタで作成します。(【】内は取り除き、自分の設定に合わせます)
[client]
user = 【RedmineのDBユーザ】
password = "【RedmineのDBユーザ用パスワード】"
mysql --defaults-extra-file=account.txt
MySQLのプロンプトが出れば成功です。exitで抜けます。
以下の内容を教義・信仰に沿ったエディタで作成します。
#!/bin/bash
# スクリプトの日付形式を定義します
date=$(date +"%Y%m%d")
# バックアップディレクトリを定義します
# 上記手順で示したディレクトリを指定してください
backup_dir="/home/backup/mysql"
# アカウントファイルを指定します
credentials_file="$backup_dir/account.txt"
# バックアップ時に指定するオプションを定義します
options="--defaults-extra-file=$credentials_file --no-tablespaces --single-transaction"
# バックアップファイル名を定義します
backup_file="$backup_dir/redmine.sql.$date.gz"
# バックアップを実行し、.gz形式でバックアップをします
mysqldump $options -h localhost redmine | gzip > $backup_file
# 10世代前の圧縮ファイルを削除します(運用に合わせて指定ください)
find $backup_dir -type f -name "redmine.sql.*.gz" -mtime +10 -delete
chmod +x mysql_daily_backup.sh
sh mysql_daily_backup.sh
以下を確認します。
crontab -e
0 0 * * * /home/backup/mysql/mysql_daily_backup.sh
# 実行時刻、頻度などは自分の運用形態に合わせます。
sudo tail -20 /var/log/cron.log
操作時刻に
が表示されれば設定は完了です。
2023/02/08
Redmineの検索機能を強化するプラグインを導入し、検索効率を上げます。
こちらは、Redmineのプラグイン「knowledgebase」の検索対象ではありません。なので、このプラグインを利用している場合の導入は非推奨です。
(現に、それが分かってアンインストールしました)
sudo aptitude install-V software-properties-common lsb-release
sudo add-apt-repository universe
# LinuxMintの場合は実施不要
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu $(lsb_release --short --codename)-security main restricted"
sudo add-apt-repository ppa:groonga/ppa
sudo aptitude update
sudo aptitude install -V mysql-server-mroonga
sudo systemctl restart mysql.service
sudo systemctl status mysql.service
# active (running)を確認します
cd /home/www-data/redmine/plugins && pwd
# 自分の環境に合わせます。
sudo -u www-data git clone https://github.com/clear-code/redmine_full_text_search
ls -ld redmine_full_text_search
# このディレクトリがあることを確認します
cd /home/www-data/redmine && pwd
# 自分の環境に合わせます。
sudo -u www-data bundle install
sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production
sudo systemctl restart apache2
Redmienの検索から、入力したことがある単語を検索しましたが何も引っかかりません。
プラグインのGithubで以下を確認しました。
You need to create index for existing data. You need to run full_text_search:synchronize task until no more synchronize target data.
これに対応します。
cd /home/www-data/redmine && pwd
# 自分の環境に合わせます。
sudo -u www-data RAILS_ENV=production bin/rails full_text_search:synchronize
# 容量によっては時間がかかります
インデックス作成後、再度、入力したことがある単語を入力して検索します。
全文検索は非常にうまくいきましたが、ここで問題発生。
プラグイン「knowlegebase」で作成した記事が検索対象に出てこないのです。
これを検索対象に含めるにはプラグインのファイルを追加する必要がありそうですが、2023年2月時点ではそこまでの技量はなく。
やむなく(というか泣く泣く)アンインストールしました。
cd /home/www-data/redmine && pwd
# 自分の環境に合わせます。
sudo -u www-data bundle exec rake redmine:plugins:migrate NAME=redmine_full_text_search VERSION=0 RAILS_ENV=production
cd plugins
sudo rm -rf redmine_full_text_search
ls -ld /home/www-data/redmine/plugins/redmine_full_text_search
# 削除したディレクトリが存在しないことを確認します
sudo systemctl restart apache2.service
再起動後、Redmineが正常に稼働することを確認してknowlegebaseの記事が検索できることを確認しました。
確認しましたが、非常に不本意な結果となりました。
2023/02/06
2月4〜5日の週末は文具のメンテナンスに集中していました。
まずはメインで使っているLAMY Safari / Al-starのインク補充。最後に補充したのが1月の中頃でしたので、ほぼすべてのインクが空になっている状態。
一気に補充を行い、どの色でも安定して書けるようになっています。
コンバータ搭載のプレピー。これはサブで使っていることとインクの持ちが抜群に良いために新たな問題が生まれました。
「どの色にどのインクを補充したかを忘れてしまう」という状況。なので、以下を行いました。
然る後に「どの色のインクを補充したかをメモ」していきます。
Wikipediaによれば:
「文房具(ぶんぼうぐ)、文具(ぶんぐ)、ステーショナリー(英: stationery)とは、仕事場やオフィス、学校などにおいて情報の処理・記録・伝達などのために備えられる道具類をいう」 とのこと。
wikpedia
この定義に従えば、自分が普段用いているパソコン(サーバに至るまで)も「文房具」です。
そこで、デスクトップ周りを再整備。サウンドバーを置けるだけのスペースが生まれました。
設定やメモなど、ハマりポイントは結構な頻度で発生します。
そこで、あらかじめQ & A形式のメモで残せるようなプラグインをRedmineに導入します。(利用例)
メール登録が必要ではありますが無料(light version)です。
プラグインのダウンロード:要
Gem追加:要
DBマイグレーション:要
https://www.redmineup.com/pages/ja/plugins/questions
安全性が担保されるのであれば任意の方法を選びます。
ターミナルクライアントで作業をします。
cd /path/to/saved/directory/
# プラグインを保存したディレクトリに移動します。
unzip redmine_questions-1_0_4-light.zip
# 2023/02/05現在のバージョンです
sudo chown -R www-data:www-data redmine_questions
sudo mv redmine_questions /home/www-data/redmine/plugins/
# 自分の環境に合わせます。
ls -ld /home/www-data/redmine/plugins/redmine_questions
# ディレクトリがあることとファイルの所有権がwww-dataであることを確認します。
cd /var/lib/redmine/
# 自分の環境に合わせます。
sudo -u www-data bundle install
sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production
sudo systemctl restart apache2
Webサービスの運用時、「誰がいつどこにアクセスしたか」を判別するアクセスログはとても重要なものです。
ではありますが、Webアクセス解析時に自分のアクセスログが邪魔になるケースがありました。
そこで、Apacheの設定ファイルで特定のアクセス元からのログを残さないようにしました。
ほぼ全てSSHクライアントターミナルからの操作です。
sudo cp -pi /etc/apache2/sites-available/sites.conf /path/to/backup/directory/sites.conf.$(date +%Y%m%d)
# 自分が設定しているバーチャルサイトのコンフィグ / バックアップディレクトリに合わせます。
diff -u /etc/apache2/sites-available/sites.conf /path/to/backup/directory/sites.conf.$(date +%Y%m%d)
# 差分が無いことでバックアップが取れていることを確認します。
sudo vi /etc/apache2/sites-available/sites.conf
# 教義・信仰に従ったエディタで編集してください。
ここでは、以下の設定とします。
# 以下のIP/NWはアクセスログに記録させません
SetEnvIf Remote_Addr "192.168.1.11" dontlog
SetEnvIf Remote_Addr "^192\.168\.2\." dontlog
CustomLog /var/log/redmine/access.log combined env=!dontlog
保存後、以下のような差分を確認します。
diff -u /path/to/backup/directory/sites.conf.$(date +%Y%m%d) /etc/apache2/sites-available/sites.conf
+ # 以下のIP/NWはアクセスログに記録させません
+ SetEnvIf Remote_Addr "192.168.1.11" dontlog
+ SetEnvIf Remote_Addr "^192\.168\.2\." dontlog
- CustomLog /var/log/redmine/access.log combined
+ CustomLog /var/log/redmine/access.log combined env=!dontlog
sudo apache2ctl configtest
# Syntax OKを確認します。
systemctl status apache2.service
# active (running)を確認します。
sudo systemctl restart apache2.service
systemctl status apache2.service
# active (running)を確認します。
tail -f /var/log/redmine/access.log
# 自分の環境(設定したアクセスログ)に合わせます。
※別ターミナルで開きます。
tail -f /var/log/redmine/error.log
# 自分の環境(設定したエラーログ)に合わせます。
その間、以下をターミナルで開いたアクセスログ/エラーログで確認できれば設定は完了です。
Powered by WordPress & Theme by Anders Norén