Choosing the right Content Management System (CMS) is one of the most important aspects of building or rebuilding a site. WebVolta prefers to use LocomotiveCMS because of its simplicity and robust features. LocomotiveCMS is a Ruby/Ruby on Rails CMS application that allows easy creation of arbitrary data models. It also leverages the Liquid template language created by Shopify for templates and user-based pages.
One LocomotiveCMS feature that we've found valuable is hosting several unrelated websites from one running instance. Recently, a client reached out because they were looking to get their website out from under the control of an agency. (They had previously been affiliated with other businesses that had since been bought by other companies.) The agency hosting the site no longer had in-house experience with Ruby/Rails and they were not interested in extending access to their hosting services to allow WebVolta to move the site.
Our client was determined to get their site moved and so were we. After gaining view-only access to the export scripts being used, we were able to rewrite a portion of the agency’s code to extract the data out of MongoDB. Once we had the our client's data, it was simple to create a new LocomotiveCMS Instance.
Create a monolithic AWS instance on Ubuntu.
Import the CMS Database dump.
Configure Passenger + Apache for a simple stack.
Setup RVM and install local Ruby.
Re-deploy S3 assets to new S3 bucket.
Alter configuration in the CMS to point to the new S3 bucket.
Test the site end-to-end
The end to end tests brought up multiple issues with the original implementation. Some of the internal site links were full URLs and had to be re-worked for testing; others used invalid hostnames from when the agency was originally building the site. Another issue was that there were over 100 instances of images pointing to the old S3 bucket, not the new one.
Find/Replace worked for some of these basic issues, but others had to be manually changed in the CMS (as content in the front-end had already been changing). A bigger issue, however, was outdated libraries. The installation of LocomotiveCMS for the old site had been using old versions of libraries, and compatibility issues weren't discovered until late in end-to-end testing. Search did not work, which required either a downgrade of LocomotiveCMS or an upgrade of an outdated version of the CMS. We opted to upgrade the CMS and patch in fixes for the site search.
Thanks to the flexibility of LocomotiveCMS, the site migration was a success, and other companies related to this client reached out to us for help in moving their sites as well. If you're contemplating a similar move or if you have questions about LocomotiveCMS, use the Contact Us page to reach out. We'd love to help you find the best solution for your business need.