Return to Snippet

Revision: 28796
at July 14, 2010 17:57 by adhd360


Initial Code
sudo aptitude update

sudo aptitude install build-essential mysql-server mysql-client libmysqlclient15-dev libsqlite3-dev libpcre3 libpcre3-dev libpcrecpp0 libssl-dev zlib1g-dev

mkdir /tmp/sources && cd /tmp/sources

wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-rc2.tar.gz && tar -xvzf ruby-1.9.2-rc2.tar.gz

cd ruby-1.9.2-rc2 && ./configure --prefix=/opt/ruby-1.9.2-rc2 --enable-pthread --enable-shared

make

sudo make install

nano ~/.profile
# at the end paste
export PATH=/opt/ruby/bin:$PATH
alias sudo="sudo env PATH=$PATH"

source ~/.profile

sudo nano /usr/local/bin/select_ruby
# ** begin select_ruby contents **
#!/bin/sh

while : # Loop forever
do
cat << !

current = $(/opt/ruby/bin/ruby --version)

Select Option

1. ruby-1.9.2-rc2
2. exit

!

echo -n " Your choice? : "
read choice

case $choice in
1) rm -rf /opt/ruby; ln -s /opt/ruby-1.9.2-rc2 /opt/ruby;;
2) exit;;
*) echo "\"$choice\" is not valid "; sleep 2 ;;
esac
exit
done
# ** end select_ruby contents **

sudo chmod +x /usr/local/bin/select_ruby

sudo select_ruby  # select option 1

sudo gem update

sudo gem update --system

sudo gem install rails --pre --no-rdoc --no-ri

# MySQL
mkdir /tmp/sources && cd /tmp/sources

wget http://tmtm.org/downloads/mysql/ruby/mysql-ruby-2.8.2.tar.gz

tar -zxvf mysql-ruby-2.8.2.tar.gz && cd mysql-ruby-2.8.2

ruby extconf.rb

make

sudo make install

# SQLite3 (issues compiling sqlite3-ruby-1.3.1)
sudo gem install -v=1.2.5 sqlite3-ruby --no-rdoc --no-ri

# Rails project
mkdir /opt/rails && mkdir /opt/rails/releases && mkdir /opt/rails/releases && cd /opt/rails/releases

sudo rails new app071110

sudo ln -s /opt/evogi/rails/releases/app071110 /opt/evogi/rails/current

cd /opt/evogi/rails/current

# THIN
sudo gem install thin --no-rdoc --no-ri

sudo thin install

sudo /usr/sbin/update-rc.d -f thin defaults

sudo thin config -C /etc/thin/evogi.yml -c /opt/evogi/rails/current/  --servers 3 -e production

# Nginx
cd /tmp/sources

wget http://sysoev.ru/nginx/nginx-0.8.44.tar.gz

tar -zxvf nginx-0.8.44.tar.gz 

cd nginx-0.8.44

./configure --sbin-path=/usr/local/sbin --with-http_ssl_module --with-http_gzip_static_module

make

sudo make install

sudo nano /etc/init.d/nginx
# ** begin nginx contents **
#! /bin/sh

### BEGIN INIT INFO
# Provides:          nginx
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the nginx web server
# Description:       starts nginx using start-stop-daemon
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/sbin/nginx
NAME=nginx
DESC=nginx

test -x $DAEMON || exit 0

# Include nginx defaults if available
if [ -f /etc/default/nginx ] ; then
        . /etc/default/nginx
fi

set -e

case "$1" in
  start)
        echo -n "Starting $DESC: "
        start-stop-daemon --start --quiet --pidfile /usr/local/nginx/logs/$NAME.pid \
                --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
  stop)
        echo -n "Stopping $DESC: "
        start-stop-daemon --stop --quiet --pidfile /usr/local/nginx/logs/$NAME.pid \
                --exec $DAEMON
        echo "$NAME."
        ;;

  restart|force-reload)
        echo -n "Restarting $DESC: "
        start-stop-daemon --stop --quiet --pidfile \
                /usr/local/nginx/logs/$NAME.pid --exec $DAEMON
        sleep 1
        start-stop-daemon --start --quiet --pidfile \
                /usr/local/nginx/logs/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
  reload)
      echo -n "Reloading $DESC configuration: "
      start-stop-daemon --stop --signal HUP --quiet --pidfile /usr/local/nginx/logs/$NAME.pid \
          --exec $DAEMON
      echo "$NAME."
      ;;
  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
        exit 1
        ;;
esac

exit 0
# ** end nginx contents **

sudo chmod +x /etc/init.d/nginx

sudo /usr/sbin/update-rc.d -f nginx defaults

sudo mkdir /usr/local/nginx/sites-available && sudo mkdir /usr/local/nginx/sites-enabled

sudo nano /usr/local/nginx/conf/nginx.conf
# ** begin nginx.conf contents **
user  evogi7;
worker_processes  6;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  /opt/evogi/rails/current/log/nginx_access.log  main;

    sendfile        on;
    tcp_nopush     on;
    tcp_nodelay    off;	

    #keepalive_timeout  0;
    keepalive_timeout  65;

    gzip  on;
    gzip_static	on;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";
    gzip_http_version 1.1;
    gzip_min_length 10;
    gzip_comp_level 9;  # default is 2
    gzip_proxied any;
    gzip_vary on;
    gzip_types      text/plain application/xhtml+xml text/css application/x-javascript text/xml application/xml
application/xml+rss text/javascript;

    upstream mongrel {
      server 127.0.0.1:3000;
      server 127.0.0.1:3001;
      server 127.0.0.1:3002;
    }
	
    server {
        listen       80;
        server_name  www.gateway.evogi.com gateway.evogi.com;

        root /opt/evogi/rails/current/public;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        if (-f $document_root/system/maintenance.html) {
          rewrite  ^(.*)$  /system/maintenance.html last;
          break;
        }

        location / {
            proxy_set_header  X-Real-IP  $remote_addr;
	    
	    # needed for HTTPS
	    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
	    proxy_set_header Host $http_host;
	    proxy_redirect off;
	    proxy_max_temp_file_size 0;
	    
	    if (-f $request_filename) {
	      break;
	    }

	    if (-f $request_filename/index.html) {
	      rewrite (.*) $1/index.html break;
	    }

	    if (-f $request_filename.html) {
	      rewrite (.*) $1.html break;
	    }

	    if (!-f $request_filename) {
	      proxy_pass http://mongrel;
	      break;
	    }	        
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /500.html;
        location = /500.html {
            root   /opt/evogi/rails/current/public;
        }
    }
}
# ** end nginx.conf contents **


sudo nano /usr/local/nginx/sites-available/gateway.evogi.com
# ** end gateway.evogi.com contents **
upstream domain1 {
        server 127.0.0.1:3000;
        server 127.0.0.1:3001;
        server 127.0.0.1:3002;
    }

server {
            listen   80;
            server_name  gateway.evogi.com;
            rewrite ^/(.*) http://gateway.evogi.com permanent;
           }


server {
            listen   80;
            server_name gateway.evogi.com;

            #access_log /opt/evogi/rails/current/log/nginx_access.log;
            #error_log /opt/evogi/rails/current/log/nginx_error.log;

            root   /opt/evogi/rails/current/public/;
            index  index.html;

            location / {
                          proxy_set_header  X-Real-IP  $remote_addr;
                          proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
                          proxy_set_header Host $http_host;
                          proxy_redirect false;

                          if (-f $request_filename/index.html) {
                                           rewrite (.*) $1/index.html break;
                          }

                          if (-f $request_filename.html) {
                                           rewrite (.*) $1.html break;
                          }

                          if (!-f $request_filename) {
                                           proxy_pass http://domain1;
                                           break;
                          }
            }

}
# ** end gateway.evogi.com contents **

sudo ln -s /usr/local/nginx/sites-available/gateway.evogi.com /usr/local/nginx/sites-enabled/gateway.evogi.com

# Start server
sudo /etc/init.d/thin start

sudo /etc/init.d/nginx start




Initial URL


Initial Description


Initial Title
Installing Rails 3.0 beta4 & Ruby 1.9.2 RC2 on a fresh Ubuntu box

Initial Tags


Initial Language
Bash