MAC, Apahe2, SVN, https

Snow Leopard에서 https로 svn을 접근하기 위해 셋팅 도중…

mod_authz_svn을 로딩하지 못하는 오류 메시지 발견…
httpd: Syntax error on line 155 of /private/etc/apache2/httpd.conf: Cannot load /usr/libexec/apache2/mod_authz_svn.so into server: dlopen(/usr/libexec/apache2/mod_authz_svn.so, 10): Symbol not found: _dav_svn_split_urin  Referenced from: /usr/libexec/apache2/mod_authz_svn.son  Expected in: flat namespacen in /usr/libexec/apache2/mod_authz_svn.so

이를 해결 하기 위해 svnserve를 컴파일… 하려 했으나, sqlite3가 당장 없다고 투덜 투덜…

www.sqlite.org에서 sqlite3를 다운로드…
configure하고 make한 다음, make install로 install

subversion.apache.org에서 subversion 다운로드…
./configure –with-sqlite=/usr/local로 configure, make
여기까지 하고 여기에서 나오는 mod_authz_svn등을 apache의 mod로 복사…
[subversion디렉토리에 들어가보면 mod_ 디렉토리 2개가 있는데 막상 해당 디렉토리에 so 파일들이 없는것처럼 보이는데, .libs 한단계 더 들어가보면 shared lib 빌드가 이곳에 들어 있다!!!]

————————————————————————————————-

잠시 apache 서버를 띄워서 수정..;;;
갑자기 일이 커졌다..;;;
결국 위의 모듀들 다 넣어서 구동을 시작하였으나 APR/APR-UTIL등의 버젼이 다르다는 메시지가 발생…
httpd 컴파일할때 연결된 APR/APR-UTIL의 버젼 문제로 새 모듈하고 연결이 안되는거 같아서 httpd를 다시 빌드하기로 결정…
고난의 길이 시작…

apr 옵션
./configure –enable-other-child –with-sendfile –enable-allocator-uses-mmap –enable-ipv6 –prefix=/usr/local/apr

apr-util 옵션
./configure –with-apr=/usr/local/apr –prefix=/usr/local/aprutil –with-berkeley-db=/opt/local/include/db53:/opt/local/lib/db53
./configure –with-apr=/usr/local/apr –prefix=/usr/local/aprutil –with-berkeley-db=/opt/local/include/db53:/opt/local/lib/db53 –with-sqlite3 –with-mysql –with-pgsql –with-iconv –with-expat=/opt/local
./configure –with-apr=/usr/local/apr –prefix=/usr/local/aprutil –with-berkeley-db=/opt/local/include/db53:/opt/local/lib/db53 –with-sqlite3–with-iconv –with-expat=/opt/local

apr-util에 대해서는 3가지 옵션을 테스트중인데, 모 결국 다 되는거 같은데 include/lib path yes/lib등이 들어가는 문제를 빨리 잡아야 될듯…
apr-util 빌드 후 make test를 할때 testmemcache에서 segment fault가 일어나는데, 이것은 테스트 코드의 문제라고…

failure on test : memcache
http://issues.apache.org/bugzilla/show_bug.cgi?id=52705

berkeley-db 설치… 그냥 간편하게 Mac Ports로…
macport
port install db53

httpd – apache 대망의 httpd
./configure –with-apr=/usr/local/apr/bin/apr-1-config –with-apr-util=/usr/local/aprutil/bin/apu-1-config –with-expat=/opt/local –with-pcre –enable-mods-shared=all –enable-authn-alias=shared –enable-ssl –enable-cache –enable-disk-cache –enable-file-cache –enable-mem-cache –with-mpm=prefork –prefix=/Users/belliny/Dist

prefix를 저렇게 지정은 했지만 전혀 먹히지 않는…
httpd의 디렉토리들은 상수값으로 지정이 되어 있다… 이것을 바꿀 수 있는 방법은 configure단계에서 layout을 지정하는것…
그러나, 일단 이것을 보면…

원래 Snow Leopard에 실려 있는 httpd -V

Server version: Apache/2.2.22 (Unix)
Server built: Jul 12 2012 15:09:37
Server’s Module Magic Number: 20051115:30
Server loaded: APR 1.3.8, APR-Util 1.3.9
Compiled using: APR 1.3.8, APR-Util 1.3.9
Architecture: 64-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with….
-D APACHE_MPM_DIR=”server/mpm/prefork”
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_FLOCK_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT=”/usr”
-D SUEXEC_BIN=”/usr/bin/suexec”
-D DEFAULT_PIDLOG=”/private/var/run/httpd.pid”
-D DEFAULT_SCOREBOARD=”logs/apache_runtime_status”
-D DEFAULT_LOCKFILE=”/private/var/run/accept.lock”
-D DEFAULT_ERRORLOG=”logs/error_log”
-D AP_TYPES_CONFIG_FILE=”/private/etc/apache2/mime.types”
-D SERVER_CONFIG_FILE=”/private/etc/apache2/httpd.conf”

반면 그냥 빌드한 httpd의 -V는… 이와는 꽤 다른 모습이다..
왠지 이거 맞춰줘야 될거 같은 느낌이랄까…;;;
이걸 맞추기 위해서는 코드를 직접 손 대야 되는 문제가….

grep -r “DEFAULT_PIDLOG” ./

등과 같이 해당 코드를 일일이 찾아서 수정~!

결과는..?
몇몇 definition은 버젼이 올라가면서 없어졌다고 한다…

Server version: Apache/2.4.3 (Unix)
Server built: Oct 3 2012 05:56:12
Server’s Module Magic Number: 20120211:6
Server loaded: APR 1.4.6, APR-UTIL 1.4.1
Compiled using: APR 1.4.6, APR-UTIL 1.4.1
Architecture: 64-bit
Server MPM: prefork
threaded: no
forked: yes (variable process count)
Server compiled with….
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT=”/usr”
-D SUEXEC_BIN=”/usr/bin/suexec”
-D DEFAULT_PIDLOG=”/private/var/run/httpd.pid”
-D DEFAULT_SCOREBOARD=”logs/apache_runtime_status”
-D DEFAULT_ERRORLOG=”logs/error_log”
-D AP_TYPES_CONFIG_FILE=”/private/etc/apache2/mime.types”
-D SERVER_CONFIG_FILE=”/private/etc/apache2/httpd.conf”

 

subversion
./configure –with-sqlite=/usr/local –enable-shared –with-apr=/usr/local/apr –with-apr-util=/usr/local/aprutil

————————————————————————————————-

httpd를 사용자 계정 디렉토리에 설치하여 mod_authz_svn, mod_dav_svn 로딩이 잘 되는지 테스트 중인데, 뜻하지 않은 에러가 발견되었다…
_ap_log_error symbole not found
구글링해보니… apache2에서 이 api가 변경된듯한데 mod_authz_svn과 mod_dav_svn에서는 아직 이전 api interface를 사용하면서 참조가 안되는듯…

추가가 된 파라미터는 APLOGNO(n)
매크로인데  n으로 들어가는 5자리 숫자는 원래 정해진 값을 공유해서 유니크하게 들어가야 되는거 같은데…
-_- 일단 파일별로 inc…

테스트중…
테스트를 하다가 ap_log_error의 인자값 개수 문제가 아니라는게 떠올랐다…
결국 문제는 다시 처음부터…

Leave a Reply