This is the first of a new collection of posts that are dedicated to reviewing tutorials I find while learning my own thing. A lot of tutorials are outdated or wrong. “You mean things on the Internet can be wrong?!” In my field I run into a lot of tutorials. Ones that are large enough to warrant a review, either being very bad or very good, I will post about. This one is about installing Laravel.

Unmatching tutorials suck.

Disclaimer: This is not a tutorial, but might be used as one?

For reasons unknown to most humans I have ventured into the dark abyss that is web development: I touched node.js, “ew!”

I’m learning laravel 5.2 and the best way to do it is to dive on in. This is my corrections, additions, and flavor of their quick start tutorial available here.

When I did this I accidentally used the 5.1 version of the quick start tutorial from here. Some of my issues was simply from that, and I will remark appropriately.

Setting up the VM

Using the ever fabulous service that is Rackspace Public Cloud, I booted up a Ubuntu 15.10 instance. After doing some basic bootstrapping I began to install laravel.

Installing laravel copypasta mode

#install basic packages
sudo apt-get update
sudo apt-get install php5 apache2 libapache2-mod-php5 mysql-server php5-mysql curl -y

#install composer
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer

#install your laravel project
composer create-project laravel/laravel quickstart --prefer-dist

I used this as a reference.

Setting up the database (here)

I didn’t have to much trouble with this part but definitely set up the database connection string incorrectly. I was expecting data to be setup in config/app.php. Alas it was in .env in the project root.

Stubbing the routes (here)

A couple issues here, all of which were my own:

  • I forgot to include the use statements at the top, “hey that’s important!”
  • In the 5.1 version the routes are not inside of the required middleware group: this caused a very difficult to debug $errors variable not found error.
  • Ran into a ‘client denied by server configuration’ error that was fixed by changing my vhost configuration

The middleware solution was found at this stackoverflow post.

The vhost solution was found at this stackoverflow post.

Building Layouts & Views (here)

In hindsight this is where I am the most upset. The laravel folk show this lovely bootstrap themed image, and it gets me pumped up. In both tutorials it absolutely does not explain to you how to get bootstrap integrated properly with laravel. I’ll get to that near the end.

Otherwise this portion was pretty easy to deal with except vim doesn’t like these *.blade.php files one bit. I installed the vim plugin, vim-blade, to make editing much more satisfying.

I use vundle and the line I needed to add to my vimrc was:

Bundle 'jwalton512/vim-blade'

Adding Tasks (here)

I found this portion of the tutorial to be well written and easy. The validator portion of the tutorial looks pretty great. After working with neutron’s validators I am so happy that this looks sane.

That said, I ran into another weird problem here that may have just been skipped in my installation procedure. Some of the routes, namely POST /task, wasn’t being found. The solution was to enable mod-rewrite:

a2enmod mod_rewrite

This solution came from this stackoverflow post.

Deleting Tasks (here)

This portion of the tutorial was pretty self explanatory.

Getting bootstrap working with laravel

Why do I look different, dad?

I used this tutorial to get bootstrap installed.

Getting bootstrap to work, what I imagined is the correct way, was somewhat complicated:

  • you have to touch node.js
  • even this tutorial had its own problems

I’m not sure about node.js development, but in python land running stuff with sudo is generally bad news. This is a VM though, so who cares!

Problems and their solutions:

  • sudo npm install did not work well

When I ran bower later on it gave me the following error:

/usr/bin/env: node: No such file or directory

“What!? I just installed this thing…” Well it turns out I didn’t. This stackoverflow post gave me the solution: sudo apt-get install nodejs-legacy. Already legacy nodejs? Deprecating babies…

After that everything worked out alright except the css styles weren’t showing up. Turns out I forgot to run sudo gulp. Also turns out laravel-elixir did not install (due to the same legacy issue). I ran sudo npm install again and everything worked out ok. I referenced the laravel elixir page when installing this.

##Conclusion

You don’t get what is on the box when you run through this tutorial and it is incredibly disappointing. If you want to make it match then you definitely need to do some googlefu (which you should be doing anyway).

Good parts of this tutorial:

  • learned enough to understand the MVC model of laravel
  • touched a bit of the ORM and database bits to know how it goes

Bad parts of this tutorial:

  • Somehow got to the wrong version from google? That seems like SEO gone awry
  • The pictures, literally the only picture in the tutorial, is just not possible to achieve with the tutorial
  • There is a bit of a disconnect between the installation guide and this tutorial. It does not actually tell you how to get this project on the web

Final Score: 4 / 5