diff options
Diffstat (limited to 'source/n/httpd')
-rw-r--r-- | source/n/httpd/README | 34 | ||||
-rw-r--r-- | source/n/httpd/config.layout.diff | 30 | ||||
-rw-r--r-- | source/n/httpd/doinst.sh | 53 | ||||
-rwxr-xr-x | source/n/httpd/httpd.SlackBuild | 54 | ||||
-rw-r--r-- | source/n/httpd/httpd.brigade_move.__noinline__.gcc451.diff | 10 | ||||
-rw-r--r-- | source/n/httpd/httpd.nossldefault.diff | 11 | ||||
-rw-r--r-- | source/n/httpd/httpd.url | 4 | ||||
-rw-r--r-- | source/n/httpd/rc.httpd | 11 |
8 files changed, 85 insertions, 122 deletions
diff --git a/source/n/httpd/README b/source/n/httpd/README deleted file mode 100644 index 796bb29a9..000000000 --- a/source/n/httpd/README +++ /dev/null @@ -1,34 +0,0 @@ -WARNING - -This script builds a package that conflicts with apache1. Before -attempting to install this package, you should uninstall any of -these packages that you find on your system: - -apache -mod_ssl -php - -Really though, the only points of overlap are in /usr/sbin, so if you -leave your old packages in place apache2 will still work, but the -apache1 httpd will have been overwritten (along with other files) - -Apache is the most popular web server in the known universe; over half -the servers on the Internet are running Apache or one of its variants. - -By default, we build apache2 with the traditional "apache prefork" multi -processing module (MPM). This is somewhat safer for the use of mod_php, -but can still carry some security risks (all your php scripts run as the -user configured to run apache2). - -For enhanced multi-threaded performance, use "apache worker", but using -mod_php with "worker" is considered dangerous. PHP Core is multi-thread -safe, but many PHP extensions are *NOT*. To build apache2 with the -worker MPM, change the option to: --with-mpm=worker - -Please note that this script does not build apache2 with SuEXEC support. -The Apache group feels SuEXEC should not be part of a default install. -If you need this functionality, please read the following documentation -and make the necessary changes to the ./configure options in the script. - - http://httpd.apache.org/docs/2.0/suexec.html - diff --git a/source/n/httpd/config.layout.diff b/source/n/httpd/config.layout.diff deleted file mode 100644 index c302515fe..000000000 --- a/source/n/httpd/config.layout.diff +++ /dev/null @@ -1,30 +0,0 @@ ---- ./config.layout.orig 2004-11-21 12:50:36.000000000 -0600 -+++ ./config.layout 2007-05-23 13:35:20.000000000 -0500 -@@ -322,3 +322,27 @@ - installbuilddir: ${prefix}/etc/apache2/build - errordir: ${datadir}/error - </Layout> -+ -+# FHS layout -+<Layout Slackware-FHS> -+ prefix: /usr -+ exec_prefix: ${prefix} -+ bindir: ${prefix}/bin -+ sbindir: ${prefix}/sbin -+ libdir: ${prefix}/lib/httpd -+ libexecdir: ${prefix}/lib/httpd/modules -+ installbuilddir: ${prefix}/lib/httpd/build -+ mandir: ${prefix}/man -+ sysconfdir: /etc/httpd -+ datadir: /srv/httpd -+ iconsdir: ${datadir}/icons -+ htdocsdir: ${datadir}/htdocs -+ manualdir: ${htdocsdir}/manual -+ cgidir: ${datadir}/cgi-bin -+ errordir: ${datadir}/error -+ includedir: ${prefix}/include/httpd -+ localstatedir: /var -+ runtimedir: ${localstatedir}/run/httpd -+ logfiledir: ${localstatedir}/log/httpd -+ proxycachedir: ${localstatedir}/cache/httpd -+</Layout> diff --git a/source/n/httpd/doinst.sh b/source/n/httpd/doinst.sh index 49e5400d8..da256515c 100644 --- a/source/n/httpd/doinst.sh +++ b/source/n/httpd/doinst.sh @@ -1,4 +1,29 @@ #!/bin/sh + +config() { + NEW="$1" + OLD="`dirname $NEW`/`basename $NEW .new`" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} + +preserve_perms() { + NEW="$1" + OLD="$(dirname ${NEW})/$(basename ${NEW} .new)" + if [ -e ${OLD} ]; then + cp -a ${OLD} ${NEW}.incoming + cat ${NEW} > ${NEW}.incoming + mv ${NEW}.incoming ${NEW} + fi + # Don't use config() -- we always want to install this, changed or unchanged. + #config ${NEW} +} + if [ ! -e var/log/httpd ]; then mkdir -p var/log/httpd chmod 755 var/log/httpd @@ -26,27 +51,19 @@ if [ -r var/www/htdocs/index.html ]; then fi fi -config() { - NEW="$1" - OLD="`dirname $NEW`/`basename $NEW .new`" - # If there's no config file by that name, mv it over: - if [ ! -r $OLD ]; then - mv $NEW $OLD - elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy - rm $NEW - fi - # Otherwise, we leave the .new copy for the admin to consider... -} -# Keep same perms on rc.httpd.new: -if [ -e etc/rc.d/rc.httpd ]; then - cp -a etc/rc.d/rc.httpd etc/rc.d/rc.httpd.new.incoming - cat etc/rc.d/rc.httpd.new > etc/rc.d/rc.httpd.new.incoming - mv etc/rc.d/rc.httpd.new.incoming etc/rc.d/rc.httpd.new -fi -config etc/rc.d/rc.httpd.new +# Keep same perms when installing rc.httpd.new: +preserve_perms etc/rc.d/rc.httpd.new +# Always install the new rc.httpd: +mv etc/rc.d/rc.httpd.new etc/rc.d/rc.httpd + +# Handle config files. Unless this is a fresh installation, the +# admin will have to move the .new files into place to complete +# the package installation, as we don't want to clobber files that +# may contain local customizations. config etc/httpd/httpd.conf.new config etc/logrotate.d/httpd.new for conf_file in etc/httpd/extra/*.new; do config $conf_file done config var/www/htdocs/index.html.new + diff --git a/source/n/httpd/httpd.SlackBuild b/source/n/httpd/httpd.SlackBuild index a97ccf362..1d043f743 100755 --- a/source/n/httpd/httpd.SlackBuild +++ b/source/n/httpd/httpd.SlackBuild @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright 2006, 2007, 2008, 2009, 2010, 2011 Patrick J. Volkerding, Sebeka, MN, USA +# Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -26,7 +26,7 @@ PKGNAM=httpd VERSION=${VERSION:-$(echo $PKGNAM-*.tar.bz2 | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-3} +BUILD=${BUILD:-1} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then @@ -73,29 +73,49 @@ find . \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \; -# "prefork" is the default, safe, mpm type. If you *are not* using PHP, and you -# like to live on the bleeding edge, you may wish to change the --with-mpm option -# to "worker", which is the new way of doing things, but is multithreaded and -# many scripts (especially PHP ones) are not multithread safe. +# A brief note about mpms: # -# I'd leave this option the way is it on any production box that's keeping up -# with HTTP requests. No reason to chance it, IMHO. +# "prefork" is the legacy forked mpm, used with mod_php. Starting with httpd +# 2.4.0, new threaded mpms are available, and previously experimental mpms are +# now stable +# +# Non-threaded mpms are no longer required, since php applications can now be +# deployed with the help of mod_fcgid, essentially a set of fixed dedicated cgi +# processes spawned for the whole purpose of executing dynamic applications +# +# Threaded mpms, by their very nature, are far more scalable than the +# traditional preforking solution. They consume less memory for the same +# workload, when serving the same amount of clients. httpd 2.4 ships with two +# options, "event" and "worker", where the former is the default mpm used if +# none is specified at the ./configure line +# +# Lastly, the "prefork" mpm can be used with mod_php as of version 5.4.0, +# which yields a much improved stability, even with most mod_php extensions +# loaded. +# +# The running mpm can be changed by simply loading the module. Here is a sample: +# LoadModule mpm_event_module lib(64)/httpd/modules/mod_mpm_event.so +# +# When upgrading from 2.2, please make sure to stop the deamon first, or your +# new instance may segfault. -zcat $CWD/config.layout.diff.gz | sed -e "s#lib/httpd#lib${LIBDIRSUFFIX}/httpd#" | patch --verbose -p1 || exit 1 +# Fix config.layout to use lib${LIBDIRSUFFIX}: +sed -i -e "s#lib/httpd#lib${LIBDIRSUFFIX}/httpd#" config.layout -# Patch to fix aliasing issue exposed by gcc-4.5.1: -zcat $CWD/httpd.brigade_move.__noinline__.gcc451.diff.gz | patch --verbose -p1 || exit 1 +# If /var/run becomes a tmpfs or a link to /run, subdirectories could be a problem. +# Just use /var/run rather than /var/run/httpd. +sed -i -e "s#/run/httpd#/run#" config.layout # Configure: CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ ./configure \ --enable-layout=Slackware-FHS \ - --with-mpm=prefork \ --with-apr=/usr \ --with-apr-util=/usr \ --enable-mods-shared=all \ --enable-so \ + --enable-mpms-shared=all \ --enable-pie \ --enable-cgi \ --with-pcre \ @@ -105,12 +125,10 @@ CXXFLAGS="$SLKCFLAGS" \ --enable-proxy \ --enable-proxy-http \ --enable-proxy-ftp \ - --enable-proxy-balancer \ --enable-cache \ --enable-mem-cache \ --enable-file-cache \ --enable-disk-cache \ - --disable-speling \ --enable-dav \ --enable-ldap \ --enable-authnz-ldap \ @@ -126,8 +144,12 @@ rmdir $PKG/usr/bin # Tweak default apache configuration ( cd $PKG - zcat $CWD/httpd.nossldefault.diff.gz | sed -e "s#lib/httpd#lib${LIBDIRSUFFIX}/httpd#" | patch -p1 --verbose || exit 1 zcat $CWD/httpd.runasapache.diff.gz | patch -p1 --verbose || exit 1 + # mod_proxy_balancer should be commented out, as otherwise httpd + # will not start without additional configuration: + sed -i "s/^LoadModule proxy_balancer_module/#LoadModule proxy_balancer_module/g" $PKG/etc/httpd/httpd.conf + # This module issues a warning unless some non-default modules are loaded: + sed -i "s/^LoadModule lbmethod_heartbeat_module/#LoadModule lbmethod_heartbeat_module/g" $PKG/etc/httpd/httpd.conf rm -f $PKG/etc/httpd/httpd.conf~ $PKG/etc/httpd/httpd.conf.orig ) || exit 1 # Change config files to .new: @@ -144,7 +166,7 @@ cat << EOF >> $PKG/etc/httpd/httpd.conf.new # #Include /etc/httpd/mod_php.conf -# Uncomment the following lines to enable svn support: +# Uncomment the following lines (and mod_dav above) to enable svn support: # #LoadModule dav_svn_module lib${LIBDIRSUFFIX}/httpd/modules/mod_dav_svn.so #LoadModule authz_svn_module lib${LIBDIRSUFFIX}/httpd/modules/mod_authz_svn.so diff --git a/source/n/httpd/httpd.brigade_move.__noinline__.gcc451.diff b/source/n/httpd/httpd.brigade_move.__noinline__.gcc451.diff deleted file mode 100644 index e8915ae43..000000000 --- a/source/n/httpd/httpd.brigade_move.__noinline__.gcc451.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- ./server/core_filters.c.orig 2010-02-26 03:32:15.000000000 -0600 -+++ ./server/core_filters.c 2011-02-12 13:23:22.000000000 -0600 -@@ -83,6 +83,7 @@ - * - * XXXX: Should this function be added to APR-Util? - */ -+__attribute__((__noinline__)) - static void brigade_move(apr_bucket_brigade *b, apr_bucket_brigade *a, - apr_bucket *e) - { diff --git a/source/n/httpd/httpd.nossldefault.diff b/source/n/httpd/httpd.nossldefault.diff deleted file mode 100644 index bcf891f85..000000000 --- a/source/n/httpd/httpd.nossldefault.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- ./etc/httpd/httpd.conf.orig 2007-05-17 23:40:15.000000000 -0500 -+++ ./etc/httpd/httpd.conf 2007-05-18 15:55:38.000000000 -0500 -@@ -88,7 +88,7 @@ - LoadModule proxy_http_module lib/httpd/modules/mod_proxy_http.so - LoadModule proxy_ajp_module lib/httpd/modules/mod_proxy_ajp.so - LoadModule proxy_balancer_module lib/httpd/modules/mod_proxy_balancer.so --LoadModule ssl_module lib/httpd/modules/mod_ssl.so -+#LoadModule ssl_module lib/httpd/modules/mod_ssl.so - LoadModule mime_module lib/httpd/modules/mod_mime.so - LoadModule dav_module lib/httpd/modules/mod_dav.so - LoadModule status_module lib/httpd/modules/mod_status.so diff --git a/source/n/httpd/httpd.url b/source/n/httpd/httpd.url index 8b8a17686..3fabb916f 100644 --- a/source/n/httpd/httpd.url +++ b/source/n/httpd/httpd.url @@ -1,2 +1,2 @@ -http://www.apache.org/dist/httpd/httpd-2.2.17.tar.bz2 -http://www.apache.org/dist/httpd/httpd-2.2.17.tar.bz2.asc +http://www.apache.org/dist/httpd/httpd-2.4.3.tar.bz2 +http://www.apache.org/dist/httpd/httpd-2.4.3.tar.bz2.asc diff --git a/source/n/httpd/rc.httpd b/source/n/httpd/rc.httpd index 064f6ea44..81189098f 100644 --- a/source/n/httpd/rc.httpd +++ b/source/n/httpd/rc.httpd @@ -17,7 +17,16 @@ case "$1" in 'stop') /usr/sbin/apachectl -k stop killall httpd - rm -f /var/run/httpd/*.pid + # Remove both old and new .pid locations: + rm -f /var/run/httpd.pid /var/run/httpd/httpd.pid + ;; + 'force-restart') + # Because sometimes restarting through apachectl just doesn't do the trick... + /usr/sbin/apachectl -k stop + killall httpd + # Remove both old and new .pid locations: + rm -f /var/run/httpd.pid /var/run/httpd/httpd.pid + /usr/sbin/apachectl -k start ;; 'restart') /usr/sbin/apachectl -k restart |