メニュー

Gravコマンド

Grav には、組み込みで bin/grav というコマンドラインインターフェース(CLI) があります。繰り返しのタスク実行時に、CLIはとても便利です。たとえば、キャッシュをクリアする ときや、バックアップ を取るときなどです。

CLIにアクセスするのは、シンプルな作業ですが、ターミナル を使う必要があります。MacOS では、Terminal と呼ばれ、Windowsでは、cmd と呼ばれ、Linuxでは、単にシェルと呼ばれます。Windows の cmd では、UNIX スタイルのコマンドは、そのままでは使えません。Windows マシンに msysgit をインストールし、Git と Git BASH という代替のコマンドプロンプトを追加することで、UNIX コマンドが利用可能になります。リモートでサーバーにアクセスするとき、SSH を使うでしょう。SSHの素晴らしいチュートリアル をチェックしてください。

いくつかの処理を、手作業でやるのではなく、CLI に 頼る なら、それらの処理は、毎日の cronjobs により自動化できます。

Grav で利用できるすべてのコマンドの一覧は、次のコマンドで表示できます:

bin/grav list

次のように表示されるでしょう:

Available commands:
  backup       Creates a backup of the Grav instance
  cache        [clearcache|cache-clear] Clears Grav cache
  clean        Handles cleaning chores for Grav distribution
  composer     Updates the composer vendor dependencies needed by Grav.
  help         Displays help for a command
  install      Installs the dependencies needed by Grav. Optionally can create symbolic links
  list         Lists commands
  logviewer    Display the last few entries of Grav log
  new-project  [newproject] Creates a new Grav project with all the dependencies installed
  sandbox      Setup of a base Grav system in your webroot, good for development, playing around or starting fresh
  scheduler    Run the Grav Scheduler.  Best when integrated with system cron
  security     Capable of running various Security checks

特定のコマンドのヘルプを見たいときは、コマンドの前に help を入れてください:

bin/grav help install

Backup

Grav のバックアップシステムは、Grav 1.6 で完全に刷新され、複数のバックアップ・プロファイルに対応しました。これらのプロファイルは、user/config/backups.yaml に設定があります。もしこのカスタム設定ファイルが無ければ、system/config/backups.yaml にある、デフォルトの設定ファイルを利用します。

Grav が複数のバックアッププロファイルを見つけたとき、CLI コマンドは、どのプロファイルでバックアップするかを選ぶよう、プロンプトで促します。

cd ~/workspace/portfolio
bin/grav backup

Grav Backup
===========

Choose a backup?
  [0] Default Site Backup
  [1] Pages Backup

もしくは、直接プロファイルのインデックスを渡すこともできます:

$ cd ~/workspace/portfolio
bin/grav backup 1

Archiving 36 files [===================================================] 100% < 1 sec Done...

 [OK] Backup Successfully Created: /users/joe/workspace/portfolio/backup/pages_backup--20190227120510.zip

バックアップ機能に関する、より詳しい情報は、 応用的なこと -> バックアップ をご覧ください。

Clean

主に、パッケージをビルド処理する最中に使います。無関係なファイルやフォルダを Grav から取り除きます。独自の Grav パッケージをビルド処理するときに使うのでない限り、このコマンドは使わない ことを強く推奨します。

bin/grav clean

Clear-Cache

cache/ フォルダ下のファイルやフォルダをすべて削除することで、キャッシュをクリアできます。

対応する CLI コマンドは:

$ cd ~/webroot/my-grav-project
bin/grav cache

同じ内容の別名がいくつかあります(cache, cache-clear, clearcache, clear)。

デフォルトでは、標準的なキャッシュクリア処理を行いますが、以下のオプションを付けると、より詳しく制御できます:

--purge           古いキャッシュを削除
--all             すべてを削除します。コンパイルされたもの、twig、doctrine caches も含みます
--assets-only     assets/* のみ削除します
--images-only     images/* のみ削除します
--cache-only      cache/* のみ削除します
--tmp-only        tmp/* のみ削除します

Composer

もし Grav をGitHub からインストールし、コンポーザーベースの vendor パッケージをインストールしていた場合、次のように、簡単にアップデートできます:

bin/grav composer

composer に install のようなオプションを渡すこともできます:

bin/grav composer --install

もしくは

bin/grav composer --update

[!Info]
これらはすべて、 composer オプションの --no-dev を利用します。よって、パフォーマンステストのためには、composer を直接使った方が良いです: bin/composer.phar

Install

Grav が依存するプログラム( error プラグイン、 problems プラグイン、 antimatter テーマ)をインストールするには、 ターミナル もしくは コンソール を立ち上げ、その依存関係をインストールしたい Grav フォルダに移動し、CLI コマンドを実行します。

$ cd ~/webroot/my-grav-project
bin/grav install

依存関係は、以下にインストールされます:

  • ~/webroot/my-grav-project/user/plugins/error
  • ~/webroot/my-grav-project/user/plugins/problems
  • ~/webroot/my-grav-project/user/themes/antimatter

Log Viewer

Grav 1.6 の途中から、 CLI コマンドの新しいログのビューワが作成され、 Grav のログがすばやく見られるようになりました。

このコマンドを使う最も単純な方法は、次のように入力するだけです:

cd ~/webroot/my-grav-project
bin/grav logviewer

これにより、 logs/grav.log ファイルの直近の 20 ログエントリーを表示します。これには、いくつかのオプションがあります:

-f, --file[=FILE]     custom log file location (default = grav.log)
-l, --lines[=LINES]   number of lines (default = 10)
-v, --verbose         verbose output including a stack trace if available

たとえば:

bin/grav logviewer --lines=4                                                                           [12:27:20]

Log Viewer
==========

viewing last 4 entries in grav.log

2019-02-27 12:00:30 [WARNING] Plugin 'foo-plugin' enabled but not found! Try clearing cache with `bin/grav cache`
2019-02-27 12:04:57 [NOTICE] Backup Created: /Users/joe/my-grav-project/backup/default_site_backup--20190227120450.zip
2019-02-27 12:05:10 [NOTICE] Backup Created: /Users/joe/my-grav-project/backup/pages_backup--20190227120510.zip
2019-02-27 12:26:00 [NOTICE] Backup Created: /Users/joe/my-grav-project/backup/pages_backup--20190227122600.zip

そして、スタックトレースを含んだ出力もできます:

bin/grav logviewer -v                                                                                                       [16:12:12]

Log Viewer
==========

viewing last 20 entries in grav.log

2019-03-14 05:52:44 [WARNING] Plugin 'simplesearch.bak' enabled but not found! Try clearing cache with `bin/grav clear-cache`
2019-03-14 05:52:44 [CRITICAL] A function must be an instance of \Twig_FunctionInterface or \Twig_SimpleFunction.
0 /Users/joe/my-grav-project/plugins/acme-twig-filters/acme-twig-filters.php(52): Twig\Environment->addFunction(Object(Twig\TwigFilter))
1 /Users/joe/my-grav-project/vendor/symfony/event-dispatcher/EventDispatcher.php(212): Grav\Plugin\ACMETwigFiltersPlugin->onTwigInitialized(Object(RocketTheme\Toolbox\Event\Event), 'onTwigInitializ...', Object(RocketTheme\Toolbox\Event\EventDispatcher))
2 /Users/joe/my-grav-project/vendor/symfony/event-dispatcher/EventDispatcher.php(44): Symfony\Component\EventDispatcher\EventDispatcher->doDispatch(Array, 'onTwigInitializ...', Object(RocketTheme\Toolbox\Event\Event))
3 /Users/joe/my-grav-project/vendor/rockettheme/toolbox/Event/src/EventDispatcher.php(23): Symfony\Component\EventDispatcher\EventDispatcher->dispatch('onTwigInitializ...', Object(RocketTheme\Toolbox\Event\Event))
4 /Users/joe/my-grav-project/system/src/Grav/Common/Grav.php(365): RocketTheme\Toolbox\Event\EventDispatcher->dispatch('onTwigInitializ...', Object(RocketTheme\Toolbox\Event\Event))
5 /Users/joe/my-grav-project/system/src/Grav/Common/Twig/Twig.php(175): Grav\Common\Grav->fireEvent('onTwigInitializ...')
6 /Users/joe/my-grav-project/system/src/Grav/Common/Processors/TwigProcessor.php(24): Grav\Common\Twig\Twig->init()
7 /Users/joe/my-grav-project/system/src/Grav/Framework/RequestHandler/Traits/RequestHandlerTrait.php(45): Grav\Common\Processors\TwigProcessor->process(Object(Nyholm\Psr7\ServerRequest), Object(Grav\Framework\RequestHandler\RequestHandler))
8 /Users/joe/my-grav-project/system/src/Grav/Framework/RequestHandler/Traits/RequestHandlerTrait.php(57): Grav\Framework\RequestHandler\RequestHandler->handle(Object(Nyholm\Psr7\ServerRequest))
9 /Users/joe/my-grav-project/system/src/Grav/Common/Processors/AssetsProcessor.php(28): Grav\Framework\RequestHandler\RequestHandler->handle(Object(Nyholm\Psr7\ServerRequest))

2019-03-14 05:52:46 [WARNING] Plugin 'simplesearch.bak' enabled but not found! Try clearing cache with `bin/grav clear-cache`
...

New Project

Grav で新しいプロジェクトを始めるときはいつでも、クリーンな Grav インスタンスで始める必要があります。CLI によって、この処理がとても簡単になり、数秒で終わります。

  1. ターミナル または コンソール を立ち上げ、 grav フォルダに移動します(このドキュメントでは ~/Projects/grav 下にあるものとします)
cd ~/Projects/grav
  1. Grav CLI を実行し、新しいプロジェクトを作成します。プロジェクトを置く場所を指定します(一般的には、あなたのサーバーの webroot です)。ここでの例では、 ポートフォリオ を作成するとしましょう。 ~/Webroot/portfolio にそれを置きます。
bin/grav new-project ~/webroot/portfolio

これにより、新しい Grav インスタンスが作成され、必要な依存関係もすべてダウンロードされました。

[!訳注]
Grav 1.7.48 で試してみましたが、Grav は新しくインストールされるものの、テーマやプラグインはダウンロードされず、別途作業が必要になりました。

Sandbox

Grav には、 sandbox という気の利いたツールがあります。 sandbox は、 シムリンクされた Grav のコピーをすばやく作成します。 bin/grav sandbox -s DESTINATION ( “DESTINATION” は、 Grav のコピーを作りたいフォルダのパス)を実行すると、そのフォルダに Grav のインストールが再作成されます。

たとえば:

bin/grav sandbox -s ../copy

現在の Grav のフォルダから、 copy という名前の兄弟フォルダが作成され、そこに仮想のコピーが続きます: /bin, /system, /vendor, /webserver-configs 及び、 Grav のルートフォルダにある典型的な標準ファイルも含まれます。 /user フォルダ内のすべてのコンテンツは、シムリンクのコピーではなく、実コピーされ、そのため、コアファイルのオーバーヘッドの必要なく、新しいインストールのカスタマイズを簡単に始められます。

Scheduler

スケジューラー セクションで解説したように、CLI コマンドでスケジューラをモニターすることができます。

以下の基本コマンドは、期限が来たスケジューラータスクを手動で実行します:

bin/grav scheduler

詳細情報を取得するには、 -v オプションを付けて実行することもできます:

bin/grav scheduler -v

Running Scheduled Jobs
======================

[2019-02-27T12:34:07-07:00] Success: Grav\Common\Cache::purgeJob
[2019-02-27T12:34:07-07:00] Success: Grav\Common\Cache::clearJob
[2019-02-27T12:34:07-07:00] Success: ls -lah

他にもオプションはあります:

-i, --install         Show Install Command
-j, --jobs            Show Jobs Summary
-d, --details         Show Job Details

スケジューラー セクションをぜひ参照してください。これらのオプションに関するより詳しい情報が書かれています。

Security

Grav 1.5 で追加された、セキュリティスキャン機能の CLI コマンドです。 セキュリティ設定での設定内容 について、コンテンツのスキャンを実行します。

bin/grav security                                                                                       [12:34:12]

Grav Security Check
===================

Scanning 11 pages [===================================================] 100% < 1 sec

[OK] Security Scan complete: No issues found...

PHP CGI-FCGI 情報

コマンドラインで あなたのサーバーが cgi-fcgi で動いているかどうかを知るには、次の入力をしてください:

$ php -v
PHP 5.5.17 (cgi-fcgi) (built: Sep 19 2014 09:49:55)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
    with the ionCube PHP Loader v4.6.1, Copyright (c) 2002-2014, by ionCube Ltd.

(cgi-fcgi) と表示されていたら、すべての bin/grav コマンドの前に php-cli が必要です。もしくは、 alias php="php-cli" のようなエイリアスをシェルに設定することもできます。これにより、コマンドラインでは CLI バージョンの PHP で実行することができます。