Ubuntu 15.10에서 MongoDB 서비스를 SystemD의 데몬으로 실행


12

MongoDB는 Ubuntu Long Term Support (LTS) 버전 만 지원합니다. 마지막은 Ubuntu 14.04 LTS이며 초기화 프로세스는 Canonical의 Upstart 독점 제품으로 관리됩니다. 그러나 Linux 표준 SystemD init 프로세스와 함께 Ubuntu 15.10을 사용하고 있습니다. 부팅시 MongoDB 서비스를 시작할 수 없습니다.

서비스 상태를 읽거나 시작하려고하면 "로드 실패"메시지가 표시됩니다.

> systemctl status mongod
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
> sudo systemctl start mongod
Failed to start mongod.service: Unit mongod.service failed to load: No such file or directory.

https://docs.mongodb.org/master/tutorial/install-mongodb-on-ubuntu/ 에서 우분투의 MongoDB 2.6 메타 패키지 (mongodb)가 아닌 공식 MongoDB 3.2 Community Edition (mongodb-org)을 실행하고 있습니다. 저장소.

> sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
> echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
> sudo apt-get update
> sudo apt-get install -y mongodb-org

누군가 SystemD로 MongoDB를 시작하는 방법을 알고 있습니까?


1
포크 : 사실 pidFilePath : /var/run/mongod.pid 내 문제는 여기에 기본 mongod의 conf의 조각 내가 없어진 것을, processManagement가, mongod를 포크 (fork)하지 않은 사용자 지정 설정 파일을이었다
Pykler

답변:


25

부팅시 SystemD로 MongoDB 서비스를 시작했습니다.

공식 메타 패키지 (mongodb-org) v3.2를 제거한 다음 우분투 저장소에서 메타 패키지 (mongodb) v2.6을 설치했습니다.

> sudo apt-get remove mongodb-org
> sudo apt-get install mongodb

아래와 같이 서비스 구성 파일을 작성하십시오.

> cd /lib/systemd/system
> sudo touch mongodb.service
> sudo nano mongodb.service
[Unit]
Description=An object/document-oriented database
Documentation=man:mongod(1)
After=network.target

[Service]
User=mongodb
Group=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongodb.conf

[Install]
WantedBy=multi-user.target

아래 명령을 사용하여 서비스가 활성화 또는 비활성화되었는지 목록에서 확인하십시오.

> systemctl list-unit-files --type=service
...
mongodb.service             disabled
...

비활성화되어 있거나 목록에 없으면 활성화하십시오.

> sudo systemctl enable mongodb.service

다시 확인하십시오.

> systemctl list-unit-files --type=service 
...
mongodb.service             enabled
...

이제 SystemD 초기화 프로세스에서 서비스를 관리 할 수 ​​있습니다.

> systemctl status mongodb
> sudo systemctl stop mongodb
> sudo systemctl start mongodb
> sudo systemctl restart mongodb

즐겨!


누락 된 서비스 정의 부분에 대한 포인터는 askubuntu.com/a/617869/43344 를 참조하십시오 . 또한 로컬 관리자 제공하고 작성한 서비스 단위 들어 가지 않아야합니다/lib .
JdeBP

1
즉, 서비스 단위는 그 때 아닌 로컬 관리자에 의해, 캐 노니 컬에 의해 작성되었습니다 있어야합니다/lib. 서비스 정의의 일부는 서비스를 시작하기에 충분하며 추가 설정은 큰 영향을 미치지 않으므로 보완적인 것으로 간주됩니다. PIDFile=/var/run/mongodb/mongod.pid줄과 run명령을 ExecStart=줄 에 추가하면 (mongodb-org) 메타 패키지 3.2가 아닌 (mongodb) 메타 패키지 2.6을 사용하기 때문에 오류가 발생합니다.
Fernando Santucci

1
왜 반대 투표를했는지, 나는 투표했다. 나는 비슷한 문제에 직면 했으며이 답변은 도움이되었습니다.
Tien Do

이것은 우분투 14에서 18로 이동하는 데 매우 도움이되었습니다. 내 유일한 추가 사항은 chownmongod가 systemctl을 통해 시작하기 전에 데이터와 로그 디렉토리를 다시 만들어야한다는 것입니다. 설치 문서는 나에게 말하지 않았지만 도움이 될 경우를 대비하여 아무것도 없습니다!
Tom J Nowell 16:17에

6

MongoDB 저장소에서 기본 설치시 mongod 서비스를 자동으로 시작 하려면 system.d 서비스를 활성화하기 만하면됩니다.

systemctl enable mongod.service( mongodb가 아닌 mongo d 서비스 이름에 주의하십시오 )

참고 : 이것은 systemd 및 Ubuntu Xerus 16.04 LTS가 설치된 Debian / GNU Jessie 8.x에서 테스트되었습니다.


이것은 Ubuntu Xerus 16.04 LTS에서도 마찬가지입니다. 공식 리포지토리에서 설치 한 후 시스템 서비스 유닛을 활성화해야합니다! 방금 다른 인스턴스 설치로 확인했습니다 ... :)
stamster

1
이 파일은 /lib/systemd/system/mongod.service우분투 16.04
Jyotman Singh

예, 시스템 단위 정의가 있지만 비활성화되어 있으므로 인스턴스를 재부팅 할 때마다 자동으로 시작되도록 활성화해야합니다.
stamster
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.