2015-02-06 2 views
3

나는 내 서버에서 호스트하려고하는 간단한 Meteor 웹 앱을 가지고 있습니다. 서버 세부 정보;MongoDB에 연결하는 systemd를 사용하여 Linux (Debian)의 Host Meteor (MeteorJS). 오류 : URL은 mongodb : // user : pass @ host : port/dbname 형식이어야합니다.

  • 데비안 (제시) 리눅스 3.16.0-4 - AMD64 # 1 SMP 데비안 3.16.7-ckt2-1 (2014년 12월 8일) x86_64에 GNU/리눅스는
  • NodeJS 버전 0.10을 systemd 0.36
  • 유성 버전 1.0.3.1
  • MongoDB를 버전 2.6.7

/etc/systemd/system/customwebapp.service 파일;

[Service] 
ExecStart=/usr/bin/node /opt/customwebapp/bundle/main.js 
Restart=always 
StandardOutput=syslog 
StandardError=syslog 
SyslogIdentifier=customwebapp 
User=customwebapp 
Group=customwebapp 
Environment=NODE_ENV=production MONGO_URL='mongodb://localhost' 

[Install] 
WantedBy=multi-user.target 

저는 다음을 사용하여 서비스 계정을 만듭니다.

sudo useradd -mrU customwebapp 

나는 Meteor 앱을;

sudo meteor build --directory /opt/customwebapp 
cd /opt/customwebapp/programs/server 
sudo npm install 

서비스를 등록하려고합니다.

sudo systemctl enable customwebapp 
sudo systemctl start customwebapp 

Syslog는 다음을보고합니다.

/opt/customwebapp/bundle/programs/server/node_modules/fibers/future.js:173 
Error: URL must be in the format mongodb://user:[email protected]:port/dbname 
at Error (<anonymous>) 

이 문제를 해결하는 데 몇 시간 씩 노력했습니다. 여러 MONGO_URL 값을 사용했습니다. mongo 명령을 사용하여 MongoDB에서 admin 또는 root 사용자를 생성하고 사용자 : pass @ localhost : 27017/customwebapp 형식을 URL 환경 변수에 넣습니다.

내가 뭘하든 상관없이 동일한 오류가 발생합니다.

나는 Meteor Up을 사용해 보았지만 systemd가 아닌 Upstart를 구성하는 것으로 보인다.

그리고 나는 말할 것도없이 많은 솔루션을 시도해 왔습니다. 내가 시도한 모든 솔루션이 여기에 나열되어있는 것은 아닙니다.

나는 시스템 문제로 인해 문제가 발생했다고 생각합니다.

솔직히 말해서, 내가 가진 대부분의 문제가 내 앞에이 문제를 가지고 있기 때문에 이것은 처음 질문입니다. 그래서 나를 돕기 위해 훌륭하고 여러 번 있습니다. 이제 나는 SO가 다시 도움이되기를 바랍니다.

시간을내어 도와 주셔서 감사합니다.

+0

'URL'이 정확한 것 같습니다. 구성 파일에서 올바른 속성을 읽었는지 확인할 수 있습니까? – BatScream

+0

죄송합니다 BatScream, 어떤 구성 파일에 대해 이야기하고 있습니까? –

답변

5

OK, 나는이 줄을 사용하여 서비스 유닛 파일에 환경 설정을 상기에서 당신이 내 질문에서 볼 수 있듯이 Url

라는 NodeJS 코어 모듈의 소스 코드에 파고 후 문제를 발견;

Environment=NODE_ENV=production MONGO_URL='mongodb://localhost' 

노드 Url 모듈은 작은 따옴표를 감지하여 % 27로 바꿉니다. 이로 인해 Url.parse 함수가 호스트 값 설정에 실패했습니다.

여러 줄에 작은 따옴표없이 환경 값을 설정하는 올바른 방법은 다음과 같습니다.

Environment=NODE_ENV=production 
Environment=MONGO_URL=mongodb://localhost 
Environment=ROOT_URL=http://localhost:8080 
Environment=PORT=8080 

항상 작은 구문 문제입니다.

+0

당신은이 질문을 마무리하기 위해 자신의 대답을 대답으로 표시해야합니다. –