Configuring Apache httpd
Archive - Originally posted on "The Horse's Mouth" - 2008-07-12 08:01:52 - Graham EllisThere are two approaches to bundling software for user installation.
"The MicroSoft way" is to use an install wizard that drops each of the elements of the software into the best operational place on the user's system, and configures it there for running straight away.
"The OpenSource way" is to install software into a specific area of the disc so that it can easily be adjusted, configured and experimented with ... without effecting other software on the computer, and giving the installer an "easy out" if he / she wants to try out an alternative.
But neither approach is ideal - I have painted a positive picture above, but I could equally have been negative and pointed out that Microsoft-style software is hard to fully remove later, and that Opensource-style software needs extra work to place certain elements of the software into the best operational areas. There is no ideal.
Yesterday, I was installing Apache httpd (and PHP, and MySQL too!) as part of some LAMP deployment training, and I made a few notes of some of the "gotcha"s / changes from the default install.
1. The server was built with --enable-so as that's a necessary option for the installation of PHP, something that you only discover later on in the process if you don't read right through at the start. (The full line we used was ./configure --enable-so --enable-rewrite --enable-proxy --enable-proxy-http --enable-proxy-balancer with the extra options preinstalled for other topics also to be covered)
2. The User and Group were changed from "daemon" to "apache" which is a daemon account that already exists on Red Hat / Fedora. (This is Apache httpd 2.2.x; under 2.0.x, the defaults of nobody / -1 are much more dangerous that daemon, and the change is all the more critical!) User accounts set up to be in group apache, which is used to set the permissions that the web server has over resources placed on the web site.
3. The Web site itself was moved from the default location in /usr/local/apache2 to /home/websites/default (that latter choice because we we going on to add virtual hosting and have just a tiny default site)
4. Log files moved to /var/log/httpd, and regular timed jobs under crontab set up for log file rotation.
5. apachectl copied to /etc/init.d and symbolic links set up to that file from /etc/rc3.d and /etc/rc5.d (to make the web server start automatically on reboot)
Some other things to note ...
a) You need to install MySQL before you install PHP on your LAMP setup - so that PHP can make use of the MySQL libraries as you load it. And being an Apache module, the PHP install must be after the httpd install.
b) Make sure that you make references to executable files you have just installed with a "dot-slash" in front of their names to run them in the current directory - otherwise you can end up running a version that was provided with the Linux distribution which probably won't be configured / tuned in exactly the way you want. Here's an example showing how forgetting the ./ can lead to the wrong server starting ...
[root@easterton bin]# ./apachectl start
[root@easterton bin]# ps aux | grep httpd
root 4144 0.0 0.1 4236 1944 ? Ss 10:04 0:00 /usr/local/apache2/bin/httpd -k start
apache 4145 0.0 0.1 4236 1408 ? S 10:04 0:00 /usr/local/apache2/bin/httpd -k start
apache 4146 0.0 0.1 4236 1408 ? S 10:04 0:00 /usr/local/apache2/bin/httpd -k start
apache 4147 0.0 0.1 4236 1408 ? S 10:04 0:00 /usr/local/apache2/bin/httpd -k start
apache 4148 0.0 0.1 4236 1408 ? S 10:04 0:00 /usr/local/apache2/bin/httpd -k start
apache 4149 0.0 0.1 4236 1408 ? S 10:04 0:00 /usr/local/apache2/bin/httpd -k start
root 4151 0.0 0.0 3916 688 pts/1 S+ 10:04 0:00 grep httpd
[root@easterton bin]# ./apachectl stop
[root@easterton bin]# apachectl start
[root@easterton bin]# ps aux | grep httpd
root 4160 9.6 0.9 24588 9820 ? Ss 10:04 0:00 /usr/sbin/httpd -k start
apache 4161 0.0 0.4 24720 4716 ? S 10:04 0:00 /usr/sbin/httpd -k start
apache 4162 0.0 0.4 24720 4712 ? S 10:04 0:00 /usr/sbin/httpd -k start
apache 4163 0.0 0.4 24720 4712 ? S 10:04 0:00 /usr/sbin/httpd -k start
apache 4164 0.0 0.4 24720 4712 ? S 10:04 0:00 /usr/sbin/httpd -k start
apache 4165 0.0 0.4 24720 4712 ? S 10:04 0:00 /usr/sbin/httpd -k start
apache 4166 0.0 0.4 24720 4712 ? S 10:04 0:00 /usr/sbin/httpd -k start
apache 4167 0.0 0.4 24720 4712 ? S 10:04 0:00 /usr/sbin/httpd -k start
apache 4168 0.0 0.4 24720 4712 ? S 10:04 0:00 /usr/sbin/httpd -k start
root 4170 0.0 0.0 3920 688 pts/1 S+ 10:04 0:00 grep httpd
[root@easterton bin]# which apachectl
/usr/sbin/apachectl
aroot@easterton bin]#