윈도우 기반 컴퓨터에서 리눅스 가상환경을 만들고, MongoDB를 실행하려한다. 이를 위해 필요한 구성환경: VMware(가상머신), Centos(리눅스), Xshell(ssh)
나는 VMware10, Centos7.4, Xshell6 버전을 다운받았다.
이 글은 크게 세가지로 분류된다.
따라서, 필요한 부분만 찾아서 보시길..!
=========1. VMware 설치하고 Centos 환경 구성하기==========
VMware10을 설치하고 Centos iso(이미지파일)을 다운받자. 그 후 VMware의 상단에 File->New Virtual Machine을 클릭해서 Centos 기반 리눅스 가상환경을 만든다~!
나는 C드라이브에 용량이 꽉차서 D드라이브에 VMware 디렉토리를 따로 만들어서 저장한다
Maximum dist size를 50GB로 설정!
Customize Hardware를 클릭하고 Memory를 2GB로 설정했다. 그리고 Finish~!
처음에 설정할때 이름을 디폴트로 그냥 넘겼는데, 지금도 바꿀 수 있다. 왼쪽에 형광색 칠해놓은 Mycomputer 아래 오른쪽 클릭해서 Rename 후 이름 바꾸기. 그러고 오른쪽에 Edit virtual machine settings에서 iso 이미지파일을 등록할거다
사실 이것도 아까 설정할 때 해도 된다 모든 설정이 끝났다면 초록색 오른쪽 세모가 그려진 Play~~를 클릭!
그러고 이제 설치가 시작
한국어로 설정하고 계속진행
이 화면이 나오면 소프트웨어 선택을 누르고 GUI기반(우리가 일상적으로 윈도우에서 보는 바탕화면과 같이 그래픽으로 보이는 환경. 사용자가 보기 편하다)으로 설정해준다
여기서 네트워크 설정도 해준다
이더넷을 켜고 설정을 누르면..
이런 창이 뜨는데, 여기서 IPv6를 무시로 설정한다
이제 설치 시작~!
나는 그냥 root로만 실습할거기 때문에 사용자생성은 안하고, root암호만 설정해준다 이제 계속 기다리면 된당..........
완료되고 재부팅을 하고 나면 초기설정 화면이 뜬다
라이센스 동의를 해주고, 설정 완료!
한국어 - 한국어 하고 다음~~~~
내 위치는 소중하기 때문에 끈다..
검색창에 Seoul 치면 서울, 대한민국 나온다. 그거 선택하고 다음~
굳이 필요없는건 뛰자~
굳이 사용자 정보 입력해야 하니~
사용자 정보 입력하고 다음 페이지에서 암호까지 설정하면 이제 끝~!! CentOS Linux 사용 시작하기를 누르자!
그럼 이제 이런 리눅스 바탕화면이 뜬다 _^^_
===========2. VMware Centos와 Xshell 연결하기===========
Centos를 다 설치 했다면, 이제 Xshell과 연동을 해보자.
Xshell에 연결할 때 IP주소를 입력해야 하므로, 우선 바탕화면에 오른클릭하고 터미널 열기~!
터미널창에 ifconfig를 입력하면 IP주소를 확인할 수 있다.
Centos6은 ens0인걸로 알고 있는데, Centos7은 ens33인 듯..? 잘 모르겠다 여하튼 ens33에서 inet을 확인하면 내 ip주소를 알 수 있다. 개인정보이므로 이부분은 사진을 첨부하지 않는다..ㅎ
ip주소를 어딘가에 적어놓고, 이제 xshell을 켜자(xshell은 인터넷에 검색해서 쉽게 다운로드 할 수 있다)
나는 이미 Xshell이 설치 되있어서, 처음 설치하면 어떻게 나오는지 모르겠지만 잘 살펴보면 새로만들기라는 게 있을거다. 새로만들기를 클릭!
이름을 지정하고, 아까 Centos 터미널 ifconfig에서 확인해놓은 IP주소를 xshell 호스트 칸에 적는다. 그리고 연결!!누르기!
수락 및 저장
나는 계속 root로 로긴할거므로 사용자 이름 기억
암호 입력하고 암호저장 후 확인.. 그럼 이제 연결 끝!! ^0^
============3. Xshell에서 MongoDB 설치하기============
그럼 이제 Xshell 연결까지 되었으니 Xshell로 Mongodb를 설치해보자
우선, SELinux 부터 해제하자.
SELinux란, 리눅스의 보안을 책임지는 프로그램이다
SELinux가 활성화 되어 있으면 접근 권한이 설정 안되어 있다는 오류 메시지를 받는데, 나는 실습을 위한 것이므로 SELinux를 해제하겠다
SELINUX=enforcing 부분을 disabled로 바꾸고 :wq!로 저장하자
치고 대문자 G하면 제일 아래로 이동하는데, ~~ 부분에
soft nproc 64000
hard nproc 64000
soft nofile 64000
hard nofile 64000 내용을 추가해준다(앞에 *표시까지 모두. 간격은 신경 안써도 됨)
그리고 :wq! 하자
이렇게 설정하고 ulimit을 확인해보면
이렇게 open files와 max user processes가 64000으로 설정되있는 것을 알 수 있다
ulimit은
shell과 shell이 실행한 프로세스에 대해, 시스템 상의 사용 자원을 제한하는 명령어다..
여기서 soft와 hard의 의미는,
- soft limit: 새로운 프로세스가 생성되면 default로 적용되는 한도
- hard limit: soft limit에서 늘릴 수 있는 최대 한도. 슈퍼유저에 의해서만 조정. 무한히 늘릴 수 X
(soft limit < hard limit)
ulimit -Sa // 모든 ulimit 값에 대한 soft limit
ulimit -Hc // core file size 값에 대한 hard limit
ulimit에 대한 정보는 http://ktdsoss.tistory.com/159 에서 퍼왔다. 참고하길~!
vi /~~~ 라는 거는 파일에 들어간다는 건데, 이미 있는 파일이면 그 파일을 열고, 없는 파일이면 생성해서 빈 내용을 연다.
hugepage란, 리눅스에서 디폴트 메모리 페이지 사이즈가 4K인데, 2M 단위로 사용하는걸 말한다.
Transparent Huge Pages(THP) 방식으로 hugepage 사용을 하면, 성능이 저하 되므로 THP 설정을 끄는 게 좋다(무슨말인지 잘 모르겠음)
그래서 echo 명령어를 사용해서(echo는 문자를 그대로 출력해주는.. print 같은 개념) never를 해 줄건데 > 오른쪽 사항에 해당하게 해달라는 말인 것 같다..
위에서 나온 rc.local 파일은 리눅스 부팅 시 자동으로 실행되는 명령어나 파일이 있는 곳이다.
맨 아래에다가
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
라는 두 줄을 추가한다
그담~~
* 메모리: 페이지(pages) 라는 블록에서 관리- 1 페이지: 4096 바이트
* 1MB: 256 페이지
* 1GB: 256,000 페이지
yum install -y cyrus-sasl cyrus-sasl-plain cyrus-sasl-gssapi krb5-libs libcurl libpcap net-snmp openldap openssl
mongodb 설치에 필요한 패키지 다운
이제 mongodb.tgz 파일을 가지고 tar 압축풀어야 하는데, 사전 작업이 되어 있어야 할 부분은
1. 윈도우에서 이렇게 생긴 mongodb를 다운받는다.
다 준비 되었다면 Xshell 초록색 박스(ftp)를 클릭해서 윈도우에서 저장해놓은 mongodb 파일을 받자
저장해놓은 경로에 들어가서 파일을 더블클릭하면 알아서 전송이된다
파일 전송이 완료 되었다면 다시 터미널창에서 tar -zxvf mongodb-linux-x86_64-enterprise-rhel70-3.6.4.tgz 를 입력하고 mongodb 파일의 압축을 풀자
.tgz = .tar 형식의 파일을 gzip으로 압축한 파일
완료 되었다면 ll해서 잘 들어있는지 확인해보자~
잘 있는거 확인!ㅎ
그런데 mongodb-linux-x86_64-enterprise-rhel70-3.6.4 라는 폴더 이름이 너무 기니 그냥 mongodb 폴더로 간편하게 cp 해버리려고 한다. 그러기 위해 mongodb 폴더 생성 후 카피
Q. 그런데 tar 압축 풀때 옵션으로 -zxvf를 했는데 여기서 f는 지정한 파일 명으로 압축이다. 그러니 그 때 뒤에 mongodb 라고 써서(tar -zxvf mongodb-linux-x86_64-enterprise-rhel70-3.6.4.tgz mongodb) 압축을 풀면 바로 mongodb로 만들어지는거 아닌가?
mkdir mongodb
cp -r mongodb-linux-x86_64-enterprise-rhel70-3.6.4/* mongodb
※ cp -r: 디렉토리 전체를 복사
Q. 그렇다면 -r도 하고, 폴더명 뒤에 /* 도 해야 하나??
mongodb 경로로 이동해서 ls 해보니 이러저러한것들이 들어있는것 확인 ㅎ