Coooool :) Gary Mort <[email protected]> wrote:
>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@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@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 >_______________________________________________ >New York PHP SIG: Joomla! Mailing List >http://lists.nyphp.org/mailman/listinfo/joomla > >NYPHPCon 2006 Presentations Online >http://www.nyphpcon.com > >Show Your Participation in New York PHP >http://www.nyphp.org/show_participation.php _______________________________________________ New York PHP SIG: Joomla! Mailing List http://lists.nyphp.org/mailman/listinfo/joomla NYPHPCon 2006 Presentations Online http://www.nyphpcon.com Show Your Participation in New York PHP http://www.nyphp.org/show_participation.php

