Nginx 소스 코드 · 자동 스 크 립 트 편 정독 (1) 설정 옵션 을 어떻게 읽 습 니까?
7915 단어 Nginx
Nginx 소스 코드 · 자동 스 크 립 트 편 정독 (1) 설정 옵션 을 어떻게 읽 습 니까?
Author: Poechant
Blog: blog.CSDN.net/Poechant
Email: zhongchao.ustc#gmail.com (#->@)
Date: March 4th, 2012
Copyright © 유 대 · Poechant 설치
Nginx
전에 (즉 실행 make
스 크 립 트 를 실행 하기 전에) 먼저 환경 검사 및 파일 생 성 을 포함 하여 설 치 된 설정 준 비 를 합 니 다.이 작업 들 은 자동 스 크 립 트 로 이 루어 졌 다.절대 다수의 소프트웨어 와 마찬가지 로 Nginx
의 자동 스 크 립 트 입 구 는 configure
라 는 파일 입 니 다.configure
을 제외 한 다른 자동 스 크 립 트 는 auto
디 렉 터 리 에 있 습 니 다.분석 configure
스 크 립 트 소스 코드 를 통 해 알 수 있 듯 이 configure
디 렉 터 리 에 있 는 몇 개의 자동 스 크 립 트 를 먼저 실 행 했 습 니 다. 다음 과 같 습 니 다.. auto/options
. auto/init
. auto/sources
이 중
auto
스 크 립 트 를 실행 하여 설정 옵션 을 설정 합 니 다.다음은 스 크 립 트 가 어떻게 작 동 하 는 지 점차적으로 분석 할 것 이다.1 읽 기
auto/options
설정 매개 변수먼저 N 다 변 수 를 설명 한 다음 에 가장 중요 한 부분 은 이 부분 부터 시작 합 니 다.
opt=
for option
do
...
done
이 부분 은 실제 실행
auto/options
을 처리 할 때 가지 고 있 는 매개 변수 옵션 입 니 다. configure
순환 할 때마다 매개 변수 옵션 option 입 니 다../configure
순환 체 위 에 전체 for
변수 가 있 음 을 주의해 야 합 니 다.이 순환 체 내의 첫 번 째 문 구 는 가장 중요 하 다. 그것 은:opt="$opt `echo $option | sed -e \"s/\(--[^=]*=\)\(.* .*\)/\1'\2'/\"`"
이 문 구 를 순환 적 으로 실행 한 후
for
의 값 은 빈 칸 으로 구 분 된 매개 변수 목록 입 니 다.그 다음 에 순환 체 에서 다음은 하나 opt
로 매개 변수 값 을 얻 을 수 있 습 니 다. 다음 과 같 습 니 다.case "$option" in
-*=*) value=`echo "$option" | sed -e 's/[-_a-zA-Z0-9]*=//'` ;;
*) value="" ;;
esac
그 의 미 는
opt
값 을 매개 변수 옵션 값 으로 하고, 옵션 값 이 case-esac
패턴 과 일치 하지 않 으 면 value
값 은 -*=*
이라는 것 이다.다음 value
문 구 는 매개 변수의 유형 과 일치 합 니 다. case "$option" in
--help) help=yes ;;
--prefix=) NGX_PREFIX="!" ;;
--prefix=*) NGX_PREFIX="$value" ;;
--sbin-path=*) NGX_SBIN_PATH="$value" ;;
--conf-path=*) NGX_CONF_PATH="$value" ;;
...
esac
각 일치 하 는 분기 문 에서 변 수 를 설정 합 니 다.이 변 수 는
""
스 크 립 트 의 시작 부분 에 기본 값 을 부여 합 니 다. 그 중에서 모듈 설정 변 수 는 case-esac
기본 값 으로 열 리 고 auto/options
기본 값 으로 닫 힙 니 다.그러나 이들 의 오픈 여 부 는 이 YES
의 NO
문구 에 의 해 결정 된다.설치 와 관련 된 옵션 변수 도 여기에 할당 되 어 있 습 니 다. 예 를 들 어:auto/options
매개 변수 값 부여 case-esac
prefix
매개 변수 값 부여 NGX_PREFIX
sbin-path
매개 변수 값 부여 NGX_SBIN_PATH
conf-path
매개 변수 값 부여 NGX_CONF_PATH
error-log-path
매개 변수 값 부여 NGX_ERROR_LOG_PATH
pid-path
매개 변수 값 부여 NGX_PID_PATH
lock-path
미리 설 정 된 이러한 일치 에 부합 되 지 않 으 면 사용자 가 NGX_LOCK_PATH
스 크 립 트 를 사용 할 때 가지 고 있 는 매개 변수 가 잘못 되면 option
이 문 구 를 일치 시 킵 니 다.*)
echo "$0: error: invalid option \"$option\""
exit 1
사용자 매개 변수 오 류 를 알려 주 고 스 크 립 트 를 실행 에서 종료 합 니 다.여러 차례 의 순환 을 거 쳐
configure
끝났다.2 설정
auto/options
변수모든
for-do-done
을 처리 한 후에 NGX_CONFIGURE
우리 가 위 에서 언급 한 바 와 같이 빈 칸 으로 분 단 된 설정 항목 값 이 되 고 option
변수 에 부 여 됩 니 다.NGX_CONFIGURE="$opt"
3 도움말 정보 표시 여부
opt
다음 문장 을 보십시오.if [ $help = yes ]; then
cat << END
…
END
exit 1
fi
기본 적 인 상황 에서
NGX_CONFIGURE
변수 값 은 초기 화 할 때 configure
입 니 다.$help
옵션 에서 no
인 자 를 지정 하면 configure
인 자 는 help
이 고 $help
명령 을 실행 하여 큰 도움말 정 보 를 표시 한 다음 종료 합 니 다.4 HTTP 기능 을 닫 을 지 여부
기본 적 인 상황 에서
yes
의 일부 기본 기능 이 열 립 니 다. 사용자 가 cat
인 자 를 지정 하면 변수 HTTP
가 --without-http
로 할당 되 고 다음 코드 HTTP
의 문 구 는 실 행 됩 니 다.if [ $HTTP = NO ]; then
HTTP_CHARSET=NO
HTTP_GZIP=NO
HTTP_SSI=NO
HTTP_USERID=NO
HTTP_ACCESS=NO
HTTP_STATUS=NO
HTTP_REWRITE=NO
HTTP_PROXY=NO
HTTP_FASTCGI=NO
fi
5 윈도 플랫폼 에서 실행 할 지 여부
만약 에 명시 적 으로
NO
매개 변 수 를 지정 하면 변수 if-fi
는 현재 --crossbuild
순환 중의 NGX_PLATFORM
값, 즉 for-do-done
의 매개 변수 값 을 부여 합 니 다. 보통 "$value"
플랫폼 에서 사용 할 때 사용 할 수 있 습 니 다. 아래 의 문 구 를 보 세 요.if [ ".$NGX_PLATFORM" = ".win32" ]; then
NGX_WINE=$WINE
fi
지정
--crossbuild
하면 Windows
값 이 부 여 됩 니 다.6 Nginx 프로필 경로
--crossbuild=win32
의 인 자 를 불 러 올 때 NGX_WINE
인자 가 지정 되 지 않 으 면 configure
변 수 는 값 이 없 으 며, 아래 의 문 구 는 --conf-path
부 여 된 $NGX_CONF_PATH
결 성 된 값 입 니 다.그러나 나 는 노모 자 Igor Sysoev 학우 들 이 NGX_CONF_PATH
시작 부분 에서 다른 매개 변수 와 마찬가지 로 먼저 conf/nginx.conf
의 기본 값 을 지정 할 수 있다 고 생각 하고 있다.NGX_CONF_PATH=${NGX_CONF_PATH:-conf/nginx.conf}
그리고 프로필 이 있 는 디 렉 터 리 를 가 져 옵 니 다:
NGX_CONF_PREFIX=`dirname $NGX_CONF_PATH`
매개 변수
auto/options
를 지정 하면 NGX_CONF_PATH
의 값 은 --conf-path=/home/michael/nginx/conf/nginx.conf
입 니 다.7 Nginx 프로 세 스 ID 파일 과 잠 금 파일 경로
다음은 같은 방식 으로 초기 화
NGX_CONF_PREFIX
와 /home/michael/nginx/conf
, 대응 NGX_PID_PATH
매개 변수 NGX_LOCK_PATH
와 configure
, 그 부족 치 는 각각 --pid-path
과 --lock-path
이다.NGX_PID_PATH=${NGX_PID_PATH:-logs/nginx.pid}
NGX_LOCK_PATH=${NGX_LOCK_PATH:-logs/nginx.lock}
8 오류 로그 파일 경로
인자
logs/nginx.pid
를 지정 하면 logs/nginx.lock
변수의 값 이 지 정 됩 니 다. 아래 문장 에 따라 --error-log-path
를 지정 하면 NGX_ERROR_LOG_PATH
오류 로그 파일 이 필요 하지 않 습 니 다.표준 출력 이 아니 고 값 이 비어 있 으 면 결 성 값 stderr
으로 설정 합 니 다.if [ ".$NGX_ERROR_LOG_PATH" = ".stderr" ]; then
NGX_ERROR_LOG_PATH=
else
NGX_ERROR_LOG_PATH=${NGX_ERROR_LOG_PATH:-logs/error.log}
fi
9 HTTP 관련 경로
NGX_HTTP_LOG_PATH=${NGX_HTTP_LOG_PATH:-logs/access.log}
NGX_HTTP_CLIENT_TEMP_PATH=${NGX_HTTP_CLIENT_TEMP_PATH:-client_body_temp}
NGX_HTTP_PROXY_TEMP_PATH=${NGX_HTTP_PROXY_TEMP_PATH:-proxy_temp}
NGX_HTTP_FASTCGI_TEMP_PATH=${NGX_HTTP_FASTCGI_TEMP_PATH:-fastcgi_temp}
NGX_HTTP_UWSGI_TEMP_PATH=${NGX_HTTP_UWSGI_TEMP_PATH:-uwsgi_temp}
NGX_HTTP_SCGI_TEMP_PATH=${NGX_HTTP_SCGI_TEMP_PATH:-scgi_temp}
10 펄 모듈
NGX_ERROR_LOG_PATH
인 자 를 지정 하면 logs/error.log
변 수 는 설 정 됩 니 다.지정 한 값 이 절대 경로 나 지정 되 지 않 은 (비어 있 음) 이면 상대 경로 로 처리 하고 --with-perl_modules_path
로 설정 합 니 다.case ".$NGX_PERL_MODULES" in
./*)
;;
.)
;;
*)
NGX_PERL_MODULES=$NGX_PREFIX/$NGX_PERL_MODULES
;;
esac
11 소결
실행
NGX_PERL_MODULES
스 크 립 트 를 통 해 모든 설정 항목 이 해당 설정 변수 에 정확하게 해석 되 고 불 러 왔 습 니 다.-
전재 "유대 의 CSDN 블 로그": blog. csdn. net / Poechant
-
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
linux2에 nginx 설치설치 가능한 nginx를 확인하고, 해당 nginx를 설치한다. localhost 혹은 해당 ip로 접속을 하면 nginx 화면을 볼 수 있다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.