[카테고리:] 서버
-
몽고디비 서버가 구동되지 않는 오류 해결하기
개발중인 프로젝트에 도커를 도입하려고 하는데 몽고디비까지 추가해보려고 하다가 원래대로 되돌리려는 중 오류가 발생했습니다.
몽고디비를 아래과 같이 시작해보면 아무런 반응이 없네요.
$ sudo systemctl start mongod
현재 서비스 상태를 확인해 봅니다.
$ sudo systemctl status mongod ● mongod.service - MongoDB Database Server Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Fri 2019-04-19 14:00:59 KST; 3min 45s ago Docs: https://docs.mongodb.org/manual Process: 7925 ExecStart=/usr/bin/mongod --config /etc/mongod.conf (code=exited, status=100) Main PID: 7925 (code=exited, status=100) CPU: 21ms 4월 19 14:00:59 doogle-ubuntu systemd[1]: Started MongoDB Database Server. 4월 19 14:00:59 doogle-ubuntu systemd[1]: mongod.service: Main process exited, code=exited, status=100/n/a 4월 19 14:00:59 doogle-ubuntu systemd[1]: mongod.service: Unit entered failed state. 4월 19 14:00:59 doogle-ubuntu systemd[1]: mongod.service: Failed with result 'exit-code'.
서비스가 실패상태입니다. 당연히 몽고디비 서버는 떠있지 않네요.
로그 기록을 확인해 보면…
$ sudo tail mongod.log 2019-04-19T14:00:59.937+0900 I CONTROL [initandlisten] build environment: 2019-04-19T14:00:59.937+0900 I CONTROL [initandlisten] distmod: ubuntu1604 2019-04-19T14:00:59.937+0900 I CONTROL [initandlisten] distarch: x86_64 2019-04-19T14:00:59.937+0900 I CONTROL [initandlisten] target_arch: x86_64 2019-04-19T14:00:59.937+0900 I CONTROL [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1", port: 27017 }, processManagement: { timeZoneInfo: "/usr/share/zoneinfo" }, storage: { dbPath: "/var/lib/mongodb", journal: { enabled: true } }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } } 2019-04-19T14:00:59.937+0900 I STORAGE [initandlisten] exception in initAndListen: IllegalOperation: Attempted to create a lock file on a read-only directory: /var/lib/mongodb, terminating 2019-04-19T14:00:59.937+0900 I NETWORK [initandlisten] shutdown: going to close listening sockets... 2019-04-19T14:00:59.937+0900 I NETWORK [initandlisten] removing socket file: /tmp/mongodb-27017.sock 2019-04-19T14:00:59.937+0900 I CONTROL [initandlisten] now exiting 2019-04-19T14:00:59.937+0900 I CONTROL [initandlisten] shutting down with code:100
밑에서 5번째 줄을 보면 원인을 확인 할 수 있습니다.
Attempted to create a lock file on a read-only directory: /var/lib/mongodb, terminating
/var/lib/mongodb 디렉토리가 읽기만 가능해서 lock 파일을 생성할 수 없는거 같네요.
경로 권한을 확인해 봅니다.
$ sudo ls -al ... (중략)... drwxr-xr-x 4 999 mongodb 32768 4월 19 13:34 mongodb/ ... (중략)...
보시는 바와 같이 디렉토리 및 하위 파일들 포함 모두 사용자가 바뀌었습니다. 아무래도 도커버전의 몽고디비가 한 짓(?)인거 같네요.
다음과 같이 권한을 복구해 줍니다.
$ sudo chown -R mongodb:mongodb mongodb
이제 다시 서비스를 시작하면 되겠습니다.
$ sudo systemctl start mongod
서비스 상태를 봐보면 정상적으로 구동중이라는 것을 확인할 수 있습니다.
$ sudo systemctl status mongod ● mongod.service - MongoDB Database Server Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2019-04-19 14:20:36 KST; 13s ago Docs: https://docs.mongodb.org/manual Main PID: 9963 (mongod) Tasks: 27 Memory: 148.4M CPU: 926ms CGroup: /system.slice/mongod.service └─9963 /usr/bin/mongod --config /etc/mongod.conf 4월 19 14:20:36 doogle-ubuntu systemd[1]: Started MongoDB Database Server.
리눅스에서는 항상 파일 권한 문제가 생길 수 있습니다. 주의하시기 바랍니다.
-
Docker Composer 오류 해결하기 – services.server.build contains unsupported option: ‘image’
아래와 같이 docker-composer 실행하면 바로 에러가 뜨는 경우가 있는데요.
(더 보기…)ERROR: The Compose file './docker-compose.yml' is invalid because: services.server.ports contains an invalid type, it should be an array services.server.build contains unsupported option: 'image'
-
우분투 18.04에서 부팅시 서비스 자동 시작하기
우분투 18.04에서 부팅시 자동시작하지 않는 서비스들이 가끔 있다. 보통 별도 PPA 로 설치하는 최신 버전 서버 들이 그런경우가 있는데.. 이 때 아래와 같이 해주면 자동시작할 수 있게 해준다.
(더 보기…) -
Sendmail 메일 발송 설정하기 (다음 한메일 문제 해결)
기존에 우분투 18.04에 sendmail 명령어로 메일 발송을 하기 위해 postfix 를 설치했었는데.. 다음(https://www.daum.net/) 같은 곳은 메일이 제대로 발송되지 않았다.
그래서 postfix 대신 sendmail 패키지를 설치해보았는데 몇가지 설정이 필요하다.
참고로 이글은 메일서버 구축과는 다르다. php 나 go언어 등에서 sendmail 명령어로 메일 발송 하는 부분만을 다룬다.
(더 보기…) -
NGINX – 특정 IP 차단하거나 허용하기
가끔 포트번호가 아닌 도메인 단위로 차단이 필요한 경우가 있다. 이럴 때 nginx 가상호스트 설정에 아래와 같은 내용을 추가하면 된다.
예를 들어 192.168.0.7 만 허용하고 다른 모든 아이피에 대해 차단하려면
server { allow 192.168.0.7; deny all; ... }
이와 같이 Nginx 가상호스트 설정 변경하고 서버를 재시작 혹은 이미 시작한 경우 설정 리로드를 하면 된다.
$ sudo systemctl reload nginx
-
실무에서 사용하기 위한 docker 활용법 – private docker registry 구축하기
docker 를 알아보다 보면 슬슬 실무에 적용해 보고 싶어지는데요. 실제로 배포등을 처리하려면 docker hub 가 필요합니다. 하지만 docker hub 는 계정당 1개만 private 저장소를 지원하는데요.
이를 해결하기 위해서는 자체적으로 구축한 도커 저장소가 있는게 아무래도 편하겠죠?
(더 보기…) -
네이버 클라우드 플랫폼 무료서버 사용해보기
오늘 기존에 개인 계정으로 가입해 사용하던 AWS 프리티어가 곧 만료된다는 이메일을 받았다.
그래서 그냥 5달러내고 AWS 라이트세일을 쓸까하다가..
다른 무료 서버호스팅을 찾아보게되었는데…
갑자기 네이버 클라우드 플랫폼 무료 서버가 생각나서 사용해보기로 했다.
네이버 클라우드 플랫폼 https://www.ncloud.com/
(더 보기…)