## PGA Installation

<b>Pick your OS...</b></br/>
[<button type="button" style="color:#f2f2f2;text-align:center;font-weight:lighter;background-color:#2481b9;width:160px;border: 2px solid #2481b9;border-radius:4px">Cent OS</button>](#headPGACENTOS) &nbsp; &nbsp; &nbsp;
[<button type="button" style="color:#f2f2f2;text-align:center;font-weight:lighter;background-color:#2481b9;width:160px;border: 2px solid #2481b9;border-radius:4px">MAC OS</button>](#headPGAMAC)  &nbsp; &nbsp; &nbsp;
[<button type="button" style="color:#f2f2f2;text-align:center;font-weight:lighter;background-color:#2481b9;width:160px;border: 2px solid #2481b9;border-radius:4px">Ubuntu OS</button>](#headPGAUB)  &nbsp; &nbsp; &nbsp;

### <a name="head1234">General Prerequisites</a>
1. A Unix or Unix like operating system.
2. A web server (e.g apache web server) with PHP 5.4 or higher. Make sure to have enabled mod_rewrite module in httpd.conf file and enable PHP SOAP extension.
3. Composer
4. MYSQL database (Required if the user is hosting Airavata on his own. To communicate with hosted Airavata this step is not relevant)
5. MCrypt PHP extension
6. Enable OpenSSL PHP extension
7. Follow instructions given in links to install the prerequisites based on the OS.
	- <a href="http://www.dev-metal.com/install-laravel-4-ubuntu-12-04-lts/" target="_blank"> Ubunutu prerequisites</a> 
	- <a href="https://www.digitalocean.com/community/tutorials/how-to-install-laravel-4-on-a-centos-6-vps" target="_blank"> Cent OS prerequisites</a>
	- <a href="http://sangatpedas.com/20140219/installing-laravel-osx-mavericks/" target="_blank"> MAC prerequisites</a>
8. Important: Do not need to install Laravel. You can skip the steps given on the links
9. WSO2 IS server

### <a name="headPGACENTOS">PGA  Installation on CentOS 7</a>
#### Pre-Installations
1. Install apache 
<pre><code>Yum install httpd</code></pre>
2. module_rewrite is auto enabled in apache version in centos7. Its in /etc/httpd/conf.modules.d/00-base.conf file and the line is LoadModule rewrite_module modules/mod_rewrite.so
3. Enable php using <pre><code>yum install php-soap</code></pre> Could be be it is already enabled in CentOS7
4. Install php using  <pre><code>yum install php</code></pre>
5. Configure Selinux to allow outbound connection from web server;
<pre><code>setsebool -P httpd_can_network_connect 1</code></pre>
5. install composer
<pre><code>yum install composer</code></pre>
6. Install php-mcrypt <pre><code>yum install php-mcrypt</code></pre>

#### PGA Installation
1. As the document root (var/www/html) take the git clone https://github.com/apache/airavata-php-gateway.git 
2. Change the cloned folder name to your desired folder name(e.g.: airavata-php-gateway). This will carry sub folders for the gateway
<pre><code>cp - R airavata-php-gateway /* .</code></pre>
3. In the gateway folder do a <pre><code>composer update</code></pre>
4. Create a directory in var/www/ for user data (E.g.:gateway-user-data). 
5. Make this user data directory writeable by Apache httpd by making the following
SELinux update as root:

        chcon -R -t httpd_sys_rw_content_t /path/to/gateway-user-data

6. Copy ./app/config/pga_config.php.template to ./app/config/pga_config.php 
7. In pga_config.php change airavata server, change;
	-  Airavata Client Configurations
		- 'airavata-server' => 'localhost’,
		- 'gateway-id' => 'php_reference_gateway',
		- 'experiment-data-absolute-path' => '/var/www/gateway-user-data',(Here user has to create the experimentData folder in var/www)
		- 'gateway-data-store-resource-id' => '' (This is the ID of the gateway preferred storage resource)
	- Portal Related Configurations
		- 'super-admin-portal' => false, (User has one gateway and need to use it to configure the compute resources, storage resources, etc...)
		- 'admin-emails' => ['airavatatest100@gmail.com'],
		- 'portal-email-username' => 'airavatatest100@gmail.com',
		- 'portal-email-password' => '&airavaxxxxxx',
	- WSO2 Identity Server Related Configurations
		- 'tenant-domain' => 'prod.airavata', (Provided by the Gateway Admin to WSO2 IS at tenant creation)
		- 'admin-username' => 'Gateway-Admin', (Provided by the Gateway Admin to WSO2 IS at tenant creation)
		- 'admin-password' => 'Gateway-Admin-Password', (Provided by the Gateway Admin to WSO2 IS at tenant creation)
		- 'oauth-client-key' => 'G1khg0I0Xf444rereggrteret', (Generated by WSO2 IS at tenant creation)
        - 'oauth-client-secret' => 'G1khg0I0Xf444rere', (Generated by WSO2 IS at tenant creation)
        -  'verify-peer' => true, (Set this to false if trusted server certificates are not used. Refer <a href='http://wso2.com/library/knowledge-base/2011/08/adding-ca-certificate-authority-signed-certificate-wso2-products/' target ='_blank'>Adding CA Signed Certificate</a> on adding trusted certificates.)
8. Give writing permission chmod -R g+rwx app/storage/
9.  Make sure SElinux comparability of airavata_php_gateway folder. For that give 
<pre><code>chcon -Rv --type=httpd_sys_content_t airavata-php-gateway/</code></pre>
This is to make sure the gateway folder is readable by http
10. ls - lZ shows the SELinux context. After the above chcon command do the same for storage folder as well 
<pre><code>su -c "chcon -R -h -t httpd_sys_script_rw_t [fullpath]/app/storage”</code></pre>
This is to make sure the storage folder is writable.
11. Configure firewall to allow http and https
	- Check existing configurations using <pre><code>firewall-cmd --zone=public --list-services</code></pre> 
	- To open access  for http <pre><code>firewall-cmd --zone=public --permanent --add-service=http</code></pre>
	- To open access for https <pre><code>firewall-cmd --zone=public --permanent --add-service=https</code></pre>
	- To get above rules applied <pre><code>firewall-cmd —reload - refresh</code></pre>
12. Locate httpd.conf file in location /etc/httpd/conf/
<br> Make sure below 'Allow Override' has 'All' option.
<pre><code>
    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride All 
</code></pre>



### <a name="headPGAMAC">PGA  Installation on MAC Yosemite OS</a>
#### Pre-Installation 
1. Follow instructions in <a href="http://coolestguidesontheplanet.com/install-mcrypt-php-mac-osx-10-10-yosemite-development-server/." target="_blank">MCrypt Installation</a> for PHP on MAC
2. First check whether your MAC has Apache installed. To check availability;
<pre><code>apache ctrl start</code></pre>
3. To stop running Apache use;
<pre><code>apache ctl stop</code></pre>
4. Once above is completed follow the <a href="https://web.archive.org/web/20150507101703/http://sangatpedas.com/20140219/installing-laravel-osx-mavericks" target="_blank"> Installation Steps</a> given for
	- Configuring Apache
	- Installing Composer (Use sudo commands as and when required for installation)
5. To install Composer use 
<pre><code>curl -sS https://getcomposer.org/installer | php</code></pre>
6. Then move Composer using 
<pre><code>mv composer.phar /usr/local/bin/composer</code></pre>

#### PGA Installation 
1. Go to cd /Library/WebServer/Documents
2. Take a copy from GIT using 
<pre><code>git clone https://github.com/apache/airavata-php-gateway.git</code></pre>
3. Navigate to PGA folder
<pre><code>cd /Library/WebServer/Documents/airavata-php-gateway</code></pre>
4. Make sure the storage folder is writable by all users
<pre><code>sudo chmod -R 777 app/storage</code></pre>
5. Move out of app folder and give;
<pre><code>sudo composer update</code></pre>
This will take few minutes
6. You might get an error like this
<pre><code>
Mcrypt PHP extension required.
Script php artisan clear-compiled handling the post-update-cmd event returned with an error
[RuntimeException]
Error Output:
</code></pre>	
7. Install mcrypt installation 
<a href="http://coolestguidesontheplanet.com/install-mcrypt-php-mac-osx-10-10-yosemite-development-server/" target="_blank">MCrypt Installation</a>
8. (Optional) Go to [PGA_HOME]/app/config/pga_config.php and change the configuration to match your settings
9. Enable Apache extensions (mod_rewrite module and PHP SOAP extension)
<pre><code>sudo vim /etc/apache2/httpd.conf</code></pre>
	uncomment #LoadModule rewrite_module libexec/apache2/mod_rewrite.so
	uncomment #LoadModule php5_module libexec/apache2/libphp5.so
10. Now issue composer update command
<pre><code>sudo composer update</code></pre>
11. Restart the web server
<pre><code>sudo apachectl restart</code></pre>

#### Link Airavata and PGA
1. Once the PGA and Airavata are downloaded and locally running; in PGA app/config folder locate the file called pga_config.php.template
2. Copy the located file and name it as pga_config.php 
3. In the newly copied file find two configurations for 
	- Airavata host
	- Port
4. Change above configurations
	- Airavata host = localhost
	- Port = 9930
5. You are all set to run your own PGA!
6. For steps to register resources, applications, etc… use <Link to admin guide>
7. For steps to create projects, experiments and monitor them use <Link to end user guide>
IMPORTANT: In places where the hosted PGA link is used please replace by your locally running PGA URL.


### <a name="headPGAUB">PGA  Installation on Ubuntu OS</a>
#### Pre-Installation
1. To install dependencies use commands in <a href="http://www.dev-metal.com/install-laravel-4-ubuntu-12-04-lts/" target="_blank">Ubuntu Installation</a>
<br>In the command avoid installing mysql and mariaDB.
2. Enable the appropriate extensions: navigate to php.ini
	<pre><code>sudo vi /etc/php.ini</code></pre>
	- Uncomment the following extensions: mcrypt.so, openssl.so, and soap.so. If they do not exists add them as extensions.
	<pre><code>extension=mcrypt.so</code></pre>
	<pre><code>extension=openssl.so</code></pre>
	<pre><code>extension=soap.so</code></pre>
3. Locate httpd.conf file 
<pre><code>sudo vi /etc/httpd/conf/httpd.conf</code></pre>
	- Find 'AllowOverride None' and change to 'AllowOverride All' (Two places to change)

#### PGA Installation
1. The following guide give a sample installation starting from a fresh Ubunutu 12.04 installation. Similar instructions should be used in other operating systems.
2. Update the ubuntu package manager
<pre><code>sudo apt-get update</pre></code>
<pre><code>sudo apt-get upgrade </pre></code>
3. Install Apache
</pre></code>sudo apt-get install apache2</pre></code>
4. Install PHP 5.4
<pre><code>sudo apt-get install python-software-properties</pre></code>
<pre><code>sudo add-apt-repository ppa:ondrej/php5-oldstable</pre></code>
<pre><code>sudo apt-get update</pre></code>
<pre><code>sudo apt-cache policy php5</pre></code>
<pre><code>sudo apt-get install php5</pre></code>
5. You can check the installed versions of apache and php using <pre><code>apache2 -v</pre></code> and <pre><code>php -v commands</pre></code>
6. Install the necessary php extensions
<pre><code>sudo apt-get install unzip</pre></code>
<pre><code>sudo apt-get install curl</pre></code>
<pre><code>sudo apt-get install openssl</pre></code>
<pre><code>sudo apt-get install php5-mcrypt</pre></code>
<pre><code>sudo apt-get install php-soap</pre></code>
7. Install Composer System Wide
<pre><code>curl -sS https://getcomposer.org/installer | php</pre></code>
<pre><code>sudo mv composer.phar /usr/local/bin/composer</pre></code>
8. Activate mod_rewrite
<pre><code>sudo a2enmod rewrite</pre></code>
<pre><code>sudo service apache2 restart</pre></code>
9. Open the default vhost config file:
 <pre><code>sudo nano /etc/apache2/sites-available/default. </pre></code>
10. Now search for “AllowOverride None”  corresponding “DocumentRoot /var/www <Directory /var/www>”
<br>(which should be there TWO times) and change both to “AllowOverride All“. Search for these two lines.</br>
<br>
11. Exit and save with CTRL+X, Y, ENTER.
