https://wiki.exphosted.com/doku.php/setup_tincan_server ##Existing old version## The only difference in the versions of below. Centos 6.5 ruby - ruby 2.1.5p273 ruby gems - 2.4.5 Bundler - 1.7.9 capistrano - 3.3.5
1. Install epel source. yum install epel-release 2. Update system
yum update -y
yum groupinstall "Development Tools" -y yum groupinstall "Additional Development" -y yum install gcc gcc-c++ make 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 patch libyaml-devel patch libffi-devel bison -y wget http://vault.centos.org/6.5/updates/x86_64/Packages/ImageMagick-devel-6.5.4.7-7.el6_5.x86_64.rpm wget http://vault.centos.org/6.5/updates/x86_64/Packages/ImageMagick-6.5.4.7-7.el6_5.x86_64.rpm yum install ImageMagick-6.5.4.7-7.el6_5.x86_64.rpm ImageMagick-devel-6.5.4.7-7.el6_5.x86_64.rpm -y ==== Install Database ==== 1. Create a dedicated group and user groupadd mysql useradd -r -g mysql mysql vi /etc/yum.repos.d/mysql-community.repo [mysql-connectors-community] name=MySQL Connectors Community baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/5/$basearch/ enabled=1 gpgcheck=0 gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql # Enable to use MySQL 5.6 [mysql56-community] name=MySQL 5.6 Community Server baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/5/$basearch/ enabled=1 gpgcheck=0 gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql # Note: MySQL 5.7 is currently in development. For use at your own risk. # Please read with sub pages: https://dev.mysql.com/doc/relnotes/mysql/5.7/en/ [mysql57-community-dmr] name=MySQL 5.7 Community Server Development Milestone Release baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/5/$basearch/ enabled=0 gpgcheck=0 gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql vi /etc/yum.repos.d/mysql-community-source.repo [mysql-connectors-community-source] name=MySQL Connectors Community - Source baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/5/SRPMS enabled=0 gpgcheck=0 gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql [mysql56-community-source] name=MySQL 5.6 Community Server - Source baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/5/SRPMS enabled=0 gpgcheck=0 gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql [mysql57-community-dmr-source] name=MySQL 5.7 Community Server Development Milestone Release - Source baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/5/SRPMS enabled=0 gpgcheck=0 gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql rpm -qa | grep mysql #remove if already mysql package installed remove below commands yum remove mysql-libs-5.1.73-8.el6_8.x86_64 mysql-5.1.73-8.el6_8.x86_64 mysql-devel-5.1.73-8.el6_8.x86_64 yum install cronie cronie-anacron crontabs yum install mysql-community-server mysql-community-devel mysql-community-release -y /etc/init.d/mysqld start /usr/bin/mysqladmin -u root -hlocalhost password 'xxxx' #pwd reset mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql -p chkconfig mysqld on
1. Verify that java is installed
java
2. Add tomcat User and Unpack tomcat
To make things easier, we have copied the already configured copy on Tomcat and Solr on server; Just Untar the following file to /opt directory; ftp://qacollab01.exphosted.com/softrepo/tincan/opt_combo.tgz Obsolete method if the above step does not work; mkdir /opt/tomcat7 useradd tomcat usermod -m -d /opt/tomcat7 tomcat cd /opt/tomcat wget --user=expbbbu --password=<RETRACTED> ftp://qacollab01.exphosted.com/softrepo/tincan/installed-software/apache-tomcat-7.0.54.tar.gz | tar xz chown -R tomcat:tomcat /opt/tomcat7
Init script.
#!/bin/bash # description: Tomcat Start Stop Restart # processname: tomcat # chkconfig: 234 20 80 #JAVA_HOME=/usr/java/jdk1.7.0_05 #export JAVA_HOME #PATH=$JAVA_HOME/bin:$PATH export PATH CATALINA_HOME=/opt/tomcat7/bin case $1 in start) /bin/su tomcat $CATALINA_HOME/startup.sh ;; stop) /bin/su tomcat $CATALINA_HOME/shutdown.sh ;; restart) /bin/su tomcat $CATALINA_HOME/shutdown.sh /bin/su tomcat $CATALINA_HOME/startup.sh ;; status) test "$(ps -ef|grep java|grep -i catalina 2>1)" && echo "Tomcat-Solr is running" || echo -e "\e[31m\e[0mTomcat-Solr is not running" ;; esac exit 0
chmod +x /etc/init.d/tomcat7 chmod 755 /etc/init.d/tomcat7 chkconfig --add tomcat7 chkconfig tomcat on
3. Unpack solr
mkdir /opt/solr && cd /opt/solr wget --user=expbbbu --password=<RETRACTED> ftp://qacollab01.exphosted.com/softrepo/tincan/installed-software/solr-4.8.1.zip unzip solr-4.8.1.zip cp -r solr/example/lib/ /opt/tomcat/lib/ chown -r tomcat:tomcat /opt/solr 4. Configure Solr - Data Dir: <code> nano /opt/solr/example/solr/conf/solrconfig.xml
Create a shared data or a local data drive and set the path here.
Also, copy Learnexa schema.xml.
# for multicore cd /opt/tomcat7 mkdir -p Catalina/localhost nano solr.xml
Then add:
<Context docBase="/opt/solr/example/solr/webapp/solr.war" debug="0" crossContext="true"> <Environment name="solr/home" type="java.lang.String" value="/opt/solr/example/solr" override="true" /> </Context>
/usr/sbin/adduser "expdev01" #set regular password
1. Ensure:
whoami #expdev01
vi ~/.profile
export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" vi ~/.bashrc export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
2. Install RVM
\curl -sSL https://get.rvm.io | bash
3. Install and use Ruby 2.1.5
rvmsudo rvm install 2.1.5 rvmsudo rvm use 2.1.5 sudo gem update --system 2.4.5
4. Verify
which ruby #/home/expdev01/.rvm/rubies/ruby-2.1.5/bin/ruby
gem install rails -v '4.2.6' gem install bundler -v '1.11.2' gem install eventmachine -v '1.0.7' gem install mysql2 -v '0.3.18' gem install nokogiri -v '1.6.6.2' gem install rake -v '10.4.1' gem install rack -v '1.6.0' gem install passenger -v '4.0.44' gem install capistrano-bundler -v '1.1.4' gem install capistrano-ext -v '1.2.1' gem install capistrano-log_with_awesome -v '0.0.2' gem install capistrano-passenger -v '0.0.2' gem install capistrano-rails -v '1.1.1' gem install capistrano-rvm -v '0.1.1'
rvmsudo passenger-install-nginx-module
Following are the steps to be followed. Please note that “development” needs to be replaced with “staging”/“production” based on the environment you are setting up.
download file from 107.170.68.123:/soft/deploy-bk.tar.gz unzip deploy-bk.tar.gz mv deploy-bk /deploy chown -R expdev01:expdev01 /deploy download file from 107.170.68.123:/soft/nginx.conf Replace the file /opt/nginx/conf/nginx.conf cd /home/expdev01 mkdir tincan cd tincan bundle exec cap install mv tincan tincan-old download file from 107.170.68.123:/soft/home-bkup.tar.gz tar xvf home-bkup.tar.gz download file from 107.170.68.123:/soft/capistrano.zip cd /home/expdev01/tincan/lib/ unzip capistrano.zip download file from 107.170.68.123:/soft/bin.zip cd /home/expdev01/ unzip bin.zip chown -R expdev01:expdev01 /home/expdev01
cd /deploy/tincan/current/ # Specify the flavor of the app in config/environments/development.rb DEFAULT_FLAVOR = "expertusone" #(Or "learnexa" depending on for whom you are setting up.) #update databased details in config/database.yml development stanza. #Specify makara gem configs, if you are adding a slave db. #run the below - bundle install bundle exec rake db:create RAILS_ENV=development bundle exec rake db:migrate RAILS_ENV=development bundle exec rake db:seed RAILS_ENV=development
vi config/environments/development.rb
APP_URL = "http://devlrs01.learnexa.com" API_URL = "http://devlrs01.learnexa.com" Note make sure added /etc/hosts entry if not have public dns Restart apache.
Download file from 107.170.68.123:/home/expdev01/tincan/runcap.sh
Change the tincan directory files as needed with environment and db values.
sh /home/expdev01/tincan/runcap.sh
gem list ##will get below output for reference added actionmailer (4.1.8, 3.2.17) actionpack (4.1.8, 3.2.17) actionview (4.1.8) activemodel (4.1.8, 3.2.17) activerecord (4.1.8, 3.2.17) activerecord-deprecated_finders (1.0.3) activeresource (3.2.17) activesupport (4.1.8, 3.2.17) arel (5.0.1.20140414130214, 3.0.3) authlogic (3.4.5, 3.4.2) bigdecimal (1.2.4) builder (3.2.2, 3.0.4) bundler (1.7.9) bundler-unload (1.0.2) capistrano (3.3.5) capistrano-bundler (1.1.4) capistrano-ext (1.2.1) capistrano-log_with_awesome (0.0.2) capistrano-passenger (0.0.2) capistrano-rails (1.1.1) capistrano-rvm (0.1.1) capistrano-stats (1.1.1) climate_control (0.0.3) cocaine (0.5.7, 0.5.4) coffee-rails (3.2.2) coffee-script (2.2.0) coffee-script-source (1.7.0) colorize (0.7.5) daemon_controller (1.2.0) daemons (1.2.2, 1.1.9) domain_name (0.5.23) erubis (2.7.0) eventmachine (1.0.7, 1.0.3) execjs (2.5.0, 2.0.2) executable-hooks (1.3.2) faraday (0.9.1, 0.9.0) ffi (1.9.8) ffi-compiler (0.1.3) gem-wrappers (1.2.7) haml (4.0.6, 4.0.3) haml-rails (0.6.0, 0.4) hash-deep-merge (0.1.1) highline (1.6.21) hike (1.2.3) hpricot (0.8.6, 0.8.3) html2haml (2.0.0) html_truncator (0.4.0) htmlentities (4.3.3, 4.2.2) http-cookie (1.0.2) httpauth (0.2.1) i18n (0.7.0, 0.6.9) io-console (0.4.2) iso8601 (0.8.5, 0.4.1) journey (1.0.4) jquery-rails (3.1.2, 3.1.0) json (1.8.2, 1.8.1) json_pure (1.8.2, 1.8.1) jwt (1.4.1) lazy_high_charts (1.5.4) libv8 (3.16.14.7 x86_64-linux, 3.16.14.3 x86_64-linux) mail (2.6.3, 2.5.4) mime-types (2.4.3, 1.25.1) mini_portile (0.6.2) minitest (5.5.1, 4.7.5) multi_json (1.11.0, 1.0.4) multi_xml (0.5.5) multipart-post (2.0.0) mysql2 (0.3.18, 0.3.15) net-scp (1.2.1) net-ssh (2.9.2) netrc (0.10.3) nokogiri (1.6.6.2, 1.5.9) oauth (0.4.7, 0.4.6) oauth2 (1.0.0, 0.6.0) options (2.3.2) paperclip (4.2.1, 2.8.0) paranoia (2.1.1, 1.3.3) passenger (4.0.44) polyglot (0.3.4) pr_geohash (1.0.0) progress_bar (1.0.3) protected_attributes (1.0.8) prototype-rails (4.0.0, 3.2.1) psych (2.0.5) rabl (0.11.6, 0.3.0) rack (1.6.0, 1.5.2, 1.4.5) rack-cache (1.2) rack-ssl (1.3.4) rack-test (0.6.3, 0.6.2) rails (4.1.8, 3.2.17) rails_autolink (1.1.6) railties (4.1.8, 3.2.17) rake (10.4.1, 10.3.1, 10.1.0) rdoc (4.2.0, 4.1.0, 3.12.2) rdoc-data (4.0.1, 3.12) ref (1.0.5) request_store (1.1.0, 1.0.5) rest-client (1.8.0, 1.6.7) rmagick (2.14.0, 2.13.1) rsolr (1.0.12, 1.0.10) ruby_parser (3.6.5, 3.6.0) rubygems-bundler (1.4.4) rubygems-update (2.4.5) rvm (1.11.3.9) sass (3.3.7, 3.2.19) sass-rails (4.0.5, 3.2.6) scrypt (1.2.1) sexp_processor (4.5.0, 4.4.3) simple_uuid (0.4.0) sprockets (2.12.3, 2.2.2) sprockets-rails (2.2.4) sshkit (1.7.1) sunspot (2.1.1) sunspot_rails (2.1.1) sunspot_solr (2.1.1) test-unit (2.1.5.0) therubyracer (0.12.2, 0.12.1) thin (1.6.3, 1.6.2) thor (0.19.1) thread_safe (0.3.5) tilt (1.4.1) treetop (1.4.15) tzinfo (1.2.2, 0.3.39) uglifier (2.7.1, 2.5.0) unf (0.1.4) unf_ext (0.0.6) will_paginate (3.0.6, 3.0.5) ====== Headline ======
vi /etc/init.d/nginx ##paste below content save and chmod +x /etc/init.d/nginx
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemin
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /usr/local/nginx/conf/nginx.conf
# pidfile: /usr/local/nginx/logs/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/opt/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/opt/nginx/conf/nginx.conf"
lockfile=/var/lock/subsys/nginx
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
configtest || return $?
stop
start
}
reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac