Ubuntu의 MongoDB가 서비스로 시작되지 않고 로그에 아무것도 기록되지 않습니다.
Ubuntu에서 MongoDB 2.2를 실행 중이며 실행할 경우:
sudo mongod
데이터베이스가 없는 /data/db를 찾을 수 없다는 오류가 발생합니다.는 Ubuntu default mongod.conf로 됩니다./var/lib/mongodb
DB가 있는 곳입니다.처럼 보입니다.mongod
fileconf 파일을 수 .그래서 내가 달릴 때:
sudo mongod -f /etc/mongodb.conf
됩니다./var/log/mongodb/mongodb.log
모든 것이 행복합니다.다른 셸로 전환하고, mongo 셸에 로그인하고, 데이터베이스를 보고, 쿼리를 실행할 수 있습니다.
이를 취소하고 서비스로 실행하려고 합니다.
> sudo status mongodb
mongodb stop/waiting
> sudo start mongodb
mongodb start/running, process 10468
아직까지는 괜찮은 것 같은데, 몽고 서버가 시작되지 않았습니다.다른 실행 중:
> sudo status mongodb
mongodb stop/waiting
> mongo
MongoDB shell version: 2.2.0
connecting to: test
Sat Sep 1 19:07:43 Error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:91
exception: connect failed
"test"가 올바른 데이터베이스가 아니며 로그 파일에 아무것도 표시되지 않습니다.
저는 무엇이 잘못되었을 수 있는지 막막합니다.시작 스크립트를 확인해보니 괜찮은 것 같습니다. /etc/init/mongodb.conf
실행:
mongodb --exec /usr/bin/mongod -- --config /etc/mongodb.conf
좋아요, 이 모든 것은 권한에 달려 있습니다. 하지만 단계적으로 진행해 봅시다.을 할 때sudo mongod
구성 파일을 전혀 로드하지 않습니다. 문자 그대로 기본값인 포트 27017, /data/db의 데이터베이스 경로 등에서 컴파일된 상태로 시작하기 때문에 해당 폴더를 찾을 수 없다는 오류가 발생합니다.Ubuntu 기본값은 구성 파일을 가리킬 때만 사용됩니다(서비스 명령을 사용하기 시작하면 백그라운드에서 수행됨).
다음에는 다음과 같이 실행했습니다.
sudo mongod -f /etc/mongodb.conf
이전에 문제가 없었더라면, 이제 문제가 발생할 것입니다. 일반적인 구성(일반적인 dbpath 및 로그를 가리키며)을 루트 사용자로 하여 프로세스를 실행했습니다.즉, 이제 일반 MongoDB 폴더에 사용자: 그룹과 함께 여러 개의 파일이 있을 것입니다.root:root
.
사용자할 사용자)가 이러한 수 있는 권한이 합니다.root:root
파일, 그리고 가장 중요한 것은 로그 파일에 기록하여 정보를 제공할 수 없다는 것입니다.
따라서 일반 서비스로 실행하려면 해당 권한을 수정해야 합니다.먼저 MongoDB가 현재 루트로 실행되고 있지 않은지 확인한 후 다음을 수행합니다.
cd /var/log/mongodb
sudo chown -R mongodb:mongodb .
cd /var/lib/mongodb
sudo chown -R mongodb:mongodb .
그러면 문제가 해결될 것입니다(사용자:group이mongodb:mongodb
)로 아마 )로 확인하는 것이 좋습니다.ls -al
확실하게 말하자면, 또는 유사합니다.이 작업이 완료되면 서비스를 다시 시작할 수 있습니다.
먼저 mongodb 사용자/그룹에 데이터 디렉토리와 로그 파일에 모두 쓸 수 있는 권한이 있는지 확인합니다.
sudochown -Rmongodb:mongodb /var/lib/mongodb/.
sudochown -Rmongodb:mongodb /var/log/mongodb.log
다음 명령을 사용하여 Daemon(백그라운드 프로세스)으로 MongoDB를 시작합니다.
mongod --dbpath --dbpath /var/lib/mongodb/ --smallfiles --logpath /var/log/mongodb.log --logappend
MongoDB를 종료하려면 Mongo CLI를 입력하고 admin에 액세스하여 shutdown 명령을 실행합니다.
./몽고
> 관리자 사용
> db.shutdownServer()
참조: http://www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo
저도 같은 문제를 겪었습니다.그래서 cd /var/lib/mongodb/로 가서 mongod.lock 파일을 지웠더니 잘 되었습니다.
@nelsonic에서 제안한 대로 데이터, 저널 및 로그 폴더의 모든 권한을 확인한 후, /tmp 폴더의 파일을 잠글 수 있는 권한을 부여하여 문제를 해결했습니다.
sudo chown mongod:mongod mongodb-27017.sock
AWS Amazon Linux 인스턴스로 실행하고 있었습니다.저는 아래와 같이 mongod 사용자로 실행한 후 오류 코드를 조사하여 파악했습니다.다른 문제 해결에 유용할 수 있습니다.
sudo -S -u mongod mongod -f /etc/mongod.conf
다음 명령을 사용해 보십시오.
sudo chown mongodb /tmp/mongodb-27017.sock
아무 것도 작동하지 않았습니다. 그리고 나서 저는 그것이 권한 문제라는 것을 발견했습니다./tmp
디터리렉:
sudo chmod 1777 /tmp
sudo chown root:root /tmp
위의 답변 중 하나도 저에게 효과가 없었습니다.다음을 사용하여 init 스크립트를 디버깅하여 최종적으로 파악했습니다.
sudo bash -x /etc/init.d/mongodb 시작
그리고 그것이 mongod에 잘못된 설정 경로를 전달하는 것을 보았습니다./etc/init.d/mongodb의 줄을 "CONF=/etc/mongodb.conf"에서 "CONF=/etc/mongod.conf"로 간단히 변경했습니다.버전 2는 전자를 사용하며, 버전 3을 설치하면 새 형식으로 /etc/mongod.conf가 추가되었지만 init 스크립트가 업데이트되지 않았습니다.
업데이트: 이제 init 스크립트가 작동하는 훨씬 더 낯선 문제가 있지만, "sudo service mongodb start"가 아닌 "sudo bash -x /etc/init.d/mongodb start"로 실행해야 합니다.정지도 마찬가지입니다.
mongodb가 mongod 사용자로 명령줄에서 시작되었을 때 시작되었지만 User= mongod를 사용한 서비스로는 시작되지 않았습니다.한 시간 동안 권한 확인 후 서비스 정의, 소켓...그것은 SElinux였습니다!
/etc/selinux/config에서 적용에서 허용 및 재부팅으로 전환했습니다.이제 괜찮아요.
위의 답변 중 아무 것도 제게 효과가 없었던 후, 제 로그 파일을 삭제한 것은 Mongo를 다시 살아나게 했습니다.
요즘 mongod를 업데이트하고 이전 데이터베이스를 실행 중인 경우 이 오류가 발생할 수 있습니다.Mongod는 기본적으로 wiredTiger 엔진을 사용할 것이며 mmapv1 데이터베이스가 있을 것입니다.
/etc/mongod.conf에서 엔진 설정 편집
# engine: wiredTiger
engine: mmapv1
주의 - YAML은 공백에 민감합니다.
journalctl/systemd에서는 이 문제가 표시되지 않습니다.mongod log in /var/log/mongodb/mongod를 확인합니다.로그.
여기에 설명된 단계와 같은 방법으로 데이터베이스를 변환할 수 있습니다.
https://docs.mongodb.com/manual/tutorial/change-standalone-wiredtiger/
언급URL : https://stackoverflow.com/questions/12232166/mongodb-on-ubuntu-wont-start-as-a-service-nothing-in-the-log
'programing' 카테고리의 다른 글
SQL Server에 후행 공백을 포함하지 않는 LEN 함수 (0) | 2023.06.04 |
---|---|
'구성 관리자' 이름이 현재 컨텍스트에 없습니다. (0) | 2023.06.04 |
현재 사용자를 얻는 방법과 MVC5에서 사용자 클래스를 사용하는 방법은 무엇입니까? (0) | 2023.06.04 |
루비에서 배열의 교차점, 결합 및 하위 집합을 어떻게 얻을 수 있습니까? (0) | 2023.06.04 |
루비를 사용하여 단말기로 출력되는 텍스트를 컬러화하려면 어떻게 해야 합니까? (0) | 2023.06.04 |