Spring Semester 2003

Lecture Notes Two: Building the latest Apache server from scratch.

This installation should last about 40 minutes.

1. Log into your burrowww account.

2. Make sure you're in the home directory (cd).

3. Create a new, empty apache directory, and move there.

cd ~
mkdir apache
cd apache
You can, if you want, skip to step 10, now.

4. Start netscape in the background (netscape &) then connect to:

5. Click seventh link on left, "Apache Server".

6. Click first link on the column at right, "Download".

7. Click on the httpd link on the page (sixth or seventh on the page). Then click on the

file that is listed as the
Current Release 1.3.26 (version number).
8. The dialog window that will pop up should offer to save the file as
Press OK, then wait for the download to complete (may take more or less depending on the load).

9. Exit Netscape.

10. You could also start by copying this from my account:

You can copy like this:
cp /u/dgerman/public/apache_1.3.26.tar.gz /u/username/apache
Make sure you replace the lightgrey text with your actual username.

11. Uncompress the file using gunzip.

gunzip apache_1.3.26.tar.gz
12. Unpack the resulting archive using tar (with xvf as command-line switches).

tar xvf apache_1.3.26.tar
13. From here on you will need to check your quota frequently, so do it now, once.

quota -v
14. Remove the .tar file, check quota.

rm -i *.tar
15. Go into the apache_1.3.26 directory and look around.

16. Use more to look at

plus any other files that look interesting to you.

17. Run configure:

./configure --prefix=/u/username/apache/apache_1.3.26
Here's my run through it:
burrowww.cs.indiana.edu% pwd
burrowww.cs.indiana.edu% ./configure --prefix=/u/dgerman/apache/apache_1.3.26
Configuring for Apache, Version 1.3.26
 + using installation path layout: Apache (config.layout)
Creating Makefile
Creating Configuration.apaci in src
Creating Makefile in src
 + configured for Solaris 270 platform
 + setting C compiler to gcc
 + setting C pre-processor to gcc -E
 + checking for system header files
 + adding selected modules
 + checking sizeof various data types
 + doing sanity check on compiler and options
Creating Makefile in src/support
Creating Makefile in src/os/unix
Creating Makefile in src/ap
Creating Makefile in src/main
Creating Makefile in src/lib/expat-lite
Creating Makefile in src/modules/standard
18. Now run make.

Here's my run:

burrowww.cs.indiana.edu% make
===> src
make[1]: Entering directory `/nfs/paca/home/user1/dgerman/apache/apache_1.3.26'
make[2]: Entering directory `/nfs/paca/home/user1/dgerman/apache/apache_1.3.26/src'
===> src/os/unix
gcc -c  -I../../os/unix -I../../include   -DSOLARIS2=270 -DUSE_EXPAT -I../../lib/expat-lite -DNO_DL_NEEDED `../../apaci` os.c
gcc -c  -I../../os/unix -I../../include   -DSOLARIS2=270 -DUSE_EXPAT -I../../lib/expat-lite -DNO_DL_NEEDED `../../apaci` os-inline.c
[lots deleted] 
sed apxs \
    -e 's%@TARGET@%httpd%g' \
    -e 's%@CC@%gcc%g' \
    -e 's%@CFLAGS@% -DSOLARIS2=270 -DUSE_EXPAT -I../lib/expat-lite -DNO_DL_NEEDED `../apaci`%g' \
    -e 's%@CFLAGS_SHLIB@%%g' \
    -e 's%@LD_SHLIB@%%g' \
    -e 's%@LDFLAGS_MOD_SHLIB@%%g' \
    -e 's%@LIBS_SHLIB@%%g' && chmod a+x apxs
make[2]: Leaving directory `/nfs/paca/home/user1/dgerman/apache/apache_1.3.26/src/support'
<=== src/support
make[1]: Leaving directory `/nfs/paca/home/user1/dgerman/apache/apache_1.3.26'
<=== src
19. Then run make install.

Here's my run through it:

burrowww.cs.indiana.edu% make install
make[1]: Entering directory `/nfs/paca/home/user1/dgerman/apache/apache_1.3.26'
===> [mktree: Creating Apache installation tree]
./src/helpers/mkdir.sh /u/dgerman/apache/apache_1.3.26/bin
[lots deleted]
./src/helpers/install.sh -c -m 644 ./conf/magic /u/dgerman/apache/apache_1.3.26/conf/magic.default
[PRESERVING EXISTING CONFIG FILE: /u/dgerman/apache/apache_1.3.26/conf/magic]
<=== [config]
make[1]: Leaving directory `/nfs/paca/home/user1/dgerman/apache/apache_1.3.26'
| You now have successfully built and installed the      |
| Apache 1.3 HTTP server. To verify that Apache actually |
| works correctly you now should first check the         |
| (initially created or preserved) configuration files   |
|                                                        |
|   /u/dgerman/apache/apache_1.3.26/conf/httpd.conf
|                                                        |
| and then you should be able to immediately fire up     |
| Apache the first time by running:                      |
|                                                        |
|   /u/dgerman/apache/apache_1.3.26/bin/apachectl start
|                                                        |
| Thanks for using Apache.       The Apache Group        |
|                                http://www.apache.org/  |
20. Read the summary note (see above).

21. Configure httpd.conf in the new server's conf directory.

This file was generated automatically by the installation process.

(Copy it into httpd.conf-backup before making any changes.)

Now change LockFile, Port, User, and ServerAdmin as follows:

burrowww.cs.indiana.edu% diff httpd.conf httpd.conf-backup
< LockFile /tmp/apache_1.3.26.lockfile.dgerman
> #LockFile /u/dgerman/apache/apache_1.3.26/logs/httpd.lock
< Port 36000
> Port 8080
< User dgerman
> User nobody
< ServerAdmin dgerman@indiana.edu
> ServerAdmin dgerman@burrowww.cs.indiana.edu
You have to make sure you

So I only changed:

  1. The LockFile directive (please be careful with that!)
    Use: /tmp/apache_1.3.26.lockfile.username
    Remember to remove the pound sign (#) in front of it before editing!

  2. The Port
    Your port will be 102xx as listed on the students page.
  3. The User
    Please make sure you use your username.
  4. The ServerAdmin address.
    Use your @indiana.edu address.
22. You can now start the new server.

/u/username/apache/apache_1.3.26/bin/apachectl start
23. Check your new web server over the web at burrowww.cs.indiana.edu:31xxx

Here's mine. (Change your index.html accordingly).

Note: also try the Korean or Japanese version.

24. Set your crontab for your server to be re-started (gracefully) every morning at 8:10am.

That's something we will do next week in lab.

Last updated: Jan 20, 2003 by Adrian German for A348/A548