Hi all
Need to setup a few webbased services for our intranet. Some o them are currently running on a server which is still on 13.1. The new server is a server upgraded from 13.1 to 13.2. It works flawlessly apart from apache, that is to say, as soon as I try to get some vhosts up, things start to be screwy.
Initially apache was installed still under 13.1 but never used and finally upgraded when moving to 13.2 by the “zypper dup” method well discribed here . There were no errors, so I thought it would all be fine. As the troubles started, I decided to uninstall all apache packes lists in “yast sw_single” and removed them, removed /etc/apache completely, rebooted and reinstalled them the same Yast way.
That’s installed for now
rpm -qa | grep apache
apache2-2.4.10-1.1.x86_64
apache2-prefork-2.4.10-1.1.x86_64
apache2-example-pages-2.4.10-1.1.x86_64
apache2-utils-2.4.10-1.1.x86_64
apache2-mod_php5-5.6.1-4.1.x86_64
apache2-doc-2.4.10-1.1.noarch
Then I used Yast again to set the basics, a popup appears saying
Files /etc/sysconfig/apache2, /etc/apache2/default-server.conf have been changed manually.
YaST might lose some of the changes │
[ ] Do not show this message anymore
I click in coninue, not to forget to mention, that this is a bit puzzling since at least “/etc/apache2/default-server.conf” was deleted and also I need to “rm /etc/sysconfig/apache2” if I need to reinstall apach again. One more remark here, /etc/sysconfig/apache2 is dated Nov. 19 2014 and definetely not touched by myself, so it should virgin. I click on continue and satisfy myself that there is no alien setting. I close the dialogue and get another poup saying:
Warning
When no Server name is defined, hostname will be used instead.
Clicking on “OK” and over to see, if apache actually runs:
httpd2 -S
VirtualHost configuration:
ServerRoot: "/srv/www"
Main DocumentRoot: "/srv/www/htdocs"
Main ErrorLog: "/var/log/apache2/error_log"
Mutex ssl-stapling: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/run/" mechanism=default
Mutex mpm-accept: using_defaults
PidFile: "/run/httpd.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="wwwrun" id=30
Group: name="www" id=8
systemctl start apache2
systemctl status apache2 -l
apache2.service - The Apache Webserver
Loaded: loaded (/usr/lib/systemd/system/apache2.service; disabled)
Active: active (running) since Mon 2014-12-29 13:46:02 CET; 2s ago
Main PID: 4043 (httpd2-prefork)
Status: "Processing requests..."
CGroup: /system.slice/apache2.service
├─4043 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -DSSL -D SYSTEMD -DFOREGROUND -k start
├─4060 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -DSSL -D SYSTEMD -DFOREGROUND -k start
├─4061 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -DSSL -D SYSTEMD -DFOREGROUND -k start
├─4062 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -DSSL -D SYSTEMD -DFOREGROUND -k start
├─4063 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -DSSL -D SYSTEMD -DFOREGROUND -k start
└─4064 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -DSSL -D SYSTEMD -DFOREGROUND -k start
Server brutus is up and name resolution is working:
ping -c1 brutus
PING brutus.k23.lan (192.168.23.4) 56(84) bytes of data.
64 bytes from brutus.k23.lan (192.168.23.4): icmp_seq=1 ttl=64 time=0.040 ms
--- brutus.k23.lan ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.040/0.040/0.040/0.000 ms
on a client I surf to “brutus.k23.lan” and I get the reply “It works” as defined :
/srv/www/htdocs # cat index.html
<html><body><h1>It works!</h1></body></html>
So far so well. Proof, apache works and is running, if st up as a single server. Now up and away to vhost setup:
I use Yast again and define the folloing two vhosts for now. I want to set them up namebased, so I need to setup name resolution, testing it for vhost “k23” and vhost “wiki”:
ping -c1 k23
PING k23.k23.lan (192.168.23.4) 56(84) bytes of data.
64 bytes from brutus.k23.lan (192.168.23.4): icmp_seq=1 ttl=64 time=0.031 ms
--- k23.k23.lan ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.031/0.031/0.031/0.000 ms
works, so off to “yast HTTP Server” and get the config files for those two vhosts done:
New Host Information
┌Server Identification───────────────────────────────────────────────────────────────────┐
│Server Name: │
│k23▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
│Server Contents Root: [Browse...] │
│/srv/www/intranet/k23.k23.lan▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ │
│Administrator E-Mail: │
│sc@k23.lan▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
└─────────────────────────────────────────────────────────────────────────────────┘
┌Server Resolution────────────────────────────────────────────────────────────────────┐
│VirtualHost (x) Determine Request Server by HTTP Headers │
│▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒( ) Determine Request Server by Server IP Address │
│[Change VirtualHost ID] │
└────────────────────────────────────────────────────────────────────────────────┘
I cannot leave the dialogue, if I do not click on “Change VirtualHost ID”. The pop up upening thereafter leaves no choice really, which puzzles me a bit:
┌─────────────────────┐
│(x) All addresses (*) │
│┌IP Addresses───────┐ │
││[ ] 127.0.0.1 │ │
││[ ] 192.168.1.44 │ │
││[ ] 192.168.23.4 │ │
└───────────────────┘ │
│ServerName │
│▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
│ │
│ │
│ [OK] [Cancel] │
└─────────────────────┘
There is nothing that could be changed, only options are “OK” and “Cancel”, to continue I click on “OK”. And repeat the procedure for second vhost named wiki.k23.lan. What if I do not want the pages to be served on one of the listed addresses? I dunno, but I guess that the checkboxes really should be selectable, right?
Anyway, the files are like this:
cat k23*.conf
<VirtualHost *>
DocumentRoot /srv/www/intranet/k23.k23.lan
ServerName k23
ServerAdmin ck@k23.lan
<Directory /srv/www/intranet/k23.k23.lan>
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
cat wiki*.conf
<VirtualHost *>
DocumentRoot /srv/www/intranet/wiki.k23.lan
ServerName wiki.k23.lan
ServerAdmin ck@k23.lan
<Directory /srv/www/intranet/wiki.k23.lan>
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
See if it runs:
systemctl status apache2 -l
apache2.service - The Apache Webserver
Loaded: loaded (/usr/lib/systemd/system/apache2.service; disabled)
Active: inactive (dead)
Dez 29 14:10:30 brutus start_apache2[5253]: AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/default-server.conf:100
httpd2 -S
AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/default-server.conf:100
VirtualHost configuration:
*:* is a NameVirtualHost
default server k23 (/etc/apache2/vhosts.d/k23.conf:1)
port * namevhost k23 (/etc/apache2/vhosts.d/k23.conf:1)
port * namevhost wiki.k23.lan (/etc/apache2/vhosts.d/wiki.k23.lan.conf:1)
ServerRoot: "/srv/www"
Main DocumentRoot: "/srv/www/htdocs"
Main ErrorLog: "/var/log/apache2/error_log"
Mutex ssl-stapling: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/run/" mechanism=default
Mutex mpm-accept: using_defaults
PidFile: "/run/httpd.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="wwwrun" id=30
Group: name="www" id=8
Googling for “AH00548: NameVirtualHost” gives a lot of results, many of them referring to apache 2.2, but I am running apache 2.4 (see rpm query above: apache2-2.4.10-1.1.x86_64). Errormessage lets me think, that might be a leftover from upgrading from 13.1 to 13.2. But then how come? I removed all apache files? Puzzling level several degrees up ?!?. Ok, lets outcomment those "NameVirtualHost lines then:
tail -n 5 default-server.conf
IncludeOptional /etc/apache2/conf.d/*.conf
# The manual... if it is installed ('?' means it won't complain)
IncludeOptional /etc/apache2/conf.d/apache2-manual?conf
NameVirtualHost *
brutus:/etc/apache2 # tail -n 5 default-server.conf
IncludeOptional /etc/apache2/conf.d/*.conf
# The manual... if it is installed ('?' means it won't complain)
IncludeOptional /etc/apache2/conf.d/apache2-manual?conf
# NameVirtualHost *
systemctl restart apache2
systemctl status apache2 -l
apache2.service - The Apache Webserver
Loaded: loaded (/usr/lib/systemd/system/apache2.service; disabled)
Active: active (running) since Mon 2014-12-29 14:27:03 CET; 2s ago
Main PID: 5421 (httpd2-prefork)
Status: "Processing requests..."
CGroup: /system.slice/apache2.service
├─5421 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -DSSL -D SYSTEMD -DFOREGROUND -k start
├─5438 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -DSSL -D SYSTEMD -DFOREGROUND -k start
├─5439 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -DSSL -D SYSTEMD -DFOREGROUND -k start
├─5440 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -DSSL -D SYSTEMD -DFOREGROUND -k start
├─5441 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -DSSL -D SYSTEMD -DFOREGROUND -k start
└─5442 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -DSSL -D SYSTEMD -DFOREGROUND -k start
surfing to k23.k23.lan and wiki.k23.lan now says “k23: it works” and “wiki: it works”. To sum it up for now:
[ul]
[li]the yast HTTTP Server module seems to be probably buggy in 13.2. Namely[/li][LIST=|INDENT=1]
[li]on a fresh install, it should realise that the apache related config files are untouched[/li][li]when setting up a vhost, it should be possible to select the IP that the vhost is beeing served[/li][/ul]
[li]in “default-server.conf” # NameVirtualHost * needs to be removed. Why is that not done in a fresh install of apache?[/li][/LIST]
I posted all this, as a refernce for others that may experince similar whoes with apache and hope it is of any use. Maybe ther is a bug in the yast HTTP server module. If other do get similar problems, kindly reply here. If so, I might file a bug later.
greez
chris