Начало работы с сервером синтаксического анализа и node.js основы

#node.js #amazon-ec2 #parse-platform #parse-server #bitnami

#node.js #amazon-ec2 #платформа синтаксического анализа #сервер синтаксического анализа #bitnami

Вопрос:

Я установил bitnami parse server из AWS market place, чтобы обеспечить серверную часть для приложения iOS. В приложении для iOS API настроен подhttp://myURL.com/parse и когда я перехожу к тому, что, как я думал, будет домашней страницей, http://myURL.com вместо этого он перенаправляет меня на панель инструментов синтаксического анализа, расположенную по адресу http://myURL.com/apps. Я хотел бы иметь http://myURL.com создайте домашнюю страницу для моего приложения вместо перенаправления на панель инструментов синтаксического анализа, чтобы можно было создать веб-приложение, которое использует те же данные, что и приложение. Это мой первый проект с использованием node.js итак, я надеюсь, что кто-нибудь сможет указать мне правильное направление по нескольким темам. Моя предыдущая работа с веб-приложением всегда выполнялась в стеке LAMP, поэтому мне любопытно:

  • Правильно ли я предполагаю, что серверная часть parse, используемая iOS, также может быть серверной частью веб-приложения, доступ к которому осуществляется через браузер?
  • Когда я анализирую код в server.js в / home / bitnami /apps /parse / htdocs я не вижу функции, которая перенаправляет на myURL.com/apps есть ли другая область, на которой я должен сосредоточиться, чтобы понять, как myURL.com перенаправляется в папку apps?
  • Я заметил, что в / home / binami / apps / rockmongo существует папка с инструкциями по установке php-скриптов, может ли мой экземпляр AWS запускать php И node.js или установка стека LAMP помешает node.js стек?
  • Я уверен, что по этому вопросу есть отличная документация и / или учебные пособия, можете ли вы помочь мне начать, предоставив правильный способ поиска в Google или, что еще лучше, любые ссылки на сами учебные пособия?

Для контекста моя iOS позволяет пользователям входить в систему и позволяет им загружать изображения в классы сервера синтаксического анализа, я просто хочу позволить пользователям входить в систему и загружать изображение из веб-браузера, используя тот же сервер синтаксического анализа, на котором есть классы user / file.

Для справки ниже приведен server.js который, похоже, каким-то образом направляет запросы от myURL.com для myURL.com/apps:

 require('dotenv').config();
var express = require('express');
var ParseServer = require('parse-server').ParseServer;
var app = express();
// Specify the connection string for your mongodb database
// and the location to your Parse cloud code
var api = new ParseServer({
    databaseURI: "mongodb://root:9dh********@127.0.0.1:27017/bitnami_parse",
    cloud: "./node_modules/parse-server/lib/cloud-code/Parse.Cloud.js",
    appId: "19defd7********",
    masterKey: "cd8********",
    fileKey: "3bce6********",
    serverURL: "http://54.**.**.**:80/parse",
    filesAdapter: {
        "module": "@parse/s3-files-adapter",
        "options": {
            "bucket": process.env.S3_BUCKET,
        }
    },
});
// Serve the Parse API on the /parse URL prefix
app.use('/parse', api);

var port = 1337;
app.listen(port, function() {
    console.log('parse-server running on port '   port);
});

//Parse Dashboard
var ParseDashboard = require('parse-dashboard');
var dashboard = new ParseDashboard({
    apps: [
        {
            appName: "My Bitnami Parse API",
            appId: "19defd7********",
            masterKey: "cd8d*******",
            fileKey: "3bce6********",
            production: true,
            serverURL: "http://54.**.**.**:80/parse"
        }
    ],
    users: [
        {
            user: process.env.ADMIN_USER,
            pass: process.env.ADMIN_PASSWORD
        }
    ], useEncryptedPasswords: true
});

var allowInsecureHTTP = true;

// Serve the Parse Dashboard on the /parsedashboard URL prefix
app.use('/', dashboard);

var portdash = 4040;
app.listen(portdash, function() {
    console.log('parse-dashboard running on port '   portdash);
});
  

Ответ №1:

Точка монтирования для Parse Dashboard определяется в этой строке:

 app.use('/', dashboard);
  

Если вы хотите использовать отдельную точку монтирования для dashboard, вы можете сделать это:

 app.use('/dashboard', dashboard);
  

После изменения, если вы нажмете http://myURL.com/dashboard он загрузит панель мониторинга в /dashboard /apps. конечная точка ‘/ apps’ обрабатывается самой панелью синтаксического анализа.

Теперь, если вы хотите загрузить свой веб-сайт по корневому маршруту (/) или http://myURL.com , вам нужно создать другой маршрут (при условии, что вы хотите обслуживать статический сайт на данный момент)

 app.use('/public', express.static(path.join(__dirname, '/public'), {
   etag: true
}));

app.get('/', function (req, res) {
   res.sendFile(path.join(__dirname, '/public/index.html'));
});
  

Для обслуживания статического сайта вам необходимо создать папку, в которой вы будете размещать статический сайт. В этом случае я создал папку с именем public и поместил туда весь свой html, css, js. Теперь мне нужно указать статическую папку в express. Это то, что я сделал в первой строке. После этого я просто обслуживаю index.html путем создания маршрута «GET».

Вы также можете делать много других вещей, таких как создание API или обслуживание динамического веб-сайта, а также использовать parse server. Но для этого вы должны сначала разобраться в express Framework с nodejs.

Обновление: API синтаксического анализа и панель мониторинга — это две разные вещи. Вы можете запускать только сервер синтаксического анализа без панели мониторинга и наоборот. В вашем коде вы монтируете сервер синтаксического анализа в / parse endpoint. Посмотрите на эту строку

 app.use('/parse', api);
  

Итак, теперь сервер синтаксического анализа доступен в / parse endpoint. Вы можете изменить его на что угодно. Создайте отдельные конечные точки как для сервера синтаксического анализа, так и для панели мониторинга.

Комментарии:

1. Изменение app.use(‘/’, dashboard); является решением, и я просто хотел отметить, что новое имя (например, app.use(‘/dashboard’, dashboard);) не может начинаться со строки «parse». Я попытался это сделать, и мне пришлось поискать в Google, чтобы выяснить, почему это не работает, поэтому подумал, что было бы неплохо добавить комментарий.

2. @DanielPatriarca Смотрите обновленную часть ответа.