Site Tools


Writing /var/www/dokuwiki/data/cache/d/d2a977f898d714ab71a0e98d0ae19c4e.metadata failed
Hotfix release available: 2025-05-14b "Librarian". upgrade now! [56.2] (what's this?)
Hotfix release available: 2025-05-14a "Librarian". upgrade now! [56.1] (what's this?)
New release available: 2025-05-14 "Librarian". upgrade now! [56] (what's this?)
Hotfix release available: 2024-02-06b "Kaos". upgrade now! [55.2] (what's this?)
Hotfix release available: 2024-02-06a "Kaos". upgrade now! [55.1] (what's this?)
New release available: 2024-02-06 "Kaos". upgrade now! [55] (what's this?)
Hotfix release available: 2023-04-04b "Jack Jackrum". upgrade now! [54.2] (what's this?)
Hotfix release available: 2023-04-04a "Jack Jackrum". upgrade now! [54.1] (what's this?)
New release available: 2023-04-04 "Jack Jackrum". upgrade now! [54] (what's this?)
Hotfix release available: 2022-07-31b "Igor". upgrade now! [53.1] (what's this?)
Hotfix release available: 2022-07-31a "Igor". upgrade now! [53] (what's this?)
New release available: 2022-07-31 "Igor". upgrade now! [52.2] (what's this?)
New release candidate 2 available: rc2022-06-26 "Igor". upgrade now! [52.1] (what's this?)
New release candidate available: 2022-06-26 "Igor". upgrade now! [52] (what's this?)
Hotfix release available: 2020-07-29a "Hogfather". upgrade now! [51.4] (what's this?)
New release available: 2020-07-29 "Hogfather". upgrade now! [51.3] (what's this?)
New release candidate 3 available: 2020-06-09 "Hogfather". upgrade now! [51.2] (what's this?)
New release candidate 2 available: 2020-06-01 "Hogfather". upgrade now! [51.1] (what's this?)
New release candidate available: 2020-06-01 "Hogfather". upgrade now! [51] (what's this?)
Hotfix release available: 2018-04-22c "Greebo". upgrade now! [50.3] (what's this?)
Hotfix release available: 2018-04-22b "Greebo". upgrade now! [50.2] (what's this?)
performexa_application_setup

This is an old revision of the document!


Install rbenv and Dependencies

First, install the dependencies required to install Ruby:

sudo yum install -y git-core zlib zlib-devel gcc-c++ patch readline readline-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison curl sqlite-devel

if anything breaks the installation, remove the particular dependency and install the other packages Once the dependencies download, you can install rbenv itself. Clone the rbenv repository from GitHub into the directory ~/.rbenv

git clone git:github.com/sstephenson/rbenv.git .rbenv Next, add ~/.rbenv/bin to your $PATH so that you can use the rbenv command line utility. Do this by altering your ~/.bashrc file so that it affects future login sessions: echo 'export PATH=“$HOME/.rbenv/bin:$PATH”' » ~/.bash_profile Then add the command eval “$(rbenv init -)” to your ~/.bashrc file so rbenv loads automatically: echo 'eval “$(rbenv init -)”' » ~/.bash_profile exec $SHELL Next, apply the changes you made to your ~/.bashrc file to your current shell session: source ~/.bashprofile Verify that rbenv is set up properly by using the type command, which will display more information about the rbenv command: type rbenv Your terminal window will display something starts with rbenv is a function ===== Installing Ruby with ruby-build ===== Next, install the ruby-build, plugin. This plugin adds therbenv install command, which simplifies the installation process for new versions of Ruby: git clone git:github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build echo 'export PATH=“$HOME/.rbenv/plugins/ruby-build/bin:$PATH”' » ~/.bash_profile exec $SHELL

With the ruby-build plugin now installed, you can install versions of Ruby y may need through a simple command. First, let’s list all the available versions of Ruby:

rbenv install -l

if the above command throws error, you need to close the terminal and open the terminal again to load bashrc file, setting up rbenv

Let’s install Ruby 2.6.3

rbenv install 2.6.3

Once it’s done installing, set it as our default version of Ruby with the global sub-command

rbenv global 2.6.3

Verify that Ruby was properly installed by checking its version number:

ruby -v

Gems are the way Ruby libraries are distributed. You use the gem command to manage these gems

When you install a gem, the installation process generates local documentation. This can add a significant amount of time to each gem’s installation process, so turn off local documentation generation by creating a file called ~/.gemrc which contains a configuration setting to turn off this feature

echo “gem: –no-document” > ~/.gemrc

Bundler is a tool that manages gem dependencies for projects. Install the Bundler gem, particularly the version 2.1.4

gem install bundler -v 2.1.4

Installing MySQL

To install it, update the package index on your server with apt

sudo apt update

Then install the default package

sudo apt install mysql-server

This will install MySQL latest version. below will install mysql 5.7, As part of installation you provide necessary input to set password for the root user

Deploy the application

create application deployment folder

mkdir performexa_production cd /home/expdev01/performexa_production

create 3 files inside 1. Capfile 2. config/deploy.rb 3. config/deploy/production.rb

Capfile

# Load DSL and set up stages
require 'capistrano/setup'
require 'capistrano/deploy'
require 'capistrano/bundler'
require 'capistrano/rails'
require 'capistrano/rbenv'
set :rbenv_type, :expdev01
set :rbenv_ruby, '2.6.3'
require 'capistrano/rbenv'
require 'capistrano/bundler'
require 'capistrano/rails/migrations'
require 'capistrano/passenger'
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }

config/deploy.rb

lock '3.16.0'
set :bundle_binstubs, -> { '/deploy/performance/shared/bundle/ruby/2.6.3/bin/' }
set :application, 'performexa'
set :log_level, :debug
set :pty, false
set :deploy_to, '/deploy/performance'
set :deploy_via, 'clone'
set :scm, :svn
set :repo_url,  'https://repos.exphosted.com/svnrepos/talent/trunks/performance/trunk'
#set :repo_url,  'https://repos.exphosted.com/svnrepos/talent/trunks/performance/branches/1.0.9.0-JACK'
#branch = (ENV["BRANCH"] || "")
#coreurl = 'https://repos.exphosted.com/svnrepos/talent/trunks/performance/'
#if branch == ""
#        set :repo_url, "#{coreurl}/trunk"
#else
#        set :repo_url, "#{coreurl}/branches/#{branch}"
#end
set :format, :pretty
set :log_level, :debug
set :linked_files, %w{config/api.yml config/database.yml config/chat.yml config/newrelic.yml}
#set :linked_dirs, %w{log }
set :linked_dirs, %w{config/environments public/system log tmp/pids}
#todo 
before 'deploy:starting','deploy:svn_username'
before 'deploy:starting','deploy:remove_old_scm','deploy:verify_scm'
before 'deploy:starting','deploy:check_write_permissions'
before 'deploy:starting', 'god:stop', 'deploy:maint'
before "deploy:updated", "database:backup"
#after  "deploy:updated", "static_assets:compile"
after "deploy:updated", "god:start","deploy:prod"
after "deploy:reverted", "god:start","deploy:prod" 
#after 'deploy:publishing', 'deploy:restart'
#after 'deploy:finishing', 'deploy:cleanup'
#after 'deploy:publishing', 'deploy:restart'

config/deploy/production.rb

set :rails_env, "production"
set :user, "expdev01"
server 'localhost',user: fetch(:user),roles: %w{web app db search mastdb}
set :ssh_options, { :forward_agent => true }

Install capistrano gem

install capistrano and dependent gems

gem install rails -v ‘6.0.0’
gem install capistrano        
gem install capistrano-rbenv     
gem install capistrano-rails   
gem install capistrano-bundler 
gem install capistrano3-puma

Install passenger+nginx

we used passenger with nginx in this application. So install passenger gem first

gem install passenger –no-rdoc –no-ri

we need to uninstall the nginx module that comes with os first then need to install nginx with passenger module

sudo apt-get purge nginx nginx-full nginx-light nginx-naxsi nginx-common

sudo rm -rf /etc/nginx

above commands will completely uninstall the nginx

then install nginx with passenger module

passenger-install-nginx-module

Next, need to validate nginx installation through below commands.

rvmsudo passenger-config validate-install

rvmsudo passenger-memory-stats

these commands will list you nginx process with pid as well passenger process with pid

to restart nginx we need to kill the existing process and then start nginx service

sudo kill $(cat /opt/nginx/logs/nginx.pid)

sudo /opt/nginx/sbin/nginx

now, edit Nginx config file to respond performexa application

file name /opt/nginx/conf/nginx.conf

inside http block add below set of code

  
  passenger_root /home/expdev01/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/passenger-6.0.8;
  passenger_ruby /home/expdev01/.rbenv/versions/2.6.3/bin/ruby;
  passenger_min_instances 1;
  passenger_max_pool_size 3;
  passenger_pre_start "http://performexa.exphosted.com/";
  client_body_buffer_size 10K;
  client_header_buffer_size 1k;
  client_max_body_size 8m;
  large_client_header_buffers 4 32k;
  client_body_timeout 10;
  client_header_timeout 10;
  send_timeout 12;
  server_tokens off;
  gzip             on;
  gzip_comp_level  2;
  gzip_min_length  1000;
  gzip_proxied     expired no-cache no-store private auth;
  gzip_types       text/plain application/x-javascript text/xml text/css application/xml;
  include       mime.types;
  default_type  application/octet-stream;
  

add blow set of code to server block

      listen              443 ssl;
    	server_name         performexa.exphosted.com;
    	server_name         *.performexa.exphosted.com;
   	ssl_certificate     /opt/nginx/conf/ssl/performexa.crt;
ssl_certificate_key /opt/nginx/conf/ssl/performexa.key;
ssl_prefer_server_ciphers on;
#ssl_dhparam        /etc/pki/tls/private/dhparam.pem;
ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers         "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
passenger_enabled on;
passenger_app_env production;
root /deploy/performance/current/public;
open_file_cache          max=2000 inactive=20s;
open_file_cache_valid    60s;
open_file_cache_min_uses 5;
open_file_cache_errors   off;
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
	expires 365d;
}
location / {
	proxy_set_header Host $host;
              #proxy_set_header X-Real-IP  $remote_addr;
              #proxy_set_header X-Forwarded-Proto https;
              #proxy_set_header X-Forwarded-Proto $scheme;
              #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

reference https://www.phusionpassenger.com/library/install/nginx/install/oss/rubygems_rvm/

Once all the gems installed successfully, we can start the deployment with capistrano command. Actual deployment directory is ‘/deploy/performance’. Run the below command inside ‘/home/expdev01/performexa_production’

cap production deploy

once the deployment is success, need to restart the application using below 2 commands

sudo kill $(cat /opt/nginx/logs/nginx.pid) sudo /opt/nginx/sbin/nginx

Install ejabberd service

1. https://www.process-one.net/en/ejabberd/downloads/
2. choose Download the "Linux x86 64-bits Installer".
3. chmod +x ejabberd-YY.MM-linux-x64.run
4. ./ejabberd-YY.MM-linux-x64.run

provide necessary inputs. In domain name you need to give the proper subdomain name, example ‘performexa.exphosted.com’

after the installation there should be ejabberd-21.04 folder in /home/expdev01

start ejabberd

cd ejabberd-21.04 ./bin/ejabberdctl start

Access ejabberd sevice

To access ejabberd sevice under http/https ports, we need to allow access to 5280 and 5281 ports usually to check this we need to give below command telnet ip_address port_number ex: telner 127.0.0.1 5280

if we have access for that port will be connected. Now open the ejabberd admin panel in the browser https://performexa.exphosted.com:5281/admin/

provide username and password when we gave while installing ejabberd service

performexa_application_setup.1630924278.txt.gz · Last modified: 2021/09/06 10:31 by 157.51.9.156