我在Azure上部署了2台Ubuntu服务器。 首先,我已经安装了Parse服务器,第二,我安装了MongoDB。 (我也已经准备好了数据库)
一切工作正常! Parse Server和MongoDB服务器。 他们也沟通良好。 事情是,当我试图连接到我的仪表板 – http://IP:4040/dashboard – 它引发错误Server not reachable: unable to connect to server 。
以下是我在index.js :
var express = require('express'); var ParseServer = require('parse-server').ParseServer; var ParseDashboard = require('parse-dashboard'); var allowInsecureHTTP = true; var path = require('path'); var databaseUri = process.env.DATABASE_URI || process.env.MONGODB_URI; if (!databaseUri) { console.log('DATABASE_URI not specified, falling back to localhost.'); } //process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; var api = new ParseServer({ databaseURI: databaseUri || 'mongodb://IP:27017/db', cloud: './cloud/main.js', appId: process.env.APP_ID || 'xxx', masterKey: process.env.MASTER_KEY || 'xxx', //Add your master key here. Keep it secret! fileKey: 'xxx', serverURL: process.env.SERVER_URL || 'http://localhost:1337/parse', // Don't forget to change to https if needed // Enable email verification verifyUserEmails: false, // The public URL of your app. // This will appear in the link that is used to verify email addresses and reset passwords. // Set the mount path as it is in serverURL publicServerURL: 'http://localhost:1337/parse', }); // Client-keys like the javascript key or the .NET key are not necessary with parse-server // If you wish you require them, you can set them as options in the initialization above: // javascriptKey, restAPIKey, dotNetKey, clientKey var app = express(); // Serve static assets from the /public folder app.use('/public', express.static(path.join(__dirname, '/public'))); // Serve the Parse API on the /parse URL prefix var mountPath = process.env.PARSE_MOUNT || '/parse'; app.use(mountPath, api); // Parse Server plays nicely with the rest of your web routes app.get('/', function(req, res) { res.status(200).send('Make sure to star the parse-server repo on GitHub!'); }); // There will be a test page available on the /test path of your server url // Remove this before launching your app app.get('/test', function(req, res) { res.sendFile(path.join(__dirname, '/public/test.html')); }); var port = process.env.PORT || 1337; var httpServer = require('http').createServer(app); httpServer.listen(port, function() { console.log('parse-server-example running on port ' + port + '.'); }); // Set up parse dashboard var config = { "allowInsecureHTTP": true, "apps": [ { "serverURL": "http://localhost:1337/parse", "appId": "xxx", "masterKey": "xxx", "appName": "name", "production": true } ], "users": [ { "user":"username", "pass":"pass" } ] }; var dashboard = new ParseDashboard(config, config.allowInsecureHTTP); var dashApp = express(); // make the Parse Dashboard available at /dashboard dashApp.use('/dashboard', dashboard); // Parse Server plays nicely with the rest of your web routes dashApp.get('/', function(req, res) { res.status(200).send('Parse Dashboard App'); }); var httpServerDash = require('http').createServer(dashApp); httpServerDash.listen(4040, function() { console.log('dashboard-server running on port 4040.'); }); // This will enable the Live Query real-time server ParseServer.createLiveQueryServer(httpServer);
这是我的package.json :
{ "name": "parse-server-example", "version": "1.4.0", "description": "An example Parse API server using the parse-server module", "main": "index.js", "repository": { "type": "git", "url": "https://github.com/ParsePlatform/parse-server-example" }, "license": "MIT", "dependencies": { "express": "~4.11.x", "kerberos": "~0.0.x", "parse": "~1.8.0", "parse-server": "~2.6.3", "parse-dashboard": "~1.1.0" }, "scripts": { "start": "node index.js" }, "engines": { "node": ">=4.3" } }
我也打开了Azure仪表板所需的端口。 有什么不对的想法? 我已经search和search,但没有运气。
我只是改变了我的serverURL内的仪表板configuration,从http://localhost:1337/parse到http://ip:1337/parse ,它的工作! 这是为什么?
默认情况下,我们应该绑定到"serverURL": "http://localhost:1337/parse" ,但是在Azure中,我们build议绑定到10.0.0.4 (Azure VM private VM) 。
在Azure中,公共IPnetworkingstream量将首先路由到Azure私有IP地址。