I upgraded to Mavericks just yesterday, and had to reinstall mod_jk for my development environment. Compiling it from source was a bit of a pain. I found this page on a previously-asked question about mod_jk on OS X, but there were a couple extra hoops I had to jump through. For some reason, apxs thinks that gcc lives at:
/Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.9.xctoolchain/usr/bin/cc
But that exact folder doesn't exist; I had to symlink the existing XcodeDefault.xctoolchain
directory:
sudo ln -s XcodeDefault.xctoolchain/ OSX10.9.xctoolchain
Then I tried running configure:
./configure CFLAGS='-arch x86_64' APXSLDFLAGS='-arch x86_64' --with-apxs=/usr/sbin/apxs
However, configure failed because it couldn't find <stdio.h>
, so I symlinked the OS X 10.9 toolchain as so:
sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/ /usr/include
I was able to then compile and install the module by running sudo make install -f Makefile.apxs
in the apache-2.0 subdirectory. However, when I started up Apache via sudo apachectl start
, it immediately crashes with a segfault:
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x00007fff875fb866 __pthread_kill + 10
1 libsystem_pthread.dylib 0x00007fff8b8a435c pthread_kill + 92
2 libsystem_c.dylib 0x00007fff92480bba abort + 125
3 libsystem_c.dylib 0x00007fff92480d31 abort_report_np + 181
4 libsystem_c.dylib 0x00007fff924a48c5 __chk_fail + 48
5 libsystem_c.dylib 0x00007fff924a48d5 __chk_fail_overlap + 16
6 libsystem_c.dylib 0x00007fff924a4906 __chk_overlap + 49
7 libsystem_c.dylib 0x00007fff924a4ad1 __strcpy_chk + 64
8 mod_jk.so 0x0000000105a0c631 jk_map_get_int + 225
9 mod_jk.so 0x0000000105a1f7f1 jk_get_worker_maintain_time + 33
10 mod_jk.so 0x0000000105a17683 wc_open + 755
11 mod_jk.so 0x0000000105a2f13f init_jk + 1151
12 mod_jk.so 0x0000000105a28b7e jk_post_config + 1566
13 httpd 0x000000010568b7d5 ap_run_post_config + 133
14 httpd 0x00000001056947c7 main + 2567
15 libdyld.dylib 0x00007fff9176e5fd start + 1
Has anyone had success compiling/running mod_jk with Mavericks yet? Is there something I'm missing or not doing quite right?
The aforementioned bug reported against Tomcat has a proposed patch which is likely to be applied soon. Feel free to use any of the patches described in that bug -- they will all work.
Download latest Tomcat Connectors source from tomcat.apache.org/download-connectors.cgi
Per https://issues.apache.org/bugzilla/show_bug.cgi?id=55696 change the method below in ./native/common/jk_maps.c to what you see here:
int jk_map_get_int(jk_map_t *m, const char *name, int def)
{
const char *rc;
int int_res;
rc = jk_map_get_string(m, name, NULL);
if(NULL == rc) {
int_res = def;
} else {
size_t len = strlen(rc);
int multit = 1;
if (len) {
char buf[100];
char *lastchar;
strncpy(buf, rc, 100);
lastchar = buf + len - 1;
if ('m' == *lastchar || 'M' == *lastchar) {
*lastchar = '\0';
multit = 1024 * 1024;
}
else if ('k' == *lastchar || 'K' == *lastchar) {
*lastchar = '\0';
multit = 1024;
}
int_res = multit * atoi(buf);
}
else
int_res = def;
}
return int_res;
}
Install command line tools
xcode-select --install
Create missing symlink
sudo ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.9.xctoolchain
cd ./native
./configure CFLAGS='-arch x86_64' APXSLDFLAGS='-arch x86_64' --with-apxs=/usr/sbin/apxs
chmod 755 scripts/build/instdso.sh
make
sudo make install
WORKAROUND - NOT A SOLUTION
I am encountering the same thing and was unable to get mod_jk to run inside of Apache.
As an alternative to simply get it to work locally and keep moving forward, I changed a few of the apache directives around to use mod_proxy_ajp instead.
LoadModule proxy_module libexec/apache2/mod_proxy.so
LoadModule proxy_ajp_module libexec/apache2/mod_proxy_ajp.so
ProxyPassMatch ^(/.*\.(jsp|json))$ ajp://localhost:8009/$1
ProxyPass /aircharge ajp://localhost:8009/aircharge
...
Since the AJP protocol is still being used, the same connector for Tomcat can be used without modification.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.