2017-03-19 12 views
0

시스템 시작시 Mongodb를 실행하기 위해 Systemd 유닛 파일을 만들었습니다. 또한 mongodb가 시작된 후 시작할 때 노드 응용 프로그램을 실행하는 systemd 서비스를 만들었습니다. mongodb에 대한 서비스는 정상적으로 작동하지만 노드 응용 프로그램에 대한 내 서비스가 어떤 이유로 실행하려고 시도하고 "MongoError : 첫 번째 연결시 서버 [localhost : 27017]에 연결하지 못했습니다."라는 오류가 발생합니다. $systemctl start mongodb을 사용하여 mongodb 서비스를 시작한 다음 $/usr/bin/node /node_app_slot/server.js을 사용하여 노드 응용 프로그램을 시작하면 제대로 작동하는 것 같습니다. 그래서 문제는 내 노드 서버에 대한 내 systemd 유닛 파일과 관련된 것 같습니다.노드 서버용 Systemd 서비스가 MongoDB에 연결할 수 없습니다.

[Unit] 
Wants=network.target mongodb.service 
After=network.target mongodb.service 

[Service] 
ExecStart=/usr/bin/node /node_app_slot/server.js 

[Install] 
WantedBy=multi-user.target 

임 인텔 에디슨에이 일을 hostapd를 사용하여 액세스 포인트 모드로 설정합니다

나는 https://gist.github.com/jwilm/5842956

그리고 여기 내 node_server.service 인 MongoDB를 systemd 서비스를 위해이를 사용했다. 운영 체제는 Yocto이며 최신 릴리스의 최신 버전입니다.

나는 어디로 잘못 가고 있는지 알 수 없다. 누군가가 올바른 방향으로 나를 안내 할 수 있다면 정말 고마워 할 것입니다!

감사합니다.

+0

MongoDB를 서버가 실제로 들어오는 연결을 수신하기 시작하는 것이 시간이 걸릴 수 있습니다 궁금. 어딘가에서 수면을 삽입하여 10 초 정도 후에 수면을 받아 들일 수 있습니까? – robertklep

+0

mongodb 로그를 보셨습니까? mongodb이 연결을 수락 할 준비가되면 nodejs 요청을 확인해야합니다. – NotBad4U

+0

또한 실패한 대신 연결을 다시 시도하는 것이 좋습니다 (아마도 연결 시도를 기하 급수적으로 중단하여) – nir0s

답변

0

systemdnetwork.target 대신 network-online.target을 사용할 수 있지만 올바른 구문은 올바른 것입니다.

MongoDB 앱이 시작되기 전에 5 초의 절전 모드를 추가하는 것이 좋습니다. 서버 부팅시이 문제가 발생하기 때문에 5 초 정도면 실용적인 차이는 없지만 문제를 해결할 수는 있습니다.

ExecStartPre=/bin/sleep 5 

그것은 당신이 인터넷에서 MongoDB를 systemd 서비스 파일을 붙여 넣기/복사 있다는 호기심 때 자신의 systemd 서비스 파일과 MongoDB를 제공됩니다. OS 버전, systemd 버전 또는 MongoDB 버전은 언급하지 않았지만 파일과 함께 제공되는 MongoDB 버전을 사용하지 않는 경우 공식 MongoDB 구성 파일을 참조하는 것이 좋습니다.