Существует множество руководств по миграции серверов Parse на разные платформы, но ни в одном из них не говорится, какие плагины и пакеты необходимы для тех веб-приложений, которые работают с Expressjs в облаке. Есть ли у кого-нибудь предложения по этой проблеме?
Я выполнил следующие шаги на сервере Amazon AWS с экземпляром Ubuntu. Все в порядке с API, но не с веб-приложением Expressjs.
curl -sL https://deb.nodesource.com/setup_5.x | sudo -E bash -
sudo apt-get install -y nodejs git
sudo apt-get update
sudo npm install -g parse-server pm2
sudo npm install -g express@3.1.0 underscore parse-express-https-redirect
sudo npm install -g parse-express-raw-body ejs@1.0.0 parse-express-cookie-session
На втором этапе я попытался запустить parse-server со службой pm2 узла, как показано ниже:
sudo useradd --create-home --system parse
sudo passwd parse
USER_PASS
sudo su parse
cd ~
mkdir -p ~/cloud
cp -r /tmp/my-cloud-files /home/parse/
\__ cloud
\__ main.js
\__ app.js
\__ ...
\__ public
\__ config
nano ecosystem.json
{
"apps" : [{
"name" : "parse-wrapper",
"script" : "/usr/bin/parse-server",
"watch" : true,
"merge_logs" : true,
"cwd" : "/home/parse",
"env": {
"PARSE_SERVER_CLOUD_CODE_MAIN": "/home/parse/cloud/main.js",
"PARSE_SERVER_DATABASE_URI": "mongodb://mongo_user:mongo_user_pass@localhost:27017/takimtakip",
"PARSE_SERVER_APPLICATION_ID": "application_id",
"PARSE_SERVER_MASTER_KEY": "application_master_key",
}
}]
}
export NODE_PATH= (echo $NODE_PATH):.
pm2 start ecosystem.json
pm2 list
Но когда я посмотрел файл журнала pm2, я увидел следующее
pm2 show parse-wrapper
┌───────────────────┬────────────────────────────────────────────────┐
│ status │ online │
│ name │ parse-wrapper │
│ restarts │ 72402 │
│ uptime │ 0s │
│ script path │ /usr/bin/parse-server │
│ script args │ N/A │
│ error log path │ /home/parse2/.pm2/logs/parse-wrapper-error.log │
│ out log path │ /home/parse2/.pm2/logs/parse-wrapper-out.log │
│ pid path │ /home/parse2/.pm2/pids/parse-wrapper.pid │
│ interpreter │ node │
│ interpreter args │ N/A │
│ script id │ 0 │
│ exec cwd │ /home/parse │
│ exec mode │ fork_mode │
│ node.js version │ 5.10.1 │
│ watch & reload │ ✘ │
│ unstable restarts │ 0 │
│ created at │ 2016-04-15T14:42:09.280Z │
└───────────────────┴────────────────────────────────────────────────┘
tail -f /home/parse2/.pm2/logs/parse-wrapper-error.log
TypeError: Cannot read property 'defaults' of undefined
at module.exports (/home/parse2/node_modules/parse-express-cookie-session/index.js:64:26)
at Object.<anonymous> (/home/parse2/cloud/app.js:25:9)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Function._load (/usr/lib/node_modules/pm2/node_modules/pmx/lib/transaction.js:62:21)
at Module.require (module.js:367:17)
at require (internal/module.js:16:19)
at Object.<anonymous> (/home/parse2/cloud/main.js:1:63)
Попробуйте так! Блок кода объяснен комментариями.
var express = require('express');
var ParseServer = require('parse-server').ParseServer;
var app = express();
var fs = require('fs');
var api = new ParseServer({
databaseURI: 'mongodb://user:pass@localhost:27017/parse', // Connection string for your MongoDB database
appId: 'your app id',
masterKey: 'your app master key', // Keep this key secret!
serverURL: 'https://localhost:1337/parse' // Don't forget to change to https if needed
});
var options = {
key: fs.readFileSync('/etc/letsencrypt/live/example.com/privkey.pem'),
cert: fs.readFileSync('/etc/letsencrypt/live/example.com/fullchain.pem')
};
// Serve the Parse API on the /parse URL prefix
app.use('/parse', api);
var httpsServer = require('https').createServer(options,app);
httpsServer.listen(1337, function() {
console.log('parse-server-example running on port 1337.');
});
Я очень рекомендую вам начать с пример сервера синтаксического анализа проект. Это пример приложения node.js, в котором используется синтаксический сервер. Насколько я могу судить, это лучшая документация по созданию приложения, использующего parse-server.
Оттуда вам действительно нужно изменить файл index.js для всех конфигурация использовать его как есть.