FreeBSD 12:Grav

wwwサーバをインストールしたら、コンテンツも作りたいですよね!
昔はパソコンのアプリ(ホームページビルダーなど)で作成するのが一般的でしたが、今はwebサーバ上にCMS(コンテンツ・マネジメント・システム)をインストールして作成するほうが多いのかな?無料のツールもありますし。
今回は、簡単に設置およびページ作成できること、スマホ用にレスポンシブなページが作成できることを条件にCMSを選んでみました。
WordPressも良いのですが、ブログなどたくさんのページで構成されたコンテンツ用なので、お手軽に使うにはちょっと重いかな?
Gravはデータベースを使わないFlat-File CMSでバックアップや移行などの管理が簡単なこと、レスポンシブにも対応しスキンによって見た目を自分好みに変更できることなどから、インストールすることにしました。

Gravのダウンロードとインストール

GravはPortsに入っていないので、手動でインストールすることになります。

まずはGravのホームページダウンロードページから「Grav core + Admin plugin」をダウンロードします。

root@cafe:~ # cd /usr/local/www/
root@cafe:/usr/local/www # ls
nginx           nginx-dist
root@cafe:/usr/local/www # wget --no-check-certificate --content-disposition https://getgrav.org/download/core/grav-admin/1.6.27
--2020-09-27 10:36:09--  https://getgrav.org/download/core/grav-admin/1.6.27
Resolving getgrav.org (getgrav.org)... 2600:3c00::f03c:91ff:fe61:8b0e, 45.79.6.45
:
省略
:
Length: 11002126 (10M) [application/octet-stream]
Saving to: 'grav-admin-v1.6.27.zip'

grav-admin-v1.6.27. 100%[===================>]  10.49M   418KB/s    in 44s

2020-09-27 10:36:55 (244 KB/s) - 'grav-admin-v1.6.27.zip' saved [11002126/11002126]

root@cafe:/usr/local/www # ls
grav-admin-v1.6.27.zip  nginx                   nginx-dist
root@cafe:/usr/local/www #

webページのコンテンツは、/usr/local/wwwの下に入れたいので、そこに移動し、
wget --no-check-certificate --content-disposition https://getgrav.org/download/core/grav-admin/1.6.27コマンドでダウンロードします。

wgetコマンドがない場合
cd /usr/ports/ftp/wget/
make install clean
コマンドでインストールしてください

root@cafe:/usr/local/www # unzip grav-admin-v1.6.27.zip
Archive:  grav-admin-v1.6.27.zip
   creating: grav-admin/
   creating: grav-admin/vendor/
   creating: grav-admin/vendor/ralouphie/
:
省略
:
   creating: grav-admin/tmp/
 extracting: grav-admin/tmp/.gitkeep
root@cafe:/usr/local/www # chown -R www:www grav-admin
root@cafe:/usr/local/www # ls -al grav-admin
total 436
drwxr-xr-x  14 www   www       512 Sep 27 12:18 .
drwxr-xr-x   5 root  wheel     512 Sep 27 12:18 ..
drwxr-xr-x   2 www   www       512 Sep 27 12:18 .github
-rw-r--r--   1 www   www      3046 Sep  2 05:39 .htaccess
-rw-r--r--   1 www   www    142723 Sep  2 05:39 CHANGELOG.md
-rw-r--r--   1 www   www      3216 Sep  2 05:39 CODE_OF_CONDUCT.md
-rw-r--r--   1 www   www      7098 Sep  2 05:39 CONTRIBUTING.md
-rw-r--r--   1 www   www      1071 Sep  2 05:39 LICENSE.txt
-rw-r--r--   1 www   www      6701 Sep  2 05:39 README.md
drwxr-xr-x   2 www   www       512 Sep 27 12:18 assets
drwxr-xr-x   2 www   www       512 Sep 27 12:18 backup
drwxr-xr-x   2 www   www       512 Sep 27 12:18 bin
drwxr-xr-x   2 www   www       512 Sep 27 12:18 cache
-rw-r--r--   1 www   www      3807 Sep  2 05:39 composer.json
-rw-r--r--   1 www   www    198967 Sep  2 05:39 composer.lock
drwxr-xr-x   2 www   www       512 Sep 27 12:18 images
-rw-r--r--   1 www   www      1710 Sep  2 05:39 index.php
drwxr-xr-x   2 www   www       512 Sep 27 12:18 logs
-rw-r--r--   1 www   www        76 Sep  2 05:39 now.json
-rw-r--r--   1 www   www       227 Sep  2 05:39 robots.txt
drwxr-xr-x  10 www   www       512 Sep 27 12:18 system
drwxr-xr-x   2 www   www       512 Sep 27 12:18 tmp
drwxr-xr-x   8 www   www       512 Sep 27 12:18 user
drwxr-xr-x  28 www   www       512 Sep 27 12:18 vendor
drwxr-xr-x   2 www   www       512 Sep 27 12:18 webserver-configs
root@cafe:/usr/local/www # mv grav-admin grav
root@cafe:/usr/local/www #

unzip grav-admin-v1.6.27.zipコマンドで解凍します。
chown -R www:www grav-adminコマンドでユーザー、グループをwwwに変更し、webサーバが読み書きできるようにしておきます。
mv grav-admin gravコマンドでディレクトリ名を変更します。

Grav用にnginxを設定する

次にGravを動かせるようにnginxの設定をしておきましょう。

root@cafe:/usr/local/www # vi /usr/local/etc/nginx/nginx.conf
root@cafe:/usr/local/www # grep -v \# /usr/local/etc/nginx/nginx.conf | grep -v ^$
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        root   /usr/local/www;
        location /nginx {
            index  index.html index.htm;
        }
        location /grav {
            index  index.php;
            try_files $uri $uri/ /grav/index.php?$query_string;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/local/www/nginx-dist;
        }
        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
}
root@cafe:/usr/local/www #

と、/usr/local/etc/nginx/nginx.confを編集しました。

        root   /usr/local/www;

ドキュメントルートを/usr/local/wwwに変更し、

        location /grav {
            index  index.php;
            try_files $uri $uri/ /grav/index.php?$query_string;
        }

を追加してみました。

root@cafe:/usr/local/www # service nginx restart
Performing sanity check on nginx configuration:
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
Stopping nginx.
Performing sanity check on nginx configuration:
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
Starting nginx.
root@cafe:/usr/local/www #

と、nginxを再起動しました。

Gravに必要なPHPのモジュールを追加する

とりあえずGravのページにアクセスすると

エラーになりました。
これはPHPのモジュールが足りたいためです。画面のとおり

  • CTYPE
  • CURL
  • DOM
  • GD
  • MBSTRING
  • OPENSSL
  • XML
  • ZIP

のモジュールをインストールしましょう。
手順は

root@cafe:~ # cd /usr/ports/lang/php74-extensions
root@cafe:/usr/ports/lang/php74-extensions # make install
===>  Staging for php74-extensions-1.0
===>   php74-extensions-1.0 depends on file: /usr/local/include/php/main/php.h - found

のように/usr/ports/lang/php74-extensionsでmake installです。

設定画面がでるので、上記モジュールが全部入るように追加してください。
モジュールの追加が終わったら

root@cafe:/usr/ports/lang/php74-extensions # service php-fpm restart
Performing sanity check on php-fpm configuration:
[28-Sep-2020 00:08:25] NOTICE: configuration file /usr/local/etc/php-fpm.conf test is successful

Stopping php_fpm.
Waiting for PIDS: 640.
Performing sanity check on php-fpm configuration:
[28-Sep-2020 00:08:25] NOTICE: configuration file /usr/local/etc/php-fpm.conf test is successful

Starting php_fpm.
root@cafe:/usr/ports/lang/php74-extensions #

service php-fpm restartコマンドでphp-fpmを再起動します。


Gravにアクセスすると、Admin設定画面が表示されました!
これで、Gravのインストールは完了です。

Gravの管理者作成と日本語設定

とりあえず、Gravの管理者を作成しましょう。

必須項目である、ユーザー名、メールアドレス、パスワードを入力し、「Create User」をクリックします。

設定画面は、左ペインのスパナマークなので、そちらをクリックします。

「Site」タブの「Default language」には「ja」を入れて、「Save」をクリックして保存します。

「System」タブの「Languages」→「Override Default Language」には「ja」を「Include default language」は「No」に変更して、「Save」をクリックして保存です。

左ペインのユーザーアイコンをクリックして、「Language」で「日本語」を選択し、「Save」をクリックして保存します。

これで、メニューが日本語になりました。
あとは左ペインのページアイコンをクリックして、ページの変更、作成を行えば見栄えの良いホームページができます!
テーマを変えて、自分好みにしてください。
このホームページも、Gravで作成しています。