最近興味半分で「Grav」というCMSを使い始めた
使い続けるかどうかはわからないけれど、Markdown形式でコンテンツが保存される「Grav」というCMSの利用を始めた。
たぶん読み方は ぐらぶ。
グラブって言ったら”grub”をぱっと思い浮かぶ人もいるかもしれない。ようこそLinuxの世界へ。
WordPressは動作にデータベースが必要なのに対し、Gravはデータベース不要で動くCMS(シーエムエス)、Contents Management System(コンテンツマネージメントシステム)だ。
うまく説明できないけど、WordPressに比べシンプルで速い
WordPressは自由度が高い、プラグインも豊富、WordPressの有名さに比べたら耳カスみたいなものだけど、愛したいCMSの一つ。
今回Gravを利用することにした理由は、コンテンツをMarkdown(マークダウン)形式で管理しながら、BackLogのgitリポジトリで管理したかったから。Markdownなので、修正点がシンプルに確認できるのもいいところだと思っている。ただ、git連携した際に誰の修正かを見分けるためにGrav上での作業者を別々にしたかった。
Grav管理画面からGravへユーザの大量追加ができない
デフォルトではWordPressみたいにポチポチでユーザの追加ができない。
GUIでの操作を可能にするプラグイン「Admin Addon User Manager」があるが、これを利用する場合大量にユーザを追加する場合操作が大変。
ユーザを追加した後の管理は便利なので、ぜひプラグイン管理画面から追加しておきたいものであることには違いはない。
今回は大量のユーザを追加したいのでSSHでサーバに接続しコマンド操作にてユーザの追加を行う。
今回はConohaWINGレンタルサーバ上に用意している環境だったため、SSH接続が行える環境で助かった。これ後からわかってSSHできない環境だったら面倒くさいね。
最近のレンタルサーバは便利ね
ちなみにVPSやEC2などのサーバを多く触るが、サクッとドメイン追加してSSL対応できて、しまいにはWordPressならボタン一つでインストールできてしまい、同時にDBの設定をしてくれるような最近のレンタルサーバは、ちょろっとした用途にはとてもおすすめ。しかも、メールも使えて、ウイルス/スパム対策も同時についてくるわけです。なんだったらバックアップ機能とかcronの操作などもコンパネからできちゃうから、お勧めかもしれない。もう個人でroot権限を持ったサーバなんて持たなくていい時代なのかもしれない。うん。
Grav管理画面のURLを変更する
Gravをインストールした後だと、デフォルトで「/admin」が管理画面へのログイン画面となる。
「/admin」は平凡すぎて攻撃の対象になりかねないので、これを変更する。ちなみに、ユーザログイン多要素認証(MFA)も利用できるので、MFAの設定をお勧めする。
下記コマンドで、admin.yamlファイルをコピーし、コピー先のファイルの中の「route: ‘/admin’」を変更する
もしかしてコマンド以外での変更方法もあるかもしれないんだけど、うん。
参考:Custom Admin URL
https://learn.getgrav.org/16/admin-panel/faq#custom-admin-url
Gravへのユーザの追加
Gravのサイトを参考にすると、「bin/plugin login newuser」で登録ができるとなっているが、「bin/plugin」はPHPファイルのため、たいていの環境では「php bin/plugin login newuser」と実行する必要があると思われる。
実際にユーザを追加してみましょう。
参考:Addmin and Managing Users
https://learn.getgrav.org/16/admin-panel/faq#adding-and-managing-users
php bin/plugin login newuser
この方法をとると、対話式にユーザの追加を行うことができるが、大量のユーザを登録する場合には、用意されている色々なオプションを利用するとよいと思う。この点は後述する。
なお、上記赤字「Password does not pass the minimum requirements」については、Gravが定めるパスワード条件を満たさないと表示される。
パスワードの条件は「system/config/system.yaml」の「pwd_regex」を変更することでカスタマイズ可能だが、デフォルトでは英字大文字小文字数字を1つ以上含む8桁以上とされている。
コマンドで追加しただけでは管理画面でのアクセス制御ができない
今回はサイトアクセスを追加しただけなので、管理者画面での操作が可能な権限を追加したい。
前の手順で「Admin and site Access」を選択していないので管理者画面には入れない。
管理画面に入れるように設定したとしても、なにからなにまで操作されてしまうと困っちゃう。
なので、ユーザ設定情報を編集して権限を追加する。
参考:Managing ACL
https://learn.getgrav.org/16/admin-panel/faq#managing-acl
追加されたユーザ情報は「user/accounts/ユーザ名.yaml」に追加される。
冒頭で言及した「Admin Addon User Manager」を使えば管理画面からもポチポチ設定変更が可能であるが、対象が大量にいる場合、ぽちぽちして眠くなっちゃうので上記ユーザ.yamlファイルに下記赤字を追加する。
viでもいいけどsedとechoで追加もできる。大量に追加する場合は、下記方法が良いかもしれない。
対象のファイルの中で「login: true」となっている下に設定を追加するsedコマンドとファイルの末尾にlanguageを追加している。
whileでぶん回すなら管理アカウント用のyaml以外のyamlファイルを探してそいつを対象に処理すればよい。
管理ユーザ名が「admin」の場合、admin.yamlを除いたその他のyamlファイルに対してwhileで処理を行う。
なお、上記のパーミッションについてはGravのFAQ「Managing ACL」を参照して設定する。
最後に記載している「language: ja」は、管理画面を日本語で利用しますーの設定であるが、参考サイトが無い。
Grav管理画面から言語を設定した際に追加される文字列を確認して、上記の通り参考として記載した。
php bin/plugin login help newuser
さて、ここまでで、コマンドでユーザを登録する方法とコマンドでユーザ権限を変更する方法がわかった。
今度は、対話式以外の方法でユーザを追加するコマンドを確認しておく。
さっきまで使っていたコマンドのヘルプを参照する。
上記で確認できる各種オプションを参考にユーザを追加していく。
コマンドの追加方法は、Gravのloginプラグインのページに説明が記載されているのでそちらを参照されたし。
ただし、ユーザパスワードが平文でコマンド履歴に残ってしまうので推奨はされていない。
登録後ユーザにはパスワードの変更を行うように案内するのは必須と思われる。
bin/plugin login newuser -u joeuser -p 8c9sRCeBExAiwk -e joeuser@grav.org -P b -N "Joe User" -t "Site Administrator"
以上。
さーて、ガンガンユーザー追加しましょっと。
コメント