Table of Contents

Setup Performexa

Software Versions

ruby : 2.2.3
rubygems : 2.4.5 
rails : 4.2.4

Install Default developer packages

Add below mentioned both entrys 

127.0.0.1 server url
<serverip> server url

#This was tested in CentOS 6.5.

yum install epel-release -y
yum update -y
yum groupinstall "Development Tools" -y
yum groupinstall "Additional Development" -y
yum install gcc gcc-c++ make wget libtool libxml libxml-devel libxslt libxslt-devel subversion curl-devel java-1.7.0-openjdk java-1.7.0-openjdk-devel git-core openssl-devel -y
yum install ImageMagick ImageMagick-devel -y
yum install gcc openssl-devel libyaml-devel libffi-devel readline-devel zlib-devel gdbm-devel ncurses-devel -y

Add appuser

useradd -m expdev01
vi /etc/sudoers
expdev01	ALL=(ALL)	NOPASSWD: ALL ##add this line
su - expdev01

Ruby & Rubygems

Using rbenv

a) Install rbenv

# Check out rbenv into ~/.rbenv.
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv

# Add ~/.rbenv/bin to your $PATH for access to the rbenv command-line utility.
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile 
# Ubuntu Desktop note: Modify your ~/.bashrc instead of ~/.bash_profile.

echo 'eval "$(rbenv init -)"' >> ~/.bash_profile


# Restart your shell so that PATH changes take effect. (Opening a new terminal tab will usually do it.) 
# Now check if rbenv was set up -
type rbenv
#=> "rbenv is a function"

b) Install rbenv-build

git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

c) Install ruby 2.2.3

rbenv install 2.2.3

d) Update rubygems to 2.4.5

rbenv global 2.2.3 #make this version of ruby global
rbenv rehash #reload shims
gem -v #check the gem version (Most likely this will be 2.4.5.1)
gem install rubygems-update 
update_rubygems
gem update --system '2.4.5'
mkdir -p ~/.rbenv/plugins
git clone git://github.com/dcarley/rbenv-sudo.git ~/.rbenv/plugins/rbenv-sudo

install  gem god (0.13.7)

mkdir -p /var/run/god ##with below permission and ownership
drwxr-xr-x  2 expdev01  expdev01   /var/run/god

Installing MYSQL 5.6.x

yum install wget -y
wget http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm
rpm -ivh mysql-community-release-el6-5.noarch.rpm
yum install mysql-community-server.x86_64  -y

/etc/init.d/mysqld start


mysql -u root

mysql> use mysql;
mysql> update user set password=PASSWORD("GIVE-NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit

Installing NGINX and Phusion Passenger

Add Latest Nginx repository

/etc/yum.repos.d/nginx.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

Install Passenger and Nginx

sudo yum install -y nginx

gem install passenger

Edit passenger configuration for Nginx

# for passenger root

passenger-config --root 

/etc/nginx/conf.d/passenger.conf

passenger_root /home/expdev01/.rvm/gems/ruby-2.2.2/gems/passenger-5.0.18;
passenger_ruby /home/expdev01/.rvm/rubies/ruby-2.2.2/bin/ruby;
passenger_instance_registry_dir /var/run/passenger-instreg;

sudo service nginx restart

Validate passenger and Nginx installation

sudo passenger-config validate-install

copy from  existing working machine /deploy folder structure -- find and replace ip and urs according to setup
chown -R expdev01:expdev01 /deploy ##appuser change ownership

Installing Ejabberd

Download the latest version of Ejabberd from www.process-one.net website, at the time of writing this document 15.07 was the latest.

wget "https://www.process-one.net/downloads/downloads-action.php?file=/ejabberd/15.07/ejabberd-15.07-linux-x86_64-installer.run"
chmod 751 ejabberd-15.07-linux-x86_64-installer.run
./ejabberd-15.07-linux-x86_64-installer.run

Do you accept this license? [y/n]: y
Installation Directory [/opt/ejabberd-15.07]: 
ejabberd server domain [devtalent02.exphosted.com]: devtalent01.exphosted.com
Administrator username [admin]: 
Administrator password [********] :
Retype password [********] :
Cluster [y/N]: n
Do you want to continue? [Y/n]: y

----------------------------------------------------------------------------
Please wait while Setup installs ejabberd on your computer.

 Installing
 0% ______________ 50% ______________ 100%
 #########################################

----------------------------------------------------------------------------
cd /opt/ejabberd-15.07/bin
cp ejabberd.init /etc/init.d/ejabberd

/etc/init.d/ejabberd start

Configure ejabberd

1. Change the config settings. Config file can be found in your ejabberd directory under conf (ex - /opt/ejabberd-15.07/conf/ejabberd.yml)

Change “register:” (around line 481)

  register: 
    all: allow
    registration_timeout: infinity

Change “registration_timeout:” (around line 494)

registration_timeout: infinity //(yaml file level)

Enable “mod_ping”

mod_ping:
    send_pings: true
    ping_interval: 250
    timeout_action: none

2. Start/Restart ejabberd

3. Create a shared roster for every one.

Screenshot with information

4. Add a host entry for the IP pointing to the URL.

Install the gems used by the application

The Application uses bundler gem to manage the gem dependencies. Install the bundler gem first.

sudo gem install bundler

Once the bundler gem is installed, from the application directory (eg: /deploy/crossbow/current), run

bundle install

This would install all the necessary gems required by the application.

bundle install will end with this message:

Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

Database creation and loading seed data

Modify the database.yml file to reflect proper DB settings in development and test section and then run following rake task to create all the databases.

bundle exec rake db:create:all

Once the DBs are created run the migrations to create necessary tables using following command.

bundle exec rake db:migrate
bundle exec rake db:migrate RAILS_ENV=test

Run rake db:seed to create the default company and related data (This is just one time task)

bundle exec rake db:seed

The default company will be created with name 'Performexa' and subdomain as 'default'. No subdomain in url will refer to default company. e.g. http://dev01.performexa.com will take default company as a context. An admin user for the default company will also be created. The username for admin user is 'admin@performexa.com' and password is 'pforperformance'.