Thomas Mullaly

DevOps, Security and IT Leadership

Ruby on Rails Links for CS410

Ruby on Rails

  • http://ruby.railstutorial.org/ruby-on-rails-tutorial-book
  • http://railscasts.com/
  • http://www.ruby-toolbox.com
  • http://guides.rubyonrails.org/

Unix Commands

[[chmod]]

[[disk usage]]

[[convert man page to text]]

[[a2ps]]

[[vmware-toolbox-cmd]]

Wireshark Notes

Someone is changing the display on our hp printer so I am using wireshark to track it down.

Here is the filter I am using:

tcp.dstport == 9100 && tcp.flags.push == 1

MRTG

MRTG records the traffic on the switch ports by way of snmp. It’s quick and dirty, but it gives you an overall view of what’s going on and can indicate if something has gone haywire.

I do one configuration per switch like this:

cfgmaker --global 'WorkDir: /var/www/mrtg' \
         --global 'Options[_]: bits,growright' \
         --output=/etc/mrtg/mrtg-10.0.0.1.cfg \
         public@10.0.0.1

Then I build the index like this: indexmaker –output=/var/www/mrtg/index.html *.cfg

Edit crontab with crontab -e

I run as root, you can create a user if you wish

*/5 * * * *  env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg-10.0.0.1.cfg --logging /var/log/mrtg.log
*/5 * * * *  env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg-10.0.0.2.cfg --logging /var/log/mrtg.log
*/5 * * * *  env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg-10.0.0.2.cfg --logging /var/log/mrtg.log

Outgoing Port Tester

Outgoing port tester

This server listens on all TCP ports, allowing you to test any outbound TCP port.

http://portquiz.positon.org/

nmap -Pn --top-ports 1000 portquiz.net

Unicorn Init Script

#!/bin/sh
set -e
# Example init script, this can be used with nginx, too,
# since nginx and unicorn accept the same signals
# Feel free to change any of the following variables for your app:
TIMEOUT=${TIMEOUT-60}
APP_ROOT=/var/rails/tom/MyApp
PID=$APP_ROOT/tmp/pids/unicorn.pid
CMD="/var/rails/tom/.rvm/bin/bootup_unicorn -D -c $APP_ROOT/config/unicorn.rb"
#INIT_CONF=$APP_ROOT/config/init.conf
action="$1"
set -u
#test -f "$INIT_CONF" && . $INIT_CONF
old_pid="$PID.oldbin"
cd $APP_ROOT || exit 1
sig () {
	test -s "$PID" && kill -$1 `cat $PID`
}
oldsig () {
	test -s $old_pid && kill -$1 `cat $old_pid`
}
case $action in
start)
	sig 0 && echo >&2 "Already running" && exit 0
	$CMD
	;;
stop)
	sig QUIT && exit 0
	echo >&2 "Not running"
	;;
force-stop)
	sig TERM && exit 0
	echo >&2 "Not running"
	;;
restart|reload)
	sig HUP && echo reloaded OK && exit 0
	echo >&2 "Couldn't reload, starting '$CMD' instead"
	$CMD
	;;
upgrade)
	if sig USR2 && sleep 2 && sig 0 && oldsig QUIT
	then
		n=$TIMEOUT
		while test -s $old_pid && test $n -ge 0
		do
			printf '.' && sleep 1 && n=$(( $n - 1 ))
		done
		echo
		if test $n -lt 0 && test -s $old_pid
		then
			echo >&2 "$old_pid still exists after $TIMEOUT seconds"
			exit 1
		fi
		exit 0
	fi
	echo >&2 "Couldn't upgrade, starting '$CMD' instead"
	$CMD
	;;
reopen-logs)
	sig USR1
	;;
*)
	echo >&2 "Usage: $0 <start|stop|restart|upgrade|force-stop|reopen-logs>"
	exit 1
	;;
esac

Production Rails Server for CS410

Stop Whoopsie

Edit /etc/default/whoopsie and change report_crashes to false

service whoopsie stop

System ruby, gems and rails

We’ll leave the system ruby in place but purge rails and gems:

apt-get purge rails rubygems
apt-get autoremove

Rails Developerment Environment Help

Apple’s OS X Mountain Lion can be tricky to set up here’s how we solved one problem

rvm remove 2.0.0 # get rid of unsuccessful installation
rvm get head --autolibs=3 # get the latest RVM and build required libs
rvm requirements # just in case, install all other required stuff
rvm install ruby-2.0.0
rvm --default use ruby-2.0.0