Setting up a Rails Server and Deploying with Capistrano on Fedora from Scratch

hey guys in this screencast I’m going to show you how to set up a fedora sorting postgres and rails applications then deploy an application using Capistrano the first thing we’re going to do is create a deployer user with sudo access we’ll use the deployer to install the required packages and make configuration changes once the deployer has been created we’ll set up ssh key logins using the keys will make it easier to log in and out and save some headaches demo line with Capistrano as what we’re set on the deployer will set up post grass and PHP PG admin so you can administer your database remotely next we’ll sort of Ruby Ruby gems and passenger after those building blocks are in place we’ll be ready to begin the deploy process so as I said the first thing we’re going to do is create the deployer using the add user command and you can see here i’m running a fedora inside a virtual machine you can use your own server or if you just want to practice you can set up a virtual machine for yourself the first thing we’re going to do is go ahead and create our deployer using the add user command now that the deployer is creatively to set the password and now we need to give the users sudo access and we give them access we’re not going to require these are to enter a password so we have to edit the pseudo configuration file using VI sudo and go ahead and scroll down to where you find the user definitions and we’re going to add a line for the deployer like this and save the file all right now we should be able to log in as the deployer and run sudo commands without the password so let’s just test that real quick let’s su 2 deployer now let’s just do a dummy sudo command cool all right zeinab has required next thing we need to do is copy their setup SSH keys and how SSH keys work is on the system you want to log in from you take that key and add it to the computer you want to login to so this to work I’m going to open up a criminal on my my Mac here and so what I’m going to do is take the key I have on this computer and add it to the authorized keys file on this computer over here I already have a key generated but if you don’t you can run the ssh key gen command to do it and it will guide you through the process so how I’m going to do it is i’m going to show you where the keys are first they’re inside the dot ssh directory and you can see right here i have my public key and inside here is some plain text or encrypted text that we’re going to paste into a file on here called authorized keys too so for this to work I need to copy the contents of this file and paste it into a file on the Fedora system so i’m going to cat the contents and put it on my clipboard now over here I need to create the files for this to work so the first thing I have to do is create the dot SSH directory in the file in there called authorize keys to and for this to work you need the permission is to be set correctly on in that directory and the files inside that directory the only user who should have access to the dot SSH directory is the owner there should be no group permissions and no other permissions so we’re going to create a directory and

then set it to mode 700 so just go ahead and make the directory and then touch the authorized keys to file and then change the whole thing now go ahead and open up the authorized keys to file and paste the key in there now if you haven’t installed SSH already depending on your installation options you can install it it’s real easy just use yum install sshd I think I already have on this computer so I mean it will report back nothing to do or I think it’s just SSH my mistake but just make sure SSH is started okay now we should be able to log in from the host computer over here to this one but first we need to find out the IP address of the fedora system so you can just use ifconfig if I not the IP address and you can see right here it’s 92 to 168 11 12 so go ahead and ssh as the deployer into one ninety two dot one sixty eight to 10 11 12 and if you haven’t logged in before we’ll ask you to accept the RSA key fingerprint is hit yes and boom you’re in so now we’re going to follow through using this shell here for us the time easier to work with this window the windows inside the virtual machine so the next thing we’re going to do is set up postgres and this process is pretty easy on fedora and you can install the group package to install the server and then we’re going to initialize the database start the server set the root user password and configure PHP pgadmin so the first thing we need to do is install the post grass SQL group and you can do this throughout a group of salt often for young so go ahead and stall it I’ve already installed it on this computer so it’s not going to do anything but if you have to and will there’s no interactivity you just run it and the packages will be installed so the first thing we’re going to do is run the initializer initialization routine and this is part of the emit service so you can run it through service as well and what it’s going to do is create the initial database files that we need to start using our database oh my mistake I have it installed before on this computer so I need to go ahead and reset it so I’m going to pause it real quick and we’ll come back when that’s fixed sorry about that i had it installed i needed to go over with the directory so i’m going to go ahead and rerun the service again and this may look like a prompt but what it is is actually just running in the background so you don’t need a hit enter it may take a minute but just wait and it will say okay when it’s done alright so now then we need to do is start the service alright so now we need to set the set the password for the user postgres and there’s two different things going on here there is a user on this system called Pro stress which runs the postgresql database on the computer but there’s also a user called postgres in the database so you can log into your installation as postgres and what becomes complicated here is the postgresql client authentication settings are much more complicated what you might be used to one say for example

my sequel so you can’t just login right right away to the postgres account so what we need to do is become the postgres user on this computer and then start a SQL terminals or even set the password so to do this we’re just going to use sudo to become postgres okay now we’re in Postgres as a shell so we can start a postgresql terminal similar to a mysql and we’re going to use the template one database which is the default generate default database generated from the amid DB command so just go ahead and connect and now right here you can tell that you’re connected and it’s ready to accept quarry’s so we’re going to use a quarry here that says update the password and put your own password in here but remember this is the password for your database user and I’ll just use a dummy password here and don’t forget the semicolon it’s very important if you don’t use this on my call and the command won’t get executed it caused me a few headaches and the past so just go ahead and hit enter and you can see ultra rule knowing that it worked and at this point you can exit the show if the shell by doing bag / q and then exit again all right now we are ready to go and install PHP PG admin and there’s a handy yum package for this you can just install and it’s PHP capital P admin just go ahead and install it and that will create a virtual host definition for the PHP the PGM in program but before we can do this we have to set the postgres client and off dication settings before how it worked is you needed to you’re only able to login as the user you were in the shell but since we’re going to be set up a remote administration sort of like PHP PG admin we have to set it so other users can log in using their name and password so the file to do this is pH or PGH be a comp which is a client can climb off of the occasion configuration file and it’s located inside a data directory so what we’re going to do is open that file up instead it to say that users must enter your password to login so that’s in here it’s in live HD SQL data PGH should be a calm i’m going to scroll down here to where everything is that you can see here right here there is different methods of office dedication and we’re using ident before but now we’re going to use md5 and as you can see there’s many different options if you want to learn more about this i highly recommend you check out the documentation because they can be pretty confusing and there’s a lot going on here and if you want to learn about it the only way you can that they’re waiting the dogs so here down here we have the configuration and we’re going to just change this down to md5 okay save this file and then reload the service I have to restart it I can’t recall the fans that are safe and sorry okay now at this point since we’ve set the password for postgres in the database if I set the password for the postgres user on the system so if you wanted to log in from the terminal like this you’d have to become postgres first and by default the postgres user doesn’t have a password so you get this with the password now this will be different than the password you use to log into PHP PG admin so just keep that in mind okay now

we are ready to go ahead and fix up PHP PG admin so now we would be able to log it we could check to see if PG admin of working so here on the whole system let’s open up Firefox here and check out PHP pgadmin so localhost PHP p GN min oh my mistake we have to make sure that apache is started alright I’ll patch you started let’s go back alright and you can see our server over here you can try to login as postgres using the password you entered from the SQL shell and it’s going to say a login disallowed for security reasons this is expected because out of the box PHP pgadmin does not allow you to login as postgres or root or administrator or similar names like that so we’re going to go ahead and edit the PHP PG I’ve in a configuration file which is in the in cetera directory and we’re in sproul down to the point where it says extra security and we’re going to turn this off so we can log in as postgres and logging in again boom okay now we’re in so we could go ahead and create our user that we’d use for the application in the databases but we’re going to hold off on that for a sec and go ahead and get Ruby set up but there’s one thing I forgot to mention if you’re having products HTTP make sure you have the firewall allowing HTTP traffic so because the next thing we’re going to do is make sure you can access if remotely so down here at the bottom ww make sure this is checked because if not you won’t be able to access your application in the future so the next thing we’re going to do is make it so we can access PHP PG I’m in remotely so to do this we have to set an allow from directive allowing I or IP address to access that URL and if you look in here will show you the virtual host definition for PHP pgadmin that’s in its a territory as well and we’re going to go ahead and add our IP address so we can say allow from one ninety two dot one sixty nine 1106 and if you’re not familiar with what your IP addresses you can just open up a new terminal on your health system and do I have config as well and you can see right here here’s my address so go ahead and save this and reload Apache now from a host system here let’s head to the address and now we should be able to access it and login as usual but the next thing we’re going to do is set up Ruby Ruby gems and passenger so to do this you’re going to use the group it’s told again to install all the various Ruby packages and then install Ruby gems and then the passenger gym so the first thing we’re going to do is install the Ruby group and i already have package installed online on the system it’s a pretty big package it may take a little while to download and install but there’s no once again there’s no interactivity you just install it and come back to it later then go ahead and

install ruby jens and I once again I already have installed on this computer so the next thing we’re going to do is install gem cutter using the gem demand and we’re going to need to install a gem to allow our rails application to communicate with postgres and could do this first to have installed the postgresql development package will give you the headers because the postgres gem has to be compiled with against the headers so go ahead and install the postgresql devel package and again I already have it installed and then we’re going to go ahead and install the PG Jim and as you can see it’s compiling and that’s all the documentation so the next thing we’re going to do is install the passenger gem which will give us the command to generate the Apache to module which we’ll use to run our application through Apache so you can just install that gem like normal so after this is done we’ll be able to run the command passenger install apache2 module which will compile and generate the module which we can load into Apache but with some for sightedness that I have it’s going to prompt us for some packages to install and I have them right here if you don’t have these packages installed when you run the command it will just tell you that you need to install them and tell you how to install them it will essentially just give you this command I’m gonna go ahead and run out beforehand but once again I already have these packages and sold on the system so what we need to do now is generate if you mod rails module so we’re going to do use the passenger install apache2 module to do it and it’s just a guided process you don’t have to do anything besides hit enter so it you know and we’ll give you a little wizard is hit enter I’ll go check the required software it’s what i was talking about its own i already have the things but if you don’t you’ll tell you what packages to install and how to install them it’s going to go ahead and compile this and I what’s going to do is spit out some Apache configuration stuff that we can use hello the module so once that’s done we’re going to just copy that and put it inside the comp d directories a configuration file to load the module and see here is the configuration stuff I’m just going to copy this and then leave that to its to the installed modules it enter and we’ll give you a sample virtual house definition that will come back to later so now what do you do is go inside the Apache configuration victory and create this configuration file and I already have it here from some testing I did it’s essentially the exact same thing I was in here i’ll just show you it just in

case and it’s just the same thing for might there i just copied and pasted it into this file into passenger com make sure it’s a dog comp file so Apache will load it by default the Fedora Apache configuration so load all files inside compte with a comp extension so go ahead and restart apache but before we can wrist start apache there is one very big potential problem that we have to talk about if you’ve used fedora before you may know about SE when X and the way passenger works is it wants to create some files inside the temp directory which selinux is going to block so important note for the rest of the screencast that I’m going to disable selinux only because it makes the purpose of both strating the deployment process simpler but if you’re going to deploy this on a intense production machine you’ll have to learn about selinux and if you do already know and are familiar with selinux i don’t want to go and tell you how to set up your own policies because it’s very dependent on your on your application and your server in general so you can just turn selinux off lazing set and force 20 and you know from personal experience I know that s si Lang says calls me major major headaches in the past so now we are ready to start to start up to restart apache with the passenger module okay so now what we’re going to do is go on and get ready to deploy our application so we have to do is create a directory that the deployer has right well has basically almost full control over and also that directory should have some web server access so what we’re going to do is create a new dot or directory inside the document root cool clock apps and will give the deployer full control and we’ll also make that a member of the Apache group so maybe in the future if the web server needs right axis it’ll be easier to do that but in this screencast we’re not going to go and we’re not going to set anything like that up but if you do in the future you can use Capistrano task to easily maintain file permissions for example if you needed to if you had an application that had image uploading and one directory inside public needed to have web server access you could easily set the capture on task to always ensure that that directory is say group writable by the Apache group so the first thing we’re going to do is create that directory and then set the permissions and we’re going to move make it in HTML apps then we’re going to change the ownership to deployer and apache all right now before we can go on to the next step we’re going to use get as our source control management and we’ll need to install get on the server here when we actually go ahead and deploy the application go ahead install it all right yeah I think I already have an install this computer as well yeah so you know continue on after that’s done so now what we need to do is check out our code I’ve created well I have created I’m going to use the code from a previous article idea for net test the 06 article with the bookshelf application and you can find it here on my github which will be linked in the article itself and it’s basically an exact copy of the bookshelf code but I didn’t want to mess up that repository because we’re going to need to change the database configuration so you interest use the public get URL and clone that on to your system I already cloned it and have my directory open so

go ahead and open open that up let’s see so on your local system you just want to open it with textmate okay so now what we need to do is we need to get this ready for Capistrano and Kempster on out as a gem you can install just like most other Ruby things so go ahead and install it on the computer you want to use it from this is important it’s not the server it’s the computer you want to deploy from so now that campus right now is installed we can go ahead and use this command called kappa phi which will create our cap file inside the config directory so what you want to do is see right here i am inside the project directory you want to run the command called kappa phi and use the dot to represent this directory you can see right here that has created these new files for us and you can see right here config deploy and here is we’re going to spend all the time Morgan inside this file and it’s got some bare bones stuff that work on the configure the first thing we’re going to do is set the the application and it’s will be in the name of your application so I’m going to call it a net test demo and what this going to what this is going to do when you deploy is create a file structure length of this so that directory would be created on the on the server and we’re going to need to pay attention to this later because we’re going to use it in our virtual host definition so and then repository they say use you can use a public URL for my code if you want to but important to note that if you’re going to deploy from a private repository you’ll have to have as it says or SSH key set up so we have the generated key on the server and add that to the authorized keys on your your github account so keep that in mind when you’re absolutely pulling our applications let’s go ahead and copy that address all right so then we have this and sit the SCM to get was delete these comments here and here we’ll have to set the IP address for the server and stuff like that so and that’s different IP addresses for your your web your application and your database servers for example your web server might serve up static content like you know images or videos or something like that or and then your app this one runs your application and then you may have different database servers but for but you know for most situations we use about the same thing just go ahead and put the server IP addresses the server IP address and for these and a copy this okay then down here we can see that there’s some stuff commented out a necessity for using you know mod rails uncomment this so what we’re going to do or passenger is uncomment this stuff and we’ll just change some default tasks now at this point we’re almost ready to copy our code to the server but we needed to have more configuration we need to tell catalyst round that it’s going to be

using the deployer and so you can use the set command to set Capistrano variables just set it to deployer okay now we have to tell Capistrano where to copy the code to and we’re going to use the deploy to variable for that one and just copy it from the show notes here and now what this means is copy it to the application directory which is the directory set up before and inside here application refers to this setting here next thing we’re going to do is tell it like default that it doesn’t need to use sudo because the deployer has access to the direct leader and be using now at this point we’re almost ready to copy the code so let’s just make sure that everything is in place first so save this file but now let’s go to the command line here and to run your kept silent as it’s just according a rake task and you can find your tasks outpacing cap T which will list all the tasks and so the first thing we’re going to do is look go through these task and see which ones we’re going to use first deploy is the default task but we’re not going to use that yet first we have to use deploys setup which will create the structure inside a deploy to folder and Capistrano does some some cool stuff want to add when it goes about and does this one thing you can notice here is that it has these tasks for rollback so each time you do another deployment and creates a new folder and there and its siblings it to the current directory so you can use and roll back your applications if something happens with the deployment you can easily roll back I haven’t do really anything else besides running learning this task so let’s go ahead and run the deploy setup you have to do set up first because it do create the application structure you can’t just deploy it because we’ll try to copy code you can use deploy cold which essentially runs deploy set up and then and then the deploy but we’re not quite ready for that our setup will be slightly more complicated so let’s go ahead and do the setup task so the use of cab command and due to play set up and you can see here and created a whole bunch of stuff in there so let’s just go ahead and look at this directory for fun so we have in here we have the recent the releases directory and the shared directory so each time you approve each time you do deploy is going to create another directory in here with name is going to be a timestamp with the code from that a deployment and most interesting or most important folders this file right here shared now like for example if you are uploading images you’re going to want that be persistent through every deployment like for example user upload to one image and then you deploy some updated code you don’t want them to lose that image so if you look inside shared there’s some other other directories and one of them is a system which contains the public directory which i guess is created when you actually deployed but so there’s some your some things went on here that you need to pay attention to I wished only once you only affect us now so now we’re ready to go ahead and actually copy our code over to over to the over to the server so they just use the cap deploy and what’s going to do is check out the

code from the repository and then put it on the server but if you’re watching this and you’re familiar with the being of the rails application process you know that on the server we haven’t installed the rails gem yet we haven’t even configured our database or our gems I just wanted to give you a sneak preview about how it would work so the first thing we have to do is go back to the computer the server and install the rails gem and this is going to take you know a minute while rails installing the documentation and all the different gyms it has to look over here and talk more about the Capistrano process so what we need to do now is first set up our our dead apart database so let’s open the database ya know file and set our our connection property so what we haven’t set up the user of the database yet we’re going to go and do that next so let’s just write down first what we’re going to use and let’s just call it that Tut’s demo host localhost username net tux and password just call it that Tut’s and right here you can see that database password be extorted plain text in repository you know if that’s a problem for you and a usual is you can use some Ruby code here if you wanted to say for example store it on a file in the whole system make it read the file and paste it in here or for example on Heroku you can use files and to set environment variables enactment access and environment variable here so for example you can use an environment variable to set your s3 bucket keys which you don’t want those being public and then just reference them through the environment command also save this file here and then we’re ready to go into PHP pgadmin and create you know all this stuff let’s go back and create it so let’s login let’s create a new roll call it net tats password same password use in the configuration and let’s give it these privileges make sure it can log in and then create it let’s create a new database and when I say it was ok next test demo ok new database that does demo and you use utf-8 now let’s go ahead and set the privileges alter it make it on by med tats and go ahead and do the privileges and just grant it all privileges all right so now we should be able to log in as net tubs and do our stuff the database so Capistrano comes with a rake task is set up remote database just go back to the cap tasks here and right here you can see cap deployed migrate which is similar to the rig DB my gray command but only uses the production environment so let’s run run that task and cancelled it because health is going to work as first we have to make sure that well the problem is that this local change we made right here isn’t in the source control so we have to commit commit this change and then push it to the repository let’s just add all those

files just four short cut once committed and let’s do get push alright and now we can go ahead and deploy our new code with our database connection information with camp deploy and then we’ll go over here and I’ll illustrate what was doing let’s go back so now as you can see we have a deployment we have a current director which is a sibling to somewhere in the releases directory see right here through this let’s just go on their releases you can see we have two different releases in their time stand so we can roll back between them now that we have it what’s our database connection code on the server we can rather to put with the migration task now went ahead and created all you know our dealer our migrations now we’re almost ready to create or to start warning application there’s two things we have to do next or before the first thing is we have to make sure that the gems required for the application or assault on the host system now we could go over to you now the computer over here and run the rake task install the gems but that doesn’t really work as well what the benefit of using Capistrano and keeping your cap file as you can use the same cab file to potentially deploy your application on different servers over and over again without having to do any you can keep the whole process dry or do not repeat yourself so we’re going to write a little cap task to install the gems for us so let’s go back to the cab file here we’re going to make a new task to install the gyms and before you do a task you always use that described function this it installs required gyms and then let’s just call it gems and rolls app do and then we’re going to take a little snippet of code that I have right here and what that’s going to do is change directory into the current release and then use sudo to install the gems for the production environment and we want to do is this task should really be part of the server setup process and what’s next about to have a strong on so you can use it a whole bunch of different callbacks to really customize the workflow so for example if you want to do a cool deployment of its application we do the setup thing which would then also call the gems to absolve acquired gems so we can just use the after a command to set up our callback so to do after deploy setup deploy gems now if you’re wondering where this came from you can see that we’re in the deployed namespace so this task here is going to be a in the deploy namespace so now we can go back to our file or terminal here or local machine and run the cap task and actually write new task if you always check to make sure that they’re there as you can see right here cap deployed gems installs require gems if you had left out this function right here it would not show up in the list so if you want to see everything you have to seek use the verbose flag so go ahead and run that and it’s going to go ahead and still all required gems oops my mistake i forgot to edit one

configuration you must have a TDY to run sudo so go ahead and set the default run options using this little snippet and just paste it into the cab file and just go ahead and rerun it and this is where I giving the deployers to access without the password is very handy otherwise it could get complicated you getting the path so here you can get annoying especially if your deploy process is long you don’t want to have to sit there and babysit to make sure yet to put the password in and I’ve already actually installed the gems that’s why this command hasn’t reported anything was installed but if you hadn’t you would see your list here so now we’re about ready to get our application going but just I want to illustrate to you that this car gems command is going to be called after the set up command so we can do cab deploy and if you already set up it’s not going to do anything the orders are going to be created but we should see our set up our gem command being called see right here drink call back for to place it up executing deploying gems all right cool now we’re ready to get our application installed or configure it with Apache so the first thing we need to do is create a new virtual host which points to our application so what we’re going to do is go back to our ssh connection here and we’re going to make a new directory called v hose d and slide the Apache configuration directory let’s just go into the etc Apache directory let’s make a new directory and then touch that touch demo dot V host and I have it here I’m going to copy and paste it’s pretty much right out of the manual I want to go ahead and talk about this here so first thing you’ll notice is document root and it’s important that document wrote has 2.2 public otherwise you will not get your application function correctly and notice here we have a current so point to our current release and right here we have the dura configuration options and these have to be there especially no multi views this is a mistake we want that out of there we want to fall siblings and server name net touch demo com isn’t actually a real domain name I have it in inside my hosts file for this example you know you would naturally replace this with whatever your domain was I want to go ahead and fix this up it should be net touch demo calm and go ahead and save that file now we need to tell apache to include all the files inside the V host d directory of sorts edit the Apache configuration file is down at the bottom we’re going to add one little line to include all the files inside the V host ID director beginning and dot V host see the file then let’s reload it restart apache alright now let’s see if we can get to our application and that’s going to be accessible from the root URL let’s head back to our browser and head to net touch demo com before we go to the application I’ve just realised women equipme steak as you can see here we have the net touch dental file not inside the beholder

creaks just remove that and there and then run 8 gb /s will check the syntax and show you your virtual house and go ahead and reload Apache all right now let’s see if we can get to our application and voila we have your my basic application here as you can see the first time you go to your application sometimes it takes time for Pastner to spawn on the process that needs to come do all this but once your application it’s going it’s usually pretty snappy depending on your server so now we can go on and take advantage of some other stuff and Capistrano so if you look here let’s go back to a file here and let’s just check this out or some other tasks and right here are two very handy commands this will put up a maintenance page or remove a maintenance page so whenever somebody tries to go to your application they’ll get a maintenance page over example of redoing some you know maintenance on the side you’re updating a code you can go on and use these commands to easily turn on and off your website while presenting a decent page to your users so the first thing we have to do is do some Apache rewrite rules saying that if the maintence file is there to rewrite all urls to a new address i want to just take a snippet here and we’re going to have to add this inside our virtual host definition I’ll just edit that file again and that touch and we’re going to go ahead and paste this snippet in here format this little better which basically says if the maintenance page is there rewrite all URLs to that address let’s go ahead and save this file got a zoo right now reload Apache as usual all right now let’s run this task here that cap deployed is able task play web disable this is going to create a maintenance page for us now let’s go ahead and as you can see here it also gives you the snippet to add if you don’t know it mine’s a little different but it still works and as you can see here it did a SFTP upload to the beta’s page so now if we go to our applications URL we should see a maintenance page and you can see the system is down we back shortly now this is pretty handy now you can just turn it on and turn it off I haven’t do anything fancy besides the entering this one command alright but now I’ll be good so we all we disabled it let’s go back to our website and make sure we can still get back to it oh they do do do do well web enable alright let’s head back and here we are our applications working so now what we can do is begin these callbacks again to take advantage of of the tasks like for example when you deploy you want the website to be have a maintenance message because the server will be doing something else so we can

just go ahead and edit the cap file to do or you call back so we say before deploy deploy web disabled and then after deploy deploy web enable so now we can save this let’s run deploy again to make sure that this is all working properly and you can see right there it called the web disabled it’s doing stuff and then it restored the application and called the web enable again and at this point our application has been updated and it’s called the race start thing which was just going to restore our passenger after every single time by touching restore text option and that’s pretty much a simple basic working deployment you can easily take advantage of some of capistrano other functionalities like executing over multiple service at the same time or doing you know multi-stage deployments but now our application is running and you can go on and you know show it to your friends or your potential clients I hope that they’re watching this screencast you learned something about reels deployments and somehow maybe it’s been you know demystified I know it can be pretty confusing and there’s a lot of moving parts but when you get down to it it’s really not that complicated and it can be very easy when you use the right tools but you know some notes to take away from this is you know this is very basic setup of postgres and apache if you’re you know very serious about selinux you can go and read on how you can create a directory with socket creation privileges and you can you no further lock down your postgres insulation but for just basic stuff this works pretty easy and you can install many many rails applications on passenger very easily just by copying that virtual host but I hope you guys learned something and thanks for watching my screencast if you want to find out more about me you can check out my website I am calm or follow me on twitter at ad man 65 thanks