소스에서 Apache를 컴파일하고 이를 정적으로 링크하고 있습니다 mod_ssl
. 시스템에 설치된 것과 다른 버전의 OpenSSL을 사용하고 싶습니다. 패키지에서 계속 사용할 설치된 다른 소프트웨어에서 사용되는 핵심 시스템의 SSL 버전을 변경하지 않기 때문에 시스템의 나머지 부분(예: CentOS)에 영향을 주지 않는 방식으로 이 작업을 수행하고 싶습니다. 관리자.
어떻게 하면 올바르게 할 수 있나요?
Apache 컴파일을 시도했는데 --with-ssl
잘 컴파일되지만 실행하려고 하면 찾을 수 없습니다.
./httpd: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
Apache를 시작할 때 설정할 수 있다고 생각했는데 LD_LIBRARY_PATH
제대로 작동했지만 그것이 적절한 접근 방식인지는 확실하지 않았습니다. 이 문제를 해결하기 위해 권장되는 방법은 무엇입니까? 대체 라이브러리 검색 경로에 디렉터리를 추가하는 더 좋은 방법이 있습니까?
답변1
먼저, 당신은필요한 버전을 받으세요OpenSSL그리고 시스템 버전을 방해하지 않는 곳에 설치하세요 /opt
. 예를 들면 다음과 같습니다.
$ ./config \
--prefix=/opt/openssl-VERSION \
--openssldir=/opt/openssl-VERSION
$ make
$ sudo make install
다음으로 최신 정보를 받으세요.아파치 2.4.x,APR 및 APR-Util도서관. 세 가지 패키지를 모두 동일한 소스 트리에 풀어야 하며, 후자의 두 패키지는 Apache가 예상하는 위치에 있어야 합니다. 예를 들어:
$ tar zxvf httpd-VERSION.tar.gz
$ cd httpd-VERSION/srclib/
$ tar zxvf ../../apr-VERSION.tar.gz
$ ln -s apr-VERSION/ apr
$ tar zxvf ../../apr-util-VERSION.tar.gz
$ ln -s apr-util-VERSION/ apr-util
그런 다음 Apache를 구성하고 설치합니다. 이 mod_ssl
모듈은 정적으로 컴파일되고 다른 모든 모듈은 다음과 같이 동적으로 컴파일됩니다.
$ ./configure \
--prefix=/opt/httpd \
--with-included-apr \
--enable-ssl \
--with-ssl=/opt/openssl-VERSION \
--enable-ssl-staticlib-deps \
--enable-mods-static=ssl
$ make
$ sudo make install
답변2
bin 디렉토리의 envvars 파일에 LD_LIBRARY_PATH를 추가하면 apachectl이 해당 파일을 사용합니다.