sudo yum update -y
amazon-linux-extras list | grep nginx
sudo amazon-linux-extras install -y nginx1 -y
nginx -v
sudo service nginx start
service nginx status
설정상 편의를 위해 관리자 권한으로 변경
$ sudo su
서버 시간대를 서울 기준으로 변경(ZONE="Asia/Seoul")
# vi /etc/sysconfig/clock
인스턴스가 현지 시간 정보를 참조할 때 표준 시간대 파일을 찾을 수 있도록 /etc/localtime과 표준 시간대 파일 사이에 심볼 링크 생성
# ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
AWS 콘솔에서 인스턴스 재부팅
AWS 액세스 키가 없을 경우 생성 (참고)
로컬에 다운로드 받은 액세스 키 파일을 열고, 터미널에서 aws configure
설정 (참고)
$ sudo su
vi /etc/nginx/nginx.conf
service nginx restart
vi /etc/logrotate.d/nginx
# vi /etc/logrotate.d/nginx
/var/log/nginx/*log {
daily // 일 단위로 rotate 진행
rotate 10 // 로그 파일을 10개만 저장하고 나머지는 삭제
missingok // 로그 파일이 발견되지 않을 경우 에러처리 하지 않음
create 0640 root root // 로그 파일 생성시 0644 권한, root 사용자, root 그룹으로 생성
notifempty // 로그 내용이 없어도 rotate 진행
dateext // 백업 파일명에 날짜가 기입되도록 함
dateyesterday // 백업 파일명의 날짜를 어제 날짜로 지정
dateformat -%Y%m%d // date형식 지정(YYYYMMDD 형식이 아닌 다른 형식으로 사용시 지정)
sharedscripts // 로그 파일이 여러 개 있어도 스크립트를 공유하여 postrotate 스크립트를 한 번만 실행
postrotate // rotate 실행 후 스크립트 파일 실행
YESTERDAY=$(date -d yesterday '+%Y%m%d')
LOGFILE="/var/log/nginx/access.log-${YESTERDAY}"
##
echo "${LOGFILE}"
echo "${YESTERDAY}"
##
if [ -f ${LOGFILE} ]; then
sudo /usr/bin/aws s3 cp ${LOGFILE} s3://{버킷명}/${YESTERDAY}/access-${YESTERDAY}.log
echo "${LOGFILE} 파일이 s3에 복사되었습니다."
else
echo "${LOGFILE} 파일이 존재하지 않습니다."
fi
##
/bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
endscript
}
vi /etc/logrotate.conf
# vi /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
daily
dateext
dateyesterday
create 0664 root utmp
rotate 10
missingok
notifempty
#compress
prerotate
sudo rm -rf /var/log/wtmp-*.log
sleep 1
sudo last -f /var/log/wtmp >> /var/log/wtmp-$(date -d yesterday '+%Y%m%d').log
endscript
postrotate
YESTERDAY=$(date -d yesterday '+%Y%m%d')
LOGFILE="/var/log/wtmp-${YESTERDAY}.log"
##
echo "${LOGFILE}"
echo "${YESTERDAY}"
##
if [ -f ${LOGFILE} ]; then
sudo /usr/bin/aws s3 cp ${LOGFILE} s3://{버킷명}/${YESTERDAY}/wtmp-${YESTERDAY}.log
echo "${LOGFILE} 파일이 s3에 복사되었습니다."
else
echo "${LOGFILE} 파일이 존재하지 않습니다."
fi
endscript
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
/etc/cron.daily의 기본 값은 이른 아침 시간에 적용 되는 것으로 보임
매일 자정마다 하루치 로그가 적재되도록 관리할 것이므로, /etc/cron.daily/에 있는 logrotate를 임의 위치(나의 경우 /usr/logrotate/)에 디렉토리 생성 후 이동
mkdir -p /usr/logrotate/
mv /etc/cron.daily/logrotate /usr/logrotate/
vi /etc/crontab
아래 내용 작성하여 내가 정한 시간에 순환 되도록 적용
0 0 * * * root /usr/logrotate/logrotate
logrotate -f /etc/logrotate.conf
-f 강제 실행
-d 디버그 모드 (실제로 실행 되진 않음)
-v 실행과정 화면에 표시