====== Software list ====== * ruby - 1.8.7-p174 * rubygems - 1.3.7 * rails - 2.3.4 * passenger - 3.0.0 * rmagick - 1.15.17 * memcached - 1.4.5 * sunspot - 1.2.1 * mysql - 5.x ====== Installation instructions ====== ===== Install ruby 1.8.7 ===== wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p174.tar.gz tar -xzvf ruby-1.8.7-p174.tar.gz cd ruby-1.8.7-p174 ./configure make sudo make install Note - On Fedora, it was found that ruby.1.8.7-p174 does not compile openssl. So, please install a patch level above 299. The latest till date is - ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p358.tar.gz ===== Install rubygems 1.3.7 ===== wget http://rubyforge.org/frs/download.php/70696/rubygems-1.3.7.tgz tar -xzvf rubygems-1.3.7.tgz cd rubygems-1.3.7 sudo ruby setup.rb ===== Install Phusion Passenger ===== sudo gem install passenger If you want run the passenger behind apache then install passenger module for apache export PATH=/opt/apache2/bin:$PATH (required to put apxs in path; set the apxs path as per your apache installation) sudo passenger-install-apache2-module #Add following in httpd.conf (the passenger PATH will vary depending on version installed, change LoadModule and PassengerRoot accordingly) LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.0/ext/apache2/mod_passenger.so PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.0 PassengerRuby /usr/local/bin/ruby For development purpose a standalone version of Passenger should suffice cd /path/to/your/webapp passenger start ===== Setup CruiseControl.rb ===== [Note: This step is not required on the development machine] wget http://rubyforge.org/frs/download.php/59598/cruisecontrol-1.4.0.tgz tar -xzvf cruisecontrol-1.4.0.tgz copy the cruisecontrol folder over to the /opt/apache2/htdocs/cruisecontrol and add following virtual host entry in the httpd.conf file ServerName tracker.exphosted.com:80 ErrorLog "logs/cruisecontrol-error.log" CustomLog "logs/cruisecontrol-access-log" common DocumentRoot /opt/apache2/htdocs/cruisecontrol/public AllowOverride all Options -MultiViews RailsDefaultUser root Restart the apache sudo /opt/apache2/bin/httpd -k restart The cruisecontrol dashboard should now be available at http://tracker.exphosted.com Now add the crossbow/trunk to the cruisecontrol cd /opt/apache2/htdocs/cruisecontrol sudo ./cruise add crossbow-trunk -u file:///svnroot/crossbow/trunk ===== Install ImageMagick ===== ImageMagick is used by RMagick gem. The application uses RMagick to process the images. sudo yum install ImageMagick sudo yum install ImageMagick-devel ===== Install Memcached ===== Memcached is required as it will be used as the cache store for the rails application. Before installing memcached install the dependency required for it. Follow the below mentioned steps sudo yum install libevent-devel wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz tar -zxvf memcached-1.4.5.tar.gz cd memcached-1.4.5 ./configure make make test sudo make install memcached (or, memcached -d -P pidfile -l 127.0.0.1) Once the memcached is installed and running we need to put some startup scripts to make sure that memcached server starts when the machine boots. ==== Create the configuration file ==== sudo touch /etc/memcached.conf And put in: #Memory -m 16 # default port -p 11211 # user to run daemon nobody/apache/www-data -u nobody # only listen locally -l 127.0.0.1 ==== Create the startups files ==== sudo touch /etc/init.d/memcached sudo chmod +x /etc/init.d/memcached And put in #!/bin/bash # # memcached This shell script takes care of starting and stopping # standalone memcached. # # chkconfig: - 80 12 # description: memcached is a high-performance, distributed memory # object caching system, generic in nature, but # intended for use in speeding up dynamic web # applications by alleviating database load. # processname: memcached # config: /etc/memcached.conf # Source function library. . /etc/rc.d/init.d/functions PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/usr/local/bin/memcached DAEMONBOOTSTRAP=/usr/local/bin/start-memcached DAEMONCONF=/etc/memcached.conf NAME=memcached DESC=memcached PIDFILE=/var/run/$NAME.pid [ -x $DAEMON ] || exit 0 [ -x $DAEMONBOOTSTRAP ] || exit 0 RETVAL=0 start() { echo -n $"Starting $DESC: " daemon $DAEMONBOOTSTRAP $DAEMONCONF RETVAL=$? [ $RETVAL -eq 0 ] && touch $PIDFILE echo return $RETVAL } stop() { echo -n $"Shutting down $DESC: " killproc $NAME RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f $PIDFILE return $RETVAL } # See how we were called. case "$1" in start) start ;; stop) stop ;; restart|reload) stop start RETVAL=$? ;; status) status $prog RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|restart|status}" exit 1 esac exit $RETVAL sudo touch /usr/local/bin/start-memcached sudo chmod +x /usr/local/bin/start-memcached #!/usr/bin/perl -w # start-memcached # 2003/2004 - Jay Bonci # This script handles the parsing of the /etc/memcached.conf file # and was originally created for the Debian distribution. # Anyone may use this little script under the same terms as # memcached itself. use strict; if ($> != 0 and $< != 0) { print STDERR "Only root wants to run start-memcached.\n"; exit; } my $etcfile = shift || "/etc/memcached.conf"; my $params = []; my $etchandle; # This script assumes that memcached is located at /usr/bin/memcached, and # that the pidfile is writable at /var/run/memcached.pid my $memcached = "/usr/local/bin/memcached"; my $pidfile = "/var/run/memcached.pid"; # If we don't get a valid logfile parameter in the /etc/memcached.conf file, # we'll just throw away all of our in-daemon output. We need to re-tie it so # that non-bash shells will not hang on logout. Thanks to Michael Renner for # the tip my $fd_reopened = "/dev/null"; sub handle_logfile { my ($logfile) = @_; $fd_reopened = $logfile; } sub reopen_logfile { my ($logfile) = @_; open *STDERR, ">>$logfile"; open *STDOUT, ">>$logfile"; open *STDIN, ">>/dev/null"; $fd_reopened = $logfile; } # This is set up in place here to support other non -[a-z] directives my $conf_directives = { "logfile" => \&handle_logfile }; if (open $etchandle, $etcfile) { foreach my $line (<$etchandle>) { $line =~ s/\#.*//go; $line = join ' ', split ' ', $line; next unless $line; next if $line =~ /^\-[dh]/o; if ($line =~ /^[^\-]/o) { my ($directive, $arg) = $line =~ /^(.*?)\s+(.*)/; $conf_directives->{$directive}->($arg); next; } push @$params, $line; } } unshift @$params, "-u root" unless (grep $_ eq '-u', @$params); $params = join " ", @$params; if (-e $pidfile) { open PIDHANDLE, "$pidfile"; my $localpid = ; close PIDHANDLE; chomp $localpid; if (-d "/proc/$localpid") { print STDERR "memcached is already running.\n"; exit; } else { `rm -f $localpid`; } } my $pid = fork(); if ($pid == 0) { reopen_logfile($fd_reopened); exec "$memcached $params"; exit(0); } elsif (open PIDHANDLE,">$pidfile") { print PIDHANDLE $pid; close PIDHANDLE; } else { print STDERR "Can't write pidfile to $pidfile.\n"; } ==== Test the scripts ==== sudo /etc/init.d/memcached start Starting memcached: [ OK ] Add memcached as autostart daemon # /sbin/chkconfig memcached on # /sbin/chkconfig --list | grep memcached memcached 0:off 1:off 2:on 3:on 4:on 5:on 6:off ===== Install JRE ===== Download the JRE RPM Installation for Linux (64-bit) from http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.html#jre-6u23-oth-JPR The name of the downloaded file would be jre-6u23-linux-x64-rpm.bin JRE is required to run Solr search server. chmod a+x jre-6u23-linux-x64-rpm.bin ./jre-6u23-linux-x64-rpm.bin rpm -ivvh jre-6u23-linux-amd64.rpm ===== Install headless OpenOffice ===== Headless OpenOffice is required for document conversion. sudo yum install openoffice.org-base sudo yum install openoffice.org-calc sudo yum install openoffice.org-writer sudo yum install openoffice.org-impress sudo yum install openoffice.org-headless Run it (** this is not required, as openoffice will be controlled by god**) soffice.bin -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard ===== Install headless Lireoffice (4.1.1) ===== Lireoffice preferred for document conversion. **__For 64-bit machines__** wget http://download.documentfoundation.org/libreoffice/stable/4.1.1/rpm/x86_64/LibreOffice_4.1.1_Linux_x86-64_rpm.tar.gz #remove existing office installations yum remove openoffice* libreoffice* tar -xvf LibreOffice_4.1.1_Linux_x86-64_rpm.tar.gz cd /tmp/LibreOffice_4.1.1_Linux_x86-64_rpm/RPMS/ yum localinstall *.rpm **__For 32-bit machines__** wget http://download.documentfoundation.org/libreoffice/stable/4.1.1/rpm/x86/LibreOffice_4.1.1_Linux_x86_rpm.tar.gz #remove existing office installations yum remove openoffice* libreoffice* tar -xvf LibreOffice_4.1.1_Linux_x86_rpm.tar.gz cd /tmp/LibreOffice_4.1.1_Linux_x86_rpm/RPMS/ yum localinstall *.rpm Run it (** this is not required, as libreoffice will be controlled by god on dev,qa and prod**) libreoffice4.1 --headless --accept="socket,host=127.0.0.1,port=8100;urp;" --nofirststartwizard ===== Install ffmpeg (Ignore this. Please refer Install ffmpeg 0.8.10 below.) ===== ffmpeg is used to convert media files to flv format. First of all, edit /etc/yum.repos.d/CentOS-Base.repo and add those lines at bottom of file: [dag] name=Dag RPM Repository for Centos baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag enabled=1 Install ffmpeg sudo yum install ffmpeg ffmpeg-devel If you get an error "Public key for faac-1.26-1.el5.rf.x86_64.rpm is not installed" then execute following command sudo rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm Alternatively, you can import the GPG key for dag into rpm, and re-run "yum install ffmpeg ffmpeg-devel" The key is at: http://apt.sw.be/RPM-GPG-KEY.dag.txt Same has been shown below (copy the text below, including the BEGIN and END lines) to a file (eg: /etc/pki/rpm-gpg/RPM-GPG-KEY.dag and import into rpm with "rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY.dag" command) -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.2.1 (GNU/Linux) mQGiBD9JMT0RBAC9Q2B0AloUMTxaK73sD0cOu1MMdD8yuDagbMlDtUYA1aGeJVO6 TV02JLGr67OBY+UkYuC1c3PUwmb3+jakZd5bW1L8E2L705wS0129xQOZPz6J+alF 5rTzVkiefg8ch1yEcMayK20NdyOmhDGXQXNQS8OJFLTIC6bJs+7MZL83/wCg3cG3 3q7MWHm3IpJb+6QKpB9YH58D/2WjPDK+7YIky/JbFBT4JPgTSBy611+bLqHA6PXq 39tzY6un8KDznAMNtm+NAsr6FEG8PHe406+tbgd7tBkecz3HPX8nR5v0JtDT+gzN 8fM3kAiAzjCHUAFWVAMAZLr5TXuoq4lGTTxvZbwTjZfyjCm7gIieCu8+qnPWh6hm 30NgA/0ZyEHG6I4rOWqPks4vZuD+wlp5XL8moBXEKfEVOMh2MCNDRGnvVHu1P3eD oHOooVMt9sWrGcgxpYuupPNL4Uf6B6smiLlH6D4tEg+qCxC17zABI5572XJTJ170 JklZJrPGtnkPrrKMamnN9MU4RjGmjh9JZPa7rKjZHyWP/z/CBrQ1RGFnIFdpZWVy cyAoRGFnIEFwdCBSZXBvc2l0b3J5IHYxLjApIDxkYWdAd2llZXJzLmNvbT6IWQQT EQIAGQUCP0kxPQQLBwMCAxUCAwMWAgECHgECF4AACgkQog5SFGuNeeYvDQCeKHST hIq/WzFBXtJOnQkJGSqAoHoAnRtsJVWYmzYKHqzkRx1qAzL18Sd0iEYEEBECAAYF Aj9JMWAACgkQoj2iXPqnmevnOACfRQaageMcESHVE1+RSuP3txPUvoEAoJAtOHon g+3SzVNSZLn/g7/Ljfw+uQENBD9JMT8QBACj1QzRptL6hbpWl5DdQ2T+3ekEjJGt llCwt4Mwt/yOHDhzLe8SzUNyYxTXUL4TPfFvVW9/j8WOkNGvffbs7g84k7a5h/+l IJTTlP9V9NruDt1dlrBe+mWF6eCY55OFHjb6nOIkcJwKxRd3nGlWnLsz0ce9Hjrg 6lMrn0lPsMV6swADBQP9H42sss6mlqnJEFA97Fl3V9s+7UVJoAIA5uSVXxEOwVoh Vq7uECQRvWzif6tzOY+vHkUxOBRvD6oIU6tlmuG3WByKyA1d0MTqMr3eWieSYf/L n5VA9NuD7NwjFA1kLkoDwfSbsF51LppTMkUggzwgvwE46MB6yyuqAVI1kReAWw+I RgQYEQIABgUCP0kxPwAKCRCiDlIUa4155oktAKDAzm9QYbDpk6SrQhkSFy016BjE BACeJU1hpElFnUZCL4yKj4EuLnlo8kc= =mqUt -----END PGP PUBLIC KEY BLOCK----- Install again sudo yum install ffmpeg ffmpeg-devel **Post installation Check :** 1. Please make sure that your ffmpeg version is the latest and it has libx264 and AAC support enabled. The latest version till date is 0.8.10 If you are on Fedora or redhat the latest version you will get the latest version by default when you use yum command To Check your configuration just type ffmpeg -i . You should see something like this ffmpeg -i ffmpeg version 0.8.10, Copyright (c) 2000-2011 the FFmpeg developers built on Feb 29 2012 16:28:55 with gcc 4.6.2 20111027 (Red Hat 4.6.2-1) configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib --mandir=/usr/share/man --arch=i686 --extra-cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables' --enable-bzlib --enable-libcelt --enable-libdc1394 --enable-libdirac --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab --enable-avfilter --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib --cpu=i686 --enable-runtime-cpudetect libavutil 51. 9. 1 / 51. 9. 1 libavcodec 53. 8. 0 / 53. 8. 0 libavformat 53. 5. 0 / 53. 5. 0 libavdevice 53. 1. 1 / 53. 1. 1 libavfilter 2. 23. 0 / 2. 23. 0 libswscale 2. 0. 0 / 2. 0. 0 libpostproc 51. 2. 0 / 51. 2. 0 ffmpeg: missing argument for option 'i' It should have -enable-libx264. (AAC seems to by default always) 2. Once you have checked out the code, make sure that ffmpeg has a required preset for libx264. Get the preset from /config/ffmpeg and copy this file to your --datadir from the above ffmpeg command out put (generally /usr/share/ffmpeg). ===== Install ffmpeg 0.8.10 ===== To upgrade the existing version or install from scratch, down the following rpms, packages and install in the given order Mandatory (download and install) whether installing ffmpeg as rpm or from source code wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/stable/libavcodec53-0.8.10-53.el5.x86_64.rpm wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/stable/libavutil51-0.8.10-53.el5.x86_64.rpm wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/stable/ffmpeg-devel-0.8.10-53.el5.x86_64.rpm wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/stable/ffmpeg-0.8.10-53.el5.x86_64.rpm wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/stable/libavdevice53-0.8.10-53.el5.x86_64.rpm wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/stable/libavformat53-0.8.10-53.el5.x86_64.rpm wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/stable/libavfilter2-0.8.10-53.el5.x86_64.rpm wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/stable/libdc1394_22-2.0.2-11.el5.x86_64.rpm wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/stable/libdc1394-devel-2.0.2-11.el5.x86_64.rpm wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/stable/libdc1394-2.0.2-11.el5.x86_64.rpm wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/stable/libdc1394_22-2.0.2-11.el5.i386.rpm wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/stable/libpostproc51-0.8.10-53.el5.x86_64.rpm wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/stable/libswscale2-0.8.10-53.el5.x86_64.rpm wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/testing/libtheora-devel-1.1.1-13.el5.x86_64.rpm wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/testing/libtheora0-1.1.1-13.el5.x86_64.rpm wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/stable/xvidcore-devel-1.2.2-14.el5.x86_64.rpm wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/testing/libtheoradec1-1.1.1-13.el5.x86_64.rpm wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/stable/libva-0.32.0.2_1-0.32.0-4_sds2.el5.x86_64.rpm wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/stable/libx264_118-0.118-17_20111111.2245.el5.x86_64.rpm wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/stable/libxavs1-0.1.51-2.el5.x86_64.rpm wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/stable/libxvidcore4-1.2.2-14.el5.x86_64.rpm wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/stable/librtmp0-2.3-1.el5.x86_64.rpm wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/testing/libtheoraenc1-1.1.1-13.el5.x86_64.rpm wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/stable/libavutil50-0.7.11-52.el5.x86_64.rpm yum install libswt3-gtk2.x86_64 rpm -Uvvh libavutil51-0.8.10-53.el5.x86_64.rpm rpm -Uvvh librtmp0-2.3-1.el5.x86_64.rpm rpm -Uvvh libxvidcore4-1.2.2-14.el5.x86_64.rpm rpm -Uvvh libxavs1-0.1.51-2.el5.x86_64.rpm rpm -Uvvh libx264_118-0.118-17_20111111.2245.el5.x86_64.rpm rpm -Uvvh libva-0.32.0.2_1-0.32.0-4_sds2.el5.x86_64.rpm rpm -Uvvh libtheoradec1-1.1.1-13.el5.x86_64.rpm rpm -Uvvh xvidcore-devel-1.2.2-14.el5.x86_64.rpm rpm -Uvvh libtheoraenc1-1.1.1-13.el5.x86_64.rpm rpm -Uvvh --force libtheora0-1.1.1-13.el5.x86_64.rpm rpm -Uvvh libtheora-devel-1.1.1-13.el5.x86_64.rpm rpm -Uvvh libswscale2-0.8.10-53.el5.x86_64.rpm yum install libraw1394-devel.x86_64 yum install libraw1394-devel.i386 yum install libdc1394-devel.x86_64 rpm -Uvvh libavcodec53-0.8.10-53.el5.x86_64.rpm rpm -Uvvh libavformat53-0.8.10-53.el5.x86_64.rpm rpm -Uvvh libavfilter2-0.8.10-53.el5.x86_64.rpm rpm -Uvvh libdc1394_22-2.0.2-11.el5.i386.rpm rpm -Uvvh libdc1394_22-2.0.2-11.el5.x86_64.rpm rpm -Uvvh libavdevice53-0.8.10-53.el5.x86_64.rpm rpm -Uvvh --force libpostproc51-0.8.10-53.el5.x86_64.rpm rpm -Uvvh --force ffmpeg-devel-0.8.10-53.el5.x86_64.rpm rpm -Uvvh --force libavutil50-0.7.11-52.el5.x86_64.rpm Installing ffmpeg as rpm rpm -Uvvh ffmpeg-0.8.10-53.el5.x86_64.rpm Installing ffmpeg from source (preferred to include libfaac), download and install as under wget http://ffmpeg.org/releases/ffmpeg-0.8.10.tar.gz wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/stable/libdc1394-devel-2.0.2-11.el5.x86_64.rpm wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/stable/libnut-0.0.0-1_r661.el5.x86_64.rpm wget ftp://ftp.pbone.net/mirror/atrpms.net/el5-x86_64/atrpms/stable/rtmpdump-devel-2.3-1.el5.x86_64.rpm wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/stable/x264-devel-0.118-17_20111111.2245.el5.x86_64.rpm wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/stable/x264-0.118-17_20111111.2245.el5.x86_64.rpm wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/stable/xavs-devel-0.1.51-2.el5.x86_64.rpm wget ftp://rpmfind.net/linux/atrpms/el5-x86_64/atrpms/stable/xavs-0.1.51-2.el5.x86_64.rpm yum install yasm.x86_64 yasm-devel.x86_64 rpm -Uvvh --force libdc1394-devel-2.0.2-11.el5.x86_64.rpm rpm -Uvvh libnut-0.0.0-1_r661.el5.x86_64.rpm rpm -Uvvh rtmpdump-devel-2.3-1.el5.x86_64.rpm rpm -Uvvh x264-devel-0.118-17_20111111.2245.el5.x86_64.rpm rpm -Uvvh x264-0.118-17_20111111.2245.el5.x86_64.rpm rpm -Uvvh xavs-devel-0.1.51-2.el5.x86_64.rpm rpm -Uvvh xavs-0.1.51-2.el5.x86_64.rpm tar -xzf ffmpeg-0.8.10.tar.gz cd ffmpeg-0.8.10 ./configure --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --mandir=/usr/share/man --enable-shared --enable-runtime-cpudetect --enable-gpl --enable-version3 --enable-postproc --enable-avfilter --enable-pthreads --enable-x11grab --enable-vdpau --disable-avisynth --enable-libdc1394 --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-librtmp --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxavs --enable-libxvid --extra-cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' --disable-stripping --enable-libfaac --enable-nonfree make make install **Post installation check** 1. Please make sure that your ffmpeg version is the latest and it has libx264, libfaac and AAC support enabled. It should have -enable-libx264 and -enable-libfaac. (AAC seems to by default always) 2. Once you have checked out the code, make sure that ffmpeg has a required preset for libx264. Get the preset from /config/ffmpeg and copy this file to your --datadir from the above ffmpeg command out put (generally /usr/share/ffmpeg). For installation on Ubuntu follow the steps given @ https://www.vimp.com/en/web/faq-installation/items/how-to-compile-ffmpeg-for-ubuntu-and-debian.html ===== Install ffmpeg 1.2 (Magic) ===== wget http://www.ffmpeg.org/releases/ffmpeg-1.2.tar.gz tar xzvf ffmpeg-1.2.tar.gz cd ffmpeg-1.2 ./configure --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --mandir=/usr/share/man --enable-shared --enable-runtime-cpudetect --enable-gpl --enable-version3 --enable-postproc --enable-avfilter --enable-pthreads --enable-x11grab --enable-vdpau --disable-avisynth --enable-libdc1394 --enable-libgsm --enable-libmp3lame --enable-libnut --enable-librtmp --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxavs --enable-libxvid --disable-stripping --enable-libfaac --enable-nonfree make sudo make install **Post installation Check** 1. check ffmpeg config(type ffmpeg -i and press ENTER). It should be some thing like this. (ignore the error asking for an input file) >> ffmpeg -i ffmpeg version 1.2 Copyright (c) 2000-2013 the FFmpeg developers built on Apr 3 2013 14:18:32 with gcc 4.6.3 (GCC) 20120306 (Red Hat 4.6.3-2) configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --mandir=/usr/share/man --enable-shared --enable-runtime-cpudetect --enable-gpl --enable-version3 --enable-postproc --enable-avfilter --enable-pthreads --enable-x11grab --enable-vdpau --disable-avisynth --enable-libdc1394 --enable-libgsm --enable-libmp3lame --enable-libnut --enable-librtmp --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxavs --enable-libxvid --disable-stripping --enable-libfaac --enable-nonfree libavutil 52. 18.100 / 52. 18.100 libavcodec 54. 92.100 / 54. 92.100 libavformat 54. 63.104 / 54. 63.104 libavdevice 54. 3.103 / 54. 3.103 libavfilter 3. 42.103 / 3. 42.103 libswscale 2. 2.100 / 2. 2.100 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 2.100 / 52. 2.100 2. Once you have checked out the code, make sure that ffmpeg has a required presets for libx264. Three preset files (.ffpreset) should be present in the --datadir from the above ffmpeg command out put (generally /usr/share/ffmpeg). They should be same as the ones present in /config/ffmpeg. If the presets are not present in /usr/share/ffmpeg please copy them from /config/ffmpeg. For installation on Ubuntu follow the steps given @ http://www.vimp.com/en/documentation-faq-article/items/howto-compile-ffmpeg-for-ubuntu-and-debian.html ===== Install SWFTools ===== pdf2swf utility available in SWFTools is used to convert a pdf document to SWF. wget http://www.swftools.org/swftools-0.9.1.tar.gz tar -xzf swftools-0.9.1.tar.gz #make sure you have proper devel libs (you'll need giflib-devel.x86_64 if you've used yum groupinstall for development tools/libs) sudo yum install gcc* automake zlib-devel libjpeg-devel giflib-devel freetype-devel cd swftools-0.9.1 ./configure make sudo make install ===== Install Pdf2json and mupdf ===== These tools are required to support serving documents on browsers that does not support flash e.g. on Ipad, iphone etc... **Install pdf2json** wget http://pdf2json.googlecode.com/files/pdf2json-0.61.tar.gz mkdir pdf2json-0.61 cp pdf2json-0.61.tar.gz pdf2json-0.61 cd pdf2json-0.61 tar -zxvf pdf2json-0.61.tar.gz ./configure make sudo make install **Install mupdf** wget http://mupdf.googlecode.com/files/mupdf-1.2-source.zip unzip mupdf-1.2-source.zip cd mupdf-1.2-source sudo make prefix=/usr/local install ===== Install and Configure Chat Server ===== [[chat_implementation|Chat Installation and Configuration Steps]] ===== Install and Configure File Upload Module ===== [[file_upload_progress_bar|File Upload Indicator Installation and Configuration]] ===== Process start/stop scripts on development build server ===== === Solr process === NOTE: Edit file /home/expdevl/bin/solr_sss.sh to comment/uncomment following lines to reflect appropriate environments: ### Comment or Uncomment the rake environments as requied ### # rake sunspot:solr:start RAILS_ENV=staging rake sunspot:solr:start RAILS_ENV=development rake sunspot:solr:start RAILS_ENV=test END NOTE: Manage as expdevl user: cd /home/expdevl/bin ./solr_sss.sh stop (to stop solr process/es) ./solr_sss.sh start (to start solr process/es) ./solr_sss.sh status (to check status of running solr process/es) Manage as root: service stop solr service start solr service status solr === Redis and Node === Manage as expdevl user: cd /home/expdevl/bin ./redis_node_sss.sh stop ./redis_node_sss.sh start ./redis_node_sss.sh status Manage as root: service redis_nod stop service redis_nod start service redis_nod status === Apache httpd server === Manage as root: service httpd stop service httpd start service httpd status NOTE: If running as expdevl user, prefix the above with sudo /sbin/ (so end command would look like "sudo /sbin/service httpd status") === soffice and svnserve === The svn server and soffice (headless) are started as part of system startup (along with the above processes). In case you need to restart (or start) if its not running, run the below as root or sudo: svnserver pkill -15 svnserve /usr/bin/svnserve -d soffice pkill -15 soffice.bin at now < ===== Setup the application on the staging ===== Add a Virtual hosts entry in the apache config file (httpd.conf) which looks similar to this ServerName stage01.exphosted.com:80 ServerAlias *.stage01.exphosted.com ErrorLog "logs/crossbow-error.log" CustomLog "logs/crossbow-access-log" common DocumentRoot /deploy/crossbow/current/public AllowOverride all Options -MultiViews RailsEnv development RailsDefaultUser root To enable the application for https add another VirtualHost entry ServerName stage01.exphosted.com ServerAlias *.stage01.exphosted.com ErrorLog "logs/crossbow-error.log" CustomLog "logs/crossbow-access-log" common DocumentRoot /deploy/crossbow/current/public AllowOverride all Options -MultiViews RailsEnv development RailsDefaultUser root SSLEngine on SSLCertificateFile /etc/apache2/conf/server.crt SSLCertificateKeyFile /etc/apache2/conf/server.key SetEnvIf User-Aget ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 * The **DocumentRoot** should point to the public folder of the rails application. * **ServerAlias** is required so that requests for subdomains of stage01.exphosted.com is routed to this virtual host. e.g. xxx.stage01.exphosted.com should be processed. * **SSLCertificateFile** should point to the certificate file that was created * **SSLCertificateKeyFile** should point to the key file. To create a self-signed certificate use the following command openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 -keyout server.key -out server.crt This command generates 2 files, server.key and server.crt For the application to work based on different subdomains, one needs to ensure that the DNS entries for these wildcard sub-domains points to the server where we have hosted the application. At present, it is on stage01.exphosted.com ( IP - 184.106.207.71). We should ensure that xyz.stage01.exphosted.com also resolves to the same IP address. (xyz - can be any subdomain). We need to make dns changes to ensure that *.stage01.exphosted.com points to 184.106.207.71 ====== Setup the application locally ====== ===== 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 If you are on OSX, you will need to do the following to install the mysql gem sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config 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. If the rmagick gem fails, with an error: Installing rmagick (1.15.17) with native extensions /usr/local/lib/ruby/site_ruby/1.8/rubygems/installer.rb:483:in `build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError) /usr/local/lib/ruby/gems/1.8/gems/rmagick-1.15.17/./lib/rvg/misc.rb:321:in `get_type_metrics': unable to read font `/usr/share/fonts/default/TrueType/verdana.ttf' (Magick::ImageMagickError) and so on ..., then install MS TrueType fonts (instructions for Redhat/CentOS) yum install rpm-build cabextract wget http://corefonts.sourceforge.net/msttcorefonts-2.0-1.spec rpmbuild -ba msttcorefonts-2.0-1.spec rpm -ivh /usr/src/redhat/RPMS/noarch/msttcorefonts-2.0-1.noarch.rpm cd /usr/share/fonts/default/ ln -s ../msttcorefonts TrueType If the sunspot_rails gem give a dependency error then install them using $ sudo apt-get install libxslt-dev libxml2-dev (on ubuntu) sunspot-rails uses nokogiri gem. In case of any other issues when install the sunspot-rails gem refer to http://nokogiri.org/tutorials/installing_nokogiri.html 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. rake db:create:all Once the DBs are created run the migrations to create necessary tables using following command. rake db:migrate rake db:migrate RAILS_ENV=test Run the solr server in test environment rake sunspot:solr:start RAILS_ENV=test Run all the tests to make sure that the setup is done correctly rake test Run the rake db:seed to create the default company (This is just one time task) rake db:seed The default company will be created with name 'default' and subdomain as 'default'. No subdomain in url will refer to default company. e.g. http://localhost:3000 will take default company as a context. An admin user for the default company will also be created. The username for admin user is 'expertus_admin' and password is 'password'. ===== Create a company ===== - Click on "Create Company" tab option and enter the details for the company and email subdomains for the company - The value of 'subdomain' field will have to be used in the url when access/refering to this company. e.g. if value of subdomain field is 'xxx' then http://xxx.demo.localhost.com:3000 will be the base url for the company. - To run the application locally with the given subdomain you need to modify the /etc/hosts file to point xxx.localhost to loopback IP address 127.0.0.1. i.e. the hosts file should have following entry if companies with subdomain 'xxx' and 'yyy' is created. Note that the default.demo.localhost.com is for the default company. 127.0.0.1 demo.localhost.com default.demo.localhost.com airtelinc.demo.localhost.com