如何使用 mup 在一个 digitalocean 液滴上正确部署带有 SSL 的多个流星实例?
How to correctly deploy multi meteor instances WITH SSL on one digitalocean droplet using mup?
我的 mup.json 第一个流星实例的配置:
{
"servers": [
{
"host": "111.222.333.444",
"username": "root",
"password": "mypass"
}
],
"setupMongo": true,
"setupNode": true,
"nodeVersion": "0.10.40",
"setupPhantom": false,
"enableUploadProgressBar": true,
"appName": "myapp1",
"app": "../myapp1",
"env": {
"PORT": 3001,
"ROOT_URL": "https://my.domain.com"
},
"ssl": {
"pem": "./ssl.pem"
},
"deployCheckWaitTime": 15
}
所以部署后我想通过 https://my.domain.com:3001. Then with similar configuration I want to deploy second instance to same droplet and get access to it by https://my.domain.com:3002.
访问这个实例
问题是部署后https访问ERR_CONNECTION_CLOSED,但是http访问正常
我怎样才能让它工作?
我终于做到了
首先,我使用了mupx
。但在那里我也遇到了麻烦。后来我发现我的错误是为不同的应用程序或协议编写了相同的端口。所以,有第一个和第二个应用程序的工作配置:
{
"servers": [{
"host": "111.222.333.444",
"username": "root",
"password": "mypass",
"env": {}
}],
"setupMongo": true,
"appName": "myapp1",
"app": "../myapp1",
"env": {
"PORT": 8000,
"ROOT_URL": "http://my.domain.com"
},
"deployCheckWaitTime": 15,
"enableUploadProgressBar": true,
"ssl": {
"certificate": "../ssl/bundle.crt",
"key": "../ssl/private.key",
"port": 8001
}
}
{
"servers": [{
"host": "111.222.333.444",
"username": "root",
"password": "mypass",
"env": {}
}],
"setupMongo": true,
"appName": "myapp2",
"app": "../myapp2",
"env": {
"PORT": 8100,
"ROOT_URL": "http://my.domain.com"
},
"deployCheckWaitTime": 15,
"enableUploadProgressBar": true,
"ssl": {
"certificate": "../ssl/bundle.crt",
"key": "../ssl/private.key",
"port": 8101
}
}
bundle.crt
和 private.key
对所有应用程序都是通用的。
不要忘记使用 mupx
.
之后
mupx setup
mupx deploy
我们可以通过
获得第一个应用程序的访问权限
http://my.domain.com:8000
https://my.domain.com:8001
第二个应用程序由
http://my.domain.com:8100
https://my.domain.com:8101
编辑:通过 http 访问无效。我不知道为什么,也许只是为了我的配置。但是这个功能我不需要,我只需要https。因此,如果您知道如何修复,请写信给我们。
EDIT2:没关系,http 访问有效。原因是 Chrome 浏览器,它总是将我的域从 http 重定向到 https。清除浏览器历史记录后一切都很好。
我的 mup.json 第一个流星实例的配置:
{
"servers": [
{
"host": "111.222.333.444",
"username": "root",
"password": "mypass"
}
],
"setupMongo": true,
"setupNode": true,
"nodeVersion": "0.10.40",
"setupPhantom": false,
"enableUploadProgressBar": true,
"appName": "myapp1",
"app": "../myapp1",
"env": {
"PORT": 3001,
"ROOT_URL": "https://my.domain.com"
},
"ssl": {
"pem": "./ssl.pem"
},
"deployCheckWaitTime": 15
}
所以部署后我想通过 https://my.domain.com:3001. Then with similar configuration I want to deploy second instance to same droplet and get access to it by https://my.domain.com:3002.
访问这个实例问题是部署后https访问ERR_CONNECTION_CLOSED,但是http访问正常
我怎样才能让它工作?
我终于做到了
首先,我使用了mupx
。但在那里我也遇到了麻烦。后来我发现我的错误是为不同的应用程序或协议编写了相同的端口。所以,有第一个和第二个应用程序的工作配置:
{
"servers": [{
"host": "111.222.333.444",
"username": "root",
"password": "mypass",
"env": {}
}],
"setupMongo": true,
"appName": "myapp1",
"app": "../myapp1",
"env": {
"PORT": 8000,
"ROOT_URL": "http://my.domain.com"
},
"deployCheckWaitTime": 15,
"enableUploadProgressBar": true,
"ssl": {
"certificate": "../ssl/bundle.crt",
"key": "../ssl/private.key",
"port": 8001
}
}
{
"servers": [{
"host": "111.222.333.444",
"username": "root",
"password": "mypass",
"env": {}
}],
"setupMongo": true,
"appName": "myapp2",
"app": "../myapp2",
"env": {
"PORT": 8100,
"ROOT_URL": "http://my.domain.com"
},
"deployCheckWaitTime": 15,
"enableUploadProgressBar": true,
"ssl": {
"certificate": "../ssl/bundle.crt",
"key": "../ssl/private.key",
"port": 8101
}
}
bundle.crt
和 private.key
对所有应用程序都是通用的。
不要忘记使用 mupx
.
之后
mupx setup
mupx deploy
我们可以通过
获得第一个应用程序的访问权限http://my.domain.com:8000
https://my.domain.com:8001
第二个应用程序由
http://my.domain.com:8100
https://my.domain.com:8101
编辑:通过 http 访问无效。我不知道为什么,也许只是为了我的配置。但是这个功能我不需要,我只需要https。因此,如果您知道如何修复,请写信给我们。
EDIT2:没关系,http 访问有效。原因是 Chrome 浏览器,它总是将我的域从 http 重定向到 https。清除浏览器历史记录后一切都很好。