Naver ncloud 설정

ncloud 서비스

sudoer 설정

새 사용자를 추가하고 suder 로 등록한 후에 사용한다. 우분투/데비안 계열 새 사용자 추가는 Odroid Install 문서를 참고한다.

새 사용자 등록

adduser 추가할 사용자에 대한 정보를 하나씩 묻고, 사용자 홈 디렉토리가 생성된다. 추가한 사용자에 대한 /etc/passwd, /etc/shadow, /etc/group and /etc/gshadow 편집이 된다

추가하고 패스워드를 입력한다.

1
2
# adduser USERNAME
# sudo passwd USERNAME

그리고 suder로 등록해 준다.

sudoer 등록

usermod 혹은 visudo 를 사용할 수 있다.

1
# usermod -aG sudo USERNAME

hostname 확인

hostname 명령에 따라 현재 호스트 이름이 /etc/hosts 혹은 dns resolver에서 검색되야 한다.

1
2
$ sudo systemcgl status nginx
sudo: unable to resolve host ubuntu-84

위 같은 경고가 나타난다면 호스트 이름을 /etc/hosts 에 등록해 준다.

ssh

서버에

1
$ ssh-keygen -t rsa -b 4096 -C "USER@localhost"

위 2 과정을 아래 명령 한 줄로 복사->붙여넣기를 동시에 할 수 있다.

클라이언트:

1
cat ~/.ssh/id_rsa.pub | ssh <USERNAME>@<IP-ADDRESS> 'cat >> .ssh/authorized_keys'

mongod-org 설치

커뮤티티에디션 설치

네이버 NCloud에서 Micro server를 하나 생성한 후에, MongoDB Community Edition을 설치했고, ncloud의 Ubuntu 16.01 이미지로 서버를 생성한 후에 업그레이드해서 16.04.4 LTS 버전에서 설치했다.

설정

mongodb 설정
mongodb auth

현재 실행중인 mongod 를 종료한다.

sudo systemctl stop mongod.service

MongoDB 설정
Mongo Database를 사용하기 위해서 데이터 파일 위치, 로그, 포트, Ip 주소 등에 대한 구성을 mongod.conf 에서 할 수 있다. 수정된 구성이 작동하는지 mongo 클라이언트로 접속해서 테스트한다.

mongod.conf

/etc/mongod.conf 파일에 인증을 제외한 데이터 디렉토리, bindIp, 로그 부분만 설정한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  dbPath: /data/mongodata/
journal:
enabled: true

systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log

processManagement:
fork: true

net:
port: 27017
bindIp: 0.0.0.0

설정을 저장하고 명령 라인에서 MongoDB를 다시 시작한 후에 mongo client로 접속한다.

모든 인터페이스에 db 접속을 허용하면 bindIpAll: true 를 사용한다.

1
$ sudo mongod --port 27017 --dbpath /var/lib/mongodb

이어서 클라이언트로 데이터베이스에 접속한다.접속에 성공하면 > 프롬프트가 나온다.

1
2
$mongo
>

admin 계정

mongod 에서 데이터베이스 및 사용자를 관리할 admin 이란 관리자를 추가하자

1
2
3
> use admin
switched to db admin
>

관자자의 권한과 역할을 선언한다.

1
2
3
4
5
6
7
8
>db.createUser(
{
user:'admin',
pwd:'****',
roles:['userAdminAnyDatabase']
}
)
Successfully added user: { "user" : "admin", "roles" : [ "userAdminAnyDatabase" ] }

사용자의 role 을 변경,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
> db.grantRolesToUser( 'admin', [{role: 'userAdmin', db:'admin'}])
> db.getUsers()
[
{
"_id" : "admin.admin",
"user" : "admin",
"db" : "admin",
"roles" : [
{
"role" : "userAdmin",
"db" : "admin"
},
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
]

관리자 admin 계정을 admin 데이터베이스에 추가한 후에 mongo client로 admin 계정으로 로그인해서 …

터미널에서 시작한 mongod 를 종료한다.

수동으로 mongod 를 시작하면 root 계정으로 데이터 파일이 생성된다. systemctl로 서비스 시작 전에 data 폴더 퍼미션을 맞춰준다.

Directory permissions
로그 디렉토리 /var/log/mongo 그리고 데이터 디렉토리 /data/mongodata 라면 해당 디렉토리에 몽고디비 사용자가 쓸 수 있는 퍼미션을 준다.

1
2
$ sudo chown mongo.daemon /var/log/mongodb
$ sudo chown mongodb.mongodb /data/mongodata

데이터베이스 사용자 추가

데이터베이스를 생성하고 해당 데이터베이스를 접속하는 사용자 계정을 추가하자.

수동으로 접근제어 –auth 옵션으로 데이터베이스를 시작하면, mongo 클리이언트 로그인시 -u , -p 와 –authenticationDatabase 를 지정해 주어야 한다.

1
$ mongo --port 27017 -u "admin" -p "****" --authenticationDatabase "admin"

The following operation creates accountUser in the products database and gives the user the readWrite and dbAdmin roles.

1
2
3
4
5
6
7
8
9
use products
db.createUser(
{
user: "accountUser",
pwd: "password",
roles: [ "readWrite", "dbAdmin" ]
}
)```