mirror of
https://github.com/apache/httpd.git
synced 2026-01-26 19:01:35 +03:00
to follow, after the Bills haggle out the final config registry details. PR: Obtained from: Submitted by: Reviewed by: git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@86147 13f79535-47bb-0310-9956-ffa450edef68
95 lines
4.3 KiB
Plaintext
95 lines
4.3 KiB
Plaintext
From: William A. Rowe, Jr.
|
|
Date: June 7th '00
|
|
Subject: service monitoring in Apache 1.3.13
|
|
|
|
The concept for a taskbar monitor has been thrown around
|
|
for a very long while. 1.3.13 introduced Win9x services,
|
|
and that added fuel to the mix. Here are some sideband
|
|
observations I've made for other developers...
|
|
|
|
About Apache as a console, don't start Apache hidden without
|
|
any command line arguments if you want to launch it yourself
|
|
in a hidden window (it will do the classic test for
|
|
AllocConsole/FreeConsole)... drop in some arguments such as
|
|
the -f or -r option and it will fly without thinking it is a
|
|
service under 9x and NT.
|
|
|
|
Rule two, don't use --ntservice as an argument, ever. Only
|
|
the Windows NT Service Control Manager is allowed to pass that
|
|
flag, and only that flag, when it runs Apache.exe. Do use
|
|
--ntservice as the sole argument to the executable name if
|
|
you are installing an Apache NT service yourself.
|
|
|
|
Rule three, use -k start and -n name when maintaining the
|
|
HKLM/Software/Microsoft/Windows/CurrentVersion/RunServices
|
|
list, since there is no other way for Apache to know what
|
|
the service is named :) And look at any 9x installed service's
|
|
RunServices entry in the registry for the start service semantic.
|
|
|
|
Rule four, use the WinNT Service Control Manager exclusively
|
|
for starting, stopping and restarting Apache as an NT service.
|
|
The restart signal is the value 128, as documented in service.h
|
|
and service.c - this will continue to work in Apache 2.0. If
|
|
it fails, you are handling an older version (pre 1.3.13) of
|
|
Apache, and need to stop and then start the service instead.
|
|
|
|
Rule five, use the legacy pid-named events to signal Win9x
|
|
service Apache to restart and stop the service. But don't
|
|
bother looking for httpd.pid files... you can get the pid
|
|
right from the hidden service control window. Apache 1.3.13
|
|
and 2.x create a hidden window named for the name of the
|
|
service (without the spaces), with a window class of
|
|
"ApacheWin95ServiceMonitor", so can use FindWindow to track
|
|
down running Win9x services. See the service.c code for how
|
|
I accomplished this pretty simply in the -k stop/-k restart
|
|
handler.
|
|
|
|
Taskbar Monitor App
|
|
-------------------
|
|
|
|
Basic requirements: a C code application using strictly the
|
|
Win32 API, and not MFC or other Win32 frameworks. Could use
|
|
the service.c module to share some basic functions. That
|
|
module could be extended in Apache 2.0 to make this all easier.
|
|
|
|
I think we are looking for an external app that simply acts
|
|
as a monitor or allows a stopped service to be started. If
|
|
the user logs off, we loose the monitor app, but installed as
|
|
a shortcut in the Start group or in the registry key
|
|
HKLM/Software/Microsoft/Windows/CurrentVersion/Run
|
|
we will be just fine. I'd like to see the monitor run only
|
|
one instance to monitor all running services, for memory
|
|
and resource conservation.
|
|
|
|
I was thinking that the hover/iconbar title would tell them
|
|
"Test service is running", or "Test service is stopped".
|
|
If they left click, they could stop or restart, or simply
|
|
start if it is stopped. There could be a preference that
|
|
each service doesn't get it's own individual task icon unless
|
|
it is running, if it is a manual start service (or missing
|
|
from the RunServices list, which is the equivilant under 9x).
|
|
|
|
If a specific service is set to Auto start or is in the
|
|
RunServices Win9x registry key, we must show them the stopped
|
|
icon, of course. We might also keep the icon for any running
|
|
service that stops abruptly. But there could be a 'single
|
|
icon' option for the taskbar icon monitor that says show only
|
|
a single status icon, for simplicity if the administrator runs
|
|
many Apache services.
|
|
|
|
But I was hoping that any right click would provide a menu
|
|
of all Apache services with their status. e.g.
|
|
Test service is stopped
|
|
Apache_2 service is running
|
|
MyWeb service is running
|
|
and each would do the logical submenu, same as if that
|
|
specific taskbar icon were left clicked, offering to start or
|
|
offering to stop or restart the server, as appropriate.
|
|
|
|
Finally, to identify all installed Apache services, just query
|
|
the registry key HKLM\SYSTEM\CurrentControlSet\Services for any
|
|
key that has the ImagePath value of "...\Apache.exe"... (quotes
|
|
are significant here, if the leading quote is ommitted the
|
|
entire string ends with the text \Apache.exe - based on Apache's
|
|
own service installer in every released version.)
|