使用SSR和Nginx部署remixjs应用程序

fbcarpbf  于 7个月前  发布在  Nginx
关注(0)|答案(2)|浏览(122)

经过几个小时的网络搜索,我发现很难理解我应该如何部署我的remixjs应用程序。我只是试图将我的remixjs应用程序部署到一个数字海洋Dropplet上,它也将使用nginx作为反向代理。
以下是我目前的理解:

  • 我需要Nginx作为反向代理,通过HTTPS提供内容,HTTPS已经使用let's encrypt设置,并且适用于提供静态内容。
  • 我有一个使用remix build构建的Remixjs应用程序,我从remix文档中了解到,“此命令将设置process.env.NODE_ENV为生产并缩小部署的输出。"
  • 结果是两个目录/build//public/build/,并且来自文档:“只有构建构件(build/,public/build/)需要部署到生产环境”
  • 据我所知,如果我只是提供静态内容,我可以只使用nginx,只复制包含index.html的文件夹。但我认为,由于我的内容是动态的,这就是为什么我使用index.js,而它不适用于nginx。
  • 所以我需要部署另一个服务器,然后将请求从nginx路由到该服务器。
  • 我不知道如何设置服务器,所以我想使用Remix应用服务器。从文档中:“Remix是为你自己的服务器而设计的,但如果你不想设置一个,你可以使用Remix应用服务器。它是一个生产就绪的,但基本的Node.js服务器,用Express构建。"
  • 我的直觉告诉我复制两个构建目录,然后运行remix-serve build,但这似乎不起作用,没有package.json我无法运行npm install,但我觉得我需要的一切都应该包含在构建文件中。

所以我的问题本质上归结为如何运行remix-serve build来使用两个构建工件文件夹在我的远程机器上使用Remix App Server?或者有必要将整个项目克隆到远程机器上然后构建和运行吗?看起来正确的方法是利用两个构建工件文件夹,但我不清楚如何做到这一点。
任何解释将不胜感激!

hec6srdp

hec6srdp1#

你很想创建一个从systemd服务执行的shell脚本,我把我的npm install,build和express server start封装到一个shell脚本中。

#!/bin/bash

sudo /home/ubuntu/.nvm/versions/node/v21.1.0/bin/npm i
sudo /var/www/node_modules/.bin/remix build
sudo /home/ubuntu/.nvm/versions/node/v21.1.0/bin/node /var/www/server.mjs

字符串
我的服役档案

[Unit]
Description=Express server for remix project

[Service]
ExecStart=/bin/bash /var/www/script.sh
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target


一旦您启用该服务,它将根据需要连续运行混音服务器

● express-server.service - Express server for remix project
     Loaded: loaded (/etc/systemd/system/express-server.service; enabled; vendor preset: enabled)
     Active: active (running) since UTC; 1h 2min ago
   Main PID: 102437 (bash)
      Tasks: 17 (limit: 516)
     Memory: 36.1M
        CPU: 3.190s
     CGroup: /system.slice/express-server.service
             ├─102437 /bin/bash /var/www/patient/script.sh
             ├─102440 sudo /home/ubuntu/.nvm/versions/node/v21.1.0/bin/node /var/www/server.mjs
             └─102441 /home/ubuntu/.nvm/versions/node/v21.1.0/bin/node /var/www/server.mjs

9cbw7uwe

9cbw7uwe2#

我将buildpublic/buildpackage.json复制到我远程机器上的一个类似my-remix-deploy的文件夹中,在my-remix-deploy文件夹下运行npm install,然后通过npx remix-serve build/index.js &> /dev/null &启动它。顺便说一下,我使用npx create-remix@latest --template remix-run/remix/templates/remix创建我的项目。

相关问题