mongodb 용 우분투의 시작 스크립트


11

나는 리눅스와 mongodb를 처음 사용합니다. 우분투에 mongodb를 이미 설치했지만 다른 포트에서 하나 이상의 인스턴스를 실행하고 싶습니다. 다른 질문과 포럼에서 알 수 있듯이 시작 스크립트가 있어야합니다. /programming/7300109/ubuntu-start-upstart-second-instance-of-mongodb

그러나 서버에서 upstart 스크립트를 찾거나 찾을 수 없습니다. upstart 스크립트를 작성하면 서비스로 시작할 위치를 지정해야합니다.

또는 동일한 서버에서 다른 포트에서 다른 mongodb 인스턴스를 시작하는 다른 적절하고 쉬운 방법이 있습니까?

답변:


8

10gen 저장소 또는 기본 Debian / Ubuntu 저장소에서 실행 중입니까? 공식 10gen 저장소를 사용하는 것이 좋습니다.

이 링크를 확인하십시오-[Ubuntu에 10gen MongoDB 설치 방법 :] http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/ . 이 변경 전에 이전 mongodb 설치를 제거하는 것이 가장 좋으며,이 경우 저장소 소스 (/etc/apt/source.list)를 수정해야하지만 위 링크에서도 자세히 설명합니다. sysvinit보다 upstart를 사용하는 것이 좋으며 처리 방법은 방법에 나와 있습니다.

10gen Ubuntu를 설정하면 구성 파일은 /etc/mongodb.conf에 있습니다.

별도의 mongod 프로세스를 실행할 수있는 몇 가지 방법이 있습니다. 하나는 단순히 cli에서 실행하는 것입니다.

sudo -u mongodb mongod --dbpath /var/tmp/mongotest --logpath /var/tmp/mongotest_log --port 3001 &

생산하는 ( 'ps'사용)

mongodb   2210  3.3  1.5 259012 15300 pts/0    Dl   11:48   0:00 mongod --dbpath /var/tmp/mongotest --logpath /var/tmp/mongotest_log --port 3001

cli-> mongod --port 3001을 통해 연결할 수 있습니다

또 다른 방법은 /etc/mongodb.conf의 사본을 만드는 것입니다.

sudo cp /etc/mongodb.conf /etc/mongodbnew.conf and editing the following lines in the new file - 


# mongodbnew.conf

dbpath=/var/lib/mongodbnew

#where to log
logpath=/var/log/mongodb/mongodbnew.log

port = 27018

dbpath (mongodb 파일이 저장된 위치)를 / var / lib / mongodb에서 / var / lib / mongodbnew로 변경했습니다. 로그 경로가 mongodb.log에서 mongodbnew.log로 변경되었으며 포트가 기본값 27017에서 27018로 변경되었습니다 (줄을 주석 해제하려면 #을 제거해야합니다).

또한이 구성 파일의 새 이름을 반영하도록 맨 위 줄을 변경했습니다.

데이터 디렉토리가 존재하지 않고 데이터 디렉토리가 없으면 mongod 프로세스가 시작되지 않고 소유자와 그룹이 mongodb인지 확인해야합니다.

sudo mkdir /var/lib/mongodbnew
sudo chown -R mongodb:mongodb mongodbnew/

또한 로그 파일의 권한을 작성하고 변경하십시오.

sudo touch /var/log/mongodb/mongodbnew.log && sudo chown mongodb:mongodb /var/log/mongodb/mongodbnew.log

CLI에서 새 mongod 프로세스 (백그라운드)를 시작하려면 다음을 입력하십시오.

sudo -u mongodb /usr/bin/mongod --config /etc/mongodbnew.conf &

화면에 다음을 전송합니다-

"모든 출력 : /var/log/mongodb/mongodbnew.log"

mongod 프로세스가 "ps"로 실행 중인지 확인하십시오.

sysadmin@ubuntu:/var/lib$ ps auwx | grep mongo | egrep -v 'grep|sudo'
mongodb    921 11.3  1.5 627672 15608 ?        Ssl  10:56   4:30 /usr/bin/mongod --config /etc/mongodb.conf
mongodb   2137  7.8  1.5 627672 15880 pts/0    Sl   11:36   0:00 /usr/bin/mongod --config /etc/mongodbnew.conf

연결할 수 있는지 확인하려면 Mongo 셸을 실행하십시오.

$ mongo --port 27018
MongoDB shell version: 2.0.5
connecting to: 127.0.0.1:27018/test
> 

lsof를 사용하면 두 개의 mongod 프로세스, 원래는 27017에 바인딩되고 새로운 프로세스는 27018에 바인딩됩니다.

$ sudo lsof -i :27017
COMMAND PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mongod  921 mongodb    6u  IPv4   9066      0t0  TCP *:27017 (LISTEN)
sysadmin@ubuntu:/var/lib$ sudo lsof -i :27018
COMMAND  PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mongod  2137 mongodb    6r  IPv4  11923      0t0  TCP *:27018 (LISTEN)

시작시 두 프로세스가 실행되도록하려면 원래 init 구성 파일을 복사하십시오.

sudo cp /etc/init/mongodb.conf /etc/init/mongodbnew.conf

다음과 같은 두 개의 파일이 생성됩니다-

$ ls -lart /etc/init/mongo*
-rw-r--r-- 1 root root 536 May  8 15:51 /etc/init/mongodb.conf
-rw-r--r-- 1 root root 554 Jun 11 11:43 /etc/init/mongodbnew.conf

vi 또는 다음과 같이 원하는 것을 사용하여 새 mongodbnew.conf 파일을 편집하십시오.


## Ubuntu upstart file at /etc/init/mongodbnew.conf

limit nofile 20000 20000

kill timeout 300 # wait 300s between SIGTERM and SIGKILL.

pre-start script
    mkdir -p /var/lib/mongodbnew/
    mkdir -p /var/log/mongodbnew/
end script

start on runlevel [2345]

런레벨에서 멈춤 [06]

script
  ENABLE_MONGODB="yes"
  if [ -f /etc/default/mongodbnew ]; then . /etc/default/mongodbnew; fi
  if [ "x$ENABLE_MONGODB" = "xyes" ]; then exec start-stop-daemon --start --quiet --chuid mongodb --exec                /usr/bin/mongod -- --config /etc/mongodbnew.conf; fi

엔드 스크립트

우분투 12.04에서 이것을 테스트했으며 재부팅 후를 포함하여 잘 작동하는 것으로 보입니다. 나는 분명히 프로덕션 환경에서 실행하지 않았습니다. 사과, 위의 오타가 있지만 많은 정보가 있고 뭔가를 놓친 것일 수 있습니다.

마지막으로 cli- http: //www.mongodb.org/display/DOCS/Replica+Set+Tutorial에서 여러 mongod 인스턴스를 시작하는 예제를 제공하는 Replica 세트에 대한 링크가 있습니다 .


install-mongodb-on-debian-or-ubuntu-linux 링크가 docs.mongodb.org/manual/tutorial/install-mongodb-on-debiandocs.mongodb.org/manual/tutorial/install-mongodb 로 변경되었습니다. -on-ubuntu .
페르난도 코쉬

2

stop-start-daemon이 동일한 이름으로 새 프로세스를 두 번 이상 시작하지 않는 위의 답변에 문제가 발생했습니다. 그러나 --nameupstart 스크립트에서 /etc/init/새로운 이름을 포함하도록 시작 줄을 변경할 수 있는 인수가 있습니다 . 이 같은:

if [ "x$ENABLE_MONGODB" = "xyes" ]; then exec start-stop-daemon --start --quiet --chuid mongodb --name mongodb-shard2 --exec /usr/bin/mongod -- --config /etc/mongodb-shard2.conf; fi

이 경우 --name인수는이 인스턴스를 고유하게 만들고 다른 mongod 인스턴스와 별도로 시작할 수 있습니다.


0

upstart 스크립트는 /etc/init/


thnx에는 mongodb.conf가 있지만 기본 실행 인스턴스의 기본 conf 파일입니다.

난 그냥 내 mongodb.conf 아마도 구성이 소스의 / etc / 기본 / MongoDB를 살펴 한 후 사용하여 MongoDB를 시작했습니다 시작 - 중지 - 데몬

이 파일을 복사하고 다른 포트로 mongodb를 시작하도록 명령을 수정할 수 있습니다. 로그 파일 등을 변경할 수 있도록 완전히 새로운 설정 파일을 지정하고 싶을 것입니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.