完成したのものは以下
Install その1 SQLite
以下のクイックスタートを見ながらすすめる。
URLからもわかるように、現時点では3.0.0はbetaのようです。
yarn create strapi-app strapi-example --quickstart
インストールが終わると
上記のような画面が開くので必要項目を入力すれば設定は終わり。日本語にも対応しているようです。
ただ、このクイックスタート、どうやらSQLiteを使用するので、そのままではちょっと使いにくい。
Install その2 MySQL
ここではDBをMySQLを使っていきます。さきほどのプロジェクトを削除してもう一度作り直します。今度は --quickstart
はつけません。
rm -rf strapi-example
mkdir strapi-example
ドキュメントが間に合ってないのか、MongoDBについてのチュートリアルしかありませんでしたが、ほぼ同手順でMySQLのインストールも問題なくできるかと思います。
MySQLのDockerの設定は以前自分の作成した以下の設定をほぼそのまま使用しています。
ただしそのまま使用すると、
⛔️ Connection test failed: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
のようなエラーが発生する。"Node.js" "MySQL 8.0" あたりのキーワードで検索すると解決策がでてくるはず。ここではMysqlのバージョンを下げて対応した。文字コードなどの設定も必要なので、わからない場合には完成したリポジトリを参考にしてください、文字コードを変えずに使用すると日本語のPOSTで400が返されます(一度このミスをしてしまった……)。
MySQLの設定が終わったら、docker-compose up
したあと、DBを作成してそのまま接続可能な状態で
cd strapi-app
yarn create strapi-app backend
cd backend
yarn develop
以上でインストールして管理画面を開くまでの作業は終了です。自分のときにはなぜか yarn develop
が2回失敗したんだけど、3回目叩いてみたらうまくいった。理由はちょっとよくわからないんだけど、発生してたエラーは以下
yarn develop
yarn run v1.21.1
$ strapi develop
[2019-12-15T07:30:26.689Z] debug ⛔️ Server wasn't able to start properly.
[2019-12-15T07:30:26.690Z] error (hook: bookshelf) is taking too long to load.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
backend/config/hook.json
のtimeoutを多少長めに変更しておくとよさそうな気がする。
記事用のAPIを作る
上記を参考に post を作成する。created_at
と updated_at
を定義しようとしてもできなくて、おかしいなーとおもったらどうやらデフォルトですでに定義されているようで、これは /backend/api/post/models/Post.settings.json
で確認することができる。
コンテンツ管理で詳細な設定が変更できる
それっぽい感じに変更しておいた。
管理画面を変更する
管理画面はセキュリティ上、そのパスを変更できるそうなので、ここではドキュメントと同様に /dashboard
に変更する。
{
"host": "localhost",
"port": 1337,
"proxy": {
"enabled": false
},
"cron": {
"enabled": false
},
"admin": {
"autoOpen": false,
"path": "/dashboard"
}
}
yarn build
で再構築すると設定が反映される。
Admin UserとEnd User
strapiでは管理画面のユーザはAdmin User、そうでないフロントエンド側の権限を制御するユーザをEnd Userとしているらしい。
strapiから記事の投稿はできるので今回はAdmin Userで記事の作成をしていくのですが、これが問題になる場合には管理者ページをまた別に作るか、stradminの管理者ページをカスタマイズする必要がありそう。Admin Userはロールによる管理ができないので、前者のほうが筋が良さそうに思えるけれど、管理画面をつくる工数が与えられることが前提なのでWordPressの置き換えの選択肢として考えるのであればちょっとつらそう。
Postを投稿する
strapiの投稿画面から投稿するだけ
draft、いわゆるプレビュー画面の実装についてなどもドキュメントに書いてあります。
レスポンスを確認してみると
curl --silent "http://localhost:1337/posts" | jq
[
{
"id": 1,
"name": "テスト投稿",
"content": "これはテスト投稿です",
"created_at": "2019-12-15T12:40:22.000Z",
"updated_at": "2019-12-15T12:40:22.000Z"
}
]
いい感じになっている。
感想
strapiのAdmin Userで完結するのであればいいんだけど、もし管理画面をそれとは別に作らないといけないのであれば、WordPressを置き換えるものかと言われるとちょっと微妙な感じがする。
strapi自体はとてもよくて、ちょっとした個人のものであれば今後これを使うことがありそう