Upgrading a Statamic site from v1 to v2
Statamic is a flat-file, Laravel-based content management system built and supported by Wilderborn (Jack McDade, Jason Varga and Gareth Redfern). It’s great to work with. I had the opportunity to upgrade a v1 site this week, so here’s my tuppence-worth.
The Statamic v2 documentation is excellent, taking the form of Trail Guides as walk-through processes, and Reference for the specific ingredients. It’s written in a conversational style with a liberal sprinkling of unselfconscious humour…
Overall it’s a case of:
- setting up a clean v2 installation, which includes example content
- removing the example content and files (optional)
- transferring v1 files across in a sensible order - no database to worry about
v2 Installation
Getting Started With Statamic walks through setting up Statamic v2, and there’s a useful video on Vimeo.
Mamp Pro was the tool of choice for my local installation.
To configure URL rewrites, the sample .htaccess file should really be used so /index.php/ is removed from resulting URLs.
The installer.php file can be run locally to check requirements and set up a few handy things. This seemed to cleverly delete itself after running locally, so I had to find it again to copy it up to the production server to check that. For the production site I’m transferring hosts to get the required PHP >= 5.5.9 version, though this wasn’t unexpected and not a big deal, with performance improvements also on offer at the new host. Zip archive support for updater backups failed on production, and always_populate_raw_post_data=-1 on both production and local. Not to worry, for now at least.
System files can be moved above webroot for additional security. There’s a bit of extra work there in adjusting default paths in settings files.
The one-click updater tool in v2 is a potentially great time-saving addition.
Clear Site to Remove v2 Example Files
There’s a handy wee command line instruction to do this, with options:
Best described in this video. It can also create a new theme skeleton for you.
This is optional and can be done after importing your v1 site, as I did after Jack pointed out the video. However since it wipes all /themes/, /collections/ and /pages/ subdirectories, in retrospect I’d recommend instead:
- set up and play locally with the example files on a complete v2 site
- set up a fresh v2 site and run Clear Site before the next v1 site import step
If you don’t choose to Clear Site, example content /pages/ and /collections/ subdirectory names can be prefixed with an underscore to hide but retain them for future reference.
Moving v1 Files
You Can Get Here From There clears a path through the undergrowth for an upgrade from v1.
The v2 Control Panel is now located at http://yourdomain/cp/ - this nugget tucked away in the docs under New Defaults. So Tools : Import then Import content from Statamic v1 instructs you to download an exporter add-on for installation into your v1 site. Visit the generated URL for a JSON string which can be pasted back into your v2 control panel. The result was:
- v1 Entries were taken in as new v2 Collections
- Pages are transformed to their v2 equivalents
Nice.
A few variables had to be renamed for the site to start working again - for example:
{{ layout_content }}
…becomes:
{{ template_content }}
…and underscores needed removed from various variables.
The custom theme from the /themes/ directory had to be moved across manually. Assets can be similarly copied across from the v1 /assets/ directory to the corresponding v2 location.
Optionally (as entries:listing is backwards-compatible), the main change here is renaming entries in the template code:
{{ entries:listing folder=”example” }}…{{ /entries:listing }}
… as collections:
{{ collection:example }}…{{ /collection:example }}
That was it! Up and running locally with v2. The original v1 site wasn’t enormously complicated but I guess the principles would probably remain the same if it had been. The main process just took a couple of hours as a first attempt, and the next v1 upgrade will go a lot quicker I’m sure.
There’s a high degree of integrity about Statamic that makes it very reassuring to work with, and their Slack v2 support channel is very active.