How I upgraded my site to Drupal 8 on the train

By Erik, 6 December, 2015

Well, November 19th was destined to be a momentous day and since I had started almost eighteen months ago, I thought it might be high time to actually convert my site to Drupal 8.0.0.

But the only time I seem to be able to sit down and look at non work things is during my commute. On a train. With very… ummm… spotty internet connectivity at best. But what the heck. So luckily I have a local development copy of my site and a copy of the drupal git repo which was up to date.

So I checked out a new copy of D8 into a folder and did a very basic drush site-install to get a Vanilla Drupal8 up and running

mkdir ~/src/epd8 && cd ~/src
git clone --local locald8.git epd8
cd epd8 && checkout 8.0.0
drush si --db-url=mysql://root@localhost/epd8 --yes

From reading the documentation on how to upgrade, I knew that I had to get a contributed module: migrate_upgrade which gives a UI to the migrate and migrate_drupal modules that are currently provided in core.

drush dl migrate_upgrade
drush en migrate_upgrade

The only modules I feel like I really needed were codefilter and mollom because I knew I could simply put in a set of HTML from a Twitter embed widget instead of using the [full twitter module](drupal.org/project/twitter).

So drush handled that for me as well.

drush dl codefilter mollom
drush en codefilter mollom --yes

I decided that even though this Drupal-7 site uses the blog module from core, that since it was [relegated to contrib](drupal.org/project/blog) and wasn't up to date that I would simply forego the blog functionality and use a normal entity/node type for the "ramblings".

So, running the update via drush was as simple as:

drush migrate-upgrade --legacy-db-url='mysql://root@localhost/eporama_development' --legacy-root=$HOME/src/eporama

This did all the heavy lifting and converted what I needed in one fell swoop. There were some obvious problems with some of the images due to the fact that I had hard coded some paths in the body of a few posts, but overall the content: nodes, users, comments and basic configuration of content types came through without a problem.