Installing a Custom Site from Launchpad
In this tutorial, we will install a custom iHRIS Manage 4.0 site hosted on Launchpad. We will bazaar to download the code as well as discuss the basics on how to modify the code on Launchpad. We are assuming that you are using an Ubuntu Linux machine.
Our first goal is to install the iHRIS Suite 4.0. Then we will download the CSSC's iHRIS Manage Customizations. Next we will create the database and finally we will install the site in our web-server.
Launchpad First Steps
First you should create an account on Launchpad if you not have already done so. We will refer to this account as LAUNCHPAD_USER.
Since we will want to contribute to the code, we will need to create a ssh public key on your Ubuntu machine to add to Launchpad:
sudo apt-get install openssh-client ssh-keygen -t rsa
When prompted, press Enter to accept the default file name for your key. Next, enter then confirm a password to protect your SSH key.
Your key pair is now stored in ~/.ssh/id_rsa.pub (public key) and ~/.ssh/id_rsa (private key). Now you need to upload the public portion of your SSH key to Launchpad. To do this, open in your web browser:
https://www.launchpad.net/~LAUNCHPAD_USER
You will see a place that says SSH Keys with an exclamation point (!) in a yellow circle next to it. Click on the (!) scroll down until you see Add an SSH Key and a text box. We will paste our public key into this text box. To do so type in a terminal:
gedit ~/.ssh/id_rsa.pub
you can now copy the contents of gedit (the public key) into the text box in the web browser. Now simply click on the button Import Public Key
For every computer/account that you use you will need to repeat these steps to create and import a public key.
Bazaar First Steps
First we need to make sure the Bazaaar (bzr) version control software is installed:
sudo apt-get install bzr bzrtools
You may wish to read the five minute tutorial at this point. You should also let bzr know how you are:
bzr whoami "Your Name <your@email.add.ress>"
Join the iHRIS Team
Launchpad uses "teams" to control who can modify code it stores under bazaar.
If you wish to make modifications to the CSSC Customizations, you should join the ihris+cssc team.
If you are working on a joint project, but not the CSSC's customizations, you should create a team in Launchpad and add yourself to it as well as the team intrahealth+informatics. For example, you could create the team ihris+tanzania.
Downloading iHRIS
We will now download the iHRIS Suite from Launchpad using bzr (as opposed to the release tar.bz2 files) to get practice using bazaar.
Below, I will assume that there is only one user using the system, or at least only one user that should be modifying files in iHRIS. This is probably not the "recommended" way of doing things though.
Changing Permissions
We want to make sure we can easily modify files under /var/lib/iHRIS without having to use sudo all the time.
sudo mkdir -p /var/lib/iHRIS sudo chown -R `whoami`:`whoami` /var/lib/iHRIS
Release Code
Now we want to get the iHRIS Suite 4.0 release code from launchpad.
mkdir -p /var/lib/iHRIS/lib/4.0 cd /var/lib/iHRIS/lib/4.0 bzr branch lp:i2ce/4.0 I2CE bzr branch lp:ihris-common/4.0 ihris-common bzr branch lp:ihris-manage/4.0 ihris-manage bzr branch lp:textlayout/4.0 textlayout
These branches will always contain the latest release code.
Development Code
If you wish to work with the development code instead, you should do this:
mkdir -p /var/lib/iHRIS/lib/4.0-dev cd /var/lib/iHRIS/lib/4.0-dev bzr branch lp:i2ce I2CE bzr branch lp:ihris-common ihris-common bzr branch lp:ihris-manage ihris-manage bzr branch lp:textlayout textlayout
These branches will always contain the main development code, which may or may be working at a particular time.
Downloading CSSC's Customizations
Create a directory for Sites
First we will create a directory that will hold all the sites we have on our system.
mkdir -p /var/lib/iHRIS/sites/
We have two choices on how to download the CSSC Customizations. One possibility to download it to install it, but do not want to make any code modifications. The other possibility is to download the code and have it setup to modify the customizations.
Download CSSC Customizations for no Modifications
We can download the CSSC customizations to our site directory by doing:
cd /var/lib/iHRIS/sites bzr branch lp:~ihris+cssc/ihris-manage/4.0-central cssc-central-4.0
You can still make modifications to the code, but they do not automatically get put back to launchpad once you commit.
Download CSSC Customizations for Modification
We can download the CSSC customizations to our site directory by doing:
cd /var/lib/iHRIS/sites bzr checkout lp:~ihris+cssc/ihris-manage/4.0-central cssc-central-4.0
To see why we are doing a checkout instead of a branch, read this. To make sure everything is working OK, you should make sure the following succeeds:
cd /var/lib/iHRIS/sites/cssc-central-4.0 bzr commit -m "test commit" --unchanged
Creating the Database
We will create a database called `cssc_central_4_0` as follows:
mysql -u root -p mysql> CREATE DATABASE `cssc_central_4_0`; mysql> GRANT ALL PRIVILEGES ON `cssc_central_4_0`.* TO cssc@localhost identified by 'PASSWORD';
you should change PASSWORD to be the password you want.
Installing on the Web Server
Let us suppose we want to access the site at the URL:
http://localhost/iHRIS/cssc-central
Linking the Site
First we will need to link to our customized site under '/var/www' as follows:
sudo mkdir -p /var/www/iHRIS sudo ln -s /var/lib/iHRIS/sites/cssc-central-4.0/pages /var/www/iHRIS/cssc-central
Setting the Database
We will need to specify the database and database user/password we are using. To do so:
mkdir -p /var/lib/iHRIS/cssc-central/local cp /var/lib/iHRIS/cssc-central/config.values.php /var/lib/iHRIS/cssc-central/local/config.values.php gedit /var/lib/iHRIS/cssc-central/local/config.values.php
Look for the the following variables and set their values:
Variable Name | Value |
---|---|
$i2ce_site_i2ce_path | /var/lib/iHRIS/lib/4.0/I2CE |
$i2ce_site_database | cssc_central_4_0 |
$i2ce_site_database_user | cssc |
$i2ce_site_database_password | PASSWORD (the password you set above) |
Finishing Up
Just browse to the site at the URL:
http://localhost/iHRIS/cssc-central
to begin the iHRIS installation process.
Modifying the Code
When you make changes to the code, you should do so in small steps with a message about what you have done. This will help other developer's understand what you have done and to help track down bugs. This process is called commiting.
bzr help commit
Ignored Files
Anything in a directory named local is ignored.
bzr help ignore cd /var/lib/iHRIS/sites/cssc-central-4.0 bzr ignore
This is why in the above we copied config.values.php to local/config.values.php and set the database user name and password here. This way, if we are modifying the CSSC customizations we don't need to worry about the user name and password being uploaded to launchpad.
Updating files
If you are working with many people on a site customization, you can get the changes that they have made using the 'bzr update' command. For example:
cd /var/lib/iHRIS/sites/cssc-central-4.0 bzr update
Changed Files
To see which files have changed since the last time someone commited:
cd /var/lib/iHRIS/sites/cssc-central-4.0 bzr status
Committing Code
For instructions see:
bzr help commit.
Command Line Editors
You may find that you will need to be able to edit a file from the command line, for example if you ssh into an iHRIS Appliance. There are several command line editors available that you can use to edit files and you should be familiar with at least one of them.
- emacs: powerful but not userfriendly (Carl's choice)
- vim: powerful but not userfriendly (Luke's choice)
- nano: Nano is by the far the easiest one to use, but is not very powerful and you can only work with one file at a time:
Nano
- to open a file to edit, type nano the_file_name.php on the command line
- to determine the line number you hit [CTRL]-C
- Goto a line number [CTRL]-_
- save files with [CTRL]-O
- search for text with [CTRL]-W
- to cute (delete) a line [CTRL]-K
- to paste the line(s) you just cut [CTRL]-U
- to add syntax highlighting for to nano you can do the following:
sudo nano /usr/share/nano/php.nanorc
and save the following: <source lang='text'>
- Here is an example for PHP
syntax "php" "\.php[2345s~]?$"
- php markings
color brightgreen "(<\?(php)?|\?>)"
- functions
color white "\<[a-z_]*\("
- types
color green "\<(var|float|global|double|bool|char|int|enum|const)\>"
- structure
color brightyellow "\<(class|new|private|public|function|for|foreach|if|while|do|else|elseif|case|default|switch)\>"
- control flow
color magenta "\<(goto|continue|break|return)\>"
- strings
color brightyellow "<[^= ]*>" ""(\.|[^"])*""
- comments
color brightblue "//.*" color brightblue start="/\*" end="\*/"
- color blue start="<" end=">"
- color red "&[^;space:]*;"
- Trailing whitespace
color ,green "space:+$" </source> Now do:
sudo nano /usr/share/nano/xml.nanorc
and save the following: <source lang='text'>
##############################################################################
- Syntax highlighting for XML files
- Author: Josef 'Jupp' Schugt, jupp(a)rubyforge.org
- License: GPL 2 or later
- Version: 2004-02-25
-
syntax "ml" ".*\.([jrs]?html?|xml|sgml?|lhtml|opml|kdevelop|vcproj|glade|xsd|plist|gcs|dtd|dcl)$" "catalog$" "docbook$" color white "^.+$" color green start="<" end=">" color cyan "<[^> ]+" color cyan ">" color yellow start="<!DOCTYPE" end="[/]?>" color yellow start="" color red "&[^;]*;" </source> Now do:
sudo nano /usr/share/nano/js.nanorc
and save the following: <source lang='text'>
- all *js files ( e.g. Firefox user.js, prefs.js )
- Old version
- syntax "jsfiles" "(\.|/|)js$"
- color green "//.*$" start="\/\*" end="\*\/"
- color blue "'(\\.|[^'])*'"
- color red ""(\\.|[^\"])*""
- color brightgreen "\<(true)\>"
- color brightred "\<(false)\>" "http\:\/\/.*$"
- color brightmagenta "[0-9](\\.|[^\"])*)"
- New updated taken from http://wiki.linuxhelp.net/index.php/Nano_Syntax_Highlighting
syntax "JavaScript" "\.(js)$"
- Default
color white "^.+$"
- Decimal, cotal and hexadecimal numbers
color yellow "\<[-+]?([1-9][0-9]*|0[0-7]*|0x[0-9a-fA-F]+)([uU][lL]?|[lL][uU]?)?\>"
- Floating point number with at least one digit before decimal point
color yellow "\<[-+]?([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)([EePp][+-]?[0-9]+)?[fFlL]?" color yellow "\<[-+]?([0-9]+[EePp][+-]?[0-9]+)[fFlL]?"
- Keywords
color green "\<(break|case|catch|continue|default|delete|do|else|finally)\>" color green "\<(for|function|if|in|instanceof|new|null|return|switch)\>" color green "\<(switch|this|throw|try|typeof|undefined|var|void|while|with)\>"
- Type specifiers
color red "\<(Array|Boolean|Date|Enumerator|Error|Function|Math)\>" color red "\<(Number|Object|RegExp|String)\>" color red "\<(true|false)\>"
- String
color brightyellow "L?\"(\\"|[^"])*\"" color brightyellow "L?'(\'|[^'])*'"
- Escapes
color red "\\[0-7][0-7]?[0-7]?|\\x[0-9a-fA-F]+|\\[bfnrt'"\?\\]"
- Comments
color magenta start="/\*" end="\*/" color magenta "//.*$" </source>
Finally, edit /etc/nanorc:
sudo nano /etc/nanorc
to add the lines:
include "/usr/share/nano/php.nanorc" include "/usr/share/nano/xml.nanorc" include "/usr/share/nano/js.nanorc"
and uncomment (remove the #) from the line
include "/usr/share/nano/html.nanorc
if there is one there
GUI Editors
- gedit Not geared to programming.
- geany A small GUI editor geared to programming (sudo apt-get intall geany)