Webalizer statistics on DreamHost

In my last post, I detailed the way in which you could activate the Analog statistics application on DreamHost accounts with root WordPress installations. I’m really not a fan of Analog, though – my preferred application for statistics tracking is Webalizer.

I’ll describe the best way to install Webalizer in this shared hosting environment, with information distilled from the DreamHost Customer Support Wiki.

First, you’ll need shell (SSH) access to your Dreamhost account. Once you’ve logged in, carry out the following tasks:

  1. Make a new directory in your home path called webalizer. Also make a new directory for your domain’s statistics.

    mkdir ~/webalizer
    mkdir ~/example.com/webalizer

  2. Change to the directory.

    cd ~/webalizer

  3. Open a new links browser instance to the Webalizer download page.

    links http://www.mrunix.net/webalizer/download.html

  4. When Links opens, press Enter to bypass the information box if it appears.
  5. Arrow down to the Linux ELF – Binary x86 link. (You don’t need the static binary.) Press d to download the file, and then press Enter to save the .tgz file.
  6. Once the file is downloaded, press q and then Enter to exit Links.
  7. Extract the .tgz file (change the version number if necessary).

    tar -zxf webalizer-2.01-10-linuxelf-x86-bin.tgz

  8. Move the contents of the versioned Webalizer directory to the ~/webalizer directory, and delete the version numbered extraction directory.

    mv webalizer-2.01-10-linuxelf-x86/* .
    rm -rf webalizer-2.01-10-linuxelf-x86/

  9. Copy the sample.conf file to a new file with your domain name.

    cp sample.conf example.com.conf

  10. Edit the example.com.conf file using your preferred editor. You will want to uncomment and change the following lines to reflect the DreamHost configuration:

    TheLogFile line should read:
    LogFile /home/username/logs/example.com/http/access.log.0

    The OutputDir command should be:
    OutputDir /home/username/example.com/webalizer/

    The Incremental option should be enabled:
    Incremental yes

    And the IncrementalName directive should be uncommented:
    IncrementalName webalizer.current

  11. Save the file, then run the webalizer application:

    ./webalizer -c example.com.conf

  12. Browse to your site’s webalizer directory and view the statistics. The URL is:

    http://example.com/webalizer/

In order to retrieve each day’s statistics and have Webalizer parse them, you need to set up a cronjob to automatically run each day after midnight. 2 AM is about the best bet for the cycle to run.

  1. Set your EDITOR variable to vi, so that your commands all are on the same line.

    export EDITOR=vi

  2. Edit your crontab file:

    crontab -e

  3. Add the following line to the crontab file. (Press i for Insert mode to begin typing in vi. To exit, type :wq.)

    0 2 * * * /home/username/webalizer/webalizer -c /home/username/webalizer/example.com.conf >/dev/null 2>&1

Your cronjob will now run at 2AM every day, processing the previous day’s log entries.


If you want to secure your /webalizer/ directory from prying eyes, you can create a .htaccess file under ~/example.com/webalizer/ with the following information:

AuthName "Webalizer Statistics"
AuthType Basic
AuthUserFile /home/username/example.com.stats.htpasswd
Require valid-user

Then, use Apache’s htpasswd tool to create the .htpasswd file:

htpasswd -c /home/username/example.com.stats.htpasswd useraccount

You will be prompted for a password for the user account. To add more users to this file, run the htpasswd command without the -c flag:

htpasswd /home/username/example.com.stats.htpasswd anotheruser


While there’s a lot of information to digest, Webalizer is an excellent tool for tracking web statistics and the user interface is slightly more friendly than Analog. I plan to use the two applications concurrently – Analog seems to do a better job of tracking referral URLs and Webalizer provides colourful graphs.

Update 3/07/2007: I’ve updated the crontab section to reflect that the full /home/username/webalizer/example.com.conf path needs to be passed for the -c flag.

DreamHost statistics with a root WordPress installation

If you own one or more of the 350K domains hosted with Dreamhost, you may be interested in using their statistics tracking system. However, if you have WordPress installed at the root of your domain, the /stats/ URL is inaccessible and only results in a 404 error, as WordPress tries to parse /stats/ as a permalink to a post or page. This is due to the .htaccess directives that WordPress employs.

The solution is on the DreamHost wiki and can be added to the top of your .htaccess file fairly quickly:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/(stats|failed_auth\.html)/?(.*)$ [NC]
RewriteRule ^.*$ - [L]
</IfModule>

This code comes before the WordPress commented line:
# BEGIN WordPress

Alternatively, if you’re concerned about people possibly bruteforcing your statistics username and password (since it uses simple HTTP authentication), you can deny public access to /stats/ and access the logfiles from an SSH session. Keep in mind that this will be a text-based view of your statistics.


ssh user@yourdomain.com
cd logs/yourdomain.com/http/html
links index.html

The logs directory is accessible under your home directory (~). You could also always run a tar/gzip command on the ~/logs/yourdomain.com/http/html directory and SFTP/FTP the file, then view the stats locally.

For more information, such as performing the same operation with Ruby on Rails apps or TextPattern, check the wiki.

VNC on a Mac? Use Vine.

Thanks to Dave for this pointer:

The default VNC application on OS X really bites, so if you want to access your Mac remotely, get a copy of Vine Server.

For viewing the result on a PC, install UltraVNC and use the following connection settings for best results. (This assumes you’re on a local area network – both wireless and wired worked fine for me.)

UltraVNC Settings Dialog

ev98.net is now live again

Barring any monkey business… ev98.net works again. Carry on as usual. Please report any errors and I’ll crank out a fix as soon as is possible.

In other news, co-op rankings begin Friday at 1pm. Good luck to any UW-goers in this process.

In other news, I just wrote an essay for English that has made me enraged at slippery slope arguments. Why must people continue to prove Godwin’s Law, even in professional writing?

ev98.net is now ev98.org

The site lives again… at ev98.org.

Please update your bookmarks, email addresses, and whatever else you may have that references the previous address. For most of you, this will not involve too much work. For me, it’s a significant amount of pain at a time when I don’t especially need it. There’s still a lot of code referenced in Ethanol that may point to the specific .net domain.

In other words, I’ve moved “the site” to a domain directly under my control. (ev98.net was registered directly to Future Point, my previous web host. The .org equivalent is directly registered to me.) I’m really disappointed that things had to come to this, but I really haven’t been given much choice with the way things worked out.

If I do hear from Future Point’s tech contacts and can make things happen, I will likely permanently redirect .net to point to .org.

Hasta la Vista

I’ve been running the RTM version of Windows Vista on my primary PC workstation for a little less than a month. I figured I’d have a license key to enter from UW’s MSDNAA program before the end of February, but it’s looking increasingly unlikely that the promised serial number would be delivered before the activation timer expires. While it was useful to have around, since all new computers being purchased these days are coming with it, there comes a point where I get fed up.

In my case, the primary issue was that of driver incompatibility. nVidia’s latest (even beta) drivers do not allow users to set custom resolutions for Vista. What’s more, it might not be a scenario in which the feature is “not there yet” – my random searching has led me to believe that Microsoft’s WHQL certification process may preclude custom resolution switching.

Since my Viewsonic VX2025wm uses a resolution setting of 1680×1050@60Hz, and I’m running the monitor through a KVM switch that doesn’t expose EDID information, I have to force the issue with the nVidia (or ATI) drivers installed. The problem doesn’t occur when I run the monitor using its DVI port, but VGA connections in Vista – even without the KVM switch – refuse to acknowledge the monitor’s capabilities.

I did try several alternatives – a “hacked INF” file, and using a tool called PowerStrip. Both of these attempts failed miserably, and PowerStrip only led me to believe that paying $30 for the full version would be like paying $30 to bang my head against a wall.

That application is the epitome of “don’t touch this if you don’t know what you’re talking about.” I like to think I know what I’m talking about with my own hardware, but when presented with at least twenty different settings in a confusing, menu-driven interface, it’s hard to know what might irrevocably ruin one of my nicer pieces of equipment.

The problem with Vista, as I see it, is not really based on anything Microsoft does. They can rest assured that their new operating system will help reduce their current issues with spyware and malware and leave it at that. I just don’t see the reason to upgrade if I can’t have one of my key features. While the DVI+USB 4-port KVM switch is a project of mine for the future, I shouldn’t need it in order to function properly.

User Account Control in Vista will be a real piss-off when someone writes the following program (spyware), though:

// pseudocode follows
function installNastySpyware()
{
do {
MessageBox("You *must* click 'Allow' on the next dialog in order to install Cute Little Happy Cat Cursors.", "Cute Little Happy Cat Cursors");
AuthenticationToken token = getTokenFromOS();
} while (token.authLevel < AUTH_ADMINISTRATOR);
// go to town on system
using token.authPermissions {
System.installCrapEverywhere();
}
}

ev98.net domain updates

I’ve escalated the issue with the ev98.net DNS resolution problem. To reiterate the problem, the community blogging/random video/insult site at ev98.net is currently unavailable for public access – it’s been replaced with some spammy search site that apparently is trying to flog DJ equipment or something else useless.

Things from the administration end seem to be fine; I can still log into the administrative panel and phpMyAdmin instances that Future Point provides. I’m also able to access my account using SSH to upload and change files. Right now, I’m currently creating a copy of everything originally hosted on ev98, as well as a backup of the site’s text content, in the event that I have to permanently move things offsite.

For now, I’ve redirected all content on the site to the “hosting preview” address, which still should work. (You might have to log in again, though.)

http://ns11-1.futurepoint.com/ev98.net/

I’ll update in the near future with what ends up happening. At worst case, the site moves over to a new domain and I have to tell everyone to update their email address information for me. At best case, the site comes back up and I change a few Ethanol settings back.


I also managed to push the WordPress 2.1.1 update here, which apparently fixes some XSS exploit issue. I’m still trying to determine if there’s a legitimate bug with the “custom fields” functionality, since I’d like to exploit that capability for a new project. That’ll have to wait until I can verify things though.

Domain squatters enrage me

Something’s gone wonky with my other site, ev98.net. Apparently it’s redirecting to a search site and I have no way to modify it. I’ve put in a support ticket with my hosting provider, Future Point, so hopefully this gets resolved soon.

mountMerge thrashes my disks

I’m incredibly glad I didn’t release the first version of mountMerge last night. Apparently Java’s “delete” command does not respect symbolic links under Windows. As a result, my entire collection of files – over 800GB worth – was unceremoniously nuked.

I’ve spent the past day trying to recover what I can, since the delete operation didn’t actually overwrite the original files. They just didn’t appear in the directory structure. As of now, things have been shuffled around a little bit, but everything seems to be recovered okay.

The recovery app I used (which works fine under Vista, by the way) is called FreeUndelete. I’m not sure how its forensics compared to something like Runtime Software’s GetDataBack for NTFS, but it’s certainly quicker for what I needed to recover.

The application works really well, other than absolutely killing my filesystem. As a result, I’m going to do some more testing before I release it into the wild.

mountMerge in progress

One of my “most desired features” for my Windows box is something that I’ve referred to as a merged mountpoint. Last night I made a significant amount of progress towards implementing this feature on my own. Here’s some background information:

Most users have one hard drive in your system, usually C:\. This drive will probably have your Windows installation, Program Files, Documents and Settings, and a few temporary files to start off; depending on how much stuff is installed, you’re looking at about 10GB taken up with a typical “workstation” installation. With a 120GB drive, that leaves you (after formatting and space conversion) about 100GB to work with.

On my system, I have random utilities, other applications like Visual Studio and Eclipse, and a few games. All in all, my 120GB C:\ is down to about 60GB for random media files, like music and video. I could probably fill this space up in about a week if I was really going at it, too.

If I add another hard drive to the system (D:\), there’s another 120GB of space, but it’s on a different physical drive. I have a choice to make – do I start installing programs and utilities to the D:\ drive, or do I start locating any new media files on D:\?

Hit the jump for more details…

Continue reading