Redhat 계열 Linux(64Bit) 설치 및 환경구성을 위한 Template 입니다
- yum install gcc gc gcc-c++ make apr-util openssl openssl-devel zlib zlib-devel unzip perl
- 엔진관리 계정(nginxadm) 생성 확인
- openssl / GCC compiler 설치여부 확인
- openssl과 openssl-devel (openssl lib로 openssl관련 헤더 파일정보가 있어 compile시 필요)
- 예제>
# rpm -qa | grep openssl openssl-0.9.8e-12.el5_4.1 openssl-devel-0.9.8e-12.el5_4.1
- GCC는 nginx 바이너리 설치파일 compile시 필수적임
- 예제>
# rpm -qa | grep gcc gcc-34-3.4.6-4 libgcc-296-2.96-138 ...등등...
- 사용 포트 및 방화벽 확인
- 이미 80포트를 어디선가 사용하고 있는가? 어떤 프로그램인가?
# netstat -an | grep :80
- 80포트가 물리 방화벽 또는 iptables를 사용한다면 열려있는가?
# service iptables status ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
-
제약: Nginx 엔진 1에 포트를 분리한 다수 인스턴스 구성 방법임.
-
로그 및 소스 경로 만들기: 서버 관리자계정(예: nginxadm) 으로 진행한다 (추후 로그 접근을 위함)
- 서버 ID = '응용 프로그램 약어'_'포트' = 예) userserv_80 - APP_LONG_NAME: = 각 응용 프로젝트 이름과 동일
mkdir -p /logs001/nginxadm/nginx/access_log/서버ID mkdir -p /logs001/nginxadm/nginx/error_log mkdir -p /srch001/nginxadm/APP_LONG_NAME/htdocs
-
설치 경로 만들기: 실제 서버 설치는 root 계정으로 진행한다
# mkdir -p /engn001/nginxadm/nginx/installer cd /engn001/nginxadm/nginx/installer
-
nginx, pcre 다운로드
## CRONOLOG cd cronolog ./configure --prefix=/usr/local/cronolog make && make install ## ZLIB wget http://zlib.net/zlib-1.2.8.tar.gz tar -zxvf zlib-1.2.8.tar.gz ## PCRE wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz tar -zxvf pcre-8.39.tar.gz ## NGINX wget http://nginx.org/download/nginx-1.10.2.tar.gz tar -zxvf nginx-1.10.2.tar.gz
-
Nginx 설치
cd nginx-1.10.2 ./configure --prefix=/engn001/nginxadm/nginx/nginx-1.10.2 --user=nginxadm --group=nginxadm --with-pcre=/engn001/nginxadm/nginx/installer/pcre-8.39 --with-zlib=/engn001/nginxadm/nginx/installer/zlib-1.2.8 make && make install
-
Link
cd /engn001/nginxadm/nginx/nginx-1.10.2 ln -s /logs001/nginxadm/nginx logs
-
환경설정 복사
mkdir -p /engn001/nginxadm/nginx/nginx-1.10.2/conf/servers
- 생성한 경로에 본 프로젝트의 'conf' 경로 복사
- nginx.conf: Nginx 메인 설정 --> /engn001/nginxadm/nginx/nginx-1.10.2/conf 에 덮어쓰기
- 서버ID.conf --> 파일명 수정 (실제 서버 ID로) --> /engn001/nginxadm/nginx/nginx-1.10.2/conf/servers 에 업로드
- start.sh, stop.sh --> /engn001/nginxadm/nginx/nginx-1.10.2 에 업로드
- 생성한 경로에 본 프로젝트의 'conf' 경로 복사
-
환경설정 수정
- nginx.conf 설정 수정: 파일 내부 주석 참조
- servers/실제서버ID.conf 설정 수정: 파일 내부 주석 참조
-
소스 배포
- Static 자원(html,css,javascript,image, ...)들을 아래 경로에 배포
- /srch001/nginxadm/APP_LONG_NAME/htdocs
- Static 자원(html,css,javascript,image, ...)들을 아래 경로에 배포
- 본 프로젝트의 아래파일을 '/engn001/nginxadm/nginx/nginx-1.10.2' 경로 복사
- start.sh : 시작
- stop.sh : 종료
Nginx를 80, 443 포트로 실행하려면 일반적으로는 root 사용자 권한이 필요하다.
그러나 가급적 권한이 적은 사용자의 권한으로 nginx를 실행해야 보안 취약점이 생길 가능성이 더 적다.
앞에서도 configure
스크립트를 실행할 때에도 nginxadm
으로 사용자를 설정하도록 권장했었다.
[Remind]
--user=nginxadm --group=nginxadm
CentOS 6이상에서는 root 권한이 없는 계정으로도 nginx를 실행하도록 setcap
명령을 활용할 수 있다.
root 또는 sudo 권한 계정으로 로그인을 해서 아래와 같은 명령을 실행한다.
sudo /usr/sbin/setcap 'cap_net_bind_service=+ep' /engn001/nginxadm/nginx/nginx-1.10.2/sbin/nginx
CentOS 5이하에서는 부득이하게 root 권한으로 실행한다.
- start.sh, stop.sh 스크립트를 아래와 같은 부분을 수정해야 한다.
#!/bin/sh
SETUSER="root"
RUNNER=`whoami`