使用HeadlessCMS(WordPress)和Gatsby.js制作的网站,在Netlify上发布的步骤

我整理了在静态网页托管服务“Netlify”上发布使用Gatsby.js制作的网站的步骤。

[WordPress]头无主CMS和Gatsby.js制作网站的备忘录已整理为另一篇文章《Headless CMS(WordPress)和Gatsby.js制作网站的备忘录》。

将本地的WordPress数据迁移到托管的WordPress。

使用WordPress插件”All-in-One WP Migration”。

    • localではexport機能でファイルをダウンロード

 

    hostingされたWordPressでそのファイルをimport

为了增大文件大小,需要编辑.httaccess和wp-config.php文件。

部署准备

    • netlifyのアカウント作成

 

    • Production branchをmasterにする

 

    • GithubのRepositoryを指定(Gitlab、Bitbucketも可)

 

    • Build commandを設定(例: gatsby build)

 

    Publish directoryを指定(例: public/)

设定环境变量

    • netlifyのEnvironment variablesでhostingされているWordPressのAPI_PROTOCOLとAPI_URLを指定

 

    • .envファイルにlocal環境のAPI_PROTOCOLとAPI_URLを指定

gatsby-config.jsで下記設定

require("dotenv").config({
  path: '.env',
});
{
  resolve: "gatsby-source-wordpress",
  options: {
    baseUrl: process.env.API_URL,
    protocol: process.env.API_PROTOCOL,
  }
}

自动在 public 文件夹中生成 _headers 文件和 _redirects 文件。

    • npmのpackagegatsby-plugin-netlifyをinstall

gatby-config.jsのpluginに追加

通过WordPress的发布保存来触发构建。

add_action('save_post', 'netlify_build');

function netlify_build() {
    wp_remote_post({netlifyのsetting/Build hooksに設定したURL});
}

迷上了这个点。

按照上述的步骤进行构建,可以成功,但是部署时会出现以下错误。

Path: /wp-json
The server response was "403 Forbidden"
error "gatsby-source-wordpress" threw an error while running the sourceNodes lifecycle:
Cannot read property 'data' of undefined

TypeError: Cannot read property 'data' of undefined

這是因為這個網站使用了租借伺服器的「X Server」,所以發生了這個錯誤,因為它不允許從海外IP訪問到wp-json。
因此需要允許來自國外IP地址的訪問。
關於伺服器 > WordPress安全設定 > 國外IP訪問限制設定

参考网站
由于我将博客从WordPress迁移到Gatsby,所以在此解释迁移的步骤和遇到的问题。

广告
将在 10 秒后关闭
bannerAds