Step 1 - Add New Repository
yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
(대상 버전은 https://dev.mysql.com/downloads/repo/yum/ 에서 최신버전 확인 가능)


Step 2 - Install MySQL 5.7
yum -y install mysql-community-server


Step 3 - Start MySQL and Enable Start at Boot Time
systemctl start mysqld
systemctl enable mysqld

#부팅시 자동으로 시작되도록 설정되어 있는지 확인
systemctl is-enabled mysqld

#3306포트로 실행되어 있는지 확인
netstat -plntu


Step 4 - Configure the MySQL Root Password
MySQL 5.7 is installed and started. As you can see, the MySQL root password for Ubuntu has been configured during the installation process, so we do not need to configure or reset the password on Ubuntu. But this is not the case on CentOS.
On CentOS 7, MySQL will generate a strong default password when MySQL is started the first time, the default password is shown in the mysqld.log file. You can use the grep command below for showing the default MySQL password.
grep 'temporary' /var/log/mysqld.log

Connect to the MySQL shell with the default password. (로그 파일에서 root 계정의 임시 비밀번호 확인 후 접속)
mysql -u root -p
TYPE DEFAULT PASSWORD


Now replace the default password with a new and strong password, with the MySQL query below.

ALTER USER 'root'@'localhost' IDENTIFIED BY '신규암호';
flush privileges;


#추가설정
mysql> status
characterset 값이 latin1 인것을 확인할 수 있는데, 이런 characterset 등  몇가지는 기본적으로 바꾸는게 좋다

설정 참고(inno db 튜닝 등도 하면 좋지만 이 글에서는 pass)
# vi /etc/my.cnf  후 아래 내용 참고하여 필요 부분 변경 후 -> systemctl restart mysqld -> mysql 접속해서 status로 확인하면 변경됨을 확인할 수 있음

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

character-set-server=utf8
collation-server=utf8_general_ci
init_connect=SET collation_connection = utf8_general_ci
init_connect=SET NAMES utf8

character-set-client-handshake = FALSE
skip-character-set-client-handshake

[mysqldump]
default-character-set=utf8

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[client]
default-character-set = utf8

[mysql]
default-character-set=utf8





설치 가이드 문서


#OS튜팅
echo "*    soft nofile  655350" >> /etc/security/limits.conf
echo "*    hard nofile  655350" >> /etc/security/limits.conf

vim /etc/security/limits.d/20-nproc.conf 후에 32768로 변경


#Java와 톰캣 설치
참고링크 : http://blog.eomsh.com/18


#nGrinder 컨트롤러를 톰캣에 설치
wget 'https://github.com/naver/ngrinder/releases/download/ngrinder-3.4.1-20170131/ngrinder-controller-3.4.1.war' -O ~/apps/apache-tomcat-8.0.43/webapps/ROOT.war
~/apps/apache-tomcat-8.0.43/bin/startup.sh

#접속 확인(필요시 앞단에 nginx 등을 설치 가능하며 톰캣포트는 conf/server.xml에서 변경)
http://localhost:8080

최초 ID/PW는 admin:admin 입니다.

#nGrinder 에이전트 설치(부하 발생기)

wget 'http://ngrinder컨트롤러서버도메인/agent/download' -O ngrinder_agent.tar
tar -xvf ngrinder_agent.tar

압축해제한 디렉토리로 이동 후 run_agent.sh
필요시 __agent.conf 파일의 설정을 수정

참고로 최초 실행후에는 ~/.ngrinder_agent 디렉토리에 설정파일 등이 존재하기에 해당 디렉토리에서 수정해야함



참고 

#OS튜닝
# nofile 및 nprc 갯수 튜닝
echo "*    soft nofile  64000" >> /etc/security/limits.conf
echo "*    hard nofile  64000" >> /etc/security/limits.conf
echo "*    soft nproc  64000" >> /etc/security/limits.conf
echo "*    hard nproc  64000" >> /etc/security/limits.conf

vim /etc/security/limits.d/20-nproc.conf 후에 64000으로 변경

Run the sysctl command below to apply the changed limits to the system:
sysctl -p

ulimit -a 명령어로 확인 가능


# repo 추가
vi /etc/yum.repos.d/mongodb-org-3.4.repo 이후 아래 입력

[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

# 설치
yum install -y mongodb-org

# 기본 설정 작업
#huge 설정
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled

#재 부팅시 자동으로 시작(필요시)
chkconfig mongod on

#몽고 데이터 저장 디렉토리 생성 및 mongod계정의 소유로 변경(예)
mkdir -p /data/mongo/repl_0
chown -R mongod:mongod /data


# 몽고 시작
#몽고 서비스 시작
systemctl start mongod

#몽고 프롬프트에 접속
mongo


#참고 : 몽고 삭제
systemctl stop mongod

#Remove any MongoDB packages that you had previously installed.
yum erase $(rpm -qa | grep mongodb-org)

#Remove MongoDB databases and log files.
rm -rf /var/log/mongodb
rm -rf /var/lib/mongo

#필요시
rm -rf /data


#참고 : 몽고 설정(/etc/mongod.conf)
     특정파일의 config 파일을 이용하려면 mongod --config 파일경로 (이 명령어로는 root로 프로세스가 실행되니 필요시 init.d 등을 이용할수도 있음)
vi /etc/mongod.conf 후 아래샘플을 참고하여 수정해서 사용

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

storage:
  dbPath: /data/mongo/repl_0
  journal:
    enabled: true
  #wiredTiger:
    #engineConfig:
      #cacheSizeGB: 0.5


net:
  port: 27017
  #bindIp: 127.0.0.1  # Listen to local interface only, comment to listen on all interfaces. (주석으로 막으면 모든 IP에서 접속 가능. AWS에서는 SG로 보안처리 하고 있어서 편의상 모두 허용하기도 함)


replication:
  replSetName: repl_set



#참고 : 몽고 replica 설정
primary가 될 서버에서 몽고 콘솔로 접속 : mongo

#Replica set 초기화
rs.initiate()

#Secondary 노드 추가
rs.add("secondary장비의 IP:27017")

#Arbiter 노드 추가
rs.add("arbiter장비IP:37017",arbiterOnly:true)


# 잘 저장되는지 테스트
use testdb
db.test_collection.insert({'msg':'test message'})
db.test_collection.find()


#Secondary에서는 아래 명령 실행 후 조회해 보면 됨
db.slaveOk(true)



#참고 - 1개 장비에 여러개의 몽고데몬을 실행시켜야할 경우
1개의 몽고DB를 설치하면 아래에 service 파일이 생성됨
/etc/systemd/system/multi-user.target.wants

해당 디렉토리의 mongod.service 심볼릭링크가 가리키는 파일(/usr/lib/systemd/system/mongod.service) 이 하나의 데몬 파일

/usr/lib/systemd/system/mongod.service 파일을 복사하여 한개 더 생성(ex. cp /usr/lib/systemd/system/mongod.service /usr/lib/systemd/system/mongod2.service)
복사한 해당 파일의 내용을 적당히 수정

예)
[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
Documentation=https://docs.mongodb.org/manual

[Service]
User=mongod
Group=mongod
Environment="OPTIONS=--quiet -f /etc/mongod2.conf"
ExecStart=/usr/bin/mongod $OPTIONS run
ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb2
ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb2
ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb2
PermissionsStartOnly=true
PIDFile=/var/run/mongodb2/mongod.pid
# file size
LimitFSIZE=infinity
# cpu time
LimitCPU=infinity
# virtual memory size
LimitAS=infinity
# open files
LimitNOFILE=64000
# processes/threads
LimitNPROC=64000
# total threads (user+kernel)
TasksMax=infinity
TasksAccounting=false
# Recommended limits for for mongod as specified in
# http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings

[Install]
WantedBy=multi-user.target


설정들 데몬에 반영
systemctl daemon-reload


#참고 mongod.conf 1번

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log
  quiet: true

# Where and how to store data.
storage:
  dbPath: /data/mongo/repl_0
  journal:
    enabled: true
#  engine:
#  mmapv1:
  wiredTiger:
     engineConfig:
          cacheSizeGB: 0.4


# how the process runs
processManagement:
  fork: true  # fork and run in background
  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile

# network interfaces
net:
  port: 27017
 # bindIp: 127.0.0.1  # Listen to local interface only, comment to listen on all interfaces.


#security:

#operationProfiling:

#replication:
replication:
  replSetName: repl_set

#sharding:

## Enterprise-Only Options

#auditLog:

#snmp:




#참고 mongod2.conf(1개 서버에 2개 프로세스 동시에 띄울때 사용할 목적)
# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod2.log
#  quiet: true

# Where and how to store data.
storage:
  dbPath: /data/mongo/repl_1
  journal:
    enabled: true
#  engine:
#  mmapv1:
  wiredTiger:
     engineConfig:
          cacheSizeGB: 0.4


# how the process runs
processManagement:
  fork: true  # fork and run in background
  pidFilePath: /var/run/mongodb2/mongod.pid  # location of pidfile

# network interfaces
net:
  port: 27018
 # bindIp: 127.0.0.1  # Listen to local interface only, comment to listen on all interfaces.


#security:

#operationProfiling:

#replication:
replication:
  replSetName: repl_set

#sharding:

## Enterprise-Only Options

#auditLog:

#snmp:


CentOS 7에 ansible 설치

  1. 설치
#epel 저장소 설치(Fedora Project 에서 제공되는 저장소로 각종 패키지의 최신 버전을 제공)

#ansible 설치
sudo yum install -y ansible

  1. 셋팅 및 테스트
#Inventory 파일 생성하여 테스트서버 IP 등록(ansible이 관리하는 서버의 정보를 담은 파일)
mkdir ~/ansible && echo "127.0.0.1" > ~/ansible/my_ansible_hosts

# 호스트키 확인 과정을 임시로 비활성화 시킴
export ANSIBLE_HOST_KEY_CHECKING=False

#ping 테스트
ansible all -m ping -i ~/ansible/my_ansible_hosts --ask-pass

#원격서버의 명령 echo hello 테스트
ansible all -a "/bin/echo hello" -i ~/ansible/my_ansible_hosts --ask-pass

#참고 : sudo 명령으로 실행
ansible all -a "/bin/echo hello" -i ~/ansible/my_ansible_hosts --ask-pass --sudo


CentOS7 최소 설치 후 셋팅 내용 정리

CentOS 다운로드 경로

  1. 재 부팅시 네트웤 자동 시작하도록 설정
    • nmcli d 명령어로 랜카드ID 확인
    • vi /etc/sysconfig/network-scripts/ifcfg-위명령어에서 확인된 랜카드ID  후에 마지막라인 ONBOOT의 값을 yes로 변경해 줌

  2. 네트웤 재 시작
    • systemctl restart network

  3. ssh서버 설치 : 필요시
# 22번 리슨중이 아니라면 ssh설치
$netstat -anp | grep "LISTEN " | grep 22

$ yum install -y openssh-server

$ service sshd start
Redirecting to /bin/systemctl restart  sshd.service

#부팅시 자동으로 시작되도록 설정
$ chkconfig sshd on
알림: 'systemctl enable sshd.service'에 요청을 전송하고 있습니다.

#방화벽 프로세스 stop(필요시)
#방화벽 자동시작 중지#
$systemctl disable firewalld

#방화벽 자동시작 중지
$systemctl stop firewalld




  1. 추가 설치 및 튜닝
#패키지 업데이트
yum update -y

#자주 쓰는 프로그램 설치
yum  install -y telnet svn git nc ntp wget vim net-tools

#bashrc 프롬프트 변경
echo 'PS1="[\u@\h \$PWD \D{%T}]\\$ "' >> /etc/bashrc && source /etc/bashrc

#locale 변경
localectl set-locale LANG=ko_KR.UTF-8

# 파일 및 파일 갯수 튜닝
echo "*    soft nofile  655350" >> /etc/security/limits.conf
echo "*    hard nofile  655350" >> /etc/security/limits.conf
echo "*    soft nproc  32768" >> /etc/security/limits.conf
echo "*    hard nproc  32768" >> /etc/security/limits.conf

vim /etc/security/limits.d/20-nproc.conf 후에 32768로 변경

#biz 계정 추가 및 sudo권한 추가(필요시)
#계정 생성 및 암호 셋팅(biz라는 계정을 사용한다는 전제)
adduser biz
passwd biz

#biz계정에 sudo 권한 추가
#파일의 권한을 임시로 바꾼 후 sudo 셋팅 후 롤백
chmod 640 /etc/sudoers && echo "biz        ALL=(ALL)       NOPASSWD: ALL" >> /etc/sudoers && chmod 440 /etc/sudoers

#Selinux OFF (필요시)
setenforce 0
perl -pi -e 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
perl -pi -e 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
reboot

# 방화벽 끄기(필요시)
systemctl stop firewalld
systemctl disable firewalld

# ntp켜서 시간 동기화
systemctl start ntpd
#재부팅시 자동 시작
systemctl enable ntpd



참고 : https://www.percona.com/doc/percona-tokumx/installation_from_packages.html#rhel-centos

#tokumx install
yum install https://www.percona.com/redir/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
yum install tokumx-enterprise


#디렉토리 생성
mkdir -p /data/mongo/arbiter
mkdir -p /data/mongo/repl_0


#huge 설정
echo never > /sys/kernel/mm/transparent_hugepage/enabled


* 메모리는 8g, replica로 fail-over 셋팅예제

start.sh
#!/bin/sh
/usr/bin/mongod --replSet repl_set --dbpath /data/mongo/repl_0 --fork --logpath /var/log/tokumx/repl_0.mongod --expireOplogDays 3 --cacheSize 8g --quiet --maxConns 20000


start_arbiter.sh
#!/bin/sh
/usr/bin/mongod --replSet repl_set --dbpath /data/mongo/arbiter --fork --logpath /var/log/tokumx/repl_arbiter.mongod --expireOplogDays 1 --oplogSize 1 --port 37017 --noprealloc


start_standalone.sh(필요시)
#!/bin/sh
/usr/bin/mongod --dbpath /data/mongo/repl_0 --fork --logpath /var/log/tokumx/repl_0.mongod --expireOplogDays 3 --cacheSize 8g --quiet --maxConns 20000


replica 설정
mongo 커맨드 실행 후 아래 입력(각 노드는 가능하면 다른 장비에 설치되어야 fail over에 안정적임)

config = {
           _id: "repl_set",
           members: [
                      {_id: 0,host: "Primary IP입력:27017"},
                      {_id: 1,host: "Secondary IP입력:27017"},
                      {_id: 2,host: "Arbiter IP입력:37017",arbiterOnly:true},
                    ]
         }

rs.initiate(config);



CentOS 7 기준


시간동기화처리


# ntpd

systemctl enable ntpd.service

systemctl start ntpd.service

CentOS의 biz라는 계정에 java 관련 프로그램(java, tomcat, maven, etc) 설치하는 간단한 bash 쉘 스크립트(install.sh)

해당 내용으로 쉘 파일을 만들고 사용 (디렉토리 먼저 생성 필요)
ex)  install.sh dir 후에 install.sh java

#!/bin/sh

#Enter user account
USER=biz


check_user()
{

    if [ $USER != `/usr/bin/whoami` ] ; then
        echo "=== Error. User is not $USER"
        exit -1;
    fi
}

make_dir()
{   
    echo "=== Install default directory : Start"

    mkdir ~/apps ~/deploy ~/scripts ~/logs ~/logs/nginx ~/src

    echo "=== Install default directory : End"

}

install_java()
{   
    echo "=== Install java : Start"
  

http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz?AuthParam=1537253298_036a93e056704f23f51ee0e1e5140908

    wget "http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz?AuthParam=1537253594_0606413d75133608b6bf7ca2136e364e" -O ~/apps/jdk-8u181-linux-x64.tar.gz
    tar -xzf ~/apps/jdk-8u181-linux-x64.tar.gz -C ~/apps && rm ~/apps/jdk-8u181-linux-x64.tar.gz && ln -s ~/apps/jdk1.8.0_181 ~/apps/jdk
     
    
    #JAVA DNS TTL Modify
    echo 'networkaddress.cache.ttl=60' >> ~/apps/jdk/jre/lib/security/java.security

    #set java path
    echo 'export JAVA_HOME=~/apps/jdk' >> ~/.bashrc
    echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
    source ~/.bashrc

    #print java version
    java -version

    echo "=== Install java : End"

}

install_maven()
{   
    echo "=== Install maven : Start"

    wget "http://apache.tt.co.kr/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz" -O ~/apps/apache-maven-3.5.4-bin.tar.gz
    tar -xzf ~/apps/apache-maven-3.5.4-bin.tar.gz -C ~/apps && rm ~/apps/apache-maven-3.5.4-bin.tar.gz && ln -s ~/apps/apache-maven-3.5.4 ~/apps/maven

    #set maven path
    echo 'export M2_HOME=~/apps/maven' >> ~/.bashrc
    echo 'export PATH=$PATH:$M2_HOME/bin' >> ~/.bashrc
    source ~/.bashrc

    #print maven version
    mvn -version

    echo "=== Install maven : End"
}

install_tomcat()
{   
    echo "=== Install tomcat : Start"

    wget 'http://mirror.navercorp.com/apache/tomcat/tomcat-8/v8.5.34/bin/apache-tomcat-8.5.34.tar.gz' -O ~/apps/apache-tomcat-8.5.34.tar.gz
    tar -xzf ~/apps/apache-tomcat-8.5.34.tar.gz -C ~/apps && rm ~/apps/apache-tomcat-8.5.34.tar.gz


    #remove default tomcat webapps    
    rm -rf ~/apps/apache-tomcat-8.5.34/webapps && mkdir ~/apps/apache-tomcat-8.5.34/webapps

    echo "=== Install tomcat : End"
}

#check user account
check_user


case "$1" in
dir)
    echo "### Run make default dir ###"
    make_dir
    ;;
java)   
    echo "### Run install java ###"
    install_java
    ;;
maven)
    echo "### Run install maven ###"
    install_maven
    ;;
tomcat)
    echo "### Run install tomcat ###"
    install_tomcat
    ;;
*)
    echo "Usage : $0 {dir|java|maven|tomcat}"
    exit 1
esac





+ Recent posts