다운로드
의존성
nginx를 설치하기 전에 의존성 문제를 해결해야 한다.
아래의 의존성 패키지들은 apt-get, yum과 같은 패키지 관리자를 이용해서 설치하는 것이 편리하다. 이번 수업에서는 일부러 직접 컴파일 하는 법을 다루고 있다.
nginx를 설치하기 전에 의존성 문제를 해결해야 한다.
아래의 의존성 패키지들은 apt-get, yum과 같은 패키지 관리자를 이용해서 설치하는 것이 편리하다. 이번 수업에서는 일부러 직접 컴파일 하는 법을 다루고 있다.
PCRE
openssl
zlib
외부 모듈의 설치
echo module
사용자
NGINX는 마스터 프로세스(Master Process)와 작업자 프로세스(Worker Process)를 가지고 있다. ps aux | grep nginx를 실행해보면 아래와 같은 프로세스가 떠있을 것이다.
마스터 프로세스는 루트 계정으로 실행되면서 80, 443 포트의 소켓과의 통신을 담당한다.
작업자 프로세스는 실제로 데이터를 처리하는 프로세스라고 할 수 있는데 이 프로세스를 핸들링할 사용자를 만들어야 한다. 일반적으로 웹서버의 워커 유저는 www-data를 사용한다. www-data를 만드는 법은 아래와 같다.
1 | useradd --shell /sbin/nologin www-data |
ubuntu는 아래와 같이 한다.
1 | useradd --shell /usr/sbin/nologin www-data
|
설치
컴파일을 하기 위해서는 C, C++ 컴파일러가 필요하다. 필자는 gcc를 사용할 것이다. 아래와 같은 명령으로 설치 할 수 있다.
1 | sudo apt-get install gcc g++; |
1 | yum install gcc-c++; |
설치는 크게 세가지 단계로 진행된다.
- configure : 환경설정
- make : 설치파일을 컴파일
- make install : 설치파일을 이용해서 설치
configure
nginx의 소스 디렉토리로 이동한 후에 configure 명령을 실행한다. 이 때 사용할 수 있는 옵션에 대한 설명은 공식 홈페이지를 참조한다. http://nginx.org/en/docs/install.html
아래는 필자가 사용할 configure 명령이다.
1 | sudo ./configure --with-zlib=../zlib-1.2.8 --with-pcre=../pcre-8.32 --with-openssl=../openssl-1.0.1e --with-http_ssl_module --with-debug --add-module=../echo-nginx-module-0.45 --prefix=/usr/local/nginx --user=www-data --group=www-data
|
위의 내용에 대한 설명은 아래와 같다.
- --with-(zlib | pcre | openssl) : NGINX가 의존하고 있는 라이브러리들의 소스 경로
- --with-(http_ssl_module | debug) : NGINX를 설치할 때 ssl, debug 모듈을 활성화한다. 이 모듈들은 NGINX가 제공하는 내부 모듈이지만 기본적으로는 설치가 되지 않는 옵션사항이다.
- --add-module : 외부 모듈인 echo 모듈의 소스가 위치하는 디렉토리
- --prefix : NGINX가 설치될 기본 디렉토리를 의미한다. 이 디렉토리 하위에 NGINX의 실행, 로깅, 설정 파일들이 설치된다. 각각의 항목을 바꿀 수도 있다. 메뉴얼을 참고하자.
- --user, --gourp : www-data 사용자의 권한으로 NGXIN를 실행시킨다. www-data 사용자가 없다면 만들어야 한다. 사용자의 리스트는 아래의 명령을 통해서 알 수 있다. www-data가 아니라 자기 자신의 계정을 사용해도 된다.
실행한 결과 필자와 같이 출력된다면 이제 컴파일 할 준비가 끝난 것이다. 아래의 정보가 설치된 모듈들과 각종 패스들이다. 참고하자.
make
컴파일을 해보자. 오랜시간이 걸릴 수 있다.
1 | sudo make; |
만약 make 명령을 찾지 못한다면 apt-get install make와 같은 명령을 이용해서 설치하자.
아래와 비슷한 화면이 출력된다면 컴파일에 성공한 것이다.
make install
이제 설치를 해보자.
1 | sudo make install; |
아래와 같은 화면이 출력되면 설치에 성공한 것이다.
설치확인
NGINX가 설치된 디렉토리로 이동해보자. 필자는 configure에서 /usr/loca/nginx를 사용했기 때문이 이 디렉토리에 NGINX의 파일들이 모두 모여있다.
각 디렉토리의 용도는 아래와 같다.
- conf : 설정파일
- html : 기본 document_root
- logs : 로그 파일
- sbin : nginx 실행파일
NGINX 구동
NGINX를 실행보자. 성공했다면 아무런 메시지도 출력되지 않을 것이다.
1 | sudo /usr/local/nginx/sbin/nginx; |
NGINX가 설치된 머신의 호스트(IP)로 접근해보자. 아래와 같은 메시지가 출력된다면 성공적으로 NGINX를 설치하고 구동한 것이다.
init
NGINX와 같은 소프트웨어들을 서비스 혹은 백그라운드 에플리케이션이라고 부른다. 이러한 부류의 프로그램들은 표준화된 인터페이스를 가지고 있는데 아래와 같다.
- service nginx start : 시작
- service nginx stop : 정지
- service nginx restart : 재시작
- service nginx reload : 설정파일을 재로드
- service nginx status : 현재 상태
NGINX를 실행하고, 또 부팅시에 자동으로 동작하도록 하려면 /etc/init.d 에 init 스크립트를 위치시켜야 하는데 이 스크립트는 nginx의 소스에 포함되어 있지 않다. 운영체제별로 이 스크립트를 구해서 /etc/init.d에 설치하는 방법을 알아본다.
Ubuntu
ubuntu의 init 스크립트는 다음 URL을 통해서 구할 수 있다.
https://github.com/JasonGiedymin/nginx-init-ubuntu
아래와 같은 명령으로 최신버전의 init 스크립트를 /etc/init.d 디렉토리로 가져오고 실행하능하게 권한을 조정 할 수 있다.
1 2 | sudo wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx; sudo chmod +x /etc/init.d/nginx; |
NGINX를 자동으로 실행되게 하려면 아래와 같은 명령을 입력한다.
1 | sudo update-rc.d -f nginx defaults |
위의 방법을 통해서 설치한 스크립트를 실행하기 위해서는 아래와 같은 명령을 실행하면 된다.
1 2 3 | service nginx status # 현재 실행중인 NGXIN의 상태를 체크 service nginx stop # 서버 정지 service nginx start # 서버 시작 |
운영체제별 init 스크립트는 아래의 주소를 통해서 구할 수 있다.
http://wiki.nginx.org/InitScripts
'리눅스' 카테고리의 다른 글
crontab (0) | 2015.04.07 |
---|---|
etc/host.conf (0) | 2015.04.07 |
host 접속 제한 (0) | 2015.04.02 |
ftp root 접근 제한 (0) | 2015.04.02 |
ssh root 접속 설정 (0) | 2015.04.01 |