gpt4 book ai didi

node.js - EC2实例上的Node js应用程序-域名

转载 作者:太空宇宙 更新时间:2023-11-03 23:03:19 24 4
gpt4 key购买 nike

我是第一次使用 EC2 实例,我有一个微型实例,我的 Node 应用程序使用 pm2 运行

var express = require('express');
var app = express();
var path = require("path");
var PORT = process.env.PORT || 3000;
// Serve Static files
app.use(express.static(path.join(__dirname, 'public')));

app.listen(PORT);
console.log('%d App listening on %d', process.pid, PORT);

所以这将在端口 3000 上运行(这样可以吗?)。这样我就可以转到 mypublicip:3000 并查看我的应用程序正在运行。

我想要做的是转到我的域名 mydomainname.co.uk 并呈现该网站。域名是通过123 reg购买的。

我已经设置了弹性 IP,但不确定从哪里开始。

最佳答案

您需要遵循几个步骤才能完成您所要求的操作。您需要做的第一件事是将您的域名与您的 EC2 实例关联起来。

为此,您可以将 123-reg 中的 A 记录指向该弹性 IP,或者(我建议这样做)将域的名称服务器指向您在 AWS 上的 Route 53 中创建的托管区域。执行后者的程序是 here

完成后,并且 TTL 已过期(意味着 DNS 服务器有机会更新其值),您可以通过尝试使用您可能一直在使用的公共(public) IP ssh your-username@your-domain.co.uk 来测试您的域名是否设置正确。

之后,或者在等待 TTL 过期期间,您应该检查 EC2 实例的安全配置,以确保端口 80 已打开(因为我假设您还不想安装 SSL 证书)。

如果此时您确实想使用 pm2 运行 Node 应用程序,那么您接下来需要设置 Authbind 以允许 pm2 用户启动一个进程来监听受限端口。从命令行:

$ sudo apt-get install authbind
$ sudo touch /etc/authbind/byport/80
$ sudo chown %user% /etc/authbind/byport/80
$ sudo chmod 755 /etc/authbind/byport/80
$ authbind --deep pm2 update

然后添加到您的 .bashrc 文件:

alias pm2='authbind --deep pm2'
<小时/>

好的,以上内容应该可以让您了解您在问题中提出的问题。不过,我有一些笔记。

1) 请不要遵循我在 Authbind 上的最后指示。让非 root 用户(即使在受控级别)在端口 80 上启动任务是一个非常非常糟糕的习惯。只需安装并配置 nginx 作为应用程序的反向代理即可。这是正确的方法,而且并不难。 This article虽然已经过时了,但涵盖了很多真正有用的内容,我仍然会回去引用。

2) 我提到使用 Route 53。这是出于三个原因。首先,将所有配置内容放在一个地方(AWS 控制台)比放在两个地方(AWS + reg-123)更容易。其次,我从未使用过 reg-123,但 Route 53 比大多数域名卖家的 DNS 设置 Web 应用程序更容易使用。第三,它比大多数方法更进一步,允许您执行诸如设置穷人的负载平衡和其他规则之类的操作,这些规则在应用程序生命周期的后期很有用。

希望有帮助。

关于node.js - EC2实例上的Node js应用程序-域名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42135920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com