'2019/07/05'에 해당되는 글 2건

  1. 2019.07.05 swap 설정 하기!
  2. 2019.07.05 Nginx source를 이용한 compile 설치

swap 설정하기

2G 메모리를 가진 MongoDB 인스턴스에서 메모리가 부족하다는 메시지를 계속 받았다.

메모리를 제외하고는 큰 문제가 없어서 확인을 해보니 swap 영역의 크기가 0 이었다. swap은 디스크를 메모리처럼 사용하는 거라, 성능에 좋지 않아서 기본설정이 사용하지 않도록 되어있다.

MongoDB의 메모리 문제를 해결하기 위해 swap을 이용하기로 내부 결정을 하였다.

설정은 다음과 같다.

# swap 확인
$> sudo swapon -s

$> sudo  free -m
              total        used        free      shared  buff/cache   available
Mem:           1955         271        1169           0         515        1537
Swap:             0           0           0

#swap 만들기
$> sudo fallocate -l 4G /swapfile
$> sudo chmod 600 /swapfile
$> sudo mkswap /swapfile
Setting up swapspace version 1, size = 4 GiB (4294963200 bytes)
no label, UUID=67f5331d-d17a-4c67-9d77-b819114a9aab

$> sudo swapon /swapfile
sudo swapon -s
Filename                Type        Size    Used    Priority
/swapfile                                  file        4194300    0    -2

$> free -m
              total        used        free      shared  buff/cache   available
Mem:           1955         271        1169           0         515        1537
Swap:          4095           0        4095

마지막으로 서버가 재부팅 되었을때, swap파일이 적용되도록 수정을 해야 한다.

$> sudo vi /etc/fstab

# 가장 아래 부분에 추가 
/swapfile   none    swap    sw    0   0

추가 swap 삭제 하기

# swap 메모리 제거
$> sudo swapoff -v /swapfile
swapoff /swapfile

# 물리 파일 제거
$> sudo rm -f /swapfile

swap 메모리를 제거할때 여유 공간이 없을 경우 다음과 같은 오류가 발생 할수 있다.

$> sudo swapoff -a
swapoff: /swapfile: swapoff failed: Cannot allocate memory

이럴때는 서비스를 종료 해서 메모리를 충분히 확보후 실행하면 된다.

참조 링크

Posted by lahuman

댓글을 달아 주세요

Nginx source를 이용한 컴파일 설치

오랜만에 Nginx를 설치하고 sub_filter를 사용하였는데 동작을 하지 않는다.

원인은 http_sub_module이 설치 되지 않아서 발생하는 문제이다.
nginx에 http_sub_module을 설치하기 위해서는 꼭 source compile 설치를 해야 한다.

NGINX 컴파일에서 컴파일 방법에 대하여 잘 정리가 되어 있다.

다음은 내가 사용한 명령어만 정리 하였다.

# 최초 update & 필수 gcc g++ 설치
$> sudo apt-get update
$> sudo apt-get install gcc g++;

# Nginx 설치 디렉토리 설정
$> mkdir nginx_source
$> cd nginx_source/

# Nginx 1.15.10 다운
$> wget https://nginx.org/download/nginx-1.15.10.tar.gz
$> tar xvf nginx-1.15.10.tar.gz

# Nginx 설치를 위한 모듈들 설치 START
$> wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.43.tar.gz
$> tar xvf pcre-8.43.tar.gz

$> wget https://www.openssl.org/source/openssl-1.0.2r.tar.gz
$> tar -xzvf openssl-1.0.2r.tar.gz

$> wget http://zlib.net/zlib-1.2.11.tar.gz
$> tar xvf zlib-1.2.11.tar.gz
# Nginx 설치를 위한 모듈들 설치 END

# 실행 계정 생성
$> useradd --shell /usr/sbin/nologin www-data

$> cd nginx-1.15.10/
# 컴파일 옵션 설정 **--with-http_sub_module** 내가 추가한 옵션이다.
$> sudo ./configure --with-http_sub_module --with-zlib=../zlib-1.2.11 --with-pcre=../pcre-8.43 --with-openssl=../openssl-1.0.2r --with-http_ssl_module --with-debug  --prefix=/usr/local/nginx --user=www-data --group=www-data
$> sudo make;
$> sudo make install;


# Nginx init 스크립트 처리
$> sudo wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx;
$> sudo chmod +x /etc/init.d/nginx;
$> sudo update-rc.d -f nginx defaults
$> service nginx status

이렇게 하고 nginx.conf에 proxy pass 설정을 한다.

location /test/{ 
    proxy_pass http://lahuman.github.io/; 
}

이 경우 기본적으로 주소에 http://server/test 를 호출 하면 http://lahuman.pe.kr 내용을 확인 할 수 있다. 다만 해당 컨텐츠의 링크를 확인하면 절대 경로로 표출 되어 동작이 제대로 되지 않는다.

rewrite 와 sub_filter를 이용하여 내부 컨텐츠의 경로를 변경 하자
내부 컨텐츠의 경로를 변경하는 방법으로 sub_filter를 이용할 수 있다.

location /test/ {
        rewrite ^/test(/.*)$ $1 break;
        proxy_pass http://lahuman.pe.kr/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_redirect    off;
        proxy_set_header Accept-Encoding "";
        sub_filter_types *;
        sub_filter_once off;
        sub_filter '(?i)src=[\"\']/' 'src="/test/';
        sub_filter '(?i)href=[\'\"]/' 'href="/test/';
        sub_filter '/doc4sm/' '/test/doc4sm/';
    }

오랜만에 설정을 하였다.

설정은 늘 힘들다...

참조 링크

Posted by lahuman

댓글을 달아 주세요