我如何在 raspberry pi 上公开托管我的 React js 网站
How can i host my react js website publicly on my raspberry pi
我制作了一个 React js 网站,一切正常,但我不知道如何将它托管在我的 rasp pi4 上并使其 public 只能被其他人访问。我也买了一个域名。所以我的问题是:如何在我的锉刀上制作我的 reactjs 站点 public 和 运行。谢谢!
您必须配置像 Apache 这样的 Web 服务器,并使用 npm 或 yarn 构建 React 应用程序。然后将构建文件复制到 /var/www/html/ 目录。您还必须查看将路由器转发到本地 Web 服务器的端口,并将其打开到 public。请注意安全。
您需要配置 Web 服务器来托管站点。 Apache2 或 Nginx(我个人更喜欢 Nginx,但两者都适用)。在 Debian/Raspberry Pi OS 下,/var/www/html
应该在所有 pi 的 IP 地址的端口 80 上提供服务。将网站文件放在那里并确保您可以从 pi 的 IP 地址访问该网站。
为了使网站在您的网络之外可用,您需要查看端口转发、使用 public IP 托管 VPS,或者使用隧道。端口转发可能是最困难的选择,可能并不总是有效,但不需要 DNS 提供商之外的任何外部服务。隧道可能是第二简单的,使用 VPS 几乎肯定是最简单的。
对于端口转发,yu 需要确认您的 ISP 没有使用 CGNAT,否则这将不起作用。假设他们不这样做,您将需要访问您的路由器配置并在 TCP 上设置端口 80 以转发到您的 pi 的 IP 地址。我会给你的 pi 分配一个静态 IP 地址,可以在 pi 本身上,也可以使用 DHCP 保留。接下来,您需要查看您的 DNS 提供商是否提供动态 DNS。否则,如果您的网络 public IP 发生变化(除非您从提供商处购买了静态 IP),您将需要手动更新您的 DNS 设置。在此设置中,您将域指向您的网络 public IP。流量直接在客户端的浏览器和您的 pi 之间传输。
建立隧道要容易一些。我个人将 Cloudflare 用于我的 DNS(我将我的域与我的注册商设置为指向 Cloudflare,然后使用他们的隧道工具(Cloudflared)将流量从他们的服务器隧道传输到我的 pi。还有其他隧道服务,但我认为 Cloudflare 是我用过的最好的。在这个设置中,你将你的域指向 Cloudflare,它通过隧道将流量转发给你。流量从浏览器到 Cloudflare 再到你的 pi。
使用 VPS 可能是最简单的,并且您使用 pi 的知识适用于使用 VPS,假设您 运行 Debian linux 或在您的 VPS 上类似。您可以在 VPS 上安装 Web 服务器,将应用程序放在 VPS 上,然后将域指向 VPS 的 public IP。在此设置中,流量从客户端浏览器转到您的 VPS。这是唯一的 non-free 选项(不包括域本身的价格),并且通过不在其上放置 public 服务来使您的本地专用网络更安全。如果你愿意,你也可以 运行 你的 pi 和你的 VPS 之间的隧道(参见 https://www.jeffgeerling.com/blog/2022/ssh-and-http-raspberry-pi-behind-cg-nat 的例子),但我个人不明白这一点,除非你真的想要这个应用程序由你的 pi 提供。
我制作了一个 React js 网站,一切正常,但我不知道如何将它托管在我的 rasp pi4 上并使其 public 只能被其他人访问。我也买了一个域名。所以我的问题是:如何在我的锉刀上制作我的 reactjs 站点 public 和 运行。谢谢!
您必须配置像 Apache 这样的 Web 服务器,并使用 npm 或 yarn 构建 React 应用程序。然后将构建文件复制到 /var/www/html/ 目录。您还必须查看将路由器转发到本地 Web 服务器的端口,并将其打开到 public。请注意安全。
您需要配置 Web 服务器来托管站点。 Apache2 或 Nginx(我个人更喜欢 Nginx,但两者都适用)。在 Debian/Raspberry Pi OS 下,/var/www/html
应该在所有 pi 的 IP 地址的端口 80 上提供服务。将网站文件放在那里并确保您可以从 pi 的 IP 地址访问该网站。
为了使网站在您的网络之外可用,您需要查看端口转发、使用 public IP 托管 VPS,或者使用隧道。端口转发可能是最困难的选择,可能并不总是有效,但不需要 DNS 提供商之外的任何外部服务。隧道可能是第二简单的,使用 VPS 几乎肯定是最简单的。
对于端口转发,yu 需要确认您的 ISP 没有使用 CGNAT,否则这将不起作用。假设他们不这样做,您将需要访问您的路由器配置并在 TCP 上设置端口 80 以转发到您的 pi 的 IP 地址。我会给你的 pi 分配一个静态 IP 地址,可以在 pi 本身上,也可以使用 DHCP 保留。接下来,您需要查看您的 DNS 提供商是否提供动态 DNS。否则,如果您的网络 public IP 发生变化(除非您从提供商处购买了静态 IP),您将需要手动更新您的 DNS 设置。在此设置中,您将域指向您的网络 public IP。流量直接在客户端的浏览器和您的 pi 之间传输。
建立隧道要容易一些。我个人将 Cloudflare 用于我的 DNS(我将我的域与我的注册商设置为指向 Cloudflare,然后使用他们的隧道工具(Cloudflared)将流量从他们的服务器隧道传输到我的 pi。还有其他隧道服务,但我认为 Cloudflare 是我用过的最好的。在这个设置中,你将你的域指向 Cloudflare,它通过隧道将流量转发给你。流量从浏览器到 Cloudflare 再到你的 pi。
使用 VPS 可能是最简单的,并且您使用 pi 的知识适用于使用 VPS,假设您 运行 Debian linux 或在您的 VPS 上类似。您可以在 VPS 上安装 Web 服务器,将应用程序放在 VPS 上,然后将域指向 VPS 的 public IP。在此设置中,流量从客户端浏览器转到您的 VPS。这是唯一的 non-free 选项(不包括域本身的价格),并且通过不在其上放置 public 服务来使您的本地专用网络更安全。如果你愿意,你也可以 运行 你的 pi 和你的 VPS 之间的隧道(参见 https://www.jeffgeerling.com/blog/2022/ssh-and-http-raspberry-pi-behind-cg-nat 的例子),但我个人不明白这一点,除非你真的想要这个应用程序由你的 pi 提供。