微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 MERN 应用程序部署到 Namecheap 的 cPanel 以进行网络托管时遇到问题

如何解决将 MERN 应用程序部署到 Namecheap 的 cPanel 以进行网络托管时遇到问题

我无法解决某个 Heroku 问题(图像存储/检索),所以我正在尝试使用 Namecheap。

我从 Namecheap 购买了一个域和网络主机服务器,因此我可以部署我为客户制作的完整 MERN 堆栈应用程序。

应用文件结构:

AppName
|
--client        <<~~create-react-app
|
--middleware
|
--models
|
--node_modules
|
--routes
|
--uploads
|
--.env
|
--.gitignore
|
--package-lock.json
|
--package.json
|
--README.md
|
--server.js
  • 将我的域的名称服务器设置为 Namecheap Web hosting DNS(namecheap 指南说明)

  • npm run build 中运行 /client(虽然没有执行 serve -s build)以生成 /client/build

server.js

// For Deployment
if(process.env.NODE_ENV === 'production') {
  app.use(express.static(path.join(__dirname,'client','build')));

  app.get('*',(req,res) => {
    res.sendFile(path.join(__dirname,'build','index.html'));
  });
};
  • 通过 Git Version Control cPanel 选项将我的 git 存储库连接到域

  • 将我所有的应用文件上传到 cPanel File Manager(由 Git Version Control 自动完成)

  • 使用了 cPanel 的 Setup NodeJS App 功能

设置 NodeJS 应用程序需要多个表单字段:

NodeJS version: 12.19.1           <<~~slightly higher than mine,their support team advised me to do that

Application mode: Production

Application root: repositories/AppName           <<~~path from the cPanel File Manager

Application URL: my-domain.com

Application Startup File: repositories/ChrisPortfolio/client/build/index.html           <<~~this has been a guessing game,more notes below

至于 Application Startup File,我尝试了 server.js在这里尝试了一些东西。

我尝试过的一切都导致,在浏览器中访问应用程序并点击“未找到”页面

然而,使用 repositories/ChrisPortfolio/client/build/index.html 时,应用程序会说“它有效!”并显示我选择的 Node 版本,但是......它没有显示实际的应用程序。

一个选项可以从 cPanel npm install 仪表板内部运行 NodeJS,我确保这样做。

我想也许我还需要让它在 npm install 目录中运行 /client,但仪表板不允许您选择希望运行命令的位置。

无论如何,这就是我所在的地方。希望这对某人来说很熟悉。

解决方法

解决部署问题:

cPanel 的 Git 版本控制选项来克隆我的存储库,在我的文件管理器中创建 /home/username/repositories/appname 目录

在我的npm run build中运行/client后,直接将/build的内容上传到/home/username/public_html(需要index.html在这个文件夹的根目录)

cPanel 的 Setup NodeJS App 功能,引用上面提到的目录为 Application Root,server.js 为 Application Startup File

应用现已部署。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。