CONTENT
  • CHANGES
Szukaj
counter

#top Instalacja


Instalację serwera Apache/HTTPD można wykonać na różne sposoby: od kompilacji ze źdródeł poprzez instalację pojedynczych paczek rpm za pomocą polecenia rpm skończywszy na instalacja z użyciem menedżera pakietów, który zainstaluje wszystkie niezbędne paczki wraz zależnościami.
Celem niniejszego dokumentu nie jest rozważanie różnych metod instalacji tylko nieco usprawnienie użyteczności konfiguracji serwera Apache/HTTPD po zainstalowaniu oraz wprowadzenie porządku / hierarchi położenia plików z których korzysta usługa w strukturze katalogowej.
Zgodnie definicją FHS (en.wiki, pl.wiki): katalog /srv zawiera: Data for services provided by this system toteż jako katalog w którym Apache/HTTPD będzie przechowywał dane został wybrany: /srv/http i zostanie on utworzony z odpowiednimi atrybutami wraz ze stosownymi podkatalogami:
/srv/http/cgi-bin - z przeznaczeniem na lokalizację skryptów cgi (poprzednio /var/www/cgi-bin),
/srv/http/error - z przeznaczeniem na lokalizację stron kodów błędów HTTP (poprzednio /var/www/error),
/srv/http/icons - na ikony plików wyświetlanych w trybie Indexes (poprzednio /var/www/icons),
/srv/http/vhosts - z przeznaczeniem na virtualne domeny vhosts serwerwowane przez serwer (nowoutworzony).
Wszystko to zostało opisane poniżej.



#top Postinstalacyjna konfiguracja


#top Keep oryginal start script


mv /etc/init.d/httpd /etc/init.d/httpd-rpm
cp -av /etc/init.d/httpd-rpm /etc/init.d/httpd




rm -f /etc/httpd/{logs,modules,run}
mv /etc/httpd/conf/httpd.conf /etc/httpd/httpd.conf
mv /etc/httpd/conf/magic /etc/httpd/magic
rm -rf /etc/httpd/conf
mkdir -p /etc/httpd/vhosts
mkdir -p /var/run/httpd



#top Update /etc/sysconfig/httpd file


sed 's,^\(#OPTIONS.*\),\1\nOPTIONS="-f /etc/httpd/httpd.conf",g' -i /etc/sysconfig/httpd
sed 's,CONFFILE=,#CONFFILE=,g' -i /etc/init.d/httpd
sed 's,\(LSB=1 \(killproc.*\)\)$,#\1\n        \2,g' -i /etc/init.d/httpd
echo 'CONFFILE=/etc/httpd/httpd.conf' >> /etc/sysconfig/httpd
echo 'PIDFILE=/var/run/httpd/httpd.pid' >> /etc/sysconfig/httpd
echo "LOCKFILE=/var/lock/subsys/httpd" >> /etc/sysconfig/httpd



#top Correct logrotate file


sed '1s,^,# logrotate httpd\n,g' -i /etc/logrotate.d/httpd
sed 's,^\([ ]*\)\(delaycompress\)$,\1nodelaycompress\n\1#\2,g' -i /etc/logrotate.d/httpd



#top Set default setting in config file


sed 's,^ServerRoot.*$,ServerRoot "/usr/lib/httpd",g' -i /etc/httpd/httpd.conf
sed 's,^PidFile.*$,PidFile /var/run/httpd/httpd.pid,g' -i /etc/httpd/httpd.conf
sed 's,^Include.*$,Include /etc/httpd/conf.d/*.conf,g' -i /etc/httpd/httpd.conf
sed "s,^ServerAdmin.*$,ServerAdmin root@$HOSTNAME,g" -i /etc/httpd/httpd.conf
sed 's,^DocumentRoot.*$,DocumentRoot "/srv/http/vhosts",g' -i /etc/httpd/httpd.conf
sed 's,/var/www/html,/srv/http/vhosts,g' -i /etc/httpd/httpd.conf
sed 's,^.*MIMEMagicFile.*conf/magic.*$,    MIMEMagicFile /etc/httpd/magic,g' -i /etc/httpd/httpd.conf
sed 's,^ErrorLog.*$,ErrorLog /var/log/httpd/error.log,g' -i /etc/httpd/httpd.conf
sed 's,^CustomLog.*$,#CustomLog /var/log/httpd/access.log combined,g' -i /etc/httpd/httpd.conf
sed 's,^\(LogFormat.*agent\)$,\1\nLogFormat "%V %h %l %u %t \\"%r\\" %>s %b \\"%{Referer}i\\" \\"%{User-Agent}i\\"" vcombined,g' -i /etc/httpd/httpd.conf

sed 's,/var/www/icons,/srv/http/icons,g' -i /etc/httpd/httpd.conf
sed 's,/var/www/cgi-bin,/srv/http/cgi-bin,g' -i /etc/httpd/httpd.conf
sed 's,/var/www/error,/srv/http/error,g' -i /etc/httpd/httpd.conf
# switch off global cgi-bin, enable it in vhost
sed 's,^ScriptAlias,#ScriptAlias,g' -i /etc/httpd/httpd.conf



#top Create directory root structure


mkdir -p /srv/http/{icons,cgi-bin,error}
rsync -rav /var/www/icons/ /srv/http/icons/
rsync -rav /var/www/cgi-bin/ /srv/http/cgi-bin/
rsync -rav /var/www/error/ /srv/http/error/



#top Remove custom error page


comment following lines in file /etc/httpd/conf.d/welcome.conf:
#<LocationMatch "^/$>
#Options -Indexes
#ErrorDocument 403 /error/noindex.html
#</LocationMatch>

sed 's,<LocationMatch,#<LocationMatch,g' -i /etc/httpd/conf.d/welcome.conf
sed 's,Options,#Options,g' -i /etc/httpd/conf.d/welcome.conf
sed 's,ErrorDocument,#ErrorDocument,g' -i /etc/httpd/conf.d/welcome.conf
sed 's,</LocationMatch,#</LocationMatch,g' -i /etc/httpd/conf.d/welcome.conf





#top Enable virtual hosts


mkdir /etc/httpd/vhosts
sed 's,^#NameVirtualHost \*:80,NameVirtualHost *:80\nNameVirtualHost *:443,g' -i /etc/httpd/httpd.conf
echo '# Virtual hosts' >> /etc/httpd/httpd.conf
echo 'Include /etc/httpd/vhosts/*.conf' >> /etc/httpd/httpd.conf



#top Comment out vhost in /etc/httpd/conf.d/ssl.conf


sed 's,^<VirtualHost,#<VirtualHost,g' -i /etc/httpd/conf.d/ssl.conf
sed 's,^ErrorLog,#ErrorLog,g' -i /etc/httpd/conf.d/ssl.conf
sed 's,^TransferLog,#TransferLog,g' -i /etc/httpd/conf.d/ssl.conf
sed 's,^LogLevel,#LogLevel,g' -i /etc/httpd/conf.d/ssl.conf
sed 's,^SSLEngine,#SSLEngine,g' -i /etc/httpd/conf.d/ssl.conf
sed 's,^SSLProtocol,#SSLProtocol,g' -i /etc/httpd/conf.d/ssl.conf
sed 's,^SSLCipherSuite,#SSLCipherSuite,g' -i /etc/httpd/conf.d/ssl.conf
sed 's,^SSLCertificateFile,#SSLCertificateFile,g' -i /etc/httpd/conf.d/ssl.conf
sed 's,^SSLCertificateKeyFile,#SSLCertificateKeyFile,g' -i /etc/httpd/conf.d/ssl.conf
sed 's,^<Files,#<Files,g' -i /etc/httpd/conf.d/ssl.conf
sed 's,^</Files>,#</Files>,g' -i /etc/httpd/conf.d/ssl.conf
sed 's,^<Directory,#<Directory,g' -i /etc/httpd/conf.d/ssl.conf
sed 's,^</Directory>,#</Directory>,g' -i /etc/httpd/conf.d/ssl.conf
sed 's,^    SSLOptions,#    SSLOptions,g' -i /etc/httpd/conf.d/ssl.conf
sed 's,^SetEnvIf,#SetEnvIf,g' -i /etc/httpd/conf.d/ssl.conf
sed 's,^         nokeepalive,#         nokeepalive,g' -i /etc/httpd/conf.d/ssl.conf
sed 's,^         downgrade,#         downgrade,g' -i /etc/httpd/conf.d/ssl.conf
sed 's,^CustomLog,#CustomLog,g' -i /etc/httpd/conf.d/ssl.conf
sed 's,^          "%,#          "%,g' -i /etc/httpd/conf.d/ssl.conf
sed 's,^</VirtualHost,#</VirtualHost,g' -i /etc/httpd/conf.d/ssl.conf



#top Configure default virtual host


create first default virtual host:
cat >> /etc/httpd/vhosts/00-default.conf << EOF
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, in addition to the default. See also the VirtualHost command
<VirtualHost *:80>
ServerName localhost
ServerAlias 127.0.0.1
ServerAdmin admin@$HOSTNAME
ServerPath /srv/http/vhosts/default
DocumentRoot /srv/http/vhosts/default/
ErrorLog /var/log/httpd/default-error.log
CustomLog /var/log/httpd/default-access.log vcombined
</VirtualHost>
EOF

create needed DocumentRoot for default virtual host:
mkdir -p /srv/http/vhosts/default
echo "vhosts / default ($HOSTNAME)" > /srv/http/vhosts/default/index.html
echo "vhosts / default ($HOSTNAME)" > /srv/http/vhosts/default/default.html



#top Create second $HOSTNAME virtual host


cat >> /etc/httpd/vhosts/01-$HOSTNAME.conf << EOF
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, in addition to the default. See also the VirtualHost command
<VirtualHost *:80>
ServerName $HOSTNAME
ServerAlias $HOSTNAME
ServerAdmin admin@$HOSTNAME
ServerPath /srv/http/vhosts/$HOSTNAME
DocumentRoot /srv/http/vhosts/$HOSTNAME/
ErrorLog /var/log/httpd/${HOSTNAME//./_}-error.log
CustomLog /var/log/httpd/${HOSTNAME//./_}-access.log combined
</VirtualHost>
EOF

create needed DocumentRoot for $HOSTNAME virtual host

mkdir -p /srv/http/vhosts/$HOSTNAME
echo "vhosts / $HOSTNAME" > /srv/http/vhosts/$HOSTNAME/index.html
echo "vhosts / $HOSTNAME" > /srv/http/vhosts/$HOSTNAME/$HOSTNAME.html



#top Create ssl $HOSTNAME virtual host


cat >> /etc/httpd/vhosts/01-$HOSTNAMEl.conf << EOF
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, in addition to the default. See also the VirtualHost command
<VirtualHost *:443>
ServerName $HOSTNAME
ServerAlias $HOSTNAME
ServerAdmin admin@$HOSTNAME
ServerPath /srv/http/vhosts/$HOSTNAME
DocumentRoot /srv/http/vhosts/$HOSTNAME/
ErrorLog /var/log/httpd/${HOSTNAME//./_}-ssl-error.log
CustomLog /var/log/httpd/${HOSTNAME//./_}-ssl-access.log combined

SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
#Available in httpd 2.2.24 and later
#SSLCompression off
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:!RC4:RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile    /etc/pki/tls/certs/$HOSTNAME.crt
SSLCertificateKeyFile /etc/pki/tls/certs/$HOSTNAME.key
SSLCACertificateFile  /etc/pki/tls/certs/ca-bundle.crt

<Files ~ "\.(cgi|shtml|phtml|php3?)$">
    SSLOptions +StdEnvVars
</Files>
<Directory "/srv/http/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0

</VirtualHost>
EOF





#top PHP


Useful addons for works <?=$varialbe?>: /etc/php.ini
short_open_tag = On
sed 's,^short_open_tag.*$,short_open_tag = On,g' -i /etc/php.ini





#top Start httpd server


/etc/init.d/httpd start

tail -f /var/log/httpd/error.log





#top Multiple instances (prefork + worker)


(app:prefork:81 + static:worker:82 + haproxy:dynamic/static:80)



#top Multiple instances (CentOS 5.*)


mv /etc/init.d/httpd /etc/init.d/httpd-off
cp -av /etc/init.d/httpd-off /etc/init.d/httpd1
cp -av /etc/init.d/httpd-off /etc/init.d/httpd2

sed -e 's,/etc/sysconfig/httpd$,/etc/sysconfig/httpd1,g' -e 's,/etc/sysconfig/httpd ,/etc/sysconfig/httpd1 ,g' -i /etc/init.d/httpd1
sed -e 's,/etc/sysconfig/httpd$,/etc/sysconfig/httpd2,g' -e 's,/etc/sysconfig/httpd ,/etc/sysconfig/httpd2 ,g' -i /etc/init.d/httpd2

### bad, causes kill parent process without childs
###sed 's/killproc -d 10 $httpd/kill -3 `ps -Ao pid,ppid | awk '\''BEGIN{ getline < "'\'\"\$pidfile\"\''"; parentpid=$0; }{ if($1==parentpid){print($1);} if($2==parentpid){print($1);} }'\''` #killproc -d 10 $httpd/g' -i /etc/init.d/httpd1
###sed 's/killproc -d 10 $httpd/kill -3 `ps -Ao pid,ppid | awk '\''BEGIN{ getline < "'\'\"\$pidfile\"\''"; parentpid=$0; }{ if($1==parentpid){print($1);} if($2==parentpid){print($1);} }'\''` #killproc -d 10 $httpd/g' -i /etc/init.d/httpd2
sed 's/killproc -d 10 $httpd/$HTTPD $OPTIONS -k stop #killproc -d 10 $httpd/g' -i /etc/init.d/httpd1
sed 's/killproc -d 10 $httpd/$HTTPD $OPTIONS -k stop #killproc -d 10 $httpd/g' -i /etc/init.d/httpd2

sed 's/^.echo$/\t[ $RETVAL = 0 ] \&\& success; echo/g' -i /etc/init.d/httpd1
sed 's/^.echo$/\t[ $RETVAL = 0 ] \&\& success; echo/g' -i /etc/init.d/httpd2

sed 's/killproc $httpd -HUP/[ -s "$pidfile" ] \&\& kill -HUP `cat $pidfile` #killproc $httpd -HUP/g' -i /etc/init.d/httpd1
sed 's/killproc $httpd -HUP/[ -s "$pidfile" ] \&\& kill -HUP `cat $pidfile` #killproc $httpd -HUP/g' -i /etc/init.d/httpd2

sed 's/^    echo$/    [ $RETVAL = 0 ] \&\& success; echo/g' -i /etc/init.d/httpd1
sed 's/^    echo$/    [ $RETVAL = 0 ] \&\& success; echo/g' -i /etc/init.d/httpd2


/etc/init.d/httpd

stop() {
	echo -n $"Stopping $prog: "
	$HTTPD $OPTIONS -k stop #killproc -d 10 $httpd
	RETVAL=$?
	[ $RETVAL = 0 ] && success; echo
	[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}

reload() {
    echo -n $"Reloading $prog: "
    if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then
        RETVAL=$?
        echo $"not reloading due to configuration syntax error"
        failure $"not reloading $httpd due to configuration syntax error"
    else
        [ -s "$pidfile" ] && kill -HUP `cat $pidfile` #killproc $httpd -HUP
        RETVAL=$?
    fi
    [ $RETVAL = 0 ] && success; echo
}


mv /etc/sysconfig/httpd /etc/sysconfig/httpd-off
cp -av /etc/sysconfig/httpd-off /etc/sysconfig/httpd1
cp -av /etc/sysconfig/httpd-off /etc/sysconfig/httpd2

sed -e 's,/etc/httpd/httpd.conf,/etc/httpd1/httpd.conf,g' -e 's,/var/run/httpd/httpd.pid,/var/run/httpd/httpd1.pid,g' -e 's,LOCKFILE=/var/lock/subsys/httpd$,LOCKFILE=/var/lock/subsys/httpd1,g' -i /etc/sysconfig/httpd1
sed -e 's,/etc/httpd/httpd.conf,/etc/httpd2/httpd.conf,g' -e 's,/var/run/httpd/httpd.pid,/var/run/httpd/httpd2.pid,g' -e 's,LOCKFILE=/var/lock/subsys/httpd$,LOCKFILE=/var/lock/subsys/httpd2,g' -i /etc/sysconfig/httpd2

echo "HTTPD=/usr/sbin/httpd" >> /etc/sysconfig/httpd1
echo "HTTPD=/usr/sbin/httpd.worker" >> /etc/sysconfig/httpd2


version 1: twoo separate directories: /etc/httpd1 and /etc/httpd2:
#mv /etc/httpd /etc/httpd-common
#mkdir -p /etc/httpd{1,2}

#cp -av /etc/httpd-common/httpd.conf /etc/httpd1/httpd.conf
#cp -av /etc/httpd-common/httpd.conf /etc/httpd2/httpd.conf
#ln -s /etc/httpd-common/conf.d /etc/httpd1/conf.d
#ln -s /etc/httpd-common/conf.d /etc/httpd2/conf.d
#ln -s /etc/httpd-common/vhosts /etc/httpd1/vhosts
#ln -s /etc/httpd-common/vhosts /etc/httpd2/vhosts

# Starting httpd: [Fri Dec 21 11:24:56 2012] [crit] Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe.  You need to recompile PHP.
### --- rm -f /etc/httpd2/conf.d/php.conf
#sed '1s/^/<IfModule prefork.c>\n/' -i /etc/httpd-common/conf.d/php.conf
#sed '$s/$/\n<\/IfModule>/'         -i /etc/httpd-common/conf.d/php.conf

#sed 's,/var/run/httpd/httpd.pid,/var/run/httpd/httpd1.pid,g' -i /etc/httpd1/httpd.conf
#sed 's,/var/run/httpd/httpd.pid,/var/run/httpd/httpd2.pid,g' -i /etc/httpd2/httpd.conf
#sed 's,^Listen 80$,Listen 81,g' -i /etc/httpd1/httpd.conf
#sed 's,^Listen 80$,Listen 82,g' -i /etc/httpd2/httpd.conf
#sed 's,Include /etc/httpd/conf.d/.*$,Include /etc/httpd1/conf.d/*.conf,g' -i /etc/httpd1/httpd.conf
#sed 's,Include /etc/httpd/conf.d/.*$,Include /etc/httpd2/conf.d/*.conf,g' -i /etc/httpd2/httpd.conf
#sed 's,Include /etc/httpd/vhosts/.*$,Include /etc/httpd1/vhosts/*.conf,g' -i /etc/httpd1/httpd.conf
#sed 's,Include /etc/httpd/vhosts/.*$,Include /etc/httpd2/vhosts/*.conf,g' -i /etc/httpd2/httpd.conf
#sed 's,/etc/httpd/magic,/etc/httpd-common/magic,g' -i /etc/httpd1/httpd.conf
#sed 's,/etc/httpd/magic,/etc/httpd-common/magic,g' -i /etc/httpd2/httpd.conf
#sed 's,^NameVirtualHost.*$,NameVirtualHost *:81,g' -i /etc/httpd1/httpd.conf
#sed 's,^NameVirtualHost.*$,NameVirtualHost *:82,g' -i /etc/httpd2/httpd.conf

#sed 's,^<VirtualHost.*$,<VirtualHost *:81 *:82>,g' -i /etc/httpd-common/vhosts/*.conf

version 2: one directory /etc/httpd and twoo separate options with directives <IfModule prefork.c> and <IfModule worker.c>:
Use directives <IfModule prefork.c> and <IfModule worker.c> rather than split into multiple directories:

sed 's,/var/run/httpd/httpd.pid,<IfModule prefork.c>\nPidFile /var/run/httpd/httpd1.pid\n</IfModule>\n<IfModule worker.c>\nPidFile /var/run/httpd/httpd2.pid\n</IfModule>,g' -i /etc/httpd/httpd.conf
sed 's,^Listen 80$,<IfModule prefork.c>\nListen 81\n</IfModule>\n<IfModule worker.c>\nListen 82\n</IfModule>,g' -i /etc/httpd/httpd.conf
sed 's,^NameVirtualHost.*$,<IfModule prefork.c>\nNameVirtualHost *:81\n</IfModule>\n<IfModule worker.c>\nNameVirtualHost *:82\n</IfModule>,g' -i /etc/httpd/httpd.conf

After above changes config file /etc/httpd/httpd.conf will be looks like below:
#
# PidFile: The file in which the server should record its process
# identification number when it starts.  Note the PIDFILE variable in
# /etc/sysconfig/httpd must be set appropriately if this location is
# changed.
#
<IfModule prefork.c>
PidFile /var/run/httpd/httpd1.pid
</IfModule>
<IfModule worker.c>
PidFile /var/run/httpd/httpd2.pid
</IfModule>
#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, in addition to the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
#
#Listen 12.34.56.78:80
<IfModule prefork.c>
Listen 81
</IfModule>
<IfModule worker.c>
Listen 82
</IfModule>
#
# Use name-based virtual hosting.
#
<IfModule prefork.c>
NameVirtualHost *:81
</IfModule>
<IfModule worker.c>
NameVirtualHost *:82
</IfModule>

After above changes config file /etc/httpd/conf.d/ssl.conf will be looks like below:
#
# When we also provide SSL we have to listen to the
# the HTTPS port in addition.
#
<IfModule prefork.c>
Listen 441
</IfModule>
<IfModule worker.c>
Listen 442
</IfModule>


# [warn] pid file /var/run/httpd/httpd1.pid overwritten -- Unclean shutdown of previous Apache run?
# [emerg] (28)No space left on device: Couldn't create accept lock (/usr/lib/httpd/logs/accept.lock.3277) (5)
# need reboot ??? !!!

# cleaning
rm -f /var/run/httpd/httpd*.pid /var/lock/subsys/httpd*


/etc/init.d/httpd1 start
/etc/init.d/httpd2 start

/etc/init.d/httpd1 restart
/etc/init.d/httpd2 restart

#Starting httpd: [Fri Dec 21 11:03:24 2012] [warn] _default_ VirtualHost overlap on port 82, the first has precedence
#Starting httpd: [Fri Dec 21 11:03:31 2012] [warn] _default_ VirtualHost overlap on port 81, the first has precedence

but it looks like working:

default vhost:
wget --header="Host: localhost" -O - http://cen05dev.xen.wbcd.pl:81/default.html
wget --header="Host: localhost" -O - http://cen05dev.xen.wbcd.pl:82/default.html

cen05dev.xen.wbcd.pl vhost:



#top Multiple instances (CentOS 6.*)


mv /etc/init.d/httpd /etc/init.d/httpd-off
cp -av /etc/init.d/httpd-off /etc/init.d/httpd1
cp -av /etc/init.d/httpd-off /etc/init.d/httpd2

sed -e 's,/etc/sysconfig/httpd$,/etc/sysconfig/httpd1,g' -e 's,/etc/sysconfig/httpd ,/etc/sysconfig/httpd1 ,g' -i /etc/init.d/httpd1
sed -e 's,/etc/sysconfig/httpd$,/etc/sysconfig/httpd2,g' -e 's,/etc/sysconfig/httpd ,/etc/sysconfig/httpd2 ,g' -i /etc/init.d/httpd2


mv /etc/sysconfig/httpd /etc/sysconfig/httpd-off
cp -av /etc/sysconfig/httpd-off /etc/sysconfig/httpd1
cp -av /etc/sysconfig/httpd-off /etc/sysconfig/httpd2

sed -e 's,/etc/httpd/httpd.conf,/etc/httpd1/httpd.conf,g' -e 's,/var/run/httpd/httpd.pid,/var/run/httpd/httpd1.pid,g' -e 's,LOCKFILE=/var/lock/subsys/httpd$,LOCKFILE=/var/lock/subsys/httpd1,g' -i /etc/sysconfig/httpd1
sed -e 's,/etc/httpd/httpd.conf,/etc/httpd2/httpd.conf,g' -e 's,/var/run/httpd/httpd.pid,/var/run/httpd/httpd2.pid,g' -e 's,LOCKFILE=/var/lock/subsys/httpd$,LOCKFILE=/var/lock/subsys/httpd2,g' -i /etc/sysconfig/httpd2

echo "HTTPD=/usr/sbin/httpd" >> /etc/sysconfig/httpd1
echo "HTTPD=/usr/sbin/httpd.worker" >> /etc/sysconfig/httpd2


mv /etc/httpd /etc/httpd-common
mkdir -p /etc/httpd{1,2}

cp -av /etc/httpd-common/httpd.conf /etc/httpd1/httpd.conf
cp -av /etc/httpd-common/httpd.conf /etc/httpd2/httpd.conf
ln -s /etc/httpd-common/conf.d /etc/httpd1/conf.d
ln -s /etc/httpd-common/conf.d /etc/httpd2/conf.d
ln -s /etc/httpd-common/vhosts /etc/httpd1/vhosts
ln -s /etc/httpd-common/vhosts /etc/httpd2/vhosts

sed 's,/var/run/httpd/httpd.pid,/var/run/httpd/httpd1.pid,g' -i /etc/httpd1/httpd.conf
sed 's,/var/run/httpd/httpd.pid,/var/run/httpd/httpd2.pid,g' -i /etc/httpd2/httpd.conf
sed 's,^Listen 80$,Listen 81,g' -i /etc/httpd1/httpd.conf
sed 's,^Listen 80$,Listen 82,g' -i /etc/httpd2/httpd.conf
sed 's,Include /etc/httpd/conf.d/.*$,Include /etc/httpd1/conf.d/*.conf,g' -i /etc/httpd1/httpd.conf
sed 's,Include /etc/httpd/conf.d/.*$,Include /etc/httpd2/conf.d/*.conf,g' -i /etc/httpd2/httpd.conf
sed 's,Include /etc/httpd/vhosts/.*$,Include /etc/httpd1/vhosts/*.conf,g' -i /etc/httpd1/httpd.conf
sed 's,Include /etc/httpd/vhosts/.*$,Include /etc/httpd2/vhosts/*.conf,g' -i /etc/httpd2/httpd.conf
sed 's,/etc/httpd/magic,/etc/httpd-common/magic,g' -i /etc/httpd1/httpd.conf
sed 's,/etc/httpd/magic,/etc/httpd-common/magic,g' -i /etc/httpd2/httpd.conf
sed 's,^NameVirtualHost.*$,NameVirtualHost *:81,g' -i /etc/httpd1/httpd.conf
sed 's,^NameVirtualHost.*$,NameVirtualHost *:82,g' -i /etc/httpd2/httpd.conf

sed 's,^<VirtualHost.*$,<VirtualHost *:81 *:82>,g' -i /etc/httpd-common/vhosts/*.conf



#top Start httpd server (multiple instances)


/etc/init.d/httpd1 start
/etc/init.d/httpd2 start

/etc/init.d/httpd1 restart
/etc/init.d/httpd2 restart

#Starting httpd: [Fri Dec 21 14:11:24 2012] [warn] _default_ VirtualHost overlap on port 82, the first has precedence
#Starting httpd: [Fri Dec 21 14:11:49 2012] [warn] _default_ VirtualHost overlap on port 81, the first has precedence

but it looks like working:

default vhost:
wget --header="Host: localhost" -O - http://cen05dev.xen.wbcd.pl:81/default.html
wget --header="Host: localhost" -O - http://cen05dev.xen.wbcd.pl:82/default.html

cen05dev.xen.wbcd.pl vhost:


default vhost:
wget --header="Host: localhost" -O - http://cen06dev.xen.wbcd.pl:81/default.html
wget --header="Host: localhost" -O - http://cen06dev.xen.wbcd.pl:82/default.html

cen06dev.xen.wbcd.pl vhost:




Zmodyfikowany ostatnio: 2016/03/11 18:45:04 (8 lat temu), textsize: 21,6 kB, htmlsize: 44,7 kB

Zapraszam do komentowania, zgłaszania sugestii, propozycji, własnych przykładów, ...
Dodaj komentarzKomentarze użytkowników