Lumen

From Lumen’s website.

Lumen is a “micro-framework” built on top of Laravel’s components, and is the official micro-framework of Laravel. Lumen is built for speed, and is one of the fastest PHP micro-frameworks available – even significantly faster than similar frameworks such as Silex.

However, unlike many other micro-frameworks, Lumen lets you tap into the full power of Laravel’s features, such as routing, dependency injection, the Eloquent ORM, migrations, queued jobs, and even scheduled commands.

Laravel is already fast and powerful, but Lumen strips away many of the configuration and customization options that Laravel provides in order to shave every millisecond possible off of your service’s load time.

The stunningly fast speed of Lumen, combined with the convenience of Laravel’s features gives you a “best of both worlds” micro-framework that is truly a joy to work with.

Spin a AWS server from a disk image

I was able to successfully create an AMI (Amazon Mirror Image) of the Laravel server that I just created. I launched it and it worked perfectly. Creating an image from a running instance is quite easy. Just go the EC2 Dashboard. Select Instances and choose the Instance you want to clone. Go to Actions and select Create Image. It takes several minutes to create an image. Once the AMI is created, you can launch another instance using the AMI that you just created. It took close to 3-5 minutes before the server was able to serve Laravel page that was recently installed. In the future, if I want to launch a clean Laravel install, I can just launch an instance based on the AMI I just created.

Install Laravel 4.2 on Ubuntu Server 14.04 LTS

I was having a little trouble getting Laravel installed on a newly installed Ubuntu 14.04 LTS server. I’ve decided to document the whole process in hopes that I’ll use the documentation to good use once again sometime in the future. Who knows, someone will benefit from reading this. I’m not the only one that will be doing a Laravel installation on Ubuntu.

If you need to install Ubuntu from scratch, I recommend that use install LAMP and SSH because you’ll need those services to support Laravel. PHP, MySQL, Apache and SSH would be installed for you right out of the gate. In addition, I recommend that you install PHPMyAdmin for database administration.

# Install Tasksel
sudo apt-get -y install tasksel
# Install LAMP
sudo tasksel install lamp-server
# Install PHPMyAdmin
sudo apt-get install phpmyadmin

In Ubuntu, the default document root is /var/www/. Before starting, let’s make sure we got the correct permissions for Apache, and for the user (you). This is to prevent so you don’t run into issues with write permissions on the document root.

Permissions for /var/www/

# Set group to www-data
sudo chgrp www-data /var/www
# Make it writable for the group
sudo chmod 775 /var/www
# Set GID to www-data for all sub-folders
sudo chmod g+s /var/www
# Add your username to www-data group
sudo usermod -a -G www-data username
# Finally change ownership to username
sudo chown username /var/www/
# Your account shouldn't have any more permission issues

Let’s get the prerequisites taken care of before installing Laravel

Install Curl

sudo apt-get install php5-curl

Install Mycrypt

sudo apt-get install php5-mcrypt

Activate Mcrypt

# Enable extension
sudo php5enmod mcrypt
# Restart Apache
sudo service apache2 reload

Enable Mod-Rewrite

# enable rewrite
sudo a2enmod rewrite
# restart apache
sudo service apache restart

Install Laravel via Composer

Install Composer First

cd ~
curl -sS https://getcomposer.org/installer | sudo php

Installer Composer Globally

sudo mv composer.phar /usr/local/bin/composer

Install Laravel

# your-project is your destination folder
cd /var/www/
composer create-project laravel/laravel your-project --prefer-dist

Set up your Apache virtual host

# Copy default Apache conf
sudo cp /etc/apache2/sites-available/000-default /etc/apache2/sites-available/laravel.conf
# Edit laravel.conf and change DocumentRoot to /var/www/laravel/public
sudo nano /etc/apache2/sites-available/laravel.conf
# Edit laravel.conf add the following and save.
DocumentRoot /var/www/laravel/public
<Directory /var/www/laravel/public>
 Options Indexes FollowSymLinks MultiViews
 AllowOverride All
 Order allow,deny
 allow from all
</Directory>
# Reload Apache
sudo service apache2 reload
# Disable default Apache conf
sudo a2dissite 000-default.conf
# Enable laravel.conf
sudo a2ensite laravel.conf
# Reload Apache
sudo service apache reload

The cool thing about this example is, by setting up your /var/www permissions, you don’t need to change permissions to “app/storage” since you already have the correct permission to /var/www.

Finally, access Laravel from the IP address of your Ubuntu Server. The IP address of your Ubuntu server should be a static IP address. You can set this in the network config file called /etc/networking/interfaces.

Have fun!