好的!在这上面花了很多时间。希望对其他人有所帮助。
静态盖茨比网站
如果您尝试在任何共享主机上托管静态 gatsby 网站。静态的,我的意思是简单的盖茨比风格的页面,
您可以按照gatsby doc 所说的那样做:
- 运行:
gatsby build 或 npm run build。
根据盖茨比:
Gatsby 将为您的网站执行优化的生产构建,生成静态 HTML 和每个路由的 JavaScript 代码包。
根据gatsby:
Gatsby 启动一个本地 HTML 服务器来测试您构建的站点。请记住在使用此命令之前使用gatsby build 构建您的站点。
serve 将测试您的构建文件(yourprojectroot/public 目录中新创建的文件)
这将在测试服务器 (localhost:9000) 上运行您的项目(使用构建文件),以基本上测试您的构建文件。
测试这个localhost:9000,如果一切正常。您可以转到远程 cPanel 并将所有构建文件粘贴到 public_html 文件夹中。
转到您的域,一切顺利。
使用 MySQL 和 Node/express 的 Gatsby
>
如果您正在尝试托管您的 gatsby 站点,该站点也适用于 node 和 mysql,并且您像我一样是托管新手,那么您需要执行以下操作:
尝试上述两点。 (构建您的静态文件并尝试服务)
在远程设置您的数据库,并使用与本地数据库相同的名称、用户名和密码。
两个额外的东西:
现在,您要做的是在同一个端口(比如 8001)上同时运行节点和 gatsby(webpack) 服务器。所以我们将只使用节点服务器并将我们所有的 gatsby 文件(构建文件)作为静态内容提供给节点服务器。
app.use(express.static(path.join(__dirname, 'public')));
app.get('/*', function(req,res) {
res.sendFile(path.join(__dirname,'public/index.html'));
});
当您将通过 index.html 运行所有 gatsby 页面时,最后一个 get('/*'...(上图)将处理所有页面请求。根据您的远程文件夹结构更改公共路径
在远程public_html 文件夹中添加构建文件和节点(服务器连接)文件。
- 接下来将您的
.htaccess 文件(在远程)添加或更改为:
RewriteEngine On
RewriteRule ^$ http://127.0.0.1:8001/ [P,L]
RewriteRule ^(.*)$ http://127.0.0.1:8001/$1 [P,L]
因此,当您通过服务器的终端运行节点文件时,上面提到的 .htaccess 将仅将其重定向到 yourdomainame.com 而不是 yourdomainname.com:8001
全部完成。
您的public_html 现在应该包含the build files、a node/express conn file 和.htaccess file。
现在,只需转到您的终端即可。 cd 进入 public_html 并运行node yournodefilename。
您现在可以转到您的域。
注意:您可以使用pm2 包来保持您的节点服务器始终运行。
希望它可以帮助某人。