나는 따라 갔다지도apt-get을 통해 MongoDB를 설치합니다. 확인에 문제가 있었지만 StackExchange에서 이를 추적해 보면 서명 프로세스에 알려진 문제가 있다는 것을 알 수 있으므로 플래그 apt-get install mongodb
없이 다시 실행했습니다 -y
. 그런 다음 설치가 성공한 것 같습니다. 그런데 서비스를 시작하려고 했더니 이런 일이 일어났습니다.
$ sudo service mongod start
[sudo] password for mark:
Failed to start mongod.service: Unit mongod.service not found.
$ sudo service mongod status
● mongod.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
물론 파일이 /etc/init.d/mongod
존재하지 않습니다. 설치 지침에는 이 파일이 제공된다고 명시되어 있습니다.
mongodb-org 패키지에는 init 스크립트 /etc/init.d/mongod를 포함한 다양한 init 스크립트가 포함되어 있습니다.
파일은 GitHub의 소스에 존재합니다. 그래서 나는 계속할 수 있습니다. 하지만 성공적으로 설치된 패키지에서 중요한 구성 파일이 누락된 이유를 알고 싶습니다. (나를 완전주의자라고 불러주세요.)
내 Ubuntu 릴리스는 16.10이며 공식적으로 지원되지 않습니다. 그게 원인이 될 수는 없을 것 같아요. 출시 버전이 정말 비난받을 수 있습니까? 아니면 서명되지 않은 패키지를 설치한 것이 실수였습니까? 아니면 패키지 자체가 깨졌나요? 아니면 여기서 다른 일이 일어나고 있습니까?
답변1
내가 틀렸을 뿐이야. 릴리스 비호환성이 문제입니다. 설치 후 스크립트가 자동으로 실패한 것 같습니다. 이로 인해 누락된 파일이 존재하지 않습니다.
솔루션은 다음과 매우 유사한 것으로 나타났습니다.이 질문, 이는 실행을 제안합니다.이 스크립트.
MongoDB 3.2.6의 기본 파일 위치 변경에 따라 스크립트를 약간 변경했습니다. (변경 사항이 꼭 필요한 것은 아닙니다. 저는 단지 cruft를 좋아하지 않습니다.) 이전에는 데이터 파일이 /data/db/
. 이제 기본 위치는 /var/lib/mongodb/
이며 이전 위치는 더 이상 사용되지 않습니다. 그래서 해당 경로를 참조하는 스크립트의 줄을 제거했습니다.
Ubuntu는 이제 기본적으로 Upstart 대신 systemd를 사용하므로 /var/run/mongodb/
더 이상 필요하지 않습니다. 나는 이 줄을 제거하지 않고 주석 처리했습니다. 어떤 이유로든 여전히 Upstart를 사용하고 있다면 이 경로를 참조하는 세 줄의 주석 처리를 제거해야 합니다.
업데이트된 스크립트는 다음과 같습니다.
# enable_mongo.sh
echo '[Unit]
Description=High-performance, schema-free document-oriented database
After=syslog.target network.target
[Service]
User=mongodb
Group=mongodb
ExecStart=/usr/bin/mongod -f /etc/mongod.conf
[Install]
WantedBy=multi-user.target' > /lib/systemd/system/mongod.service
# Setup the required directories
# mkdir -p /var/run/mongodb/
mkdir -p /var/log/mongodb/
mkdir -p /var/lib/mongodb/
# chown mongodb:mongodb /var/run/mongodb/
chown mongodb:mongodb /var/log/mongodb/
chown mongodb:mongodb /var/lib/mongodb/
# chmod 0755 /var/run/mongodb/
chmod 0755 /var/log/mongodb/
chmod 0755 /var/lib/mongodb/
# Start the new service and enable it on boot
systemctl --system daemon-reload
systemctl enable mongod.service
echo "Starting"
systemctl start mongod.service