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 에 등록한다.

 

nginx 리버스 프록시 웹서버에 awstats 설치 및 운영

WAS 기능이 없는 리버스 프록시 서버에서 awstats 를 설치를 하게 될경우 php 가 설치되어 있지 않기 때문에 오류가 발생 한다.

perl 은 설치가 되어 있기 때문에 awstats 배포 판의 받아 perl이 일정 시간 마다 html 문서를 일정 시간마다 갱신하도록 해서 사용 한다.

 

먼저 배포파일을 다운로드 받아 서버에 업로드 한다. https://awstats.sourceforge.io/#DOWNLOAD

 

awstats 플러그인중 3가지를 사용한다. 구글챠트API 는 별도 설치가 없다.

URI utf8 디코딩 및 geoip2 (.mmdb 파일) 사용을 위해 아래 방법 대로 설치 한다.

(perl-App-cpanminus 와 GeoIP2::Database::Reader 설치 할때 각각 약 100개 정도가 설치 된다.)

 

그 다음 awstats 의 콘피그를 실행 한다.

위 코드중 강조된 부분 은 문답 부분이며 사용하려는 사이트에 맞게 입력 값이 달라 질수 있다.

 

콘피그가 완료 되면 /etc/awstats/awstats.www.enteroa.com.conf 파일이 생성 된다.

해당 파일의 내용을 아래와 같이 수정 한다. (일부 기본적인 설정만 사용하도록 했음.)

 

분석 과 html 문서 서비스 제공에 필요한 폴더 를 생성하고 심볼릭링크를 생성한다.

 

아래 명령으로 access_log 를 분석 한다.

 

아래 명령으로 html 파일을 생성 한다.

 

새롭게 생성한 폴더에 웹접근이 가능하도록 selinux (fcontext) 설정을 한다.

 

nginx 에 http(:80) 가상호스트를 생성 한다.

 

Let’s encrypt 인증서를 생성 한다.

 

https(:443) 가상 호스트 설정을 추가 한다.

 

수집된 정보로 html을 계속 생성해줘야 하기 때문에 위의 html 생성 명령어를 스크립트로 작성 한다.

 

crontab -e 명령어로 일정 시간 마다 스크립트가 자동 실행 되도록 한다.

access_log 분석: 10분마다 || html 파일 생성: 매시 59분 마다.

 

분석 텀은 자유롭게 설정가능 하지만 할때 마다 자원을 소모 한다. 1분 마다 하면 문제 소지가 있겠다.

다만 분석 텀을 너무 길게 하면 분석할 데이터의 량이 증가 하기 작동 시간이 길이져 서버의 로드애버리지는 상승 시키는 문제가 생긴다.

때문에 웹서버 접속량에 따라 유동적으로 설정해야 한다.


PS. 기본적으로 awstats 의 경우 검색 엔진을 외국산은 잘 표현 하지만 국산 검색 포털은 표현해 주지 않는다.

이는 기본 제공 되는 브라우져 체크 라이브러리 파일에 /usr/local/awstats/wwwroot/cgi-bin/lib/search_engines.pm  한국의 검색 엔진이 없기 때문에…

한국 검색엔진은 기타에 포함 된다.

 

개인적으로 수정해서 쓰고 있는 search_engines.pm 파일을 아래 방법 대로 다운받아서 대체 하면 나온다. ‘ㅅ’a (naver, daum, nate, dreamwiz, korea.com)

 

Synology DS420+ 메모리 증설 (PC4-3200AA 1Rx8 8GB)

하이마트에서 라이브커머스로 할인이 많이 되어서 50만원 후반대 가격에 DS420+ 를 사게 되었음.

2022-06-02_103859

 

듀얼코어 x86 cpu에 기본 메모리 2GB + 노트북용 메모리 슬롯 한개가 존재함.  아래는 시놀로지 측에서 제공 되는 DS420+ 의 스펙표.

2022-06-02_104059

원활한 사용을 위해서 메모리를 증설 하고자 커뮤니티를 검색해 보았지만 DDR4-2133 ~ DDR4-2666 성공 사례가 있었지만

온라인몰 가격 검색을 해보니까 3200 보다 2133을 더 비싸게 팔고 있는 어이 없는 상황이 확인됨.


보통 상급 메모리는 하급 메모리의 세팅 값을 하위 호환으로 지원 하기 때문에 굳이 아래 등급인 2133을 사용할 필요는 없음. (본인의 H/W 지식)

2022-06-02_105125

위 스크린샷은 시놀로지에 사용할 예정인 메모리의 다른 windows pc 에 작창 해서 CPU-Z 의 SPD 항목임.

 

CPU-Z 의 SPD 항목을 보면 지원 하는 JEDEC 를 표기 하고 있는데 2133에 해당하는 JEDEC 표준이 보이지는 않지만 Report 를 TXT 파일로 저장 해보면 아래와 같은 부분을 찾을수 있음.

리포트 파일에 잘 나와 있지만 DDR4-3200 은 Max bandwidth 일뿐…

 

메모리 콘트롤러는 CPU 내장(SoC)이기 때문에

Intel 제공 J4025 의 스펙뷰 https://www.intel.co.kr/content/www/kr/ko/products/sku/197307/intel-celeron-processor-j4025-4m-cache-up-to-2-90-ghz/specifications.html

확인 결과 DDR4-2400 까지 8GB 까지 된다고 되어 있음.

CPU 스펙뷰는 보통 발표 시점의 메모리 테스트의 호환성 테스트 결과 값이지 제한 값이 아니기 때문에

칩의 집적도가 증가한 현 시점에서는 1랭크(1R) 메모리는 충분히 사용이 가능 하다고 판단되어서

기존에 보유하고 있는 미니 PC의 16GB (8GB x 2개) 중 1개를 빼서 가져다 쓰기로 함. (그냥 봇용 PC 라 큰 메모리가 필요 없는듯 하여…)

IMG_0760IMG_0762

메모리는 1R, 2R 뿐 아니라 고용량으로 가게 될경우 4R 까지도 있다.(이건 보통 서버용…)

실사진을 올려놓고 파는 쇼핑몰을 잘 찾아보면 “삼성  so-DIMM PC4-3200Mhz 1Rx8 16GB”도 존재 한다. (물론 사진과 같은 제품을 파는지는 알수 없다.)

다만 국내에서 메모리를 팔때 랭크(1R or 2R) 까지 공개를 하지 않고 있기 때문에…. 판매하는곳에 랭크를 문의 하시고 구입하시는 편이 좋다.

 

위와 같이 장착 후 시놀로지 부팅 고고…

KakaoTalk_20220601_101500867

 

정상적으로 인식이 되었으며 DSM 도 기본 415play 와 다르게 빠릿빠릿 하게 반응 해줌…

 

아래는 메모리 설치 완료 후 시놀로지에 SSH 접속을 통해 확인한 메모리의 정보. (DDR4-3200 메모리를 넣었지만 다른 메모리에 맞춰 DDR4-2400 으로 작동하는 모습.)


데이터 이전은 마이그레이션 툴을 쓰면 좋으나 415play  가 지원되지 않아서.

파일 스테이션에서 다음과 같이 연결 설정 한뒤에 웹콘솔로 옴기기를 추천함.

구 시놀로지에서 신규 시놀로지를 마운트 해서 데이터를 밀어 넣는게 효과적임. (백그라운드 카피로 진행됨)

KakaoTalk_20220601_234711111_01


메모리가 커지면 무었지 좋은가에 대한 대답은 시놀로지내 Docker 사용시에도 자원이 되고 속도도 빨라진다고 하지만.

DSM도 리눅스 시스템이다. 기본적으로 리눅스든 윈도우든 메모리는 절대 놀리지 않는다.

네트워크 속도가 빠른 요즘엔 SSD/HDD 가 속도를 못따라 가는데 이때 I/O 버퍼로 쓰인다.

(모니터링 툴에서는 보통 이 버퍼로 사용되는 메모리는 free 메모리로 보여 주는 경우가 많다.)

Oracle Linux 8 (x86_64) 서버에서 dnf(yum)을 이용한 nginx 설치 및 http3 구현

OCI 에서 제공 되는 “항상 무료 적격” 서비스에 ARM64 서버로 Apache, Php, MariaDB 를 운영 하고자 하였으나

aarch64 커널에서는 snapd 설치가 가능하지만 lets encrypt 사용이 불가능 하여 불가피 하게 x86_64 서버를 앞에 하나 두어

reverse proxy 할 계획을 세우다 보니 HTTP/3 를 적용하는 부분도 포함해 진행 한다.

알고 가야 하는 부분은 http3 를 구현 하는 nginx-quic 의 경우 아직 테스트 레벨이라는 점이다.


tier 1 = x86_64 – oracle linux 8 – nginx

tier 2 = arm64 – oracle linux 8 – memcache, docker – amazon linux – httpd, php-fpm

tier 3 = arm64 – oracle linux 8 – mariadb


아래 두 글에 이어서 익숙하겠지만 그것을 한다.

 

편리한 dnf(yum) 설치를 위해 codeit.guru 레포지토리를 추가 한뒤에 nginx:codeit-quic 설치를 한다.

 

snapd 를 활용하여 Let’s encrypt 를 설치 한다.


웹서버의 보안 향상을 위해 Diffie-Hellman param 파일을 생성한다.

 

서버 내부의 파이어월에 사용할 서비스 및 포트를 등록 하고 확인 한다.

 

nginx.pid 생성, /var/www/html  엑세스(Let’s encrypt 인증서 http 인증) 및 리버스 프록시 구현을 위한 selinux 를 설정 한다.

 

OCI 클라우드 내에서의 보안 목록(Security List) 에서 아래와 같이 UDP :443 을 허용해 준다.

2022-05-12_121444


/etc/nginx/nginx.conf 파일을 수정 한다.

 

Let’s encrypt 인증서 발급을 위한 http 가상호스트를 수정 한다. vi /etc/nginx/conf.d/default.conf

conf 파일을 설정한 뒤 nginx 를 활성화 및 시작 한다.

 

Let’s encrypt 인증서를 발급 한다. (성공시 Successfully received certificate 메세지 가 확인 된다.)

 

https 가상호스트 설정 파일을 추가 생성 한다. vi /etc/nginx/conf.d/default-ssl.conf

default.conf 파일과 default-ssl.conf 파일은 하나로 병합해서 사용 해도 관계는 없다.

 

가상 호스트를 생성 한 뒤 nginx 를 reload 한다.


위까지 진행 한 경우 http3 를 지원 하는 웹서버의 설정이 모두 끝난다.

다만 구성상 외부서비스 제공은 https 내부에서의 통신은 http 프로토콜을 사용하기 때문에 기본 상태의 wordpress 의 에러메세지를 볼 수 있다.

was 서버에서 운영되는 워드프레스의 wp-config.php 파일에 /* That's all, stop editing! Happy blogging. */ 위 부분에 아래 소스를 삽입 해야 한다.


브라우져 접속 및 체크 사이트(https://http3check.net/) 접속을 통해 HTTP/3 이 활성화 되었는지 확인 한다.
2022-05-11_1117222022-05-12_121827