원본 코드 컴 파일 설치 http 2.4

14606 단어 프로그램 설치
0 디렉토리
  • 목록
  • 환경
  • 컴 파일 설치 절차
  • 1 aprapr-util
  • 2 설치 httpd 24
  • 21 configure 상용 옵션
  • 22 흔 한 오류

  • 목록 별 내용
  • 서비스 스 크 립 트 수정
  • httpd 22 부분 특성 대비
  • 환경
    이 편 은 CentOS 6.8 컴 파일 에 httpd 2.4 를 설치 합 니 다.... 때문에http://blog.csdn.net/wangzhenyu177/article/details/69808141 에서 이미 컴 파일 설치 절 차 를 설 명 했 기 때문에 본 고 는 더 이상 군말 하지 않 는 다.주로 httpd 2.4 를 컴 파일 하 는 과정 에서 주의해 야 할 것 입 니 다.
    2 컴 파일 설치 절차
    컴 파일 설 치 는 개발 패키지 'Development tools' 와' Server Platform '과 gcc 를 먼저 설치 해 야 합 니 다.원본 코드http://httpd.apache.org 다운로드
    2.1 apr、apr-util
    httpd 는 windows, Liux, 유 닉 스 등 다양한 플랫폼 에 배치 할 수 있 으 며, 모든 플랫폼 에 서로 다른 코드 를 작성 할 필요 가 없습니다.apr, apr - util 이 있 기 때 문 입 니 다.
    apr: apache portable runtime 은 가상 컴퓨터 와 유사 하여 apache 에 운영 환경 을 제공 합 니 다.서로 다른 플랫폼 에 대해 서로 다른 apr 가 있 습 니 다.httpd 는 서로 다른 apr 를 통 해 서로 다른 플랫폼 에서 실 행 될 수 있 습 니 다.
    CentOS 6 에 설 치 된 apr 와 apr - util 버 전 은 1.4 이전 입 니 다.
    [root@node1 ~]% rpm -q apr
    apr-1.3.9-5.el6_2.x86_64
    
    [root@node1 ~]% rpm -q apr-util
    apr-util-1.3.9-3.el6_0.1.x86_64

    한편, httpd 2.4 는 apr, apr - util 이 1.4 이상 버 전 (apr 와 apr - util 버 전 번호 가 일치 하지 않 음) 이 필요 하기 때문에 이 두 도 구 를 먼저 컴 파일 하여 설치 해 야 합 니 다.있다http://apr.apache.org 다운로드
    apr - util 은 apr 에 의존 하기 때문에 apr 를 먼저 컴 파일 하여 설치 하고 압축 을 푼 apr 디 렉 터 리 에서 실행 합 니 다.
    [root@node1 apr-1.6.3]% ./configure --prefix=/usr/local/apr
    
    ……
    
    [root@node1 apr-1.6.3]% make && make install
    
    ……

    지정 한 디 렉 터 리 에 내용 이 있 는 지 확인 하면 보통 정상 입 니 다.
    [root@node1 apr-1.6.3]% ls /usr/local/apr/
    bin  build-1  include  lib

    apr - util 과 유사 하지만 의존 하 는 apr 의 위 치 를 지정 해 야 합 니 다:
    [root@node1 apr-util-1.6.1]% ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

    그 다음 에 도 make, make install.make 타 임 스 가 잘 못 했 습 니 다.
    error: expat.h: No such file or directory

    expat. h 헤더 파일 을 찾 을 수 없습니다.이 파일 은 expat - devel 패키지 에 있 습 니 다. 기본적으로 설치 되 지 않 았 습 니 다. 설치 하면 ok 입 니 다.
    [root@node1 apr-util-1.6.1]% rpm -ql expat-devel
    /usr/include/expat.h
    
    ……
    [root@node1 apr-util-1.6.1]% ls /usr/local/apr-util/
    bin  include  lib

    2.2 설치 httpd 2.4
    2.2.1 configure 상용 옵션
    httpd 의... / configure 의 일반적인 옵션:
    옵션
    의의
    –enable-so
    동적 로드 모듈 기능 사용
    –enable-ssl
    ssl 기능 사용.먼저 설치 해 야 합 니 다.
    –enable-cgi
    cgi 기능 사용 하기
    –enable-rewrite
    URL 리 셋 기능 사용
    –enable-modules=[all | most | ……]
    어떤 모듈 을 사용 할 지 지정 합 니 다.구체 적 인 모듈 이름 을 지정 할 수도 있 고 all 을 사용 하여 모든 모듈 을 사용 할 수도 있 습 니 다. most 는 대부분의 상용 모듈 을 사용 하 는 것 을 표시 합 니 다.보통 모스 트 를 사용 하면 됩 니 다.
    –enable-mpms-shared=[prefork | worker | event | all]
    어떤 MPM 모듈 1 을 컴 파일 할 지 지정 합 니 다.all 을 사용 하여 전체 컴 파일 을 표시 할 수 있 습 니 다.
    –with-mpm=[prefork | worker | event]
    만약 3 가지 MPM 모듈 이 모두 컴 파일 되 었 다 면, 이 항목 을 통 해 기본 값 으로 어떤 것 을 사용 할 지 지정 합 니 다.
    –with-zlib
    페이지 압축 에 zlib 라 이브 러 리 의존
    –with-pcre
    pcre 라 이브 러 리 에 의존 하여 정규 표현 식 문 제 를 해결 합 니 다.
    –with-apr=PATH
    의존 하 는 apr 경 로 를 지정 합 니 다.경 로 를 알려 야 합 니 다. 그렇지 않 으 면 컴 파일 할 때 자동 으로 / usr 아래 apr 를 찾 습 니 다. 컴 파일 된 높 은 버 전 apr 가 아 닙 니 다. 아래 는 같 습 니 다.
    –with-apr-util=PATH
    의존 하 는 apr - util 경 로 를 지정 합 니 다.
    –sysconfdir=PATH
    설정 파일 이 어느 경로 에 설치 되 어 있 는 지 지정 합 니 다.지정 하지 않 으 면 설정 파일 은 프로그램 에 설 치 된 디 렉 터 리 에 있 습 니 다.지정 한 / etc 디 렉 터 리 의 경우, httpd 2.2 의 이름 을 덮어 쓰 지 않도록 주의 하 십시오.
    enable 류 는 일반적으로 어떤 기능 을 사용 하 는 지 지정 하 는 데 사용 되 며, with 류 는 일반적으로 어떤 2 에 의존 하 는 지 볼 수 있 습 니 다.
    2.2.2 자주 발생 하 는 오류
    기본적으로 pcre - devel 패키지 가 설치 되 어 있 지 않 습 니 다.... / configure 타 임 스 는 다음 과 같은 오류 입 니 다.
    configure: error: pcre-config for libpcre not found

    기본적으로 openssl - devel 패키지 가 설치 되 어 있 지 않 습 니 다.... / configure 타 임 스 는 다음 과 같은 오류 입 니 다.
    configure: error: mod_ssl has been requested but can not be built due to prerequisite failures

    필자 가 처음에 사용 한 apr - util 은 1.6 이상 이 고 make 타 임 스 는 다음 과 같은 오류 입 니 다.
    /usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_ParserCreate'
    /usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_GetErrorCode'
    /usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetUserData'
    /usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_ErrorString'
    /usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetEntityDeclHandler'
    /usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_ParserFree'
    /usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetElementHandler'
    /usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_StopParser'
    /usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_Parse'
    /usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetCharacterDataHandler'

    apr - util 은 1.6 버 전보 다 낮은 버 전 을 사용 하여 정상 으로 회복 합 니 다.CentOS 7 에 apr - utl 1.6 이상 을 사용 하 는 것 은 문제 가 없다 고 합 니 다.보아하니 CentOS 6 에 컴 파일 하여 설치 한 것 같다. apr - util 의 버 전 은 1.4 보다 낮 을 수도 없고 1.6 보다 높 을 수도 없다.
    상기 오 류 를 일일이 수정 한 후 컴 파일 설치 가 완료 되 었 습 니 다.이 호스트 IP 는 192.168.0.106 입 니 다. 컴 파일 설치 이기 때문에 환영 페이지 가 없 지만 방문 할 때 시작 되 었 음 을 표시 합 니 다.
    源码编译安装http2.4_第1张图片
    3. 디 렉 터 리 별 내용
    컴 파일 완료 후 생 성 된 디 렉 터 리:
    [root@node1 httpd_24]% ls /usr/local/httpd_24/
    bin  build  cgi-bin  error  htdocs  icons  include  lib  logs  man  manual  modules

    대부분의 디 렉 터 리 는 이름 이 알려 져 있 습 니 다. 그 중:
  • build 디 렉 터 리 는 컴 파일 과정 에서 발생 한 파일 을 저장 합 니 다. 그 중에서 파일 config. nice 는 configure 에서 지정 한 옵션 을 기록 합 니 다.
    [root@node1 httpd_24]% ls build/
    config.nice  config_vars.mk  instdso.sh  library.mk  ltlib.mk  mkdir.sh  program.mk  rules.mk  special.mk
    
    [root@node1 httpd_24]% cat build/config.nice 
    
    #! /bin/sh
    
    #
    
    # Created by configure
    
    
    "./configure" \
    "--prefix=/usr/local/httpd_24" \
    "--sysconfdir=/etc/httpd_24" \
    "--enable-so" \
    "--enable-ssl" \
    "--enable-cgi" \
    "--enable-rewrite" \
    "--enable-modules=most" \
    "--enable-mpms-shared=all" \
    "--with-mpm=prefork" \
    "--with-zlib" \
    "--with-pcre" \
    "--with-apr=/usr/local/apr" \
    "--with-apr-util=/usr/local/apr-util" \
    "$@"
  • error 는 각 오류 페이지 의 내용 을 기록 했다.404 등 오류 페이지 는 여기에 놓 여 있 습 니 다. 오 류 를 보고 할 때 이 페이지 의 내용 을 보 여 줍 니 다.
  • htdocs, 웹 파일 배치 위치.컴 파일 로 설치 되 어 있 기 때문에 웹 페이지 파일 은 / var 아래 3 에 두 지 않 았 습 니 다.
  • man, man 수첩
  • 설명서, 공식 문서
  • modules, 각 모듈
  • logs, 로그.httpd 의 pid 파일 도 이 디 렉 터 리 에 있 습 니 다
  • 컴 파일 할 때 – sysconfdir 옵션 을 통 해 설정 파일 경 로 를 / etc / httpd 로 지정 하 였 기 때 문 입 니 다.24, 그렇지 않 으 면 프로필 도 / usr / local / httpd 에 있 습 니 다.24:
    [root@node1 httpd_24]% ls /etc/httpd_24
    extra  httpd.conf  magic  mime.types  original

    홈 프로필 httpd. conf 를 제외 한 다른 프로필 은 모두 extra 디 렉 터 리 에 있 습 니 다.
    [root@node1 httpd_24]% ls /etc/httpd_24/extra/
    httpd-autoindex.conf  httpd-info.conf       httpd-mpm.conf                 httpd-userdir.conf
    httpd-dav.conf        httpd-languages.conf  httpd-multilang-errordoc.conf  httpd-vhosts.conf
    httpd-default.conf    httpd-manual.conf     httpd-ssl.conf                 proxy-html.conf

    CentOS 7 의 httpd 의 다른 프로필 은 / etc / conf. d / * 와 / etc / conf. modules. d / * 입 니 다.
    4 서비스 스 크 립 트 수정
    컴 파일 된 프로그램 은 일반적으로 서비스 스 크 립 트 가 없 지만 httpd 는 시작 스 크 립 트 apachectl 을 가지 고 있 습 니 다.
    [root@node1 httpd_24]% ls /usr/local/httpd_24/bin
    ab         apu-1-config  checkgid   envvars      fcgistarter   htdbm     htpasswd  httxt2dbm   rotatelogs
    apachectl  apxs          dbmmanage  envvars-std  htcacheclean  htdigest  httpd     logresolve

    명령 httpd 도 이 디 렉 터 리 에 있 습 니 다.이 경 로 를 PATH 에 추가 하면 사용 할 수 있 습 니 다. 그렇지 않 으 면 절대 경 로 를 사용 해 야 합 니 다.
    그러나 이 경 로 를 PATH 에 추가 하 더 라 도 service 로 제어 할 수 없습니다. 시스템 에 있 는 httpd 2.2 의 서비스 스 크 립 트 를 2.4 의 서비스 스 크 립 트 로 수정 할 수 있 습 니 다.
    [root@node1 init.d]% cd /etc/rc.d/init.d/
    [root@node1 init.d]% cp httpd httpd_24

    httpd 수정24 의 일부 내용:
    1. httpd 서비스 스 크 립 트 설정 파일 / etc / sysconfig / httpd 를 읽 는 문 구 를 삭제 합 니 다.httpd 2.2 의 서비스 스 크 립 트 설정 파일 이 httpd 에 영향 을 미 치지 않도록 하기 위해 서 입 니 다.24 (일반 httpd 의 서비스 스 크 립 트 설정 파일 도 주석 정보 이지 만):
    if [ -f /etc/sysconfig/httpd ]; then
            . /etc/sysconfig/httpd
    fi

    2. apachectl, httpd 의 파일 경 로 를 수정 하고 pid 파일, 잠 금 파일 을 수정 합 니 다.
    apachectl=/usr/sbin/apachectl
    httpd=${HTTPD-/usr/sbin/httpd}
    prog=httpd
    pidfile=${PIDFILE-/var/run/httpd/httpd.pid}
    lockfile=${LOCKFILE-/var/lock/subsys/httpd}

    다음으로 변경:
    apachectl=/usr/local/httpd_24/bin/apachectl
    httpd=${HTTPD-/usr/local/httpd_24/bin/httpd}
    prog=httpd
    pidfile=${PIDFILE-/usr/local/httpd_24/logs/httpd.pid}
    lockfile=${LOCKFILE-/var/lock/subsys/httpd_24}

    apachectl 과 httpd 를 httpd 2.4 에 대응 하 는 경로 로 변경 합 니 다.파일 을 잠 그 고 이름 을 바 꾸 면 됩 니 다.pid 파일 도 수정 하지 않 을 수 있 습 니 다. 수정 하지 않 으 면 httpd 2.2 와 httpd 2.4 를 동시에 시작 할 수 없습니다. pid 파일 이 같 기 때 문 입 니 다.여기 pid 파일 도 바 꿨 어 요.설 치 된 pid 파일 을 컴 파일 하 는 것 은 / usr / local / httpd 입 니 다.24/logs/httpd.pid。
    이렇게 하면 서비스 스 크 립 트 를 통 해 httpd24 제어:
    [root@node1 ~]% service httpd_24 start
    Starting httpd:                                            [  OK  ]
    [root@node1 ~]% curl 192.168.0.106
    <html><body><h1>It works!h1>body>html>

    chkconfig 에 가입 하여 chkconfig 가 켜 져 있 는 지 여 부 를 관리 합 니 다:
    [root@node1 ~]% chkconfig --add httpd_24
    
    [root@node1 ~]% chkconfig --list httpd_24
    httpd_24        0:off   1:off   2:off   3:off   4:off   5:off   6:off

    5. httpd 2.2 부분 특성 대비
    MPM 은 2.4 에서 동적 으로 불 러 오고 마 운 트 해제 할 수 있 는 모듈 입 니 다. prefork, worker, event 모드 의 전환 은 설정 파일 을 통 해 조정 할 수 있 습 니 다.한편, httpd 2.2 의 MPM 은 정적 모듈 로 같이 컴 파일 할 수 있 을 뿐 동적 으로 마 운 트 해제 할 수 없습니다.
    [root@node1 ~]% httpd -l
    Compiled in modules:
      core.c
      prefork.c
      http_core.c
      mod_so.c
    
    [root@node1 ~]% /usr/local/httpd_24/bin/httpd -l
    Compiled in modules:
      core.c
      mod_so.c
      http_core.c

    2.2 기본 값 은 prefork 4 를 사용 하고 httpd 와 함께 컴 파일 된 것 을 볼 수 있 습 니 다.httpd 2.4 의 컴 파일 된 모듈 은 prefork 가 없습니다.
    (끝)
    httpd 2.4 에서 prefork, worker, event 를 모듈 로 설정 파일 로 전환 할 수 있 습 니 다.2. 2 에 서 는 동적 모듈 로 사용 할 수 없고 httpd 와 함께 컴 파일 할 수 있 습 니 다.CentOS 6 는 기본적으로 3 자 를 모두 컴 파일 하여 서로 다른 응용 프로그램 / usr / bin / httpd, / usr / bin / httpd. worker, / usr / bin / httpd. event 에 대응 합 니 다.↩
    disable, without 를 사용 하여 어떤 기능 을 사용 하지 않 고 어떤 패키지 에 의존 하지 않 는 지 명시 적 으로 지정 할 수 있 습 니 다.↩
    httpd 를 실행 하 는 user, group 을 포함 하여 apache 가 아 닌 daemon 이 되 었 습 니 다.컴 파일 설치 설정 과 yum 설치 설정 이 많이 다 릅 니 다. 설정 파일 에서 볼 수 있 습 니 다. 여 기 는 군말 하지 않 습 니 다.↩
    그래서 CentOS 6 은 사용 자 를 위해 prefork, worker, event 세 가지 모델 을 사용 하여 세 가 지 를 각각 컴 파일 했다.기본적으로 prefork 를 사용 합 니 다. 다른 두 모드 에 대응 하 는 프로그램 은 / usr / bin / httpd. worker 와 / usr / bin / httpd. event 입 니 다.서비스 스 크 립 트 가 자동 으로 시 작 된 것 은 prefork 입 니 다. 이것 은 서비스 스 크 립 트 설정 파일 / etc / sysconfig / httpd 에서 정 의 된 것 입 니 다.↩

    좋은 웹페이지 즐겨찾기