|
Apache HTTP Server
This document explains how to install, configure and run Apache 1.3 under the
Cygwin layer for Microsoft Windows. Cygwin is a POSIX.1
emulation layer for 32-bit Microsoft Windows operating systems.
The Apache Group does not guarantee that this software will work as documented, or even at
all. If you find any bugs, please document them on our bug reporting page.
Latest development news, pre-compiled distribution binaries, and third-party modules as
DLLs, may be found at http://apache.dev.wapme.net/.
Contributions are highly welcome (please see TODO
list); please submit your code or suggestions to the bug report page, or join the dev@httpd.apache.org
mailing list.
The Win32 port of Apache is built
on its own, custom code within Apache to assure interoperability with Windows operating
systems. While it is considered release quality, it is slower and less thoroughly tested than
the Unix ports. The Cygwin alternative uses the well tested Unix code by using the Cygwin
portability layer for POSIX.1 emulation. The Cygwin port may suffer from gaps in security or
reliability due to the interaction of the Cygwin compatibility layer with the native Windows
API.
The Win32 port will be more
familiar to most Windows users. The Cygwin port (including the build environment) will be more
familiar to Unix admins and developers. Due to these two different code bases, the security
and reliability of the two ports are unrelated to each other. The Win32 port should be
considered the more secure of the two at this time. The Win32 port is recommended for most
Windows users, however the Cygwin port offers an extra layer of compatibility for Unix
developers.
Apache still performs best, and is most reliable, on Unix platforms. First benchmarks have
shown that the same Apache setup on Cygwin performs about 30% slower than the corresponding
native Windows version.
Most of this document assumes that you have a working Cygwin installation and want to
compile Apache yourself from the original distribution sources.
Cygwin support for Apache began with Apache 1.2.6 and Cygwin b18.
Due to licensing issues there has not been an official binary distribution until Red Hat
Inc. (who merged with Cygnus Solutions Inc.) changed their Cygwin license to ensure compiled
executables do not fall under GPL license if the distributed software is considered as open
source.
Cygwin is supported in the official source distributions from Apache 1.3.20 and later.
Pre-compiled binaries for the Cygwin platform (without the cygwin1.dll) will be
supplied at http://httpd.apache.org/ for each released
version.
This Apache 1.3 port for Cygwin is designed to run on Windows NT 4.0 and Windows 2000, NOT
on Windows 95 or 98. Windows NT 4.0 and Windows 2000 have both been successfully tested and
approved. In all cases TCP/IP networking must be installed.
Cygwin 1.x is required to compile and run this version. Cygwin 1.3.9 and 1.3.10 have been
tested and approved on both supported OSes. We suggest using Cygwin 1.3.9-2 and higher.
Note:If you want to compile shared DLL modules using
apxs you will need
Cygwin 1.3.9-2 or higher version, which includes a version of ld.exe with --auto-import
support.
The Cygwin platform is supported out of the box by Apache 1.3.20 and later. This means
there is no extra download required for the Cygwin platform. The latest version of Apache can
be found on the Apache httpd web site at http://httpd.apache.org/.
The site lists the current release, any more recent development versions, and information on
any mirror sites.
What about Cygwin Net Distribution binaries?
Apache for Cygwin is also available as pre-compiled binary package for the Cygwin Net
Distribution available at http://www.cygwin.com/ and it's setup.exe installation process.
Apache on Cygwin can be started and stopped in the same manner as on Unix systems. You may
also use the apachectl
tool for starting and stopping Apache.
- Starting Apache
If installed with the default Apache directory layout, you can start httpd
as follows:
$ /usr/local/apache/bin/httpd
An explicit background indicator (&) is not required. The parent
process is automatically detached from the current terminal. Check the global error_log
to see if Apache started cleanly without any major problems.
- Stopping Apache
To stop Apache send at least a SIGTERM signal to the parent httpd
process:
$ kill -TERM `cat /usr/local/apache/logs/httpd.pid`
- Gracefully Restarting Apache
In order to update configuration directives and reload the httpd.conf
configuration file, send a SIGHUP to the parent httpd process:
$ kill -HUP `cat /usr/local/apache/logs/httpd.pid`
Apache on Cygwin can be invoked as a Windows NT or Windows 2000 service. Cygwin has its own
cygrunsrv.exe facility to define, remove, start, and stop services as follows:
- Installing Apache as a new Service
Use the following statement to install httpd.exe as a new service:
$ cygrunsrv -I service_name-p /usr/local/apache/bin/httpd.exe [-a arguments] \
[-e VAR=VALUE] [-t auto|manual] [-u user] [-w passwd]
Where -a is used to pass command line arguments (such as -DFOO
defines) to httpd.exe, and -e is used to pass environment
variables. If necessary you may use the -t options to set the autostart
configuration for the service. If you want the new service to run under a different userid,
you will have to supply the -u and -w options.
- Starting Apache as a Service
After the new service is installed it can be started using the following command:
$ cygrunsrv -S service_name
Check your process table and global error_log file to ensure Apache has
started without any major problems.
- Stopping an Apache Service
A running Apache service may be stopped using the following command:
$ cygrunsrv -E service_name
This will stop all running httpd.exe processes and shutdown the HTTP
service for the machine.
- Removing an Apache Service
An installed Apache service may be removed from Windows NT or Windows 2000 using the
following command:
$ cygrunsrv -R service_name
This will remove your previously defined and installed service from the machine.
Please refer to the man page for cygrunsrv and the Cygwin mailing
list for further details of how services are invoked.
Any additional contributions to this document and the Cygwin support for Apache are highly
welcome. Please send them to Stipe Tolj <tolj@wapme-systems.de>.
Apache HTTP Server
|