Closed6

アフィリエイトブログ環境をGatsby+Strapi+Netlifyで構築したい

kodukakoduka

なぜGatsby+Strapi+Netlifyで構築したいのか

アフィリエイトブログをやりたいと思ったので、環境について調べた。
どの記事もWordPressをお勧めしている。
そして、どの記事もテンプレートのカスタマイズをお勧めしている。
WordPressで簡単にテンプレートのカスタマイズはできるのかと思ったが、結局CSSやらPHPやらHTMLをいじらないといけないことがわかった。
それなら一から構築した方が自由度が高いし、今後発生するであろう移行作業も省けるし、勉強になると思い、Gatsby+Strapi+Netlifyで構築することに決めた。

kodukakoduka

こちらの記事を見て、Gatsbyで差分ビルドを行える設定をしようとしたが、Gatsby cacheのプラグインがなく、代わりにEssential Gatsbyがあった。
これはreadmeをみると、Gatsby cacheプラグインを含んでいることがわかった。

【原文】

Essential Gatsby includes functionality from the Gatsby Cache build plugin. If you already have the Gatsby Cache plugin installed on your Netlify site, you should remove it before installing this plugin.

【DeepL先生】

Essential Gatsby は Gatsby Cache ビルドプラグインの機能を含んでいます。Netlify サイトに Gatsby Cache プラグインをすでにインストールしている場合は、このプラグインをインストールする前に削除してください。

kodukakoduka

Strapiから投稿したアップロードした画像やDBのバックアップファイルをS3に保存したいと思った。
また、minioのイメージを利用すれば、S3をローカル環境に構築したいできるっぽい。
けど、以下の問題が起きた。

  • Docker Composeを利用したことで、アクセスするURLがホストtoコンテナとコンテナtoコンテナで違くなるため、ホスト側からアクセスができない
  • S3へのアクセス形式でパス形式は非推奨(2022年現在、非推奨になっているのかわからなかった)なので、仮想ホスト形式にしたいけどやり方がわからない

重要

更新 (2020 年 9 月 23 日) – お客様が仮想ホスティング形式の URL への移行に必要な時間を確保できるように、パス形式 URL の非推奨化を延期することが決定しました。詳細については、AWS ニュースブログ
の「Amazon S3 Path Deprecation Plan – The Rest of the Story」を参照してください。

https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/VirtualHosting.html

  • StrapiからS3にアクセスするために、@strapi/provider-upload-aws-s3というライブラリを入れるのだが、仮想ホスト形式でアクセスしようとすると、指定したポートが勝手に消える
    • これに関してはprovider側の問題なのかproviderが内容しているaws-sdkの問題なのかを調べる必要がありそう
kodukakoduka
  • S3へのアクセス形式でパス形式は非推奨(2022年現在、非推奨になっているのかわからなかった)なので、仮想ホスト形式にしたいけどやり方がわからない

aws-sdk-jsのデフォルトは、仮想ホスト形式でアクセスするようになる。
もし、パス形式でアクセスしたい場合はs3ForcePathStyle: trueをconfigに設定する必要がある。

  • StrapiからS3にアクセスするために、@strapi/provider-upload-aws-s3というライブラリを入れるのだが、仮想ホスト形式でアクセスしようとすると、指定したポートが勝手に消える

仮想ホスト形式で構成しようとしたら、以下のようなaws-sdk-js側でエラーが発生していた。

Inaccessible host: `default.s3' at port `undefined'. This service may not be available in the `localhost' region.
UnknownEndpoint: Inaccessible host: `default.s3' at port `undefined'. This service may not be available in the `localhost' region.

同じような問題がissue#4079であったが、根本的な解決方法は記載されていなかったが、この記事の通りに、docker-compose.ymlを修正することで解決した。

version: '3'

service:
  cms:
    build: ./docker/cms
    tty: true
    # command: npm run develop
    volumes:
      - ./cms:/cms
    ports:
      - 1337:1337
    depends_on:
      - db
    networks:
      - default
      - s3 <- ここがポイント
  s3:
    image: minio/minio:latest
    ports:
      - 9000:9000
      - 9001:9001
    command: server /data --console-address ":9001"
    volumes:
      - ./docker/s3:/data
    environment:
      MINIO_ROOT_USER: local
      MINIO_ROOT_PASSWORD: password
      MINIO_DOMAIN: s3
    networks:
      s3: <- ここがポイント
        aliases:
          - default.s3

networks:
  default:
  s3: <- ここがポイント
kodukakoduka
  • Docker Composeを利用したことで、アクセスするURLがホストtoコンテナとコンテナtoコンテナで違くなるため、ホスト側からアクセスができない

sandboxでやっているものは見つけたけどをこれを応用してもできなかった。
このgithubみたいにminioじゃなくて、localstackにすればできるのか?わからない。。。
https://github.com/luqasn/aws-sandbox

https://github.com/localstack/localstack/issues/2631

今回は画像周りでstrapiに手を加えることはしないので、previewが見れなくてもOKとする。
ただ、この問題は今後も起こり得ることなので、解決方法は引き続き調べてみる。

kodukakoduka

StrapiをHerokuにデプロイ予定でいたが、無料枠が2022年11月28日に廃止予定なので、再検討する。

【原文】

Starting October 26, 2022, we will begin deleting inactive accounts and associated storage for accounts that have been inactive for over a year. Starting November 28, 2022, we plan to stop offering free product plans and plan to start shutting down free dynos and data services. We will be sending out a series of email communications to affected users.

【DeepL先生】

2022年10月26日より、1年以上非アクティブのアカウントと関連ストレージの削除を開始します。2022年11月28日より、無料製品プランの提供を停止し、無料のダイノスおよびデータサービスの停止を開始する予定です。影響を受けるユーザーの皆様には、順次メールでのご連絡をさせていただく予定です。

https://blog.heroku.com/next-chapter

このスクラップは5ヶ月前にクローズされました