はじめに
一人で試験運用するにあたってtestuserとかaaとか意味不明な名前で作った大量のユーザーページが、ユーザー削除後もページツリーの/user/以下に残り続け、管理者権限をもってしても削除のボタンを見つけられなかった。
そこで今回は仕方なく、mongodbから直接ユーザーページを削除する事とした。
当然、正規の削除方法ではないため、問題が発生した場合に当方では責任を負う事ができないので、システムバックアップのうえ自己責任で実行すること。
GROWI上からユーザーページを削除する方法があったら教えてください。助けてください。
環境
- Growi: v5.1.0
- mongodb: v4.4
- docker-composeによる構築
方法
- mongoイメージ(v5.1.0ではgrowi_mongo_1という名前)のbashを起動
sudo docker exec -it growi_mongo_1 /bin/bash
- mongoにアクセス
mongo
- growidbに切り替え
use growi;
- 削除したいユーザーページを検索
db.pages.find( { path : { $regex : '^/user/testusername' } }, { path : 1 } );
- 表示内容に相違がなければ削除
db.pages.remove( { path : { $regex : '^/user/testusername' } }, { path : 1 } );
- 削除したページ数に応じて/userのdescendantCount(ページツリーに書かれている子孫のカウント数)を減らした値を追記
db.pages.find( { path : { $regex : '^/user$' } } , { descendantCount : 1 } )
db.pages.update( { path : { $regex : '^/user$' } } , { $set : { descendantCount : newCountValue } } )
ユーザーページの検索コマンドについて
正規表現で『/user/testusername』から始まる(^←この記号)ページを検索している
終わりに
最初に書いたように、正式なやり方ではないと思うので自己責任でお願いします。
前回から紆余曲折がありラズパイ4BでGROWIを運用するの諦めました。
2万くらいでミニPC買いました。(どうせラズパイとSDとケースと…と揃えるとそこそこの値段かかること思えば大差ない出費な気がします)
記憶にある範囲でなんともならなかったのはElasticsearchの検索機能でした。
一つ試す度にビルドに時間がかかるラズパイで試す事ではないな、という理由で諦めました。
このミニPCを2万円弱で買ったのですが、ラズパイと比べるとGROWIのビルドが瞬間で終わるので、ストレスフリーです。
(ただし、標準で入っていたWindowsは11に上げたせいか滅茶苦茶遅かったです。Debianは神)
ついでに所内のTerastationと同じUPSに繋いでNUTの設定したり、時折死ぬVPNの代わりにSSHを外向けに発信したりするようにしました。
(事務所に割り当てられたIP次第でVPN接続できない事がある様子なんですが、そういう事ってあるんですかね…。SSHはVPNダメでも行けました。L2でなにかプロバイダが考え事をしている?)
現状は概ね満足のいく状態で運用できているつもりですが、GROWIのlsxはPukiwikiのlsxと違ってincludeオプションがないようなので、この辺を改造したいなあなどと考え中…。
manifestでキャッシュ参照しがちなのか、bundle.jsを適当に書き換えて反映させるためにシークレットウィンドウを開くのが面倒くさい…。
そもそもbundle.jsを書き換えるのが間違っている…。
トランスパイルよく分からない…。
乱文失礼しました。