はじめに
自分でブログやWebサイトを作るとして、無料・有料ブログサービスを使わず、自分でサーバーを借りて環境を構築するなら、何を使うのが良いかを考えていました。
ざっくりとしていますが、要件です。
- インストールが楽
- DBを使わないで済めば、そのほうが良い
- できればMarkdownで書きたい
- 管理画面はほしい
WordPressは定番ですけれど、プラグインに振り回されそうなので避けようと思いました。
また、サイトジェネレーターを使うことも考えて、いくつか試してみましたが(Hugo、Hexoなど)、ページやカテゴリなどの管理は管理画面で行えたほうが良いと思いました。VS Codeを使えばMarkdownが書きやすいのは良かったのですけれど。
そうやって探しているうちに、GravというフラットCMSの存在を知りました。
これなら要件を満たせそうだと思えたので、家庭内サーバーで試しにインストールしてみることにしました。
環境
- OSはUbuntu Server 22.04 LTS
- Webサーバーはnginx
手順
Gravのインストールに必要なパッケージをインストールしておく
$ sudo apt install php php-fpm nginx php-curl php-gd php-mbstring php-zip unzip
PHP、FPM(PHPにおけるFastCGI実装)の他、php-で始まるパッケージはGravが必要としているパッケージです。
あと、Zipファイルを解凍するのに必要なので、unzipをインストールします。
Gravのパッケージをダウンロードする
https://getgrav.org/downloads からダウンロードします。
管理用のプラグインがあったほうが良いので、「Grav Core + Admin plugin」をダウンロードします。
なお、ブラウザでダウンロードすると、ダウンロードしたときのファイル名は「grav-admin-v1.7.40.zip」となりますが、wgetでダウンロードすると「1.7.40」というようにバージョンがファイル名になりますので、-oオプションでファイル名をつけるようにしました。
$ wget https://getgrav.org/download/core/grav-admin/1.7.40 -o grav-admin-v1.7.40.zip
GravのZipファイルを展開・配置する
/var/www/html/gravディレクトリに置いて、「http(s)://<サーバー名>/grav」でアクセスできるようにします。
// Zipファイルを/var/www/htmlに展開する
$ sudo unzip grav-admin-v1.7.40.zip -d /var/www/html/
// ディレクトリ名をgrav-adminからgravに変更する
$ sudo mv /var/www/html/grav-admin /var/www/html/grav
/var/www/html/grav/の所有者をwww-dataに変更する
これをしておかないと、/var/www/html/grav/内のファイル・ディレクトリにある設定ファイルへの書き込みができずにエラーとなります。
$ sudo chown -R www-data:www-data /var/www/html/grav/
nginxの設定
/etc/nginx/sites-available/grav を以下のように設定します。
server {
listen 80;
server_name _;
root /var/www/html;
location /grav {
index index.php;
try_files $uri $uri/ /grav/index.php?$query_string;
}
location ~ \.php$ {
# Caution: be sure the php8.1-fpm.sock matches your version
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
この後、サイトの有効化と設定ファイルのチェックを行い、設定ファイルチェックがOKとなったのを確認して、nginxを再起動しました。
$ sudo ln -s /etc/nginx/sites-available/grav /etc/nginx/sites-enabled/grav
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ sudo systemctl restart nginx.service
Gravの初期設定
「http(s)://<サーバー名>/grav」にアクセスして、以下の画面が表示されればGravのインストールは成功です。
なお、URLは「http(s)://<サーバー名>/grav/admin」にリダイレクトされます。
Title以外は必須項目なので、各項目を入力します。
パスワードはアルファベットの大文字・小文字の混在で、8文字以上とします。
入力を終えたら「Create User」ボタンを押下します。
Gravのダッシュボード
ユーザーの作成に成功すると、Gravのダッシュボードが表示されます。