ハリー・ポッター スタジオツアーでの収穫は、山のようでした。

その中でも際立っているのがこちら。
ワンド

一番人気のアイテム、ワンド。
作中のキャラクター、杖職人オリバンダー翁が「杖が人を選ぶ」の言葉の通り、手に取ってしっくりくるものをチョイス。
一番自分の手に馴染んだのはスタジオツアー限定の「スリザリンのロケット」を模したワンドでした。
文具

文具系は、いくらあっても困らないマスキングテープと


スリザリンのボールペン。普段は万年筆を使うとは言え、使う機会はあります。
Redmine 4.2では断念しましたが、5.1では有用なプラグインとなるので、こちらの手順化です。
Redmineの検索機能を強化するプラグインを導入し、検索効率を上げます。
sudo aptitude install-V software-properties-common lsb-release
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
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
プラグインの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
容量によっては時間がかかります。
インデックス後、ブラウザでRedmineにアクセスし、検索できることを確認します。
上記インデックス作成は既存データに対して用いるものであり、本プラグイン導入後は自動的に同期してくれるようです。
Nextcloud 28.x以降にバージョンアップしてから、ログで以下が大量に出力され続けていました。
Array to string conversion at /var/www/html/nextcloud/lib/private/Files/Cache/Scanner.php#224
こちらの対処を行います。
詳細:Nextcloud Hub 8, copying files to an External Storage configured as primary storage isn't reliable
上記issueに
Pretty sure this would be fixed by #43794. At least in my limited testing using the merge request as a patch: https://patch-diff.githubusercontent.com/raw/nextcloud/server/pull/43794.diff
とあったので、この通りに実施します。
sudo su -
Nextcloudはwww-dataユーザーのみアクセス可能と、厳しめのアクセス権が設定されているので、ここで昇格させます。
cd /var/www/html/nextcloud && pwd
自分の環境に合わせます。
cd lib/private/Files/Cache
cp -pi Scanner.php /path/to/backup/directory/Scanner.php.$(date +%Y%m%d)
任意のバックアップディレクトリを指定します。
diff -u Scanner.php /path/to/backup/directory/Scanner.php.$(date +%Y%m%d)
差分がなければバックアップは成功です。
sudo -u www-data https://patch-diff.githubusercontent.com/raw/nextcloud/server/pull/43794.diff
sudo -u www-data patch < 43794.diff
patching file Scanner.php
と返ってくればOKです。
diff -u /path/to/backup/directory/Scanner.php.$(date +%Y%m%d) Scanner.php
}
// Only update metadata that has changed
- $newData = array_diff_assoc($data, $cacheData->getData());
-
+ // i.e. get all the values in $data that are not present in the cache already
+ // NOTE: we serialize then unserialize here because array_diff_assoc() doesn't
+ // support multidimensional arrays on its own (and otherwise internally casts any
+ // embedded array elements to attempt to compare them - not only generating warnings
+ // like "Array to string conversion" but also, as a resut, overlooking real differences)
+ $newData = array_diff_assoc(
+ array_map('serialize', $data),
+ array_map('serialize', $cacheData->getData())
+ );
+ $newData = array_map('unserialize', $newData);
+
// make it known to the caller that etag has been changed and needs propagation
if (isset($newData['etag'])) {
$data['etag_changed'] = true;
systemctl restart apache2.service
既にrootに昇格しているので、sudoは不要のはずです。
rm 43794.diff
脆弱性などに対応するため、同一系統のRedmineのバージョンアップ手順、その5.1版での書き直しです。
以下が必須です。
万一に備え、システム全体のバックアップを取ることを推奨します。AWSや仮想サーバ等の場合は、インスタンスをまるごとバックアップしておくと良いでしょう。
cd /hoge
任意のバックアップディレクトリを指定します。
mysqldump -h localhost -u redmine -p --no-tablespaces --single-transaction redmine > redmine_backup.$(date +%Y%m%d).sql
DB名やDBユーザは自分の環境に合わせます。
cd /home/www-data && pwd
Redmineが格納されているディレクトリの親ディレクトリに移動します。筆者環境は/home/www-dataなので、自分の環境に合わせます。
ls -ld redmine
退避対象のディレクトリがあることを確認します。
sudo mv redmine redmine_$(date +%Y%m%d)
ls -ld redmine_$(date +%Y%m%d)
ファイルがあることを確認します。
ここでWebサービスを停止するのは、DBを削除するためです。
systemctl status apache2.service
active(running)を確認します
sudo systemctl stop apache2.service
systemctl status apache2.service
inactive(dead)を確認します
この作業は慎重に行って下さい。
sudo mysql -u root -p
SHOW DATABASES;
redmineのDBがあることを確認します。
DROP DATABASE redmine;
DB名は再確認してください。
SHOW DATABASES;
RedmineのDBがないことを確認します。
CREATE DATABASE redmine character set utf8mb4;
同じDBを作り直します。
SHOW DATABASES;
作成したDBがあることを確認します。
EXIT
sudo mkdir /home/www-data/redmine
自分の環境に合わせます。
sudo chown -R www-data:www-data /home/www-data/redmine
sudo -u www-data svn co https://svn.redmine.org/redmine/branches/5.1-stable /home/www-data/redmine
5.1系の最新安定版をダウンロードします
sudo cp -pi /home/www-data/redmine_$(date +%Y%m%d)/config/database.yml /home/www-data/redmine/config/database.yml
コピー元・コピー先は自分の環境に合わせます。
cat /home/www-data/redmine/config/database.yml
コピーされていることを確認します。
sudo cp -pi /home/www-data/redmine_$(date +%Y%m%d)/config/configuration.yml /home/www-data/redmine/config/configuration.yml
コピー元・コピー先は自分の環境に合わせます。
cat /home/www-data/redmine/config/configuration.yml
cd /home/www-data/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
systemctl status apache2.service
inactive(dead)を確認します
sudo systemctl start apache2.service
systemctl status apache2.service
active(runnning)を確認します
対象のRedmineにアクセスします。
IDとパスワードがadmin / admin に戻っている状態のため、ログイン後、仮パスワードを発行します。
cd /home/www-data/redmine_$(date +%Y%m%d)/plugins
sudo cp -pir ./* /home/www-data/redmine/plugins/
cd /home/www-data/redmine_$(date +%Y%m%d)/public/themes
sudo cp -pir ./* /home/www-data/redmine/public/themes/
いくつかのファイルを上書きするか求められるので、yで返します。
cd /home/www-data/redmine_$(date +%Y%m%d)/files
sudo cp -pir ./* /home/www-data/redmine/files/
cd /home/www-data/redmine_$(date +%Y%m%d)/log
sudo cp -pir ./* /home/www-data/redmine/log/
cd /home/www-data/redmine
sudo -u www-data bundle install
sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production
systemctl status apache2.service
active(running)を確認します
sudo systemctl restart apache2.service
systemctl status apache2.service
active(runnning)を確認します
cd /hoge && pwd
mysql -h localhost -u redmine -p redmine < redmine_backup.$(date +%Y%m%d).sql
パスワードはredmineインストール時に設定したDBユーザのパスワードです。
systemctl status apache2.service
active(running)を確認します
sudo systemctl restart apache2.service
systemctl status apache2.service
active(runnning)を確認します
この状態でRedmineに管理者権限でログインします。手順通りなら
などが有効に動いています。
また、管理>情報へと進み、バージョンが上がっていることを確認します。
cd /home/www-data
自分の環境に合わせます。
ls -ld redmine_$(date +%Y%m%d)
ディレクトリがあることを確認します。
sudo rm -rf redmine_$(date +%Y%m%d)
ls -ld redmine_$(date +%Y%m%d)
ディレクトリが無いことを確認します。
cd /hoge && pwd
ls -l redmine_backup.$(date +%Y%m%d).sql
ファイルがあることを確認します。
rm redmine_backup.$(date +%Y%m%d).sql
ls -l redmine_backup.$(date +%Y%m%d).sql
ファイルが無いことを確認します。
Redmineはバージョンさえ合っていれば
を移行することで、別のサーバへの引っ越しが可能になります。
Redmineに強力なマクロをもたらすAdditonal Pluginsとタグ付けでチケット間の横断検索を可能にするAdditional_tagsプラグインをアップデートします。
で稼働しています。
※このプラグインの2024/04/30現在の最新バージョンは、Redmine 4.2には非対応です※
影響範囲が大きいので、DBのバックアップは取っておきます。
cd /path/to/backup/directory && pwd
任意のディレクトリを指定します。
mysqldump -h localhost -u redmine -p --no-tablespaces --single-transaction redmine > redmine_backup.$(date +%Y%m%d).sql
です。自分の環境に合わせます。
less redmine_backup.$(date +%Y%m%d).sql
内容が閲覧できることを確認します。
cd /home/www-data/redmine/plugins/additonals && pwd
Redmineのプラグインディレクトリは自分の環境に合わせます。
sudo -u www-data git pull
cd ../../ && pwd
sudo -u www-data bundle install
sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production
sudo systemctl restart apache2.service
cd /home/www-data/redmine/plugins/additional_tags && pwd
Redmineのプラグインディレクトリは自分の環境に合わせます。
sudo -u www-data git pull
cd ../../ && pwd
sudo -u www-data bundle install
sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production
sudo systemctl restart apache2.service
additonal_tagsがadditonalsに依存しているプラグインのため、安全策として1回ずつ再起動しています。
Redmineに管理者権限でログインし、正常に動作することを確認できれば動作完了です。
Nextcloudを29.0にアップデート後、管理画面で以下のエラーが出てきました。
データベースにいくつかのインデックスがありません。 大きなテーブルにインデックスを追加すると、自動的に追加されないまでに時間がかかる可能性があるためです。 "occ db:add-missing-indices"を実行することによって、インスタンスが実行し続けている間にそれらの欠けているインデックスを手動で追加することができます。 インデックスが追加されると、それらのテーブルへのクエリは通常はるかに速くなります。 オプションのインデックス "oc_npushhash_di" がテーブル "notifications_pushhash"にありません
この問題に対処していきます。
Nextcloudが実行されているサーバにSSHログインして作業を行います。
cd /var/www/html/nextcloud/ && pwd
自分の環境に合わせます。
sudo -u www-data php occ db:add-missing-indices
Adding additional oc_npushhash_di index to the oc_notifications_pushhash table, this can take some time...
oc_notifications_pushhash table updated successfully.
バックアップスクリプトなどでMySQLにログインして処理を行う場合のTIPSです。
何かと使うのでメモに残します。
sudo mkdir -p /home/hoge/db_password
運用に合わせて指定ください。
cd /home/hoge/db_password && pwd
指定したディレクトリに移動します
以下の内容を教義・信仰に沿ったエディタで作成します。(【】内は取り除き、自分の設定に合わせます)
[client]
user = 【RedmineのDBユーザ】
password = "【RedmineのDBユーザ用パスワード】"
password は""で囲みます。
chmod 400 account.txt
ls -l account.txt
パーミッションが400であることを確認します。
mysql --defaults-extra-file=/path/to/directory/account.txt
--defaults-extra-file=
は、アカウントファイルの絶対パスです。
ログインできることを確認します。
SHOW DATABASES;
アカウントの権限で指定されたDBの表示を確認します。
EXIT
MySQLから抜けます。
mysqldump --defaults-extra-file=/path/to/directory/account.txt --no-tablespaces -h [DBサーバ] [DB名] > backup.sql
--no-tablespaces
はPROCESS特権がないユーザでもダンプできるようにするためです。ls -l backup.sql
ファイルの内容にDBがあれば成功です。取り扱いには慎重を期してください。
これを使わずとも、Ubuntu 22.04にはapt(aptitude)からインストール可能でした。
場合に役立つコマンド、mkcertをインストールします。
sudo aptitude install mkcert
mkcert -install
ls -l ~/.local/share/mkcert/
rootCA-key.pem
→ 秘密鍵rootCA.pem
→ ルート証明書ファイル /etc/hosts
をルート顕現で、以下のように修正します。
127.0.0.1 agnes-luce
※ Ubuntu系はホスト名に指定したIPがなぜか127.0.1.1
になっています。
cd /hoge && pwd
任意のディレクトリに移動します。
mkcert -key-file ドメイン名.key.$(date +%Y%m) -cert-file ドメイン名.crt.$(date +%Y%m) ドメイン名
mkcert -key-file agnes-luce.key.$(date +%Y%m) -cert-file agnes-luce.crt.$(date +%Y%m) agnes-luce
Created a new certificate valid for the following names 📜
- "agnes-luce"
The certificate is at "agnes-luce.crt.202404" and the key at "agnes-luce.key.202404" ✅
It will expire on 14 July 2026 🗓
openssl x509 -pubkey -in 証明書ファイル -noout | openssl md5
openssl pkey -pubout -in 秘密鍵ファイル | openssl md5
それぞれのハッシュ値が同じであることを確認します。
こうしてできた一式は2年半有効です。
こちらの記事を、現在の自分の手順書の基準に直しました。
こうしてできたのがこちら。
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
sudo aptitude install libapache2-mod-passenger
apache2ctl -v
Apache/2.4.59
以降であることを確認します。2.4.58には、http/2プロトコルへの脆弱性があるので、左記のバージョンであることを確認します。
sudo gem install bundler racc mysql2
「3 gems installed」が表示されればインストール成功です。
mysql_secure_installationによる初期設定を行います。
うまくいかない場合は以下を参照してください。
https://barrel.reisalin.com/books/bbf94/page/mysql-secure-installation
sudo 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';
flush privileges;
exit
mysql -u redmine -p
SHOW DATABASES;
exit
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
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
このファイルを教義・信仰に従ったエディタで編集してください。
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
【】を自分の作成したRedmineのサーバ名/ドメイン名に変更します。
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 を確認します
systemctl status apache2.service
active(running)を確認します
sudo systemctl restart apache2.service
systemctl status apache2.service
active(running)を確認します
http://設定したRedmineドメイン
でRedmineのトップページが表示されれば成功です。
直ちにadmin/adminでログインし、強固なパスワードを設定し直します。
Powered by WordPress & Theme by Anders Norén