Work Local with your favorite editor or IDE! Then deploy wherever
I have previously written about the great Kalabox dev environment which is especially useful in the development process if you are using Pantheon hosting. When you install that, you automatically get VirtualBox installed.
Using VirtualBox you can work with other cool virtual machine images, like Bitnami, for example. In this article we learn how to setup a no-nonsesense Lamp virtual machine using the Bitnami LAMP Stack Virtual Appliance riding on VirtualBox, with no-nonsense virtual host based Drupal instances accessible anywhere on your network, and you can use a best-practices based process workflow with an Ubuntu server running right on your Windows, Mac or Linux laptop.
Quo vadis? Native Installer or Virtual Machine?
Creating the virtual machine instance
Take a snapshot and stop the virtual machine
Set up Drupal Instances with Drush and Virtual Hosts, not Bitnami Drupal modules
Quo vadis? Native Installer or Virtual Machine?
Bitnami offers quite a few stacks, which can be enriched by modules, as well as straight-up applications. And many are offered in two varieties:
-
As a native installer, which is a single click affair, running as an independent self-contained application on either Windows, Mac or Linux, with its own directory structure and other conventions. It is the easiest way to get started with a single click.
-
As a virtual machine, making you free as a lark, but with a certain amount of sysadmin responsibility.
The Drupal application comes in both varieties, but since I was interested in working with multiple drupal environments I decided to go with the Lamp Stack app, and as a virtual machine for maximum flexibility.
Then I could develop without an internet connection and use my favorite local IDE or editor (Atom these days!).
Downloading and unpacking
You have to go through an albeit simple signup process to download anything (Bitnami’s business model is to get you to use their Cloud console which makes it a snap to, say, deploy a locally developed virtual machine based Drupal site to Amazon cloud), but I downloaded the LAMP stack virtual machine (note: NOT the native installer single click app) from the appropriate download page. Since Kalabox had already downloaded its image to /Users/victorkane/VirtualBox VMs, I unpacked the LAMP stack zipped file there (it isn’t just a single click binary executable like the native installers).
Creating the virtual machine instance
I followed the instructions in the support section User’s Guide, “How to start your Bitnami Virtual Appliance”. Here is what I did:
-
I unpacked the downloaded “Virtual Appliance” file bitnami-lampstack-5.4.28-0-ubuntu-12.04.zip into /Users/victorkane/VirtualBox VMs/bitnami-lampstack-5.4.28-0-ubuntu-12.04
-
I started up VirtualBox and clicked the New icon and following the instructions at http://wiki.bitnami.com/Virtual_Appliances_Quick_Start_Guide#Virtual_Box entered:
-
Name: BitnamiLampVM
-
Type: Linux
-
Version: Ubuntu (64 bit)
-
Hit Continue.
-
I gave it 2048 MB memory (the same as Kalabox)
-
Hit Continue
-
Selected the option “Use an existing virtual hard drive file” and clicked on the folder browse icon and then navigated to and opened the file /Users/victorkane/VirtualBox Vms/bitnami-lampstack-5.4.28-0-ubuntu-12.04/bitnami-lampstack-5.4.28-0-ubuntu-12.04.vmdk
-
Hit Create
-
I clicked on the Network configuration section, and changed the Attached to option to “Bridged Adapter”
-
And there it was. The newly created BitnamiLampVM virtual machine was selected, so I hit the Start icon.
-
The login shell came up with info items telling me that Auto capture keyboard was on, and that I could uncapture keyboard strokes by pressing the Host Key (shown in the status bar); and that the mouse pointer integration feature was supported by Mac OS (thank goodness).
-
Login and configuration
-
-
At the Linux login prompt I entered username bitnami and password bitnami. I was then prompted to change the password.
-
I was in.
-
Use sudo where necessary in normal operations. If you really need root, you can do “sudo -i” or “sudo su” and become root. No password required for root, and you never need to login as root. If you want to you can become root and then use the passwd command to create a login password for root.
-
-
Access server via assigned IP
-
I determined the virtual machine’s unique IP on the network
$ ifconfig eth0 Link encap:Ethernet HWaddr 08:00:27:f7:5b:0f inet addr:192.168.1.99 Bcast:192.168.1.255 Mask:255.255.255.0
-
I was then able to access the http server from anywhere in the local network
-
I enabled ssh and logged in using a regular Mac terminal bitnami@192.168.1.99
$ sudo mv /etc/init/ssh.conf.back /etc/init/ssh.conf $ sudo start ssh
-
-
I copied my public key into a newly created authorized_keys file in a newly created /home/bitnami/.ssh directory and was able to ssh in without login
-
Stuff was up and running
bitnami@linux:~$ php --version PHP 5.4.28 (cli) (built: May 2 2014 10:18:00) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies bitnami@linux:~$ git --version git version 1.9.0
I enabled remote access to phpmyadmin
-
I edited /opt/bitnami/apps/phpmyadmin/conf/httpd-app.conf
-
On line 20 I changed “Allow from 127.0.0.1” to “Allow from all”
-
On line 24 I changed “Require local” to “Require all granted”
-
-
I restarted Apache the Bitnami way
$ cd /opt/bitnami $ sudo ./ctlscript.sh restart apache Syntax OK /opt/bitnami/apache2/scripts/ctl.sh : httpd stopped Syntax OK /opt/bitnami/apache2/scripts/ctl.sh : httpd started at port 80
I accessed phpmyadmin in the browser at http://192.168.1.37/phpmyadmin/ By default the username is root and the password is bitnami
Installing drush
bitnami@linux:~$ sudo -i [sudo] password for bitnami: root@linux:~# pear channel-discover pear.drush.org Adding Channel "pear.drush.org" succeeded Discovery of channel "pear.drush.org" succeeded root@linux:~# pear install drush/drush downloading drush-6.2.0.0.tgz ... Starting to download drush-6.2.0.0.tgz (505,989 bytes) .....................................................................................................done: 505,989 bytes install ok: channel://pear.drush.org/drush-6.2.0.0 root@linux:~# drush root@linux:~# exit
Take a snapshot and stop the virtual machine
You can take a snapshot from the VirtualBox Manager window. Click on Snapshots and then click on the Take Snapshot icon.
I stopped the virtual machine from the command-line:
$ sudo shutdown -h now
The VirtualBox Manager showed the virtual machine as Powered Off
Set up Drupal Instances with Drush and Virtual Hosts, not Bitnami Drupal modules
Unless you are going to be using dyndns or a dedicated IP with a registered domain, just do the same as Kalabox, setting up an editable hostname, which can be modified each time a different IP is assigned to the virtual machine. Place the following into your /etc/hosts file (Linux, Mac…):
# Bitnami vm's 192.168.1.37 bitnamilampvm drupal01.bitnamilampvm
If you want you can reserve an IP in your local router, then assign it:
$ sudo ifconfig eth0 192.168.1.99 netmask 255.255.255.0 up
You can then access the web application from any computer of your network at 192.168.1.99.
Grab Drupal
All Drupal instances will be subdirectories of the bitnami user.
$ cd $ drush dl tput: unknown terminal "xterm-256color" Project drupal (7.28) downloaded to /home/bitnami/drupal-7.28. [success] $ mv drupal-7.28/ drupal01
Set up for install as usual
Set up the database with phpmyadmin
See instructions for exposing phpmyadmin above, and create a database and user with all privileges to that database.
Create the Virtual Host
In order to enable virtual hosts, edit /opt/bitnami/apache2/conf/httpd.conf, and uncomment the include directive for the virtual hosts file:
# Virtual hosts Include conf/extra/httpd-vhosts.conf
Once that is done, you can go ahead and edit /opt/bitnami/apache2/conf/extra/httpd-vhosts.conf to include your virtual hosts. Note that Require all granted is necessary instead of Allow from all as of Apache 2.4. Example:
<VirtualHost *:80> ServerName drupal01.bitnamilampvm DocumentRoot /home/bitnami/drupal01 <Directory "/home/bitnami/drupal01"> Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted </Directory> </VirtualHost>
Then restart apache to enable:
$ cd /opt/bitnami $ sudo ./ctlscript.sh restart apache
You’re on! Install Drupal
Point your browser to http://drupal01.bitnamilampvm/ and go to town!