我正在帮助朋友将Parse应用程序迁移到专用服务器而不是托pipe服务提供商,而且我试图解决服务器上Parse Server实例中发生的错误。
首先,这里是PM2日志中的错误堆栈,每次GET或POST发送到服务器时都会被抛出:
parse-wrapper-0 (err): at null.<anonymous> (/usr/lib/node_modules /parse-server/node_modules/mongodb-core/lib/connection/pool.js:119:12) parse-wrapper-0 (err): at g (events.js:273:16) parse-wrapper-0 (err): at emitTwo (events.js:100:13) parse-wrapper-0 (err): at emit (events.js:185:7) parse-wrapper-0 (err): at Socket.<anonymous> (/usr/lib/node_modules/parse-server/node_modules/mongodb-core/lib/connection/connection.js:144:49) parse-wrapper-0 (err): at Socket.g (events.js:273:16) parse-wrapper-0 (err): at emitOne (events.js:90:13) parse-wrapper-0 (err): error: Uncaught internal server error. { [MongoError: server localhost:27017 received an error {"name":"MongoError","message":"write EPIPE"}] parse-wrapper-0 (err): name: 'MongoError', parse-wrapper-0 (err): message: 'server localhost:27017 received an error {"name":"MongoError","message":"write EPIPE"}' } MongoError: server localhost:27017 received an error {"name":"MongoError","message":"write EPIPE"} parse-wrapper-0 (err): at null.<anonymous> (/usr/lib/node_modules/parse-server/node_modules/mongodb-core/lib/topologies/server.js:308:40) parse-wrapper-0 (err): at emitTwo (events.js:100:13) parse-wrapper-0 (err): at emit (events.js:185:7) parse-wrapper-0 (err): at null.<anonymous> (/usr/lib/node_modules/parse-server/node_modules/mongodb-core/lib/connection/pool.js:119:12) parse-wrapper-0 (err): at g (events.js:273:16) parse-wrapper-0 (err): at emitTwo (events.js:100:13) parse-wrapper-0 (err): at emit (events.js:185:7) parse-wrapper-0 (err): at Socket.<anonymous> (/usr/lib/node_modules/parse-server/node_modules/mongodb-core/lib/connection/connection.js:144:49) parse-wrapper-0 (err): at Socket.g (events.js:273:16) parse-wrapper-0 (err): at emitOne (events.js:90:13)
由于我不太确定问题的本质(我查找了写入的EPIPE错误,但不确定为什么发生在GET上,或者为什么每次closures),我只是要给关于服务器的每一条信息我都能想到,与此有关。
这是目前相对的用户结构:
root -defuser:运行mongo实例以及nginx -parse:通过PM2运行parsing
这是PM2正在使用的ecos.json文件:
{ "apps":[{ "name" : "parse-wrapper", "script" : "/usr/bin/parse-server", "watch" : true, "merge_logs" : true, "cwd" : "/home/parse", "env" : { "PARSE_SERVER_CLOUD_CODE_MAIN": "cloud/main.js", "PARSE_SERVER_DATABASEURI": "mongodb://parse:[email protected]:27017/beerdb?ssl=true", "PARSE_SERVER_APPLICATION_ID": "super secret Parse key", "PARSE_SERVER_MASTER_KEY" : " master key" } }] }
这里是mongo.conf文件:
# mongod.conf # for documentation of all options, see: # http://docs.mongodb.org/manual/reference/configuration-options/ # Where and how to store data. storage: dbPath: /var/lib/mongodb journal: enabled: true # engine: # mmapv1: # wiredTiger: # where to write logging data. systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log # network interfaces net: port: 27017 bindIp: 0.0.0.0 ssl: mode: requireSSL PEMKeyFile: /etc/ssl/mongo.pem #processManagement: security: authorization: enabled #operationProfiling: #replication: #sharding: setParameter: failIndexKeyTooLong: false ## Enterprise-Only Options: #auditLog: #snmp:
我不认为nginx与此有任何关系,但无论如何,这里的configuration:
# HTTP - redirect all requests to HTTPS server { listen 80; listen [::]:80 default_server ipv6only=on; return 301 https://$host$request_uri; } # HTTPS - serve HTML from /usr/share/nginx/html, proxy requests to /parse/ # through to Parse Server server { listen 443; server_name domain.here; root /usr/share/nginx/html; index index.html index.htm; ssl on; # Use certificate and key provided by Let's Encrypt: ssl_certificate /etc/letsencrypt/live/domain.here/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/domain.here/privkey.pem; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; # Pass requests for /parse/ to Parse Server instance at localhost:1337 location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; proxy_pass http://localhost:1337/parse/; proxy_ssl_session_reuse off; proxy_set_header Host $http_host; proxy_redirect off; } }
我基本上没有什么想法,虽然我不是一个专家,但不仅仅是设置Apache,所以这可能是一个愚蠢的疏忽或我的头脑。 所以,如果是简单的东西,任何帮助是赞赏和抱歉。
重新启动服务器似乎解决了这个问题。 另外请注意,你应该在https://github.com/parseplatform/parse-server上打开一个问题(如果还没有的话)。
编辑:更新到分析服务器v2.2.17应该解决您的问题