저번 글처럼 apache와 php를 설치한 후 phpMyAdmin을 설치했는데 아래쪽에 mysqli와 mcrypt를 찾을 수 없다는 경고가 떠서 내 신경을 긁었다. 알아보니 빌드할때 configure 에 --with-mysqli --with-mcrypt 이런 옵션을 붙인 후 빌드를 해야 하는 것이었다. 근데 이제와서 php를 다시 빌드할 수는 없잖아? 그래서 구글링을 열심해 해봤다.

우선 php소스파일이 있던 곳으로 이동해 ext/(모듈명) 디렉토리로 이동한다.
mysqli를 예로 들면
$ cd ext/mysqli

php관련 실행파일이 있는곳의 phpize라는 실행파일을 찾아 실행한다.
php빌드할때 prefix를 줬다면 그 경로의 bin에 있을 가능성이 높다. 나갔은 경우는 기본값으로 빌드했는데 /usr/local/bin에 있었다.

$ /usr/local/bin/phpize

그러면 라이브러리가 부족할경우 에러가 뜨는데 apt-get을 이용해서 가뿐히 설치해주고 해결한다. 난 autoconf가 없다고떠서 설치하니 해결되었다.

phpize가 완료돠면 이제 configure 파일이 생성되게 되는데 mysqli는 아래와 같이 옵션을 주자
$ ./configure --with-php-config=/usr/local/bin/php-config --with-mysqli=/usr/bin/mysql_config
사실 위 옵션을 몰라도 그냥 configure를 해본 후 에러메세지를 본 후 부족한 옵션을 추가하면 된다.

이제 make 까지만 실행 한다(install은 하지 않는다)
$ sudo make

이후 modules 디렉토리를 보면 mysqli.so 파일이 생성되어있을 것이다.
이것을 적당한 공간에 복사한다.
$ sudo mkdir /usr/local/lib/php/modules
$ sudo cp modules/mysqli.so /usr/local/lib/php/modules

이제 php.ini파일을 열어 수정해야한다.
$ sudo vim /usr/local/lib/php.ini

파일을 살펴보면 아래와 같이 모듈 경로 지정하는 부분이 주석처리되어있을 건데 이를 수정한다.
; extension_dir = "./"
->
extension_dir = "/usr/local/lib/php/modules "

그리고 더 내려가면 extension=모듈명 이런 구분들이 쭉 주석처리된 곳이 있는데 아래와 같이 모듈명을 추가해준다
extension=mysqli.so

이제 저장하고 apache를 재시작하면 적용이 된다!
mcrypt모듈도 같은 방법으로 하면 된다. mcryipt는 libmcryipt 를 요구하는데 sudo apt-get install libmcrypt-dev 명령으로 설치 후 그냥 configure & make 하면 된다.
 

License
달리 정하지 않는 한, 이 저작물 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
Except where otherwise noted, this content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.0 Korea License
ubuntu 10.04 기준으로 작성

apache2 소스를 받아 configure를 해보면 apr, aprutil, pcre가 각각 필요한데
apr과 aprutil을 apt-get을 이용해 설치를 하게되면 최신버전이 아니어서 그런지 configure는 성공하지만 make할때 에러가 발생하는 경우가 생긴다. (난 apr_file_link 에러가 발생했다)

수동으로 빌드하기로 마음먹었으면 라이브러리도 수동으로 설치하자.

apr & aprutil
http://apr.apache.org/download.cgi 

pcre
http://pcre.org/ 

apr은 간단함
$ ./configure --prefix=/usr/local/apr
$ make
$ sudo make install 

aprutil은 apr경로 지정해줘야함
$ ./configure --prefix=/usr/local/aprutil --with-apr=/usr/local/apr
$ make
$ sudo make install 

pcre도 간단함
$ ./configure --prefix=/usr/local/apr
$ make
$ sudo make install 


이제 아파치 소스 디렉토리로 가서 아래처럼 경로를 지정해주자
$ ./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/aprutil --with-pcre=/usr/local/pcre --enable-module=so --enable-so
$ make
$ sudo make install


빌드가 완료되었으면 테스트
$  /usr/local/apache2/bin/apachectl -k start
netstat -ntl 해봤을때 80번 포트 열리면 성공 

자동으로 시스템 부팅시 실행되도록 서비스 등록
실행 스크립트를 init.d에 복사한 뒤 update-rc.d 이용
$ sudo cp /usr/local/apache2/bin/apachectl /etc/init.d/apache
$ sudo update-rc.d  apache defaults

License
달리 정하지 않는 한, 이 저작물 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
Except where otherwise noted, this content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.0 Korea License

+ Recent posts