Рубрики
Без рубрики

[Wiki] Как я развернул Parse-Server и Parse-Dashboard на Mac с SSL

Как получить свой собственный разборщик сервера с помощью приборной панели на Mac с помощью MAMP PRO

Автор оригинала: Mokhlas Hussein.

Я использовал Parse-Server С первого дня он получит открытый источник на Github Сначала было очень трудно понять, как он работает и как развернуть его, а теперь после почти 2 года развертывания этого потрясающего сервера на нескольких Mac Servers Я разделяю свои знания о том, как я получаю это простым способом.

Требования

  • Домашний вид (Установите из https://brew.sh)

  • MAMP PRO (проверено на версии. 4.3)

  • SSL-сертификат Я использовал бесплатный сертификат 3 месяца, предоставленный Comodo через https://www.gogetssl.com/domain-validation/comod-free-ssl/Не забудьте получить CSR и ключ, если он сгенерирован в Интернете, это важно для Mainp Pro.

  • Nodejs Установите, используя следующую команду в вашем терминале

brew install nodejs
  • Монгодб Установите, используя следующую команду в вашем терминале
brew install mongodb

Настройка MongoDB с – Auth (аутентификация)

  • Создать/data/db папка для сохранения данных mongodb (вы можете изменить его в любой другой каталог)
sudo mkdir -p /data/db
  • Откройте терминал и запустите следующую команду, чтобы начать экземпляр Mongod
sudo mongod --dbpath /data/db
  • Если не удалось запустить, вы должны остановить услугу MongoDB
brew services stop mongodb
sudo mongod --dbpath /data/db
  • Как только он запустит открытую новую вкладку в клемме и запустите новую оболочку Mongo
mongo
  • Создать новый admin user (ниже info demo)
use admin
db.createUser(
  {
    user: "imAdmin",
    pwd: "admin1234",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)
  • Закрыть оболочку Mongo с помощью Ctrl + C
  • Закрыть экземпляр Mongod с использованием Ctrl + C
  • Начните снова Mongod экземпляра с авторизацией на этот раз
sudo mongod --auth --dbpath /data/db
  • Как только он запустит открытую новую вкладку в клемме и запустите новую оболочку Mongo
mongo
  • Теперь аутентифицировать пользователя администратора
use admin
db.auth("imAdmin", "admin1234")
  • Давайте создадим пользователя PARSE_SERVER и DB
use parse_db
db.createUser(
  {
    user: "parseUser",
    pwd: "parse1234",
    roles: [ { role: "readWrite", db: "parse_db" } ]
  }
)
  • теперь это сделано, у нас сейчас Mongodb работает правильно с аутентификацией

Setup Mamp Pro с вашим сертификатом SSL

  • Откройте mamp Pro и добавьте новый хост Рисунок 1.1.

  • Установите свой IP и ваш порт SSL (будьте уверены, что ваш порт – 443 ) Рисунок 1.2.

  • Добавьте свой сертификат SSL и его ключ, пакет (сеть сертификатов – ваш CA-Bundle файл) Рисунок 1.3.

Настройка Parse-Server-пример и приборная панель

  • клон пример анализа
git clone https://github.com/parse-community/parse-server-example.git ~/server
  • Перейдите в каталог серверов и сначала установите зависимости, затем установите приборная панель
cd ~/server
npm install
npm install --save parse-dashboard
  • Вернуться к MAMP PRO и нажмите Вкладка Apache (выбранный хост) Рисунок 1.4.

  • Теперь мы прокси 1337 и 4040 портов до 443 порта для доступа к серверу разбора и приборной панели через пример:

https://domain_name.com/parse 
rather than 
https://domain_name.com:1337/parse
  • внутри Дополнительные параметры для директивы : Поле вставить следующий код (измените его псевдоним сервера и другие значения, чтобы соответствовать вашу настройку)
ServerName ParseServer
ServerAlias domain_name.com
SSLEngine on
SSLProxyEngine On
ProxyRequests Off
ProxyPass /parse http://localhost:1337/parse
ProxyPassReverse /parse http://localhost:1337/parse
ProxyPass /dashboard http://localhost:4040/dashboard
ProxyPassReverse /dashboard http://localhost:4040/dashboard
ProxyPreserveHost On
  • Теперь вернемся к ~/сервер/ папка и открыть index.js в любом текстовом редакторе и удалите все внутри него, затем поместите следующий код внутри него
// Example express application adding the parse-server module to expose Parse
// compatible API routes.
var express = require('express');
var ParseServer = require('parse-server').ParseServer;
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.');
}
var api = new ParseServer({
databaseURI: databaseUri || 'mongodb://parseUser:parse1234@localhost:27017/parse_db',
cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js',
appId: process.env.APP_ID || 'rh864cs8df7sdsldfrh864cs8df7sdsldf',
masterKey: process.env.MASTER_KEY || 'isfjsofghsifisfjsofghsif', //Add your master key here. Keep it secret!
serverURL: process.env.SERVER_URL || 'https://domain_name.com/parse',  // Don't forget to change to https if needed
// liveQuery: {
//   classNames: ["Posts", "Comments"] // List of classes to support for query subscriptions
// }
});
// 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('I dream of being a website.  Please 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 + '.');
});
// This will enable the Live Query real-time server
ParseServer.createLiveQueryServer(httpServer);
// Set up parse dashboard
var dashboard = new ParseDashboard({
"apps": [{
"serverURL": 'https://domain_name.com/parse', // Not localhost
"appId": 'rh864cs8df7sdsldfrh864cs8df7sdsldf',
"masterKey": 'isfjsofghsifisfjsofghsif',
"appName": "AppNameHere",
"production": false,
}],
"users": [
{
"user":"dashboardAdmin",
"pass":"1234567890Asdfghj"
}
],
}, true);
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.');
});
  • В предыдущем коде мы подключаем Parse Server к Монгодб Используя нашу учетную запись администратора, которые имеют разрешение на ReadWrite на parse_db который мы создали рано
  • Мы добавили AppID и Отмычка
  • Мы добавили ServerURL на наш новый URL-адрес сервера с ( https ) и без 1337 порта
  • Мы создали Parsedashboard Экземпляр с конфигурациями у нас есть из Parseserver Отказ
  • Мы устанавливаем Appname Для нашего приложения и поставить приложение к статусу разработки, отключив Производство значение
  • Мы создали Parsedashboard Пользователь admin, который будет получать доступ к приборной панели через систему аутентификации

ПРИМЕЧАНИЕ

Если вам это нужно без SSL (Вам нужно изменить 443 порт 80 в MAMP Pro ) и замените ( https ) к => ( http ) в вашем ~/сервер/index.js файлы

Это все теперь, у вас есть полный рабочий сервер Parse с SSL на вашем MAC-сервере через MAMP PRO