Nginx

OS X에서 Nginx 1.4.4 Installation (Build)

aappsroot·2014년 2월 14일·조회 10,349

 

OS X에서 NginX 1.4.4를 빌드 설치합니다. 

금일 (2월 12일) 기준으로 가장 최신 stable 버전은 1.4.5이지만 1.4.4를 선택하였습니다. 이유는 며칠 전에 받아놔서, 이고요. http://nginx.org/ 에서 설치 파일 확인이 가능합니다.

우선 빌드 옵션 없이 --prefix만 주고 configure를 하였습니다.

./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre= option.

 

PCRE가 prerequisite인 것 같습니다.

그래서 PCRE 8.34를 설치합니다. PCRE 8.34 설치는 PCRE (Perl Compatible Regular Expressions) 8.34 Installation 에서 따로 설명합니다.

/svc1/pcre/8.34에 PCRE를 빌드한 후 --with-pcre 에 해당 경로를 추가하여 다시 한번 Nginx를 빌드합니다. 그리고 configure는 잘 넘어갔는데, make에서 바로 오류가 발생합니다.

$ make
/Applications/Xcode.app/Contents/Developer/usr/bin/make -f objs/Makefile
cd /svc1/pcre/8.34 \
        && if [ -f Makefile ]; then /Applications/Xcode.app/Contents/Developer/usr/bin/make distclean; fi \
        && CC="cc" CFLAGS="" \
        ./configure --disable-shared
/bin/sh: ./configure: No such file or directory
make[1]: *** [/svc1/pcre/8.34/Makefile] Error 127
make: *** [build] Error 2

 

objs/Makefile를 확인하여 보았더니 무언가 이상한 점이 있습니다. 결론적으로, --with-pcre에 빌드한 경로를 적는 것이 아니라 그냥 소스 경로를 적어야 합니다. 그렇게 다시 NginX 빌드를 시도했고, make install까지 정상 완료되었습니다.

디렉토리 구조는 다음과 같습니다.

$ ls -l
total 0
drwxr-xr-x  17 nginx  staff  578  2 12 22:45 conf
drwxr-xr-x   4 nginx  staff  136  2 12 22:45 html
drwxr-xr-x   2 nginx  staff   68  2 12 22:45 logs
drwxr-xr-x   3 nginx  staff  102  2 12 22:45 sbin

 

그럼 굳이 이제 와서 일부 빌드 옵션을 확인해 봅니다.

  • --sbin-path=path

NginX 실행파일 이름을 지정합니다. default는  ${NGINX_HOME}/sbin/nginx 입니다.

  • --conf-path=path

설정파일 이름을 지정합니다. default는  ${NGINX_HOME}/conf/nginx.conf 입니다.

  • --pid-path=path

NginX 실행 프로세스 PID 파일 이름을 지정합니다. default는  ${NGINX_HOME}/logs/nginx.pid 입니다.

  • --error-log-path=path

error 로그 파일 이름을 지정합니다. default는  ${NGINX_HOME}/logs/error.log 입니다.

  • --http-log-path=path

access 로그 파일 이름을 지정합니다. default는  ${NGINX_HOME}/logs/access.log 입니다.

 

진짜 이렇게 되는지 아래 두 옵션을 주고 다시 한번 빌드합니다.

  • -sbin-path=${NGINX_HOME}/nginx_sbin/nginx
  • -conf-path=${NGINX_HOME}/nginx_conf/nginx.config

 

명시적으로 부여한 이름으로 생성된 디렉토리를 확인합니다.

$ ls -l
total 0
drwxr-xr-x   4 nginx  staff  136  2 13 00:02 html
drwxr-xr-x   2 nginx  staff   68  2 13 00:02 logs
drwxr-xr-x  17 nginx  staff  578  2 13 00:02 nginx_conf
drwxr-xr-x   3 nginx  staff  102  2 13 00:02 nginx_sbin

 

그리고 nginx_conf 디렉토리 안에 nginx.conf가 아닌 nginx.config 파일이 생성된 것이 맞는지 확인합니다. 

$ ls -l nginx_conf
total 120
-rw-r--r--  1 nginx  staff  1034  2 13 00:02 fastcgi.conf
-rw-r--r--  1 nginx  staff  1034  2 13 00:02 fastcgi.conf.default
-rw-r--r--  1 nginx  staff   964  2 13 00:02 fastcgi_params
-rw-r--r--  1 nginx  staff   964  2 13 00:02 fastcgi_params.default
-rw-r--r--  1 nginx  staff  2837  2 13 00:02 koi-utf
-rw-r--r--  1 nginx  staff  2223  2 13 00:02 koi-win
-rw-r--r--  1 nginx  staff  3463  2 13 00:02 mime.types
-rw-r--r--  1 nginx  staff  3463  2 13 00:02 mime.types.default
-rw-r--r--  1 nginx  staff  2685  2 13 00:02 nginx.conf.default
-rw-r--r--  1 nginx  staff  2685  2 13 00:02 nginx.config
-rw-r--r--  1 nginx  staff   596  2 13 00:02 scgi_params
-rw-r--r--  1 nginx  staff   596  2 13 00:02 scgi_params.default
-rw-r--r--  1 nginx  staff   623  2 13 00:02 uwsgi_params
-rw-r--r--  1 nginx  staff   623  2 13 00:02 uwsgi_params.default
-rw-r--r--  1 nginx  staff  3610  2 13 00:02 win-utf

 

어쨌든, 이제 빌드된 Nginx를 실행합니다.

$ ./nginx
nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)

 

root가 아닌 계정으로 실행하였기 때문에 80 포트 오류가 발생합니다. 그래서 root로 switch user 한 후 다시 실행합니다.

 

 

댓글 1

로그인 후 댓글을 남길 수 있습니다.

  • 몽상가몽상가· 2014년 2월 19일
    저는 초기 페이지 보고 울었습니다.