-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Ubuntu Server Setup Script
This procedure is provided without any express or implied warranty and using it is entirely at your own risk. Installing any software on a computer can have unintended consequences. You should back up your important files before trying this or any other installation.
You can run the following command to quickly install Fat Free CRM on a Debian-based server. It will take about 20 minutes to complete.
sudo apt-get install -y --force-yes curl; sudo su - -c "bash < <(curl -sL http://is.gd/q6sEHA)"
It has been tested on a clean Ubuntu 10.10. (It does not work properly on later versions at the moment.) If you are hosting Fat Free CRM on a public site then you will need to reconfigure the database for security reasons.
It runs the following steps:
- Install required packages (git, postgresql, etc.)
- Configure PostgreSQL
- Install RVM & Ruby 1.9.2
- Install Passenger
- Install Fat Free CRM
- Configure Fat Free CRM database settings
- Install Fat Free CRM production gems to vendor/gems
- Create & migrate Fat Free CRM database & load settings
- Create default admin user
- Configure machine hostname
- Configure passenger standalone service (runs on startup)
- Set permissions
- Start passenger service, which:
- Downloads and compiles Nginx
- Installs Phusion Passenger Standalone
- Starts the web server on port :80
Here is the script that is executed:
#!/bin/bash
#
# Deploy Fat Free CRM (rails3 branch) to a freshly installed Ubuntu machine.
# --------------------------------------------------------------------------
#
# After this process has finished, you should be able to load http://localhost in your browser.
# 'http://fat_free_crm' and http://xx.xx.xx.xx (IP address) should be accessible from other machines.
# (type 'ifconfig' in terminal to find your IP address)
# Variables
# ----------------------------------------------------------
app_name="fat_free_crm"
app_repo="https://github.com/michaeldv/fat_free_crm.git"
app_path="/opt/rails/$app_name"
ruby_version=ruby-1.9.2-p136
# *) Install required packages
# ----------------------------------------------------------
apt-get update
apt-get install -y --force-yes curl git-core postgresql libpq-dev build-essential libcurl4-openssl-dev zlib1g-dev
# *) Configure PostgreSQL
# ----------------------------------------------------------
sed -e "s|local *all *postgres .*|local all postgres trust|g" \
-e "s|local *all *all .*|local all all trust|g" \
-e "s|host *all *all *127.0.0.1/32 .*|host all all 127.0.0.1/32 trust|g" \
-e "s|host *all *all *::1/128 .*|host all all ::1/128 trust|g" \
-i /etc/postgresql/8.*/main/pg_hba.conf
/etc/init.d/postgresql restart
# *) Install RVM & Ruby
# ----------------------------------------------------------
if ! (which rvm) then
bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
fi
# Loads RVM into the current shell session
. "/usr/local/rvm/scripts/rvm"
# Install the configured ruby version
if ! (rvm list | grep -q $ruby_version); then
rvm install $ruby_version
fi
# Use the installed ruby environment
rvm use "$ruby_version"
# Configure .gemrc to ignore ri and rdoc
echo "gem: --no-ri --no-rdoc" > $HOME/.gemrc
# Install bundler and passenger
if ! (gem list | grep -q "bundler"); then gem install bundler; fi
if ! (gem list | grep -q "passenger"); then gem install passenger; fi
# *) Install Fat Free CRM
# ----------------------------------------------------------
mkdir -p /opt/rails
git clone $app_repo $app_path
cd $app_path
git checkout -t origin/rails3
# *) Configure Fat Free CRM database settings
# ----------------------------------------------------------
cat << EOF > $app_path/config/database.yml
production:
adapter: postgresql
database: fat_free_crm_production
username: postgres
password:
host: localhost
port: 5432
schema_search_path: public
EOF
# *) Install Fat Free CRM production gems
# ----------------------------------------------------------
# Make passenger look in the right place for gems
mkdir -p $app_path/.bundle
cat << EOF > $app_path/.bundle/config
---
BUNDLE_WITHOUT: development:test
BUNDLE_PATH: /usr/local/rvm/gems/$ruby_version/bundler
EOF
cd $app_path
bundle install --without development test
# *) Create & migrate Fat Free CRM database
# ----------------------------------------------------------
RAILS_ENV=production rake db:create db:migrate
# *) Create default admin user
# ----------------------------------------------------------
RAILS_ENV=production rake ffcrm:setup:admin USERNAME=admin PASSWORD=admin EMAIL=admin@example.com
# *) Configure machine hostname
# ----------------------------------------------------------
echo "fat_free_crm" > /etc/hostname
restart hostname
# *) Configure passenger standalone init script
# (Uses https://github.com/ndbroadbent/passenger-initscript)
# --------------------------------------------------------------
groupadd passenger
useradd passenger -g passenger
cd /etc/init.d
curl https://github.com/ndbroadbent/passenger-initscript/raw/master/passenger -o passenger
chmod +x passenger
# Setup 'passenger-initscripts'
/etc/init.d/passenger setup
# Configure Fat Free CRM passenger config
cat << EOF > /etc/passenger.d/$app_name.yml
rvm: $ruby_version
cwd: $app_path
user: passenger
port: 80
environment: production
max-pool-size: 4
min-instances: 1
pid-file: $app_path/tmp/pids/passenger.pid
log-file: $app_path/log/passenger.log
EOF
# Make directory for passenger pids
mkdir -p $app_path/tmp/pids
mkdir -p $app_path/log
# *) Set permissions
# ----------------------------------------------------------
chown -R passenger:passenger $app_path
# *) Start passenger service
# ----------------------------------------------------------
/etc/init.d/passenger start