Litespeed Migration Experience

An overview on my migration to Litespeed Web Server.

It had been nearly two years since one of my sites had been setup on it’s current server, and was experiencing a couple issues leftover from previously-used software and plugins.

Was considering a 100% nginx deployment, due to my positive experiences on this site and another test site running Invision Power Board.

There were problems:

  • with busy forums, with content to share and distribute, continues to be difficult to deliver quickly. It’s easy with some basic forum packages, but motorcycle enthusiasts don’t enjoy basic experiences.
  • nginx could help improve speed, but wasn’t convinced that critical issues wouldn’t be missed that are taken for granted with apache.
  • my CDN provider started supporting HTTP/2. Using a Let’s Encrypt certificate, site performance was improved greatly on images and javascript. Wanted to see how that could be accomplished on the entire site.
  • It was time for SSL Security on my site. Squashed a few man-in-the-middle issues with DNSSEC, but was still seeing content and revenue impacted. However, SSL Security typically means slower website response time. Despite Google’s affinity toward SSL sites, user satisfaction was a greater concern.

Litespeed was worth implementing just on the speed of the sites I visited. Speed alone made it worth the effort. I was also ready to move off of XCache and start utilizing Zend Opcache along with Memcached instead.

Implementing Litespeed at the command line didn’t work for me, because I still use Plesk on that particular server. Test content was working well after I deleted and created a new instance with a installation strategy centered around Plesk first. In other words, install Plesk after the O/S install, and then add-in the Litespeed module for Plesk. Don’t be concerned with the Litespeed traditional install, just insert the Litespeed license key in the appropriate place and it will take care of downloading and installing Litespeed.

Configuring the php items was a bit trickier. It is best to use Litespeed’s pre-built libraries, and after some patience I added in Zend Opcache, Memcached, ImageMagick, Pecl, and a few other items. As of this writing it’s still php 5.6, but version 7 is available.

Speed improvements were quite noticeable when all of content was moved over, and user participation increased. I’ve actually slowed the site back down a bit since, due to being able to re-enable modules that were causing issues before, but the overall user feedback has been very positive.

This post’s picture of Lake Fayetteville was taken a few weeks ago, during most of the effort to get Litespeed stable. My distance dropped a bit due after recovering from allergy issues, but am now going stronger for longer distances.

Litespeed can be found here.

No Fuss Bicycle Mount for Trucks

The problem with moving from an FJ Cruiser to a Tundra is the hitch rack is no longer as cool as it once was.

Some parking areas are spacious, but most can be a challenge for a crew cab vehicle. I’m now able to put two bikes on the rack (good for trips with the family), but thought there was a way to transport the bike in the bed without having to carry the rack.

The good news is that there are many offers available to solve this problem, but with these issues:

  • Expensive
  • Require cutting and/or drilling
  • May stay permanently mounted
  • May be complicated

My Tundra has tie loops mounted in the lower corners of the truck bed. All I needed was something to put the bike on. I picked up a Yakima Blockhead fork mount from Lewis and Clark, with a plan to mount it on wood.

Deciding how to make a suitable wood solution took a couple weeks. Initially I was approaching the problem thinking that the wood itself needed to be fastened somehow but after looking at potential wood options I realized that it just needed to be relatively heavy. Also noticed that 2×4’s could fit in two particular areas of the truck bed, making it easy to slide something.

Had Lowes cut two boards for me at the store, and along with some special hardware came up with this:

I set it at the foot of truck bed, slide it up to the front with my foot and mount the front fork:

I initially tied-down the handlebar, but found that it was unnecessary – the fork mount works great. Latching two the front bed loops was good enough.

A couple weeks later, picked up two additional longer tie downs to replace the rachet tie downs that were putting too much stress on the frame. One is routed under the fork mount, for additional stability:

The other is routed through the rear wheel, not to hold the bike down but merely as a safety cable:

Mounting the fork mount on the board required some testing measurement to ensure the handlebars and rear wheel had sufficient spacing from the vehicle:

There’s nothing fancy about the wood mount itself, two 2×6 boards sitting on single 2×4 rails, all bolted with rust proof carriage bolts:

I used a couple hole drills to ensure that the bolts wouldn’t scratch the truck bed. Used some washers to keep a clean look on the top:

The assembly is heavy, but easy enough to stow in the truck during the ride:

The end result is a safe and easy way to bring the bike anywhere and not leave a large hitch rack sticking out in a small parking area.

The weather was cool, but warmed up to the mid 60’s by the time I took these pictures. This was the view of Lake Fayetteville on the return trip after 24 miles, about 1.5 miles from the parking area:

Image Optimzation

When I sold one of my former motorcycle sites, it had 15gb of user-contributed photos. It had been larger, but after changing a few dimension settings disk utilization was reduced after re-running them through ImageMagick.

I’m still a believer in processing images through ImageMagick, due to it’s separation from php and utilization of system resources. The resulting images do look better and has never crashed a server.

PhotoShop continues to be one of my favorite programs, and the reason I still use a Windows machine. However, I’m not a fan of Adobe’s monthly-subscription model for the software. The software is expensive, but the monthly pricing is just enough to be annoying.

My Rocket site has a fraction of the traffic, but grew to the same level of disk utilization due to user-contributed images. Average Bandwidth has increased, and everyone can afford a camera/device capable of high-resolution images.

  • OptiPNG – haven’t used it within an application, but had run several of my site layout images through it last year, resulting in 25% size reductions with no noticeable results.
  • jpegoptim – used this in both command-line and applications. I’ve over-compressed on a few tests, shown primarily on motorcycles with solid colors or female models. However, it has saved 40-75% on disk space utilization and dramatically cut CDN utilzation.
  • modpagespeed – an option that is real-time instead of permanent changes to images. Using several filters I was able to gain image size reduction, but couldn’t fully propogate the optimized images through the CDN. This wouldn’t be an issue on most blogs, but attached images within forum posts can’t always been seen without credentials. This caused problems with cookies that were either delayed or expired within user sessions.
  • Cloud Services – my new preference. Learned about a way to process Gif and PNG images that resulted in an average 75% disk utilization reduction, utilizing a proprietary service at Kraken.io

I processed over 20,000 images last weekend, primarily through jpegoptim and about 650 through Kraken.io. When my monthly subscription renews, all images through be processed through Kraken going forward. Below is my affiliate link to Kraken.io if you would like to consider it:

https://kraken.io/?ref=5df9d93a221b

The experience put a different spin on the use of ImageMagick versus GD, but even with Kraken’s fantastic features I’ll still focus on the stability of what works best.

The use of Photoshop, over GIMP, is also a new consideration. Because if the size of the output isn’t a significant consideration, because the results will be re-run through either open-source or a cloud service anyway, then maybe I’ll be able to give up that Windows7 computer sometime in the future after all.

First Attempts on the Razorback Greenway

It has been over a month since my last significant change in diet, and hadn’t ridden much. There was a lot of rain Saturday morning, but after working on an image conversion project and having a late lunch the weather cleared in the late afternoon.

The initial part of the ride seemed normal, not much exercise and going vegan. The view of Lake Fayetteville was good enough to stop and unstrap my phone (using a new rubber mount) to take a pic.

Things got weird afterward. Couldn’t figure out where the Greenway started. In hindsight I hadn’t stopped long enough to study anything going on around the Lake, but eventually figured it out.

When I got on the new path, my strength level dropped dramatically. Eating salad and other organic veggies is nice, but the new path is across from a modern neighborhood. It was late in the afternoon, and smelling everyone’s barbeque smoke didn’t help. I was stalled at the first intersection at the top of the hill, and calling the wife for a potential pickup. It didn’t take to long to recover, and make a largely no-fun trip back home. I still did 17 miles, but the only motivation was the potential next-trip.

Yesterday morning, a client project was top-of-mind, as well as checking on the benefits of last weekend’s successful image conversions on the Rocket website. I still managed to get out on the trail at 9am, having complex carbs and a mix of peanut butter, grains, and raisins. Prepped the bike with my coffee, slipped on the summer gear and took off.

The entire ride was great. Went up to Lake Fayetteville, got on the Greenway, and rode up to the north-end of Springdale behind a well-known local restaurant on Sanders Ave. The trail snakes through Springdale in interesting ways, but should breathe new life into what was formerly remembered as the active part of town.

I needed to get back and prepare for potential conference calls, that never happened – but that’s Ok – the ride was still wonderful nonetheless.

26.5 Miles, it was a good day.

CentOS 7 Differences

I hadn’t thought of it, but realized that my dependence on the version 6.x series represents the most time ever on any version of Linux. Like many others, I was using custom kernels and had a list of nifty tweaks and hacks to squeeze the most out of the OS.

Before making the permanent migration, there were four test instances built using VPS and Cloud Instances from a couple providers. Problems with MySQL/MariaDB and understanding the differences of modern versions of Apache and nginx delayed the migration most of this year. The last test actually ran part of my production applications for a day, but ended up being abandoned due to poor response times.

In the end, I simply used an older dedicated blade and installed CentOS7 on it. Some tidbits noticed and done:

  • Some things work like Ubuntu, guess RedHat likes Debian too.
  • It is more efficient than CentOS 6
  • Need to test MariaDB/MySQL configs. I liked the way I was able to drop my custom config file into a directory (which appears to be common), but avoid running your production data until you’ve got it debugged.
  • My efforts to go 100% nginx weren’t doable, but liked the benefits of Apache 2.4. Still running nginx on static resources.
  • PHP 5.4 for now for compatibility reasons.
  • Stuck with Atomic Linux as well, along with epel, and mod_pagespeed.
  • Service Management was a learning curve for me, this was something I wished had not changed.

Looking forward to continued utilization of CentOS, even though some of the technology I’m using may be showing it’s age.