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.
An alternative way to install a LAMP server in Ubuntu is to use the Tasksel utility. Make sure Tasksel is installed by installing it first via apt-get. Once tasksel is installed, you can then install the lamp-server.
# install tasksel sudo apt-get -y install tasksel # install lamp server sudo tasksel install lamp-server
Years ago, I got tired of Windows for numerous reasons which I don’t have the time to elaborate in this post. Eventually, I switched to Linux. It was new, exciting, and the opportunity to learn something entirely different was fascinating to me. When Ubuntu Dapper Drake came along, I went all in. That was my desktop of choice for a very long time.
After each Ubuntu release, I worked hard to get everything working from the flash player, media, and just about every tool that I needed, just to get the desktop to function the way I wanted to. After several years of Ubuntu updates and fixing the desktop, I got tired of it. It was an exercise I really didn’t want to do every six months.
I switched to the Mac OS because it it’s based on BSD, a Unix variant, which is familiar to me. In some ways, I can get still get down and dirty using the Terminal if I wanted to. The Mac OS for the most part, is a very stable environment. And everything worked at get-go. I’ve been a Mac OS user ever since.
When adding an existing user to a group, be careful of using ‘usermod.’ If done incorrectly, you can remove a user from its existing groups. In my case, I used ‘usermod’ to add myself to the www-data group. Since I did it wrong, I lost ‘sudo’ access on the next reboot. I ended up booting up from a rescue CD and restoring /etc/groups. Thankfully, Ubuntu keeps a backup copy called /etc/groups-.
sudo usermod -G www-data username
sudo usermod -a -G www-data username
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
sudo apt-get install php5-curl
sudo apt-get install php5-mcrypt
# Enable extension sudo php5enmod mcrypt # Restart Apache sudo service apache2 reload
# 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
# 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.
So the only user I have in Ubuntu is no longer part of the sudoers group. How that happen? I have no access to root, and I don’t have admin access. Great. Very weird indeed. A bug?
If you want to know what version of Apache you’re running, do this command:
Starting Ubuntu 14.04, you no longer can bounce the network using the following command:
sudo /etc/init.d/networking restart sudo service networking restart
But, I managed to do this:
sudo ifdown eth0 sudo ifup eth0
If you want to assign a different shell (bash) to a Linux user, you can do this.
sudo chsh -s /bin/bash username