Skip to main content

SVN - Version control system on Amazon EC2



There are number of hosted SVN providers who offer hosting services along with add-on services like project management, bug tracking etc. If your requirement is purely to host the version control system we may end up paying little bit premium for the add-on services. The charges tend to increase when your storage requirements increases. You may compare the prices offered by Unfuddle and Beanstalk. If your storage requirement is about 10 GB and you have would like to install your own SVN server, you can save significantly by going for Amazon EC2 micro instance. I detailed the steps below to get your SVN server up and running.

1) Go for reserved Amazon EC2 instance on a long term plan ( 1 year/3 years). Choose micro instance that costs about $54 annually and a monthly recurring fee about $7.

2) Launch new instance from EC2 tab of Amazon web services customer portal.

3)Choose Basic 32-bit Amazon Linux AMI and Continue to next option.

4)

In the above screen choose Instance type as "micro". If you opted for a "Reserved Instance" make sure you select the "Availability Zone" matching the zone you selected for purchasing "Reserved Instance". Further steps in the above screen will guide you to complete the process.


5) Once your Amazon EC2 instance is up and running you have to create a keypair to allow access from SSH terminal or Putty from a windows PC.



The option in the above screen lets you create a keypair and can be downloaded locally as yourkey.pem file.

If you choose to use Putty you may find this link very useful.



6) Once you launch your terminal, login as "ec2-user"

7) You need SVN server software and Apache webserver to access SVN using http.

Install Apache.

> sudo yum install httpd

> sudo service httpd start

To test the apache from your browser.

- check the public dns name of your ec2 instance. This is typically of the form ec2-xx-xx-xx-xx-xx.compute-1.amazonaws.com

You may type this url to check your running version of apache.
By default it is not accessible due to certain security permissions. You have to enable access using "Security Groups" under Network & Permissions.



Create a new inbound rule as shown in the following picture. Choose HTTP as a New rule using the tab "Inbound".




Access the Apache server with the URL mentioned in the beginning of this step 7.

8) SVN setup

Detailed step given in the link below.


Comments

Popular posts from this blog

Grails - cross-field Date validation

Often we run into domain classes with date fields. If the domain class has two datefields, startDate and endDate, and the rule for a valid combination is "endDate to be greater than startDate", how do we handle? I listed below two of the options, either using domain level constraints or using the domain classes. Option 1: Using domain constraints. Let us take a sample Grails Domain class class Student{ String name String school Date startDate Date endDate } Add the following constraints to enforce validation rules where name, school, startDate cannot be blank and endDate if present should be greater than startDate.

Implementing advanced sort in Grails

The "list" pages generated by inbuilt scaffolding/template features of grails have pagination and sorting features. However, if the domain object displayed in the list is a nested object having another domain object as a property, you may notice that sort is not enabled for that field. Boiler plate code for the header of the list is shown below. As you would have noticed few columns have sortable columns automatically generated by Grails command, generate-all or generate-views. The properties 'partyAccount' and 'bankAccount' in this sample are domain classes nested in the domain class 'partyTransaction'. We could convert them to sortable columns by using the tag g:sortableColum

Grails - Querying complex associations

Criteria class allows performing complex searches on grails objects. There are number of shortcut methods for performing queries but these methods have limitations in terms of number of conditions used in "where clauses". Traditional sql "joins" are not possible as shown in some of the Grails "Finder" methods shown below. Sample 1: def list = AccountTransaction.findAllByCompanyCodeAndVoucherDateBetween(branch, fromDate, toDate, params) Sample 2: def list = AccountTransaction.findAllByCompanyCodeAndVoucherDateGreaterThanEquals(branch, fromDate, params) Sample 3: def list = AccountTransaction.findAllByCompanyCodeAndTransGroup(branch, group, params) "params" contains attributes related to sorting, paging etc. It is very easy to use finder methods but when you want to filter objects by more conditions we need to look for alternatives. For understanding the relationships used in this sample, I listed the grails domain classes. class TransactionTyp