NYCPHP Meetup

NYPHP.org

[nycphp-talk] Virtualbox as a dev environment

Federico Ulfo rainelemental at gmail.com
Fri Sep 2 12:23:24 EDT 2011


Interesting, what about performances? I guess is useful only for testing
right?
 --
Federico Ulfo » <http://www.federicoulfo.it/>
Certified Developer Google & PHP
  <http://www.federicoulfo.it/>



On Fri, Sep 2, 2011 at 12:19 PM, Gary Mort <garyamort at gmail.com> 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<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<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/<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
> ______________________________**_________________
> New York PHP Users Group Community Talk Mailing List
> http://lists.nyphp.org/**mailman/listinfo/talk<http://lists.nyphp.org/mailman/listinfo/talk>
>
> http://www.nyphp.org/Show-**Participation<http://www.nyphp.org/Show-Participation>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.nyphp.org/pipermail/talk/attachments/20110902/00cd488b/attachment.html>


More information about the talk mailing list