QUICKSTART -- How to get your server up and running as fast as possible o General machine setup: - configure your network - make sure that all components are current, by running YaST Online Update regularly o synchronise time (parts of the HTTP protocol depend on correct time): - configure machine as NTP client, either with the YaST configuration module or by editing /etc/ntp.conf (just put a server name into it) and starting "rcxntpd start", and running "chkconfig -a xntpd" o if you run a firewall, make sure to allow access through port 80 if the server should be reachable from other machines. o start the server, and configure it to automatically start at boot time: - rcapache2 start - chkconfig -a apache2 o add web pages: - the DocumentRoot is at /srv/www/htdocs - if you add documents somewhere else and link to them with e.g. Alias someplace "/path/to/someplace" make sure to also use ... to define access permissions and options for that directory, since (starting with SuSE Linux 9.0) access to the entire filesystem is blocked by default. See http://httpd.apache.org/docs-2.2/mod/core.html#directory o go through /etc/sysconfig/apache2: - check loaded modules (APACHE_MODULES="..."). - add "php4", "perl", or other needed modules to APACHE_MODULES al gusto. - modules can be enabled/disabled in a simple (Debian-compatible ;) way from the command line like this: a2enmod php5 a2dismod php5 - there is also a command a2enflag, to change APACHE_SERVER_FLAGS - restart the server ('rcapache2 restart') o where to add your own configuration: - add e.g. /etc/apache2/httpd.conf.local and change APACHE_CONF_INCLUDE_FILES in /etc/sysconfig/apache2, e.g. APACHE_CONF_INCLUDE_FILES="httpd.conf.local" - to understand the hierarchy and layout of all include files, read the comments at the top of httpd.conf - if you strongly prefer the old, single, 40K, monolithic configuration file, it's there! Just use it: mv /etc/apache2/httpd.conf /etc/apache2/httpd.conf.dist cp /usr/share/doc/packages/apache2/httpd-std.conf-prefork /etc/apache2/httpd.conf rcapache2 restart o add virtual hosts: - edit /etc/apache2/listen.conf. It is a suitable place to add NameVirtualHost directives. - copy the commented template /etc/apache2/vhosts.d/vhost.template to /etc/apache2/vhosts.d/yourhost.conf (note, it must end in .conf to be automatically read) - edit /etc/apache2/vhosts.d/yourhost.conf to suit your needs - alternative approach: simply append the NameVirtualHost directive and the container to your local configuration (httpd.conf.local -- see above) - if in doubt about how apache interprets your vhost setup, always use httpd2 -S. If SSL is involved you will need to run httpd2 -S -DSSL instead -- likewise for other needed defines. - the "default" server, which responds to requests not handled by other vhosts, is always the one which is defined first. If you want a dedicated "default" server for such requests, you need to put it first in the configuration. If the configuration is in multiple files, like /etc/apache2/vhosts.d/*.conf, then simply name the file _default.conf, or e.g. _192.168.0.1.conf if you do it per IP address. o TROUBLESHOOTING -- if anything does not work: - fire up "tail -F /var/log/apache2/*_log &" in a root shell - reproduce what is not working (starting apache, doing client requests, or whatever), and see how it is reflected in the logs - read http://www.suse.com/~poeml/apache-faq.html - make use of http://bugzilla.novell.com if you suspect a bug o for all configuration questions, consult http://localhost/manual (if the apache2-doc package is installed), or http://httpd.apache.org/docs-2.2/ (the online version) - read the documentation under /usr/share/doc/packages/apache2/ (where you will also find example configuration files) o building 3rd party modules: - install apache2-devel (and of course gcc as well as other needed development tools) - use apxs2 -- to build a module for all MPM types, or apxs2-prefork -- to build a module for the Prefork MPM, or apxs2-worker -- to build a module for the Worker MPM (see man 8 apxs2). In most cases you can just use "apxs2", the most notably exception being mod_php4. Using apxs2-prefork then will prevent you from accidentally trying to use the module with the Worker MPM. Typical example: apxs2 -c -i -a mod_foo.c -c compiles -i installs the module in the right place -a activates the module by running 'a2enmod mod_foo' - if the module's build system does not allow to use apxs, use at least CFLAGS=$(apxs2 -q CFLAGS) to determine the right compiler flags for your apache installation.