Apache

Apache log rotation on Windows (update)

Tags: 

Way back when I wrote how to do log rotation for Apache on Windows. Well, as it turns out there's a better way that is available with the recent discover of ApacheLounge.org - there's a module/plugin for Apache that can do log rotation automagically called mod_log_rotate that'll be easier to use and won't leave tonnes of zombie tasks running if you restart Apache. Much nicer.

Apache commercial support

Tags: 

Many corporations require that all software used have a commercial support structure available to cope with worst-case scenarios. Typically many open-source applications in use today don't have support available from the core development team, and the ubiquitous Apache HTTPd web server is no different. To the rescue is the company Covalent who can provide not only support for several of the Apache products but also make a customized bundle available of Apache HTTPd, Tomcat and several other applications. Obviously this support is not going to be free, but if you need it they're worth giving at try.

Rails tip - run FCGI if you can't do Mongrel

Tags: 

A small tip, but one I just encountered. If your web hosting provider can't allow you to set up a nice proxied Mongrel cluster, your best bet is to use the FastCGI (aka "FCGI") interface to Apache as the plain-Jane CGI interface is just slow as a dog. I ran into this little issue when using RedMine for my project management, and let me tell you it was slow. Well, it finally dawned on me to take a look see if it was using CGI or FCGI - low and behold by default it is set to use CGi, no wonder it was so slow! All it took to give it a 3x speed boost, i.e. make it run like a regular app, was to edit the public/.htaccess file and change the line that said

RewriteRule ^(.*)$ dispatch.cgi [QSA,L]

to say

RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]

et voila, RedMine instantly turns into a much more usable application.

ColdFusion MX 6.1 with Apache 2.2 on Windows

Tags: 

Apache 2.2 was released to a mixed fanfare. While everyone was pleased at the improvements most had to rest on their laurels while their web programming technology of choice was updated accordingly. At the time of writing, PHP 5.1 and 4.4 have an unofficial connector available (unless you want to run the unreleased 5.2 code), Ruby on Rails has several ways of working with it, and many others have received updates. Adobe's ColdFusion MX 7 was given an update which provides compatibility, but the company decided against including (the older though still officially supported) 6.1, so officially users of 6.1, my current employer included, are up the proverbial creek without an equally proverbial paddle. Or so we thought.

Before I explain how I did this, I just wanted to mention that Adobe does not officially support running CFMX 6.x with Apache 2.2, and neither they nor I am responsible if this turns your web server to mush. Proceed at your own risk.

As it turns out, presumably thanks to the wonders of Java binary compatibility, the official ColdFusion MX 7 connector works with ColdFusion MX 6.1, though I had to tweak the instructions a little. Here's what you need to do to get it running on Windows:

  • You'll need both ColdFusion MX 6.1 and Apache 2.2 installed and running correctly.
  • Stop both the Apache and ColdFusion services.
  • Make a backup of both the Apache and ColdFusion directories.
  • Start up the ColdFusion services again.
  • Download the updated connector file from Adobe's site (read the full release instructions if you want).
  • Extract the wsconfig.jar file from the wsconfig.zip file you just downloaded and put it under your ColdFusionMX directory under runtime\lib, e.g. C:\CFusionMX\runtime\lib. It will ask if you want to overwrite the existing file, so click Yes.
  • Open up the command prompt and move to the runtime\lib directory, e.g. CD \cfusionmx\runtime\lib.
  • Enter the following command all on one line:

    java -Dtrace.ci=1 -jar wsconfig.jar -ws apache -dir /apache2.2/conf -bin /apache2.2/bin/httpd.exe -coldfusion -v

    where "/apache2.2/" is the directory you have Apache 2.2 installed. Note that I have both ColdFusion and Apache installed on the same drive so didn't have to give any drive letters, and I used the UNIX-style directory separator (forwards-slash) instead of the Windows-style (backslash).

  • If you got an error message that said
    'java' is not recognized as an internal or external command, operable program or batch file.

    then you need to close your command prompt window, download and install the Java Runtime Environment (JRE) v1.4, and try again.

  • Presuming everything worked correctly you should see the following in your command prompt window:

    Macromedia JRun 4.0 (Build 107948)
    os.name: Windows 2000
    os.version: 5.0
    os.arch: x86
    platform: intel-win
    Extracting resource connectors/installers/intel-win/prebuilt/jrunwin32.dll
    file defaulted
    last modification date: Thu Apr 06 13:07:04 EDT 2006
    size/compressed size: 73728/26315
    to D:\CFusionMX\runtime\lib\wsconfig\jrunwin32.dll
    Created file D:\CFusionMX\runtime\lib\wsconfig\jrunwin32.dll
    findServers(): found server default at 127.0.0.1:2901
    Found JRun server default at 127.0.0.1:2901
    this host is tlcweb:205.241.27.208
    web server: Apache
    web server directory: D:/Apache2.2/conf
    verbose connector logging: false
    apialloc: false
    force resource extract from jar: true
    CFMX: true
    mappings: .jsp,.jws,.cfm,.cfml,.cfc,.cfr,.cfswf
    filter mapping prefix: false
    Using Apache binary D:\Apache2.2\bin\httpd.exe
    Server version: Apache/2.2.3
    Apache 2.2.3 is recognized
    isValidVersion(): Apache is 2.2.3
    Compiled in modules:
    core.c
    mod_win32.c
    mpm_winnt.c
    http_core.c
    mod_so.c
    Parsing Apache configuration file D:\Apache2.2\conf\httpd.conf
    Extracting resource connectors/apache/intel-win/prebuilt/mod_jrun22.so
    file defaulted
    last modification date: Thu Apr 06 13:07:04 EDT 2006
    size/compressed size: 65536/25836
    to D:\CFusionMX\runtime\lib\wsconfig\3\mod_jrun22.so
    Created file D:\CFusionMX\runtime\lib\wsconfig\3\mod_jrun22.so
    getProxyServerUrl(): 127.0.0.1:51010
    Wrote file D:\Apache2.2\conf\httpd.conf
    Added JRun configuration to Apache configuration file D:\Apache2.2\conf\httpd.conf
    Created file D:\CFusionMX\runtime\lib\wsconfig\3\README.txt
    Wrote file D:\CFusionMX\runtime\lib\wsconfig\wsconfig.properties
    Error stopping service. The web server must be restarted to complete this operation.

  • At this point start up the Apache server and try loading a CFM file. :-)

Apache log rotation on Windows

Tags: 

The Apache web server, or more correctly Apache HTTP Server, is a wonderful program for serving web pages to the world. It can be a bit tricky to set up, however, especially if you want to run it on Windows as many of the configuration examples you'll find online are for UNIX rather than Windows.

One particularly tricky thing to get working correctly is log rotation, where instead of saving all of your site traffic logs into one file it can split it up by day, month, etc. As mentioned, this is tricky because you would assume that the program you use to do this would work with the regular Windows directory names, e.g. "C:\inetpub\logs", but it doesn't.

So.... what you actually have to do is something like this:

ErrorLog "|D:/Apache2/bin/rotatelogs.exe D:/Logs/error_%Y%m%d.log 3600"

Note that I'm using the forward-slash (UNIX-style) directory separator instead of the backslash (Windows-style) directory separator. That seems to be the trick that got it to work for me.

On that note, there appears to be a bug in the rotatelogs.exe program on Windows. When you configure the rotation to use any time fields (hour, minutes, seconds) they are given "0"'s instead of the the real values, so you end up with e.g. error_20060912_184405.log instead of error_20060912_000000.log. I've not been able to find any official record of this, nor does the documentation have any mention, but as I've found other people experiencing this problem I'm going to assume that it is a bug and live with per-day log files.

Pages

Subscribe to Apache