NHN Cloud 환경에서 자동으로 MySQL과 Redis를 설치하기 위한 쉘 스크립트를 제작합니다.
반복되는 작업을 자동화하기 위해서 이용합니다. 스케줄링을 통해 파일만 실행할 수 있고 스크립트의 내용을 이해하지 못해도, 누구나 실행할 수 있습니다.
쉘 커맨드가 들어 있는 실행 가능한 텍스트 파일입니다. 순차적으로 실행되며, 프로그래밍에서 사용되는 컴포넌트들을 사용할 수 있습니다.
NHN Cloud 인스턴스를 생성 및 접근은 다음 링크를 참조합니다.
1. MySQL 자동설치 스크립트 생성
- NHN Cloud 생성 시, 예약 스크립트를 다음과 같이 설정합니다.
#!/bin/bash sudo yum remove -y mariadb-libs.x86_64 # NHN Cloud 인스턴스에 설치되어 있는 MariaDB를 제거합니다. sudo yum install libaio -y # libaio를 설치합니다. mkdir home cd /home version=8.0.27 wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-$version-linux-glibc2.12-x86_64.tar.xz tar -xvf mysql-$version-linux-glibc2.12-x86_64.tar.xz sudo mv mysql-$version-linux-glibc2.12-x86_64/ mysql cd mysql sudo chown -R centos:centos /home/mysql touch my.cnf echo " [client] port=3306 socket=/home/mysql/tmp/mysql.sock [mysqld] socket=/home/mysql/tmp/mysql.sock basedir=/home/mysql datadir=/home/mysql/data user=centos key_buffer_size=64M max_allowed_packet=32M #query_cache_size=32M max_connections=2625 max_connect_errors=2000000 wait_timeout=60 explicit_defaults_for_timestamp = 1 #pid-file=/home/mysql/mysqld.pid log-error=/home/mysql/logs/mysqld.log bulk_insert_buffer_size=0" > my.cnf mkdir data mkdir logs mkdir tmp cd /home/mysql/support-files sed -i '1,50s|'datadir='|'datadir=/home/mysql/data'|g' mysql.server sed -i '1,50s|'basedir='|'basedir=/home/mysql'|g' mysql.server # support-files의 datadir와 basedir를 수정합니다. cd ../ sudo chown -R centos:centos /home/mysql # mysql의 소유자를 centos로 변경합니다. /home/mysql/bin/mysqld --defaults-file=/home/mysql/my.cnf --initialize-insecure /home/mysql/support-files/mysql.server start
- NHN Cloud 인스턴스에 접속하여, 설치가 올바르게 진행됐는지 확인합니다.
/home/mysql/bin/mysql -uroot -S /home/mysql/tmp/mysql.sock
명령어로 MySQL에 접속합니다.
cf. 임시 비밀번호를 이용하여 MySQL을 초기화 하고 싶다면,
/home/mysql/bin/mysqld --defaults-file=/home/mysql/my.cnf --initialize-insecure부분을 수정합니다.
/home/mysql/bin/mysqld --defaults-file=/home/mysql/my.cnf --initialize
string=$(sudo grep 'temporary password' /home/mysql/logs/mysqld.log | rev | cut -d " " -f1 | rev)
string="$(echo -e "${string}" | sed -e 's/^[[:space:]]*//')"
echo "${string}"
최종 명령은 다음 코드를 사용합니다.
/home/centos/mysql/bin/mysql -uroot -p'패스워드 입력' -S/home/centos/mysql/mysql.sock2. Redis 자동설치 스크립트 생성
- NHN Cloud 생성 시, 예약 스크립트를 다음과 같이 설정합니다.
#!/bin/bash mkdir home cd /home version=6.2.3 sudo yum install gcc -y alias redis-cli='./redis-cli' #redis-cli 명령어로 redis에 접속하기 위한 alias입니다. wget http://download.redis.io/releases/redis-${version}.tar.gz tar -xvf redis-${version}.tar.gz cd redis-${version} cd deps sudo make hiredis jemalloc linenoise lua cd ../ sudo make install cd src ./redis-server
- NHN Cloud 인스턴스에 접속하여, 설치가 올바르게 진행됐는지 확인합니다.
- 미리 alias 해 놓은
redis-cli명령어로 redis에 접근합니다.
- 쉘 스크립트 코드에 대한 자세한 설명은 다음 링크를 참고합니다.
[과제] 1. 로컬 환경에서 MySQL 설치
[과제] 2. 로컬 환경에서 Redis 설치