Web 连接在 EC2 Meteor 部署时被拒绝
Web connection refused on EC2 Meteor deployment
我正在使用 MUP 将流星应用程序部署到 EC2 实例 运行ning Ubuntu 18. 我的部署似乎有效,但是 当我尝试访问 public URL 我的浏览器中的实例,我得到“连接被拒绝”。 我要为这个疯狂了!
我认为这是一个 AWS 问题,例如端口未打开,但我的 EC2 入站规则似乎应该有效:
我通过 SSH 进入实例以查看是否一切正常,我认为是的。对于初学者来说,docker 容器似乎 运行ning 很好:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2b70717ce5c9 mup-oil-pricing:latest "/bin/sh -c 'exec $M…" About an hour ago Up About an hour 0.0.0.0:80->80/tcp oil-pricing
虽然仍然通过 SSH 登录,但当我点击 curl localhost:80
时,我在控制台中返回 HTML,这表明该应用程序(Meteor 应用程序)运行 正常。
我查看了 Ubuntu 防火墙是否处于活动状态,但我认为没有:
ubuntu@ip-172-30-1-118:~$ sudo ufw status verbose
Status: inactive
我的端口似乎也很好(据我所知):
ubuntu@ip-172-30-1-118:~$ sudo netstat -tulpn | grep LISTEN
tcp 0 0 10.0.3.1:53 0.0.0.0:* LISTEN 3230/dnsmasq
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 344/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7903/sshd: /usr/sbi
tcp6 0 0 :::22 :::* LISTEN 7903/sshd: /usr/sbi
tcp6 0 0 :::80 :::* LISTEN 13597/docker-proxy
但是当我在本地计算机上转到 Chrome 并尝试通过我分配的弹性 IP (34.231.39.181
) 或通过 EC2 地址 ( https://ec2-34-231-39-181.compute-1.amazonaws.com/
) 我得到:
This site can’t be reached
ec2-34-231-39-181.compute-1.amazonaws.com refused to connect.
我认为这不是 MUP 问题,但这里是 MUP 配置以防万一:
module.exports = {
servers: {
one: {
host: '34.231.39.181',
username: 'ubuntu',
pem: [[MY PEM FILE]]
}
},
hooks: {
'pre.deploy': {
remoteCommand: 'docker system prune -a --force' // PRUNE DOCKER IMAGES
},
},
app: {
name: 'oil-pricing',
path: '../',
servers: {
one: {},
},
buildOptions: {
serverOnly: true,
},
env: {
ROOT_URL: 'https://ec2-34-231-39-181.compute-1.amazonaws.com/',
MONGO_URL: [[MY MONGO URL]]
PORT: 80,
},
docker: {
image: 'abernix/meteord:node-8.15.1-base', // per: https://github.com/zodern/meteor-up/issues/692
},
enableUploadProgressBar: true
},
};
当我 运行 mup deploy
一切都检查完毕时:
Started TaskList: Pushing Meteor App
[34.231.39.181] - Pushing Meteor App Bundle to the Server
[34.231.39.181] - Pushing Meteor App Bundle to the Server: SUCCESS
[34.231.39.181] - Prepare Bundle
[34.231.39.181] - Prepare Bundle: SUCCESS
Started TaskList: Configuring App
[34.231.39.181] - Pushing the Startup Script
[34.231.39.181] - Pushing the Startup Script: SUCCESS
[34.231.39.181] - Sending Environment Variables
[34.231.39.181] - Sending Environment Variables: SUCCESS
Started TaskList: Start Meteor
[34.231.39.181] - Start Meteor
[34.231.39.181] - Start Meteor: SUCCESS
[34.231.39.181] - Verifying Deployment
[34.231.39.181] - Verifying Deployment: SUCCESS
如果重要的话,我正在使用 Meteor 1.8.1。
如有任何帮助,我们将不胜感激!
您的 sudo netstat -tulpn | grep LISTEN
显示您正在侦听端口 80。但是您在以下位置使用 HTTPS:
https://ec2-34-231-39-181.compute-1.amazonaws.com
这将连接到端口 443,没有任何监听。因此,要么更改您的应用程序以在端口 443 上侦听 HTTPS 连接(需要适当的 ssl 证书),要么使用将转到端口 80(未加密)的 HTTP:
http://ec2-34-231-39-181.compute-1.amazonaws.com
我正在使用 MUP 将流星应用程序部署到 EC2 实例 运行ning Ubuntu 18. 我的部署似乎有效,但是 当我尝试访问 public URL 我的浏览器中的实例,我得到“连接被拒绝”。 我要为这个疯狂了!
我认为这是一个 AWS 问题,例如端口未打开,但我的 EC2 入站规则似乎应该有效:
我通过 SSH 进入实例以查看是否一切正常,我认为是的。对于初学者来说,docker 容器似乎 运行ning 很好:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2b70717ce5c9 mup-oil-pricing:latest "/bin/sh -c 'exec $M…" About an hour ago Up About an hour 0.0.0.0:80->80/tcp oil-pricing
虽然仍然通过 SSH 登录,但当我点击 curl localhost:80
时,我在控制台中返回 HTML,这表明该应用程序(Meteor 应用程序)运行 正常。
我查看了 Ubuntu 防火墙是否处于活动状态,但我认为没有:
ubuntu@ip-172-30-1-118:~$ sudo ufw status verbose
Status: inactive
我的端口似乎也很好(据我所知):
ubuntu@ip-172-30-1-118:~$ sudo netstat -tulpn | grep LISTEN
tcp 0 0 10.0.3.1:53 0.0.0.0:* LISTEN 3230/dnsmasq
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 344/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7903/sshd: /usr/sbi
tcp6 0 0 :::22 :::* LISTEN 7903/sshd: /usr/sbi
tcp6 0 0 :::80 :::* LISTEN 13597/docker-proxy
但是当我在本地计算机上转到 Chrome 并尝试通过我分配的弹性 IP (34.231.39.181
) 或通过 EC2 地址 ( https://ec2-34-231-39-181.compute-1.amazonaws.com/
) 我得到:
This site can’t be reached
ec2-34-231-39-181.compute-1.amazonaws.com refused to connect.
我认为这不是 MUP 问题,但这里是 MUP 配置以防万一:
module.exports = {
servers: {
one: {
host: '34.231.39.181',
username: 'ubuntu',
pem: [[MY PEM FILE]]
}
},
hooks: {
'pre.deploy': {
remoteCommand: 'docker system prune -a --force' // PRUNE DOCKER IMAGES
},
},
app: {
name: 'oil-pricing',
path: '../',
servers: {
one: {},
},
buildOptions: {
serverOnly: true,
},
env: {
ROOT_URL: 'https://ec2-34-231-39-181.compute-1.amazonaws.com/',
MONGO_URL: [[MY MONGO URL]]
PORT: 80,
},
docker: {
image: 'abernix/meteord:node-8.15.1-base', // per: https://github.com/zodern/meteor-up/issues/692
},
enableUploadProgressBar: true
},
};
当我 运行 mup deploy
一切都检查完毕时:
Started TaskList: Pushing Meteor App
[34.231.39.181] - Pushing Meteor App Bundle to the Server
[34.231.39.181] - Pushing Meteor App Bundle to the Server: SUCCESS
[34.231.39.181] - Prepare Bundle
[34.231.39.181] - Prepare Bundle: SUCCESS
Started TaskList: Configuring App
[34.231.39.181] - Pushing the Startup Script
[34.231.39.181] - Pushing the Startup Script: SUCCESS
[34.231.39.181] - Sending Environment Variables
[34.231.39.181] - Sending Environment Variables: SUCCESS
Started TaskList: Start Meteor
[34.231.39.181] - Start Meteor
[34.231.39.181] - Start Meteor: SUCCESS
[34.231.39.181] - Verifying Deployment
[34.231.39.181] - Verifying Deployment: SUCCESS
如果重要的话,我正在使用 Meteor 1.8.1。
如有任何帮助,我们将不胜感激!
您的 sudo netstat -tulpn | grep LISTEN
显示您正在侦听端口 80。但是您在以下位置使用 HTTPS:
https://ec2-34-231-39-181.compute-1.amazonaws.com
这将连接到端口 443,没有任何监听。因此,要么更改您的应用程序以在端口 443 上侦听 HTTPS 连接(需要适当的 ssl 证书),要么使用将转到端口 80(未加密)的 HTTP:
http://ec2-34-231-39-181.compute-1.amazonaws.com