2017-03-19 1 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 구성 파일을 참조하는 것이 좋습니다.

관련 문제