NYCPHP Meetup

NYPHP.org

[joomla] Dev environment using virtualbox (Gary Mort)

Herbert Tucker htucker at covenanttek.com
Fri Sep 2 12:35:33 EDT 2011


Thanks for the post Gary.
I'm in the process of setting up an Ubuntu dev server using VMWare. I've 
only got as far as getting the VM running and the server set up so this 
is a very timely post since it's the network share and DNS stuff that 
looks to be the tricky bits.
One thing I'd suggest is to use split rather than monolithic files since 
at ~2GB they can be more handily backed up.
I'll post back with how I make out on this. I use a VPN too (OpenVPN) 
and I have been able to remote access the VM. I did assign the VM a 
fixed IP in my router which I had to do to use port forwarding.
Cheers,
Herb

On 9/2/2011 12:18 PM, joomla-request at lists.nyphp.org wrote:
> Send joomla mailing list submissions to
> 	joomla at lists.nyphp.org
>
> To subscribe or unsubscribe via the World Wide Web, visit
> 	http://lists.nyphp.org/mailman/listinfo/joomla
> or, via email, send a message with subject or body 'help' to
> 	joomla-request at lists.nyphp.org
>
> You can reach the person managing the list at
> 	joomla-owner at lists.nyphp.org
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of joomla digest..."
>
>
> Today's Topics:
>
>     1. Dev environment using virtualbox (Gary Mort)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Fri, 02 Sep 2011 12:18:41 -0400
> From: Gary Mort<garyamort at gmail.com>
> To: NYPHP SIG: Joomla<joomla at lists.nyphp.org>
> Subject: [joomla] Dev environment using virtualbox
> Message-ID:<4E6101E1.3010507 at gmail.com>
> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>
> I've been driven a little crazy lately with trying to develop for Joomla
> with the following limitations:
>
> 1) Half the sites use PHP 5.2 and half of them use PHP 5.3
> 2) Sometimes I'm online and sometimes I'm offline
>
>
> I kept coming back to "if only I was using linux, I could set things up
> more easily"....  Then it struck me that my desktop is a beefy system
> memorywise[this solution is gonna take a lot of memory] - so I gave
> VirtualBox a try.
> http://www.virtualbox.org/
>
> VirtualBox basically allows you to run different operating systems in a
> virtual environment.
>
> For my current setup, I started with Ubuntu Server:
> http://www.ubuntu.com/download/server/download
>
> For the VirtualBox settings, choose fixed disk size - not dynamic.  I
> use 10GB, it eats up the full space but improves performance.  My system
> has 8GB of memory, so I give the system 2GB of ram, I'd suggest nothing
> under 1GB.
>
> in the network settings for the virtual machine, I setup TWO network
> adapters.  Adapter 1 is set to "bridged adapter", the name is selected
> from my active adapter.   This allows the system to connect through
> yours to the internet.   Adapter 2 is a "Host Only Adapter"  - basically
> it's a "fake" network adapter that allows your pc communicate with the
> VM and the VM communicate with you.  So if your doing this on a laptop,
> you can still work even while offline.
>
> ****For the application settings[File-->Preferences] - go to the network
> settings and configure the virtual network adapter settings.  The
> important bit here is to disable the dhcp server.
>
> When installing Ubuntu, setup adapter 1 for DHCP and adapter 2 as a
> static IP address in a different network[most home networks are
> 192.168.1.0 or 192.168.2.0 - so I give my internal only network the
> address 192.168.129.1, netmask 255.255.255.0 - no default gateway!]
>
> Openssh is important to install for decent CLI access.
> Samba should be installed to make it easy to access the files on the
> server[just share out your web directory and then you can map the drive
> and access it from your favorite web editor].
> Git, subversion, and mercurial should be installed since you need it at
> some point
> I always make sure to install wget
> Now, the piece of magic that makes this all work, DNSMasq:
> http://thekelleys.org.uk/dnsmasq/doc.html
>
> DNSMasq allows you to run a DHCP server and  DNS cache on the virtual
> machine.  So you setup the DHCP server to give out an IP address to your
> system, and have it pass itself along as the DNS server[make VERY sure
> to also specify a blank gateway/router so all your internet traffic goes
> to the right place].
> The importan bits I've found:
> interface=eth1
> interface=lo
> ^^^these 2 lines makes sure that your system doesn't try to take over
> your "real" network
> address=/osm/192.168.56.1
> domain=osm
> ^^^this sets up the "fake" domain osm and configures it so any domain
> ending in .osm will be given the ip address 192.168.56.1  - the virtual
> machines ip address
> dhcp-range=192.168.56.10,192.168.56.15,255.255.255.0,12h
> ^^^ this gives your fake network a range of addresses, and a long timeout
> dhcp-option=3
> ^^^ makes sure dnsmasq doesn't try to get your computer to route traffic
> through it
> dhcp-option=19,0           # option ip-forwarding off
> dhcp-option=44,192.168.56.1     # set netbios-over-TCP/IP nameserver(s)
> aka WINS server(s)
> dhcp-option=45,192.168.56.1     # netbios datagram distribution server
> dhcp-option=46,8           # netbios node type
> ^^^^helps with the file shareing
> dhcp-authoritative
> ^^^speeds up initialization
> cache-size=1500
> no-negcache
> ^^^helps with lookups
>
>
> As an added bennie, with dnsmasq running, your lame windows box now has
> the full power of a linux domain name caching - so it will speed up your
> general internet usage.
>
> Then, in general, I follow the instructions at
> http://www.metod.si/multiple-php-versions-with-apache-2-fastcgi-phpfarm-on-ubuntu/
> to setup and install apache, mysql, and php 5.2 and 5.3 - with
> modifications for the latest versions of each.
>
> In my virtual hosts configuration the following are important:
> VirtualDocumentRoot /var/www/%-3
>
> %-3 basically means the third element of the domain name and is used to
> map domains to directories.  So for me:
> http://testsite.53.osm - the files stored at /var/www/testsite - the
> THIRD element of the domain  name will be used
> also using that directory is http://www.testsite.53.osm and
> http://testsite.52.home
>
> Wheras http://mydomain.53.osm will use the files located at
> /var/www/mydomain
>
> Our last bit of magic uses the virtual host configuration:
> <VirtualHost *:80>
>           ServerAdmin webmaster at localhost
>           ServerName 52.osm
>       ServerAlias *.52.osm
>       VirtualDocumentRoot /var/www/%-3
>           DocumentRoot /var/www
> <Directory /var/www/>
>                   Options +Indexes +FollowSymLinks +MultiViews +ExecCGI
>                   AllowOverride All
>                   Order allow,deny
>                   allow from all
>                   AddHandler php-cgi .php
>                   Action php-cgi /php-fcgi/php-cgi-5.2
>
> </Directory>
>
> <VirtualHost *:80>
>           ServerAdmin webmaster at localhost
>           ServerName 53.osm
>       ServerAlias *.53.osm
>       VirtualDocumentRoot /var/www/%-3
>           DocumentRoot /var/www
> <Directory /var/www/>
>                   Options +Indexes +FollowSymLinks +MultiViews +ExecCGI
>                   AllowOverride All
>                   Order allow,deny
>                   allow from all
>                   AddHandler php-cgi .php
>                   Action php-cgi /php-fcgi/php-cgi-5.3
>
> </Directory>
>
>
> These 2 configurations are almost identical, the only things that change
> are servername, serveralias, and action
> The servername has to be a full name, so I just use the php version I
> want with the domain tacked on[53.osm].
> The serveralias can have a wildcard, so *.53.osm means that for ANY
> website you try to load which ends in .53.osm use this configuration.
> Lastly, the Action line tells apache which PHP FastCGI server to route
> the request to.  So I have 2 different instances of PHP running, 5.2 and
> 5.3 and route accordingly.
>
> [Note, I share out the /var/www directory using SAMBA, and then map it
> on my windows box to drive letter W:]
>
> So now to edit files on my test website, garyamort, I edit the files
> located at w:/garyamort
> To see the website using PHP 5.2, I go to http://garyamort.52.osm
> To see the website using PHP 5.3 I go to http://garyamort.53.osm
>
> When dealing with oddities like a website which "suddenly" stops
> working, one cause is upgrading to PHP 5.3
> CiviCRM for example has 2 versions, almost identical but one of them
> will run on PHP 5.2 and one runs on PHP 5.3  - so a CiviCRM website that
> suddenly stops working is likely to have a webhost who upgraded PHP from
> 5.2 to 5.3
>
> It's a fairly simple solution - just copy the 5.3 version files over the
> old version files AND DELETE THE TEMPLATE CACHE DIRECTORIES - and it
> will start working again.
>
> If there is interest, I'm trying to put together a virtual box of all
> this pre-configured, so all you have to do is - with the exception of
> the part I put *** in front of, it would all be plug and play for most
> home networks.
>
> By the same token, if anyone knows a bit more about DHCP and DNS - I've
> had trouble with this part with windows...since both the home router and
> my virtual box broadcast a DNS server address, Windows will
> occassionally grab the wrong DNS address.  The problem is, I don't want
> to ALWAYS run the virtualbox, so I want some way for the VM to override
> the DNS address, but still allow the client to use the other one.
>
> And for those of you who are really good with IPForwarding, I sometimes
> have to use remove VPN networks.  So I have the VPN client on both my
> windows machine and the virtual machine running.  It would be great if I
> could get the VPN client on the linux machine to dynamically update
> dnsmasq so that when it's running, the DHCP server will tell my windows
> box to route all traffic just for the remote network through it, and do
> some NAT routing on the virtualbox so the connection goes through there.
>
> -Gary
>
>
> ------------------------------
>
> _______________________________________________
> joomla mailing list
> joomla at lists.nyphp.org
> http://lists.nyphp.org/mailman/listinfo/joomla
>
> End of joomla Digest, Vol 57, Issue 4
> *************************************



More information about the Joomla mailing list