www/mod_fastcgi port Apache 2.4 support
Tommy Scheunemann
net at arrishq.net
Fri May 3 09:04:51 UTC 2013
Hello,
thanks for mainting the mod_fastcgi port. Since I've upgraded to Apache
2.4 the fastcgi module became incompatible and the new (included) Apache
proxy module was a bit not-that-nice.
Well, with some digging I've found a patch that was attached at a Debian
port for mod_fastcgi that made the module compatible with Apache 2.4.
I've successfully compiled and used it on FreeBSD i386 and amd64 and it
runs as expected, though these 2 servers are low-traffic sites so I don't
know if this module provides the stability for production use.
Attached at this mail is a patch for the port, I've included a pkg-message
file due to the lack of real testing under Apache 2.4.x + mod_fastcgi
condititions.
Kind regards,
Tommy Scheunemann
-------------- next part --------------
diff -ruN mod_fastcgi/Makefile mod_fastcgi_new/Makefile
--- mod_fastcgi/Makefile 2013-03-28 09:10:53.000000000 +0100
+++ mod_fastcgi_new/Makefile 2013-05-03 10:48:21.000000000 +0200
@@ -14,7 +14,7 @@
MAKE_JOBS_SAFE= yes
-USE_APACHE= 22
+USE_APACHE= 22+
AP_FAST_BUILD= yes
AP_GENPLIST= yes
SRC_FILE= *.c
@@ -30,5 +30,6 @@
${INSTALL_DATA} ${WRKSRC}/docs/${f} ${DOCSDIR}
.endfor
.endif
+ ${CAT} ${PKGMESSAGE}
.include <bsd.port.mk>
diff -ruN mod_fastcgi/files/patch-apache24.c mod_fastcgi_new/files/patch-apache24.c
--- mod_fastcgi/files/patch-apache24.c 1970-01-01 01:00:00.000000000 +0100
+++ mod_fastcgi_new/files/patch-apache24.c 2013-05-03 10:42:17.000000000 +0200
@@ -0,0 +1,133 @@
+--- fcgi.h 2012-03-07 14:29:04.005720240 +0100
++++ fcgi.h 2012-03-07 14:29:07.830566657 +0100
+@@ -34,6 +34,10 @@
+ #define APACHE2
+ #endif
+
++#ifdef AP_DECLARE_MODULE
++#define APACHE24
++#endif
++
+ #ifdef APACHE2
+
+ #include <sys/stat.h>
+@@ -57,10 +61,16 @@
+ #define XtOffsetOf APR_OFFSETOF
+ #define ap_select select
+
++#ifdef APACHE24
++#define unixd_config ap_unixd_config
++#endif
++
++#ifdef APACHE2
+ #define ap_user_id unixd_config.user_id
+ #define ap_group_id unixd_config.group_id
+ #define ap_user_name unixd_config.user_name
+ #define ap_suexec_enabled unixd_config.suexec_enabled
++#endif
+
+ #ifndef S_ISDIR
+ #define S_ISDIR(m) (((m)&(S_IFMT)) == (S_IFDIR))
+@@ -365,42 +375,42 @@
+ #ifdef APACHE2
+
+ #ifdef WIN32
+-#define FCGI_LOG_EMERG __FILE__,__LINE__,APLOG_EMERG,APR_FROM_OS_ERROR(GetLastError())
+-#define FCGI_LOG_ALERT __FILE__,__LINE__,APLOG_ALERT,APR_FROM_OS_ERROR(GetLastError())
+-#define FCGI_LOG_CRIT __FILE__,__LINE__,APLOG_CRIT,APR_FROM_OS_ERROR(GetLastError())
+-#define FCGI_LOG_ERR __FILE__,__LINE__,APLOG_ERR,APR_FROM_OS_ERROR(GetLastError())
+-#define FCGI_LOG_WARN __FILE__,__LINE__,APLOG_WARNING,APR_FROM_OS_ERROR(GetLastError())
+-#define FCGI_LOG_NOTICE __FILE__,__LINE__,APLOG_NOTICE,APR_FROM_OS_ERROR(GetLastError())
+-#define FCGI_LOG_INFO __FILE__,__LINE__,APLOG_INFO,APR_FROM_OS_ERROR(GetLastError())
+-#define FCGI_LOG_DEBUG __FILE__,__LINE__,APLOG_DEBUG,APR_FROM_OS_ERROR(GetLastError())
++#define FCGI_LOG_EMERG APLOG_MARK,APLOG_EMERG,APR_FROM_OS_ERROR(GetLastError())
++#define FCGI_LOG_ALERT APLOG_MARK,APLOG_ALERT,APR_FROM_OS_ERROR(GetLastError())
++#define FCGI_LOG_CRIT APLOG_MARK,APLOG_CRIT,APR_FROM_OS_ERROR(GetLastError())
++#define FCGI_LOG_ERR APLOG_MARK,APLOG_ERR,APR_FROM_OS_ERROR(GetLastError())
++#define FCGI_LOG_WARN APLOG_MARK,APLOG_WARNING,APR_FROM_OS_ERROR(GetLastError())
++#define FCGI_LOG_NOTICE APLOG_MARK,APLOG_NOTICE,APR_FROM_OS_ERROR(GetLastError())
++#define FCGI_LOG_INFO APLOG_MARK,APLOG_INFO,APR_FROM_OS_ERROR(GetLastError())
++#define FCGI_LOG_DEBUG APLOG_MARK,APLOG_DEBUG,APR_FROM_OS_ERROR(GetLastError())
+ #else /* !WIN32 */
+-#define FCGI_LOG_EMERG __FILE__,__LINE__,APLOG_EMERG,APR_FROM_OS_ERROR(errno)
+-#define FCGI_LOG_ALERT __FILE__,__LINE__,APLOG_ALERT,APR_FROM_OS_ERROR(errno)
+-#define FCGI_LOG_CRIT __FILE__,__LINE__,APLOG_CRIT,APR_FROM_OS_ERROR(errno)
+-#define FCGI_LOG_ERR __FILE__,__LINE__,APLOG_ERR,APR_FROM_OS_ERROR(errno)
+-#define FCGI_LOG_WARN __FILE__,__LINE__,APLOG_WARNING,APR_FROM_OS_ERROR(errno)
+-#define FCGI_LOG_NOTICE __FILE__,__LINE__,APLOG_NOTICE,APR_FROM_OS_ERROR(errno)
+-#define FCGI_LOG_INFO __FILE__,__LINE__,APLOG_INFO,APR_FROM_OS_ERROR(errno)
+-#define FCGI_LOG_DEBUG __FILE__,__LINE__,APLOG_DEBUG,APR_FROM_OS_ERROR(errno)
+-#endif
+-
+-#define FCGI_LOG_EMERG_ERRNO __FILE__,__LINE__,APLOG_EMERG,APR_FROM_OS_ERROR(errno)
+-#define FCGI_LOG_ALERT_ERRNO __FILE__,__LINE__,APLOG_ALERT,APR_FROM_OS_ERROR(errno)
+-#define FCGI_LOG_CRIT_ERRNO __FILE__,__LINE__,APLOG_CRIT,APR_FROM_OS_ERROR(errno)
+-#define FCGI_LOG_ERR_ERRNO __FILE__,__LINE__,APLOG_ERR,APR_FROM_OS_ERROR(errno)
+-#define FCGI_LOG_WARN_ERRNO __FILE__,__LINE__,APLOG_WARNING,APR_FROM_OS_ERROR(errno)
+-#define FCGI_LOG_NOTICE_ERRNO __FILE__,__LINE__,APLOG_NOTICE,APR_FROM_OS_ERROR(errno)
+-#define FCGI_LOG_INFO_ERRNO __FILE__,__LINE__,APLOG_INFO,APR_FROM_OS_ERROR(errno)
+-#define FCGI_LOG_DEBUG_ERRNO __FILE__,__LINE__,APLOG_DEBUG,APR_FROM_OS_ERROR(errno)
+-
+-#define FCGI_LOG_EMERG_NOERRNO __FILE__,__LINE__,APLOG_EMERG,0
+-#define FCGI_LOG_ALERT_NOERRNO __FILE__,__LINE__,APLOG_ALERT,0
+-#define FCGI_LOG_CRIT_NOERRNO __FILE__,__LINE__,APLOG_CRIT,0
+-#define FCGI_LOG_ERR_NOERRNO __FILE__,__LINE__,APLOG_ERR,0
+-#define FCGI_LOG_WARN_NOERRNO __FILE__,__LINE__,APLOG_WARNING,0
+-#define FCGI_LOG_NOTICE_NOERRNO __FILE__,__LINE__,APLOG_NOTICE,0
+-#define FCGI_LOG_INFO_NOERRNO __FILE__,__LINE__,APLOG_INFO,0
+-#define FCGI_LOG_DEBUG_NOERRNO __FILE__,__LINE__,APLOG_DEBUG,0
++#define FCGI_LOG_EMERG APLOG_MARK,APLOG_EMERG,APR_FROM_OS_ERROR(errno)
++#define FCGI_LOG_ALERT APLOG_MARK,APLOG_ALERT,APR_FROM_OS_ERROR(errno)
++#define FCGI_LOG_CRIT APLOG_MARK,APLOG_CRIT,APR_FROM_OS_ERROR(errno)
++#define FCGI_LOG_ERR APLOG_MARK,APLOG_ERR,APR_FROM_OS_ERROR(errno)
++#define FCGI_LOG_WARN APLOG_MARK,APLOG_WARNING,APR_FROM_OS_ERROR(errno)
++#define FCGI_LOG_NOTICE APLOG_MARK,APLOG_NOTICE,APR_FROM_OS_ERROR(errno)
++#define FCGI_LOG_INFO APLOG_MARK,APLOG_INFO,APR_FROM_OS_ERROR(errno)
++#define FCGI_LOG_DEBUG APLOG_MARK,APLOG_DEBUG,APR_FROM_OS_ERROR(errno)
++#endif
++
++#define FCGI_LOG_EMERG_ERRNO APLOG_MARK,APLOG_EMERG,APR_FROM_OS_ERROR(errno)
++#define FCGI_LOG_ALERT_ERRNO APLOG_MARK,APLOG_ALERT,APR_FROM_OS_ERROR(errno)
++#define FCGI_LOG_CRIT_ERRNO APLOG_MARK,APLOG_CRIT,APR_FROM_OS_ERROR(errno)
++#define FCGI_LOG_ERR_ERRNO APLOG_MARK,APLOG_ERR,APR_FROM_OS_ERROR(errno)
++#define FCGI_LOG_WARN_ERRNO APLOG_MARK,APLOG_WARNING,APR_FROM_OS_ERROR(errno)
++#define FCGI_LOG_NOTICE_ERRNO APLOG_MARK,APLOG_NOTICE,APR_FROM_OS_ERROR(errno)
++#define FCGI_LOG_INFO_ERRNO APLOG_MARK,APLOG_INFO,APR_FROM_OS_ERROR(errno)
++#define FCGI_LOG_DEBUG_ERRNO APLOG_MARK,APLOG_DEBUG,APR_FROM_OS_ERROR(errno)
++
++#define FCGI_LOG_EMERG_NOERRNO APLOG_MARK,APLOG_EMERG,0
++#define FCGI_LOG_ALERT_NOERRNO APLOG_MARK,APLOG_ALERT,0
++#define FCGI_LOG_CRIT_NOERRNO APLOG_MARK,APLOG_CRIT,0
++#define FCGI_LOG_ERR_NOERRNO APLOG_MARK,APLOG_ERR,0
++#define FCGI_LOG_WARN_NOERRNO APLOG_MARK,APLOG_WARNING,0
++#define FCGI_LOG_NOTICE_NOERRNO APLOG_MARK,APLOG_NOTICE,0
++#define FCGI_LOG_INFO_NOERRNO APLOG_MARK,APLOG_INFO,0
++#define FCGI_LOG_DEBUG_NOERRNO APLOG_MARK,APLOG_DEBUG,0
+
+ #else /* !APACHE2 */
+
+--- mod_fastcgi.c 2012-03-07 14:29:04.017047773 +0100
++++ mod_fastcgi.c 2012-03-07 14:29:07.841272721 +0100
+@@ -97,6 +97,10 @@
+ } while (0)
+ #endif
+
++#ifdef APACHE24
++module AP_MODULE_DECLARE_DATA fastcgi_module;
++#endif
++
+ /*
+ * Global variables
+ */
+@@ -3014,7 +3018,11 @@
+ ap_hook_fixups(fixups, NULL, NULL, APR_HOOK_MIDDLE);
+ }
+
++#ifdef APACHE24
++AP_DECLARE_MODULE(fastcgi) =
++#else
+ module AP_MODULE_DECLARE_DATA fastcgi_module =
++#endif
+ {
+ STANDARD20_MODULE_STUFF,
+ fcgi_config_create_dir_config, /* per-directory config creator */
diff -ruN mod_fastcgi/pkg-message mod_fastcgi_new/pkg-message
--- mod_fastcgi/pkg-message 1970-01-01 01:00:00.000000000 +0100
+++ mod_fastcgi_new/pkg-message 2013-05-03 10:48:56.000000000 +0200
@@ -0,0 +1,6 @@
+************************************************************
+
+mod_fastcgi for Apache 2.4.x is not officially supported.
+Use in production on your own risk.
+
+************************************************************
More information about the freebsd-apache
mailing list