docker¶
Docker Basic
written by sean
Github |
Chapter 0: About¶
Linux is the best software for software paradise
Thanks to¶
- sean
- Mr Ju SS
- OSS Members
- 한글
SEAN's Paradise¶
I think that My Life as Software Engineer was torrible , but it's role for social is important so, I keep going for better life & software development
chapter 1 : 설치¶
1.1 CentOS¶
1.1.2 자바 설치¶
기존 자바 설치 파일 확인
rpm -qa | grep java
확인된 기존 자바 삭제
yum remove 검색된openjdk이름
자바.tar.gz 압축 풀기(/usr/local) 및 심볼릭 링크
tar -zxvf 파일명.tar.gz
ln -s 링크파일 링크명
환경변수 설정 및 적용
vim /etc/profile
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
자바 버전 확인
java -version
javac -version
1.1.3 톰캣 설치¶
톰캣.tar.gz 압축 풀기(/usr/local) 및 심볼릭 링크
tar -zxvf 파일명.tar.gz
ln -s 링크파일 링크명
환경변수 설정 및 적용
vim /etc/profile
export CATALINA_HOME=/usr/local/tomcat
export CLASSPATH=$CATALINA_HOME/lib-jsp-api.jar:$CATALINA_HOME/lib/servlet-api.jar
export PATH=$CATALINA_HOME/bin
source /etc/profile
8080포트 방화벽 해제
vim /etc/sysconfig/iptables
iptables -A INPUT -m state --state NEW -p tcp --dport 8080 -j ACCEPT
service iptables save
service iptables restart
톰캣 서버 작동 및 중지
/usr/local/tomcat/bin/startup.sh
/usr/local/tomcat/bin/shutdown.sh
부팅 시 자동실행 설정
vim /etc/rc.d/init.d/tomcat
#!/bin/sh
# chkconfig: 345 90 90
# description: init file for tomcat
# processname: tomcat
export JAVA_HOME=/usr/local/java
export CATALINA_HOME=/usr/local/tomcat
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/lib-jsp-api.jar:$CATALINA_HOME/lib/servlet-api.jar
export PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
export JAVA_OPTS="-Djava.awt.headless=true -server -Xms2048m -Xmx4096m -XX:NewSize=512m -XX:MaxNewSize=1024m -XX:PermSize=512m -XX:MaxPermSize=1024m -XX:+DisableExplicitGC"
#export JAVA_OPTS="-Djava.awt.headless=true -server -Xms2048m -Xmx4096m -XX:NewSize=512m -XX:MaxNewSize=1024m -XX:PermSize=512m -XX:MaxPermSize=1024m -XX:+DisableExplicitGC -Dscouter.config=/usr/local/apache-tomcat-7.0.78/scouter/scouter.conf"
export CATALINA_OPTS="-Denv=product -Denv.servername=projectTomcat"
#export CATALINA_OPTS="-Denv=product -Denv.servername=projectTomcat -javaagent:/usr/local/apache-tomcat-7.0.78/lib/scouter.agent.jar "
# Get Config
[ -f /usr/local/tomcat/conf/server.xml ] && [ -f /usr/local/tomcat/conf/web.xml ] || exit 0
source /etc/profile
# Source function library
. /etc/rc.d/init.d/functions
# caution :
# variable=<value> space between variable and value is not allowed
RETVAL=0
prog=tomcatd
# Start function
start()
{
echo -n "Starting $prog : "
daemon $CATALINA_HOME/bin/startup.sh
RETVAL=$?
echo
touch /var/lock/subsys/tomcat
return $RETVAL
}
# Stop fucntion
stop()
{
echo -n "Stopping $prog : "
daemon $CATALINA_HOME/bin/shutdown.sh
RETVAL=$?
echo
rm -f /var/lock/subsys/tomcat
return $RETVAL
}
# Restart function
restart()
{
stop
start
}
# See how we were called
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo $"Usage : $0 {start|stop|restart}"
esac
exit $RETVAL
실행권한 부여
chmod u+x /etc/rc.d/init.d/tomcat
chmod 755 /etc/rc.d/init.d/tomcat
작동 테스트
/etc/rc.d/init.d/tomcat start
/etc/rc.d/init.d/tomcat restart
/etc/rc.d/init.d/tomcat stop
chkconfig 등록
chkconfig --add tomcat
chkconfig --list tomcat
tomcat 0:해제 1:해제 2:해제 3:활성 4:활성 5:활성 6:해제
reboot
* 만약 3~5번이 활성화 되있지 않다면, chkconfig --level 345 tomcat on
8080 포트 확인 및 프로세스 확인
netstat -ntl
ps -ef | grep tomcat
1.1.4 MariaDB 설치(tar.gz)¶
MariaDB 설치 확인
rpm -qa | grep MariaDB
MariaDB 압축 해제 및 파일 이동
tar -zxvf 파일명.tar.gz
rm -rf 파일명.tar.gz
mv 마리아폴더 /usr/local
MariaDB 심볼릭 링크
ln -s 마리아폴더 mariadb
MariaDB 사용자 및 그룹 추가(선택)
useradd -M mariadb
usermod -d 마리아폴더 mariadb
grep mariadb /etc/passwd
groupadd mariadb
useradd -g mariadb mariadb
MariaDB 사용자 권한 설정(선택)
chown mariadb.mariadb -R 마리아폴더
chmod 755 -R 마리아폴더
my.cnf 복사
cp 마리아폴더/support-files/아래파일명 /etc/my.cnf
시스템 메모리가 4G이상일 때 : my-innodb-heavy-4G.cnf
시스템 메모리가 1G~2G일 때 : my-huge.cnf
시스템 메모리가 512MB정도 일 때 : my-large.cnf
시스템 메모리가 32MB~64MB정도 일 때 : my-medium.cnf
시스템 메모리가 64MB이하일 때 : my-small.cnf
한글(my.cnf에 내용 추가)
character-set-server=utf8
collation-server=utf8_general_ci
실행데몬 복사
cp 마리아폴더/support-files/mysql.server /etc/init.d/mysqld
사용자 권한 설정(선택)
chown mariadb.mariadb /etc/init.d/mysqld
chmod 750 /etc/init.d/mysqld
실행데몬 수정
vim /etc/init.d/mysqld
basedir=마리아폴더
datadir=마리아폴더/data
PATH 설정 및 적용
vim /etc/profile
PATH=$PATH:마리아폴더/bin
source /etc/profile
MariaDB 실행
service mysqld start
부팅 시 자동시작
chkconfig mysql on
chkconfig --list mysql
2~5:on
보안설정
./마리아폴더/bin/mysql_secure_installation –basedir=마리아폴더
Set root password? [Y/n] y
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
접속확인
mysql -uroot -p
# DB생성 (mariadb 계정으로 로그인) /usr/local/mariadb/scripts/mysql_install_db –user=mariadb –basedir=/usr/local/mariadb –datadir=/usr/local/mariadb/data rpm 설치
rpm -qa 'mysql*'
rpm -ivh MariaDB-*
1.1.5 MairaDB 설치(rpm)¶
기존 설치 파일 확인
rpm -qa | grep mysql
기존 설치 파일 삭제
rpm -e --nodeps mysql-libs-5.1.73-8.el6_8.x86_64
MariaDB.rpm 서명 체크(선택)
rpm --checksig $(find . -name '*.rpm')
MariaDB.rpm 서명 가져오기(선택)
gpg --keyserver hkp://pgp.mit.edu --recv-keys 1BB943DB
gpg --export --armour 1BB943DB > mariadb-signing-key.asc
rpm --import mariadb-signing-key.asc
rpm -qa gpg-pubkey*
rpm --checksig $(find . -name '*.rpm')
perl-DBI 설치 및 MariaDB 설치
rpm -Uvh perl-DBI-*
rpm -Uvh MariaDB-*
설치 확인 및 실행
rpm -qa | grep MariaDB
/etc/init.d/mysql start
비밀번호 설정
/usr/bin/mysqladmin -u root password '패스워드'
1.1.6 아파치 설치¶
기존 아파치 설치 파일 확인
rpm -qa | grep httpd
기존 httpd 삭제
rpm -e --nodeps 검색된httpd이름
httpd 설치
rpm -ivh httpd-*
기본 설정
vim /etc/httpd/conf/httpd.conf
아파치에서 .php 파일 등 연결
AddType application/x-httpd-php .php .ph .phtml .php3 .php4 .sql .inc .html .htm
AddType application/x-httpd-php-source .phps
ServerName 변경
ServerName 127.0.0.1:80
방화벽 설정
vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
/etc/init.d/iptables restart
자동실행 설정
chkconfig httpd on
chkconfig --list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
동작 확인
ps -ef | grep httpd
1.1.7 mod_JK¶
파일 복사
/etc/httpd/modules/mod_jk.so
SELinux 를 사용한다면 mod_jk.so 에 httpd_modules_t Context 가 설정되어야 apache httpd 가 읽을 수 있다. 다음 명령어로 설정하자.
chcon -u system_u -r object_r -t httpd_modules_t /etc/httpd/modules/mod_jk.so
Apache 웹서버에서 mod_jk 설정
vim /etc/httpd/conf/httpd.conf
LoadModule jk_module modules/mod_jk.so
ServerName localhost
include /etc/httpd/conf.d/mod_jk.conf
vim /etc/httpd/conf.d/mod_jk.conf
<IfModule mod_jk.c>
# Where to find workers.properties
# JkWorkersFile /etc/httpd/conf/workers_jk.properties
# Where to put jk shared memory
JkShmFile run/mod_jk.shm
# Where to put jk logs
JkLogFile logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the timestamp log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# If you want to put all mounts into an external file
# that gets reloaded automatically after changes
# (with a default latency of 1 minute),
# you can define the name of the file here.
JkMountFile /etc/httpd/conf/uriworkermap.properties
</IfModule>
mod_jk worker 설정
vim /etc/httpd/conf/workers_jk.properties
worker.list=worker1, worker2
worker.worker1.port=8009
worker.worker1.host=server1
worker.worker1.type=ajp13
worker.worker1.lbfactor=1
## server 2
worker.worker2.port=8009
worker.worker2.host=server2
worker.worker2.type=ajp13
worker.worker2.lbfactor=1
톰캣 연결 설정
vim /usr/local/tomcat/conf/server.xml
tomcat 은 기본 URIEncoding 이 ISO-8859-1 이므로 한글이 깨지므로 모든 커넥터 설정에 URIEncoding="UTF-8" 을 추가해야 한다.
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"/>
어떤 url 요청에 대해 tomcat 과 연계할지 설정한다.
vim /etc/httpd/conf/uriworkermap.properties
## Mapping the URI /service1 under worker1
/service1/*.do=worker1
/service1/*.jsp=worker1
# /service2 요청으로 들어온 것은 worker2 로 mount
/service2/*=worker2
# png와 jpg 는 apache 가 처리
!/service2/*.png=worker2
!/service2/*.jpg=worker2
## 아래와 같이 설정하면 모든 요청(jsp, do, image, js등)을 tomcat으로 보내서 처리한다.
# /*=worker1
테스트
apachectl start
catalina.sh start
http://아이피/index.jsp 으로 호출이 되면 성공
chapter 2 : 명령어¶
2.1 CentOS¶
2.1.1 IP 설정¶
IP 설정
vim /etc/sysconfig/network-scripts/ifcfg-eth0
# 장치명, 첫번째 이더넷카드
DEVICE=eth0
# IP 부여 방식 결정, static 은 고정IP
BOOTPROTO=static
# 이더넷카드의 MAC 주소
HWADDR=XX:XX:XX:XX:XX:X
# GUI 모드에서의 편리한 네트워크설정 허용, TUI에선 필요없음
NM_CONTROLLED=no
# 시스템 시작시 자동으로 활성화
ONBOOT=yes
# Ethernet 에 대한 설정
TYPE=Ethernet
# 고유ID를 부여하는 것으로 자동으로 부여됨
UUID=XXXXXXX-XXX-XXX-XXX-XXXXXXX
# 브로드캐스트 지정
BROADCAST=192.168.0.255
# IP 주소 지정
IPADDR=192.168.0.5
# 서브넷마스크 지정
NETMASK=255.255.255.0
# 네트워크 지정
NETWORK=192.168.0.0
# Wake On Lan 기능 활성화, Ethtool 이 필요한데 CentOS 기본 설치되어 있음
ETHTOOL_OPTS=wol g
# 일반사용자의 eth0 제어 가능여부
USERCTL=no
# IPV6 사용여부
IPV6INIT=no
SSH 고정IP
vim /etc/sysconfig/network-scripts/ifcfg-eth1
BOOTPROTO=static
IPADDR=192.168.56.102
NETMASK=255.255.255.0
GATEWAY=192.168.56.1
네트워크 재시작
/etc/rc.d/init.d/network restart
2.1.2 날짜 & 시간 설정(수동)¶
현재 날짜 & 시간 확인
date
시간 바꾸기
date -s 시:분:초
날짜 바꾸기
date -s '년-월-일 시:분:초'
date -s 년-월-일
이 경우 시간이 00:00:00
2.1.3 날짜 & 시간 설정(ntp)¶
ntp 설정
vim /etc/ntp.conf
server kr.pool.ntp.org
server time.bora.net
server time.kornet.net
server 10.0.4.23 local
서비스 등록
chkconfig ntpd on
확인
chkconfig --list | grep ntpd
ntpd 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제
서비스 시작
service ntpd start
동기화 확인
ntpq -p
* : 현재 sync 를 받고 있음을 의미
+ : ntp 알고리즘에 의해 접속은 가능하지만 sync 를 하고 있지는 않음을 의미
- : ntp 알고리즘에 의해 접속은 가능하지만 sync 가능 리스트에서 제외
blank : 접속이 불가능함을 의미
2.1.4 SCP¶
scp 사용
윈도우 접속 상태에서 파일 전송
scp -옵션 [옮길파일] [서버계정@서버아이피:/저장공간]
-r : 폴더 복사
-v : 복사 과정
-P : 포트 번호
윈도우 접속 상태에서 파일 수신
scp -옵션 [서버계정@서버아이피:/옮길파일] [옮길경로]
scp -P 25109 root@180.182.63.23:/home/mysql/ ./
scp nbsf2_20170524 -P 10420 root@110.93.129.14:/home/mysql/
scp root@10.10.131.138:/drives/e/nbsf2_20170524 /root/mariadb_backup
2.1.5 시스템 정보 확인¶
시스템 정보보기
dmidecode |more
리눅스 커널 종류 보기
uname -a
리눅스 OS 버전 확인
cat /etc/issue.net
리눅스 CPU 정보 확인
cat /proc/cpuinfo |grep model
리눅스 메모리 정보ㄴㄷㄱ퍛
cat /proc/meminfo
리눅스 메모리 사용량
free -m
리눅스 배포버전 확인
cat /proc/sys/kernel/osrelease
리눅스 디스크 정보 확인 :: ㅇㅁㅅㄷ
cat /proc/diskstats
리눅스 하드디스크 파티션 용량 확인
cat /proc/partitions
리눅스 모듈확인
lsmod
부팅할때 읽어들인 하드웨어 정보확인
dmesg
사용자 정보보기
cat /etc/passwd
설정 보기
하드 설정 전체 보기
ulimit -Ha
소프트 설정 전체 보기
ulimit -Sa
=>하드는 해당쉘의 최대값을 뜻한다 하면 되고, 소프트는 현재 설정을 말한다 생각하면 된다.
2.1.6 시간(ntp)¶
2.1.7 기타¶
UTF8 확인
locale
로그 확인
tail -f catalina.out
SELinux
vi /etc/selinux/config
SELINUX=disabled
실행중인 서비스 확인(방화벽 확인)
service iptables status
방화벽 서비스 끄기
/etc/rc.d/init.d/iptables stop
/etc/rc.d/init.d/ip6tables stop
포트 확인
netstat -an |grep 8080
프로세스 확인
ps -ef |grep java
검색
find 경로 -옵션 옵션에따른검색어
-name 파일이름
-user 소유자
-type 타입
d : directory
f : regular file
b: block device file
c : character device fine,
n: network sepecial file
p: named pipe
s: socket
-size 파일사이즈 이상(100c, c는 Byte를 의미함)
-mtime n일 이상 변경되지 않은 파일
-atime n일 이상 엑세스되지 않은 파일
권한 설정
chown 사용자.그룹 -R 폴더
chmod 755 -R 폴더
chapter 3 : MariaDB¶
3.1 기본 설정¶
3.1.1 UTF8 설정¶
MariaDB :: show variables like 'c%';
vim /etc/my.cnf.d/server.cnf
[mysqld]
init_connect = SET collation_connection = utf8_general_ci
character-set-server = utf8
collation-server = utf8_general_ci
init_connect = SET NAMES utf8
vim /etc/my.cnf.d/mysql-clients.cnf
[client]
default-character-set = utf8
3.1.2 대소문자 구분 설정¶
데이터베이스 대소문자 구분 안함 설정
vim /etc/my.cnf.d/server.cnf
[mysqld]
lower_case_table_names = 1
3.2 사용자 추가/삭제 & 권한¶
3.2.1 패스워드 재설정¶
데몬 종료 및 기동
service mysqld stop
mysqld --skip-grant-table 로 데몬을 기동한다.
암호 없이 접속
mysql -u root mysql
use mysql;
새로운 암호 설정
update user set password=password('암호') where user='root';
flush privileges;
데몬 재기동
service mysqld stop
service mysqld start
3.2.2 mysql 패스워드 복잡성 해지¶
validate_password 파일 변경
cd /usr/lib64/mysql/plugin/
mv validate_password.so validate_password.so1
서비스 재시작
service mysqld restart
패스워드 변경
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY '패스워드';
flush privileges;
3.3 사용자 추가/삭제 & 권한¶
3.3.1 사용자 추가/삭제¶
사용자 확인
root 계정으로 접속
mysql -uroot -p
use mysql;
select host, user, password from user;
host는 사용자 아이디 뒤에 @localhost, '%'에 따라서 외부 접근이 허용되는 권한을 줄 수 있다.
localhost는 내부접근, '%'는 외부접근
사용자 추가
create user 사용자아이디@localhost identified by 'password';
'%'
사용자 삭제
delete from user where user ='사용자아이디';
3.3.2 데이터베이스 사용권한¶
데이터베이스 사용권한 부여
grant all privileges on 데이터베이스.테이블 to 사용자아이디@호스트 identified by '패스워드';
모든 테이블 *, 모든 호스트'%'
변경된 권한 적용
flush privileges;
데이터베이스 사용권한 삭제
revoke all on 데이터베이스.테이블 from 사용자이름@호스트
권한 확인
show grants for 사용자아이디@'%';
3.4 MySQL/MariaDB 백업 & 복원¶
3.4.1 Windows¶
MariaDB 설치 폴더에서 bin폴더 cmd 실행 후 작업
백업
mysqldump -uroot -p 데이터베이스이름 > D:\원하는폴더경로\원하는파일명
복원
mysql -uroot -p123 --default-character-set="utf8" nbsf_dev < D:\Algorithm\nbsf20170215
3.4.2 Linux¶
mysqldump -u[아이디] -p[패스워드] > [저장파일명].sql
MySQL/MariaDB 전체 데이터베이스를 백업
mysqldump -uroot -p -A > backup_full.sql
생성된 덤프를 이용한 복원
mysql -uroot -p < backup_full.sql
sw_test 라는 데이터베이스만 백업
mysqldump -uroot -p sw_test > backup_sw_test.sql
sw_test 데이터베이스의 tbl_a라는 테이블만 백업
mysqldump -uroot -p sw_test tbl_a > backup_sw_test_tbl_a.sql
sw_test 데이터베이스의 tbl_a테이블의 emp_no가 100 이상 200이하의 데이터만 백업
mysqldump -uroot -p sw_test tbl_a -w'emp_no >= 100 and emp_no <= 200' > backup_sw_test_tbl_a.sql
실제 데이터백업은 받지 않고 테이블 definition만 백업
mysqldump -uroot -p sw_test --no-data > backup_sw_test_definition.sql
3.4.3 시스템 백업¶
root 계정으로 백업
mysqldump --default-character-set=utf8 --set-charset -unbsf -pnbsf nbsf_dev > nbsf_dev.dump
분할시
mysqldump --default-character-set=utf8 --set-charset -uroot -p nbsf_dev | split -b 700m - nbsf_dev.dump
cat nbsf_dev.dump* > nbsf_dev.dump
Database 생성
mysql 진입
mysql -uroot -p
삭제
drop database nbsf_dev;
생성
CREATE DATABASE nbsf_dev DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
유저생성 및 권한 부여
use mysql;
생성
create user 'nbsf'@'%' identified by 'nbsf';
권한
grant all privileges on nbsf_dev.* to 'nbsf'@'%' WITH GRANT OPTION;
적용
flush privileges;
확인
SHOW GRANTS FOR 'nbsf'@'%';
Database 복구
mysql 리눅스 백업db 폴더 진입 후
mysql -uroot -pnbsf --default-character-set="utf8" nbsf_dev < nbsf_dev.dump
Databases 용량확인
SELECT table_schema, SUM((data_length+index_length)/1024/1024) MB FROM information_schema.tables GROUP BY 1;
6.2 11:15 2568.54983045
11:49 2569.54983045 30분 1MB
12:54 2570.54983045 60분 1MB
14:15 2570.54983045 80분 0MB
17:08 2573.54983045 180분 3MB
6.7 09:00 2625.56545545 112시간 52MB
10:31 2625.56545545 90분 0MB
11:44 2626.56545545 70분 1MB
12:47 2627.56545545 60분 1MB
15:10 2627.56545545 130분 0MB
16:55 2629.56545545 100분 2MB
6.8 09:40 2638.56545545 17시간 9MB
6.19 18:00 2770.62795545 11.5일 132MB
3.5 HeidiSQL¶
3.5.1 테이블 복사¶
테이블 컬럼 복사
show create table 테이블명
Create Table 쿼리를 복사하여 실행
테이블 데이터 복사
INSERT ignore INTO 복제테이블 SELECT * FROM 원본테이블
3.5.2 테이블 데이터 삭제¶
삭제할 데이터 확인
select * from ta_eval_health_index2
where REG_DTM < '2017-05-21'
삭제할 데이터가 맞으면 삭제
delete from ta_eval_health_index2
where REG_DTM < '2017-05-21'
chapter 4 : 알고리즘¶
4.1 알고리즘 설정¶
4.1.1 알고리즘¶
export DAEMON_NAME=ams-algorithm
export DAEMON_HOME=/home/algorithm/ams
export MAIN=ams-algorithm.jar
export JAVA=/home/algorithm/ams/jre1.8.0_111/bin/java
export XMS=-Xms1024m
export XMX=-Xmx2048m
export JVM_OPTION="-Dfile.encoding=UTF-8 -Dserver.port=24119"
4.1.2 dev 알고리즘¶
개발서버 알고리즘
vim /etc/init.d/algosvc
#!/bin/bash
# description: ITX
# chkconfig: 2345 20 80
# processname: java
export DAEMON_NAME=ams-algorithm
export DAEMON_HOME=/home/algorithm
export MAIN=ams-algorithm.jar
export JAVA=/home/algorithm/jre1.8.0_111/bin/java
export XMS=-Xms1024m
export XMX=-Xmx2048m
export JVM_OPTION="-Dfile.encoding=UTF-8 -Dserver.port=24119"
do_start()
{
DAEMON_PID=`ps -ef | grep $DAEMON_NAME | grep java | awk '{print $2}'`
if [ "${DAEMON_PID}" = "" ]
then
for jar in `find $DAEMON_HOME/lib -type d`
do
#echo $jar
CLP=$CLP:$jar/*
done
echo "$JAVA $XMS $XMX $JVM_OPTION -DNAME=$DAEMON_NAME -jar $MAIN &"
cd $DAEMON_HOME
nohup $JAVA $XMS $XMX $JVM_OPTION -DNAME=$DAEMON_NAME -jar $MAIN 1> /dev/null 2>&1 &
#nohup $JAVA $XMS $XMX $JVM_OPTION -DNAME=$DAEMON_NAME -jar $MAIN &
echo "$SYSDP_NAME has been successfully started."
else
echo "$DAEMON_NAME already running."
fi
}
do_stop()
{
DAEMON_PID=`ps -ef | grep $DAEMON_NAME | grep java | awk '{print $2}'`
if [ "$DAEMON_PID" != "" ]
then
kill $DAEMON_PID
echo "$DAEMON_NAME has been successfully stop. PID=$DAEMON_PID"
else
echo "$DAEMON_NAME is not running."
fi
}
case "$1" in
start)
echo "$DAEMON_NAME start..."
do_start
;;
stop)
echo "$DAEMON_NAME stopping..."
do_stop
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
exit 0
chapter 5 : Scouter의 구성¶
5.1 Scouter의 구성¶
https://www.slideshare.net/ienvyou/scouter-jboss
Server(Collector)
Agent가 전송한 데이터 수집/처리
Host Agent
OS의 CPU, Memory, Disk등의 성능 정보 전송
Java Agent
실시간 서비스 성능 정보, Heap Memory, Thread 등 Java 성능 정보
Client(Viewer)
수집된 성능 정보를 확인하기 위한 Client 프로그램
5.2 Scouter 설치¶
5.2.1 Windows¶
Scouter Server(Collector) 실행
start-scouter-server.bat
Client(Viewer) 실행
scouter.exe
127.0.0.1:6100
admin/admin
Host Agent 실행(Optional)
start-scouter-host.bat
데모 시스템 실행(Tomcat with WAR)
start-tomcat.bat
jmeter를 통한 가상의 부하 발생
start-jmeter.bat
5.2.2 Linux¶
권한 설정
chmod -fR 755 *
Scouter 서버 설정
/usr/local/scouter/demo-env1/scouter/server/conf/scouter.conf
net_tcp_listen_port=6100
net_udp_listen_port=6100
db_dir=./database
log_dir=./logs
/usr/local/scouter/demo-env1/scouter/server/startup.sh
-Xms2048m -Xmx2048m
Scouter Server(Collector) 실행
./start-scouter-server.sh
Client(Viewer) 실행
scouter.exe
192.168.56.1:6100
admin/admin
Host Agent 설정
/usr/local/scouter/demo-env1/scouter/agent.host/conf/scouter.conf
# Scouter Server IP Address (Default : 127.0.0.1)
net_collector_ip=192.168.0.147
# Scouter Server Port (Default : 6100)
net_collector_udp_port=6100
net_collector_tcp_port=6100
# Log directory(Default : ./logs)
log_dir=./logs
-Xmx512m 해당 하는 부분을 장비 성능등에 맞게 설정
Ex) -Xms512m -Xmx512m
에이전트 호스트는 운영체제의 CPU, 메모리 정보를 수집하는 역할
Host Agent 실행(Optional)
./start-scouter-host.sh
모니터링 대상 WAS 설정
/usr/local/scouter/demo-env1/scouter/agent.java/conf/jboss_standalone_ha_11_143.conf
# Scouter Server IP Address (Default : 127.0.0.1)
# Data 수집 ( Collector & Server ) 서버
net_collector_ip=192.168.0.147
# Scouter Server Port (Default : 6100)
net_collector_udp_port=6100
net_collector_tcp_port=6100
# Scouter Name(Default : tomcat1)
# agent name 설정
obj_name=jboss_standalone_ha_11_143
trace_interservice_enabled=true
# Hooking 하여 기록할 method의 pattern 정의
# 여러개인 경우 comma(,)로 구분
# format : package.Class.method,package.Class2.method2
hook_method_patterns=org.mybatis.jpetstore.*.*
# jdbc leak profile 설정
# ibatis 와 같은 framework 을 사용하는 경우 hook_connection_open_patterns 을 설정
# format : hook_connection_open_patterns=org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection
profile_connection_open_enabled=true
# 서비스 연계 추적으로 HTTP로 요청하는 서비스 간 연결 추적이 활성화
trace_interservice_enabled=false
JBoss 실행 파일 scouter agent.java 설정 적용
/usr/local/scouter/demo-env1/scouter/server/env.sh
/opt/was/servers/standalone_ha_11/bin/env.sh 설정
# Byte Code Instrumentation 기법으로 실제 실행 환경의 동작 모니터링을 위한 agent Library loading 위한 설정
-javaagent
# agent.java 의 설정 파일의 위치를 지정
-Dscouter.config
JBoss의 경우에는 OSGI 클래스로더 구조로 인하여standalone.conf 혹은 domain.conf 파일 등과 같은 config 설정 파일 혹은 실행 파일 부분에 다음과 같이 적용
-Djboss.modules.system.pkgs=org.jboss.byteman,scouter
export JAVA_OPTS=" $JAVA_OPTS -Djboss.modules.system.pkgs=org.jboss.byteman,scouter" JBoss 기동 스크립트에 Scouter에 대한 설정을 통해 BCI 작업이 이루어지도록 함
데모 시스템 실행(Tomcat with WAR)
./start-tomcat.sh
chapter 6 : 프로젝트 지원¶
6.1 레드마인 설정¶
플러그인
export PATH=/opt/redmine-3.2.3-1/ruby/bin
cd /opt/redmine-3.2.3-1/apps/redmine/htdocs
bundle install --without development test postgresql sqlite
ruby bin/rake redmine:plugins RAILS_ENV=production
cd /opt/redmine-3.2.3-1/apps/redmine/htdocs
bundle install --without development test postgresql sqlite --no-deployment
bundle install --without development test postgresql sqlite --deployment
ruby bin/rake redmine:plugins RAILS_ENV=production
6.1.1 메일 설정¶
메일 설정
/opt/redmine-3.3.3-0/apps/redmine/htdocs/config/configuration.yml
띄어쓰기 주의!!
default:
# Outgoing emails configuration
# See the examples below and the Rails guide for more configuration options:
# http://guides.rubyonrails.org/action_mailer_basics.html#action-mailer-configuration
email_delivery:
delivery_method: :smtp
smtp_settings:
address: smtp.gmail.com
port: 587
domain: example.net
authentication: :login
user_name: 아이디@gmail.com
password: 비밀번호
재시작
cd /opt/redmine-3.2.3-1
./ctlscript.sh restart apache
6.1.2 HTTPS 강제 리다이렉션¶
레드마인 설정
vim /opt/redmine-3.2.3-1/apps/redmine/conf/httpd-prefix.conf
맨 위에
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R,L]
재시작
cd /opt/redmine-3.2.3-1
./ctlscript.sh restart apache
멘티스 설정
vim /opt/mantis-2.3.1-0/apps/mantis/conf/httpd-prefix.conf
맨 위에
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R,L]
재시작
cd /opt/mantis-2.3.1-0
./ctlscript.sh restart apache
6.1.3 SSL 인증서(도메인 주소 필요)¶
비공개 키 만들기
openssl genrsa -out /opt/redmine-3.2.3-1/apache2/conf/server.key 2048
인증서 만들기
openssl req -new -key /opt/redmine-3.2.3-1/apache2/conf/server.key -out installdir/apache2/conf/cert.csr
설치
cd /usr/local
yum install epel-release
rpm -ivh https://rhel6.iuscommunity.org/ius-release.rpm
yum install git python27 python27-devel python27-pip python27-setuptools python27-virtualenv python27-libs
git clone https://github.com/letsencrypt/letsencrypt
실행
chattr -i /usr/bin/gcc /usr/bin/g++ (실행 x)
cd /usr/local/letsencrypt
/usr/local/letsencrypt/letsencrypt-auto certonly
chmod 700 /usr/bin/gcc /usr/bin/g++;chattr +i /usr/bin/gcc /usr/bin/g++
6.2 gitlab¶
6.2.1 설치¶
https://about.gitlab.com/downloads/#centos6
설치파일 실행
rpm -ivh gitlab-ce-9.2.1-ce.0.el6.x86_64.rpm
재구성
gitlab-ctl reconfigure
6.2.2 설정
실행
# Start all GitLab components
/opt/gitlab/bin/gitlab-ctl start
# Stop all GitLab components
/opt/gitlab/bin/gitlab-ctl stop
# Restart all GitLab components
/opt/gitlab/bin/gitlab-ctl restart
6.3 Jenkins¶
6.3.1 설치¶
플러그인 설치
Ant Plugin
GitHub plugin
GitLab Plugin
Gradle Plugin
Publish Over FTP
Publish Over SSH
6.3.2 SSH¶
시스템 설정
SSH Servers
Name : 192.168.56.106
Hostname : 192.168.56.106
Username : root
Remote Directory : /usr/local/tomcat/webapps/
Passphrase / Password : 비밀번호
프로젝트 설정
Source files target/AMS-1.0.war
Remove prefix target/
Exec command /usr/local/tomcat/copy.sh
copy.sh 스크립트 생성
#!/bin/sh
backup="`date '+%m%d_%H%M'`"
service tomcat stop
sleep 2
rm -rf /usr/local/tomcat/webapps/AMS-1.0
mv /usr/local/tomcat/webapps/AMS-1.0.war "/usr/local/tomcat/oldwebapps/AMS-1.0.war_$backup"
mv /usr/local/tomcat/AMS-1.0.war /usr/local/tomcat/webapps/
sleep 10
service tomcat start
sleep 120
/etc/init.d/tomcat stop
sleep 2
/etc/init.d/tomcat start
chapter 7 : 설정¶
7.1 tomcat¶
vim /etc/init.d/tomcat
export JAVA_HOME=/usr/local/src/jdk1.7.0_80
export PATH=$JAVA_HOME/bin:$PATH
export JAVA_OPTS="-Djava.awt.headless=true -server -Xms2048m -Xmx4096m -XX:NewSize=512m -XX:MaxNewSize=1024m -XX:PermSize=512m -XX:MaxPermSize=1024m -XX:+DisableExplicitGC"
export CATALINA_OPTS="-Denv=product -Denv.servername=projectTomcat"
export CATALINA_HOME=/usr/local/src/tomcat7
#. /etc/profile
case "$1" in
start)
echo "Starting tomcat: "
#su - tomcat -c $CATALINA_HOME/bin/startup.sh
$CATALINA_HOME/bin/startup.sh
;;
stop)
echo "Shutting down tomcat: "
#su - tomcat -c $CATALINA_HOME/bin/shutdown.sh
$CATALINA_HOME/bin/shutdown.sh
;;
restart)
echo "Restarting tomcat: "
#su - tomcat -c $CATALINA_HOME/bin/shutdown.sh; su - tomcat -c $CATALINA_HOME/bin/startup.sh
$CATALINA_HOME/bin/shutdown.sh; su - tomcat -c $CATALINA_HOME/bin/startup.sh
;;
*)
echo "Usage: service tomcat {start|stop|restart}"
exit 1
esac
exit 0
7.2 HTTPS(톰캣 사설 인증서)¶
7.2.1 톰캣 사설 인증서 올리기¶
Windows에서 cmd 실행
keytool.exe(JDK_HOME/bin) 이 실행되는지 확인(실행안되면 환경변수에 path 추가)
keytool.exe
인증서를 생성할 디렉토리로 이동
cd C:\privateCert
서버키 생성(이름은 변경가능:TestServer)
keytool -genkey -keyalg RSA -sigalg SHA1withRSA -alias TestServer -keysize 2048 -keystore TestServer.key
비밀번호 등 입력(국가 코드 : KR)
TestServer.key 파일 생성 여부 확인
인증서 생성(이름은 변경가능:TestServer)
C:\privateCert>keytool -certreq -alias TestServer -keyalg RSA -sigalg SHA1withRSA -file TestServer.csr -keystore TestServer.key
TestServer.csr 파일 생성 여부 확인
서버에서 설정
server.xml 위치로 이동(톰캣:TOMCAT_HOME/conf, 이클립스:Server/해당WAS)
SSL 설정 주석 풀기(8443 으로 검색하면 나옴)
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/root/privateCert/TestServer.key" keystorePass="tmddhks" />
톰캣 restart
7.2.2 톰캣 시작페이지 설정¶
8080 시작페이지 설정
</Host> 앞에
<Context path="/" docBase="/usr/local/apache-tomcat-7.0.78/webapps/AMS-1.0" debug="0" reloadable="true" />
7.2.3 톰캣 매니저 권한¶
매니저 권한 설정
vim $CATALINA_HOME/conf/tomcat-users.xml
<tomcat-users>
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="이름" password="패스워드" roles=" admin-gui ,manager-gui"/>
</tomcat-users>
7.3 vboxvmservice(VirtualBox 자동실행)¶
7.3.1 설정¶
http://blog.djjproject.com/184
서비스 설정
C:\vms\VBoxVmService.ini
ShutdownMethod=
savestate(윈도우 종료시 상태를 저장하고 부팅시 저장된 상태로 다시 시작)
acpipowerbutton(VM에 종료명령을 보내 종료 후 윈도우 종료)