카테고리 Archives: linux

GEOIP database 파일 업데이트

기존 GeoIP 스크립트에서 GeoIP.dat 파일이 0 으로 생성을 하게 되어서 Apache에 에러가 발생 하였다.

에러 메세지는 아래와 같이 /var/log/httpd/error_log 파일과 /var/log/messages 파일 에서 확인 되었다.

 

내용 확인 결과 maxmind 에서 배포 되는 csv 파일이 2024년 5월 1일 부로 S3 presigned 를 이용하여 배포 하는 형태로 바뀐것으로 확인이 되었다.

오랜만에 maxmind 사이트에 로그인을 해보니 라이선스 키 길이도 바뀌어서 같이 바꾸는게 좋겠다. 🙂

중간에 주석 처리된 3줄은 python2를 사용하는 서버(centos 7 이하)에서는 주석을 제거 하고 사용해야  한다.

 

몇가지 로직 개선 및 mmdb 파일까지 갱신 하도록 geoipupdate 명령을 중간에 실행 하도록 하였다.

때문에 /etc/GeoIP.conf 파일에 자신의 어카운트 및 라이선스키를 넣어줘야 한다.

그냥 사용 할경우 www.enteroa.com 에서 생성하고 재배포 하는 파일을 다운 받아 사용 한다.

자신의 서버에서 스스로 dat파일을 생성 하고 싶을 경우 Maxmind_Licensekey 부분과 PRIMARY_SERVER_HOSTNAME 부분 또 PRIMARY_DEPLOY_URL 부분을 수정 해서 사용해야 한다.

 

라이선스키 발급 방법은 같기 때문에 maxmind 에서 라이선스 발급을 원하면 아래 역인글을 확인 한다.

역인글 : GEOIP database …

cron 삭제 대비한 systemd 를 이용한 타이머 설정

일반적으로 crontab -l 를 이용하여 서버의 스케쥴링을 설정 한다.
Amazon linux 2023 에서는 cronie 가 삭제되었고 당연히 crontab 명령어를 사용할 수 없다. (뭐 설치한다면 사용할 수 있다 -.-a)
그래서 systemd 에서 제공하는 타이머 형태로 사용할 수 있다.

1. crontab -l 과 대응 되는 명령어는 systemctl list-timers 이다.

2. 기존에는 crontab 과 생성해둔 스크립트 조합으로 실행이 되었지만.
systemd 에서는 생성해둔 스크립트 + 서비스명.service + 서비스명.timer 조합으로 설정 할 수 있다.

아래는 간단한 timer 생성 예 이다.

아래는 스크립트를 실행하는 service 생성 예 이다. (Execstart= 에 생성 해둔 스크립트를 넣으면 해당 스크립트가 실행이 되겠다.)

스크립트, 타이머, 서비스 를 모두 생성 했다면 start 또는 enable 을 시켜서 작동을 확인한다.

RockyLinux 8 미사용 커널 삭제

Linux 상에서 dnf update 를 한  경우 보통은 새로운 업데이트 버전이 설치 되면서 기존 버전을 삭제 하게 되어있다.

다만 일반적인 범주를 벗어나는 java 라든가 python 은 기존 버전의 삭제 없이 다른 이름으로 설치 되어 alternatives에 의해 선택되어 사용 된다.

그리고 또 다른 하나의 경우는 kernel 이 업데이트 된 경우 인데 (8.5 -> 8.9) 이경우 /boot 파티션에 기존 부분 삭제없이 누적 되기 때문에

업데이트를 꾸준히 한경우 /boot 파티션의 용량이 부족한 경우가 발생한다.

 

요점은 /boot 폴더는 보통 용량이 작기 때문에 용량 확보를 위해서 기존 커널을 지워야 한다 ‘ ㅅ’a

손쉽게 삭제가 된다. 🙂

20240304_142946

OCI 구성 서버중 update를 많이 한 웹서버 용량이 73%를 쓰고 있어서 삭제 후 43% 으로 감소 하였음 :).

nginx 설정파일을 vim 으로 변경시 색상 표시

nginx 의 경우 vim 을 이용한 편집시 색상 표기가 되지 않아 눈에 잘 들어오지 않는다.

이는 vim 이 가지고 있는 syntax중 nginx 에 맞는 색상 코드가 존재 하지 않기 때문이고 이를 추가해 줄 경우

색상이 정상적으로 표시가 된다.

 

먼저 아래 와 같이 경로 이동 및 파일 다운로드를 진행한다. (경로 이동중 vim80 부분은 설치된 vim의 버전에 따라 변경 될 수 있다.)

 

이후 filetype.vim 에서 어떤 파일에 해당 syntax를 사용할지 설정해야 한다.

vi /usr/share/vim/vim80/filetype.vim 를 이용해 파일 편집을 진행 한다.

99번째 줄에 apache(httpd) 에 대한 설정이 있는데 그 아래 추가를 하고 저장 한다.

 

nginx.conf 를 vi 로 열었을때 아래와 같이 나온다면 잘 설정이 된것이다.

20240208_133533

 

출처: https://gist.github.com/ralavay/c4c7750795ccfd72c2db

ps. 출처에서는 vim.org 에서 다운받게 하였으나 다운로드 시 잘 안되는 경우가 발생했고, 일부 ssl 관련 설정을 추가해서 nginx.vim.tgz 에 담았음.

nginx 자동 리로드 스크립트

Let’s encrypt 가 snapd 를 이용하여 자동으로 갱신이 이루어 지지만 시작 시점의 인증서를 계속 가져 가기 때문에

nginx 재시작이 되지 않아서 인증서 만료 문제가 발생을 한다.

 

때문에 1일 이내의 갱신된 인증서(let’s encrypt)가 존재할 경우 nginx 를 reload 해서 적용이 되도록 한다.

 

이후 아래와 같이 crontab 에 등록한다.