2024/3/20

Craft Cloud を試してみる #craftcms

Craft CMS のホスティングサービス、 Craft Cloud を触ってみた。

Craft Cloud — Craft CMS hosting you can trust.
https://craftcms.com/cloud

最近アジア圏の Partner に開放されたみたいなので試してみる。

ローカル環境の構築

まずは ddev でローカルに環境作る所から(普段あまり使っていない)。
ddev での内容は @tinybeans のエントリを見ると早い。

DDEV を使って Craft CMS のローカル開発環境を構築する | Craft CMS | かたつむりくんのWWW
https://tinybeans.net/blog/202…

公式ドキュメント的にはこの辺。

Installation | Craft CMS Documentation | 4.x
https://craftcms.com/docs/4.x/…

とりあえずローカル環境の構築を進めていく。

テスト用のディレクトリ作って、以下のコマンドを順に実行していく。

ddev config --project-type=craftcms --docroot=web --create-docroot
ddev composer create -y --no-scripts "craftcms/craft:^4"
ddev composer config platform.php 8.1
ddev craft install
ddev launch

【追記 20240321-065816】
ddev composer config platform.php 8.1 を追加して実行しているが、後述する「Cloud Extension をインストール」が PHP 8.1 以降の対応のため。
【追記ここまで】

ひとまずこれでローカルで Craft が立ち上がったのをフロント・管理画面共に確認できる。
一応管理画面で Craft Pro のトライアルも有効にしておく。

Cloud 用の対応

ここからの手順は下記を参照して進める。

Getting Started with Craft Cloud | Craft CMS
https://craftcms.com/knowledge…

Cloud Extension のインストール

以下のコマンドで Cloud Extension をインストールする。

ddev craft setup/cloud

The Cloud Extension | Craft CMS
https://craftcms.com/knowledge…

説明的にはこれで craftcms/cloud がインストールされて、craft-cloud.yaml も生成される。

が、 craft-cloud.yaml は生成されなかったので、これは手動でルートに作成した。

【追記 20240321-065958】
Support に教えてもらってddev composer config platform.php 8.1 を実行しておくことで問題無かった。

そのため、以下のPHP8.2の設定関係は不要になった。
【追記ここまで】

最低限必要な記述は以下とのことなので、この内容を記載(PHPを8.2にした)

# Versions must include major + minor, but no patch.
php-version: "8.2"

The Craft Cloud Config File | Craft CMS
https://craftcms.com/knowledge…

PHPを 8.2 にしたので composer.json を修正する。

"platform": {
      "php": "8.2"
    }

.ddev/config.yamlも変更する

php_version: "8.2"

【追記20240321-070835】
↑ここまでの PHP8.2 関係の設定は不要だった   

以下の composer.jsoncraftcms/cloud のバージョン指定も不要になった。
【追記ここまで】

あと、composer.json に追加されている craftcms/cloud のバージョン指定が必要らしいので、指定する。

{
  "require": {
    "craftcms/cloud": "*",
    "craftcms/cms": "^4.4.0",
    "vlucas/phpdotenv": "^5.4.0"
  },

↓↓↓

{
  "require": {
    "craftcms/cloud": "^1.13.1", << バージョン設定
    "craftcms/cms": "^4.4.0",
    "vlucas/phpdotenv": "^5.4.0"
  },

デフォルトは * になっているのだけど、これだと Cloud の Console 側で 1.13.0 以上が必要とエラーになるので、 ^1.13.1 を指定した。

ddev composer update

ddev start

composer update して、再度立ち上げて、 8.2 で動いているのを確認する。

ここで git init して丸っと commit してリポジトリに push しておいた。

新規プロジェクトの作成・設定

引き続き Craft Console 側で Cloud のプロジェクトを作っていく。

20240320-104333.png

リポジトリを選択して、プロジェクトを作成したら、リージョンとかを選択する。

20240320-104349.png

引き続き、環境(Environment)を作成する。

20240320-104415.png

ブランチとか変えて使う前提だけど、一旦は main ブランチのままで。

この状態で deploy ボタンをクリックするか、何か GitHub に push するとビルド・デプロイがスタートする。

DBをインポート

ローカルのDBをエクスポートして Cloud にインポートする。

ddev ssh

ddev ssh したらDBのバックアップを作成する。

./craft db/backup

バックアップファイルが生成され、生成されたパスが表示される。

Cloud Console 側の Access を確認して、 DBへの接続情報を確認する。

20240320-111650.png

確認したら、 ssh してるところで以下を実行する。

mysql \
    --host=hogehoge \
    --port=3306 \
    --user=hogehoge \
    --password=hogehoge \
    --database=hogehoge \
    < /var/www/html/storage/backups/hogehoge.sql

何もデータ追加してない状態でも少し時間かかるが、待ってればインポートは終了する。

console 側からプレビュー環境の表示を確認する。

20240320-105251.png

URLがどうなるのかわからなくて探したが、この地球アイコンから見ることが出来た。

20240320-105303.png

管理画面も同様のドメイン。

20240320-105324.png

カスタムドメインの設定とかすればそれで見ることが出来るはず。

GitHub にプッシュされてデプロイが始まると、デプロイスタート時と完了時にメールが来る。

20240320-105411.png

ひとまずこんな感じで Craft Cloud の環境を作ることが出来た。


当初、DBをインポートしないで、素の状態で Craft Cloud の環境をつくれるのか?とおもってあれこれ試していた。

20240320-112155.png

CLIを実行するUIがあるので、ここで craft/install とかやったりしたけど、PHP8.1, 8.2 で試すとそれぞれ失敗。
ログに残るエラーが違ったりするので、サポートに聞いてみたら「普通はDBインポートする」と言う感じの回答だったので、とりあえずDBインポートすることで見れるようになったというのが今回の経緯。

慣れてしまえば楽なのかな。
Craft Cloud のお値段的に使うサイトを選びそうではあるけど、試せてよかった。
インフラ含めて丸っとお願いしたいときの選択肢としては良さそう。

ドキュメントを見ると色々とやれることがありそうなので、この辺は追って試したい。

Guides: Craft Cloud | Craft CMS
https://craftcms.com/knowledge…

フリートライアルが7日間できるので、何回も検証してみることも出来そう。