Skip to content

Instantly share code, notes, and snippets.

@gunnertech
Created August 27, 2011 01:14
Show Gist options
  • Save gunnertech/1174823 to your computer and use it in GitHub Desktop.
Save gunnertech/1174823 to your computer and use it in GitHub Desktop.
CentOS Setup Script for Passenger/MySQL/Nginx/Rails
#!/bin/bash
#SCRIPT VARIABLES
interpreter=$1
user=$2
project=$3
mysql_root_password=$4
mysql_app_password=$5
environment=$6
if [[ -z "$1" ]]; then
echo "You must specify a ruby interpreter to install"
echo "Useage: ./centos_setup.sh interpreter user project mysql_root_password mysql_app_password"
exit 113
fi
if [[ -z "$2" ]]; then
echo "You must specify a user"
echo "Useage: ./centos_setup.sh interpreter user project mysql_root_password mysql_app_password"
exit 113
fi
if [[ -z "$3" ]]; then
echo "You must specify the name of the project"
echo "Useage: ./centos_setup.sh interpreter user project mysql_root_password mysql_app_password"
exit 113
fi
if [[ -z "$4" ]]; then
echo "You must specify the root MySQL user's password"
echo "Useage: ./centos_setup.sh interpreter user project mysql_root_password mysql_app_password"
exit 113
fi
if [[ -z "$5" ]]; then
echo "You must specify the app user's MySQL user's password"
echo "Useage: ./centos_setup.sh interpreter user project mysql_root_password mysql_app_password"
exit 113
fi
if [[ -z "$6" ]]; then
environment='staging'
fi
#INSTALL DEPENDENCIES
sudo yum install -y bison openssl curl git-core vim git-core subversion autoconf
sudo yum install -y gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel
sudo yum install -y make bzip2
sudo yum install -y iconv-devel
sudo yum install -y curl-devel
sudo yum install -y sqlite3-devel
sudo yum install -y libxml2 libxml2-devel libxslt libxslt-devel
sudo yum install -y ImageMagick
sudo yum install -y ImageMagick-devel
sudo yum install -y rpm-build cabextract
sudo yum install -y sysstat
sudo yum install -y libtool
#INSTALL RVM
sudo bash < <(curl -sk https://rvm.beginrescueend.com/install/rvm)
#TURN TRUST CHECK OFF
sudo sh -c "echo 'rvm_project_rvmrc=1' >> /etc/rvmrc"
sudo sh -c "echo '
if groups | grep -q rvm ; then
source \"/usr/local/rvm/scripts/rvm\"
fi' >> /root/.bashrc"
sudo sh -c "echo '
if groups | grep -q rvm ; then
source \"/usr/local/rvm/scripts/rvm\"
fi' >> /etc/skel/.bashrc"
rvm reload
#ADD USERS TO RVM GROUP
sudo usermod -a -G rvm `whoami`
sudo adduser $user -G rvm
sudo passwd $user
sudo mkdir /home/$user/.ssh
sudo chmod 600 /home/$user/.ssh/authorized_keys
sudo chmod 700 /home/$user/.ssh
sudo chown -R $user /home/$user/.ssh
#DEFAULT GEMS FOR EVERY GEMSET
sudo sh -c "echo '' > /usr/local/rvm/gemsets/global.gems"
for gem in bundler rdoc awesome_print; do
sudo sh -c "echo $gem >> /usr/local/rvm/gemsets/global.gems"
done
rvm reload
#INSTALL RUBY
rvmsudo rvm install $interpreter
rvm use $interpreter@$project --create
rvm use $interpreter@$project --default
gem install passenger --no-ri --no-rdoc
rvmsudo passenger-install-nginx-module --extra-configure-flags='--with-http_flv_module'
#Choose option 1
#Use default path
# MYSQL
sudo yum install -y mysql-server mysql mysql-devel
sudo /etc/init.d/mysqld start
#/usr/bin/mysqladmin -u root password '${mysql_root_password}'
mysqladmin create ${project}_${environment} -uroot -p${mysql_root_password}
mysql --user=root mysql -p${mysql_root_password} <<QUERY_INPUT
CREATE USER '${project}'@'localhost' IDENTIFIED BY '${mysql_app_password}';
QUERY_INPUT
mysql --user=root mysql -p${mysql_root_password} <<QUERY_INPUT
GRANT all ON ${project}_${environment}.* TO '${project}'@'localhost';
QUERY_INPUT
# NGINX
echo '
# ADD THE FOLLOWING /opt/nginx/conf/nginx.conf and then use sudo /etc/init.d/nginx (stop|restart|start)
server {
listen 80;
server_name staging.qualismanagement.com;
root /home/${user}/rails/${project}/public; # <--- be sure to point to "public"!
passenger_enabled on;
}
'
sudo mkdir -p /etc/init.d/
sudo touch /etc/init.d/nginx
sudo sh -c "curl -L https://gist.github.com/raw/1148474/578f4ff90c02605270d9b986fd492d6bf27bc4da/nginx > /etc/init.d/nginx"
sudo chmod go+rx /home/$user
sudo chmod +x /etc/init.d/nginx
# SSH KEY
run 'ssh-keygen -t rsa -q -N "" -f /home/${user}/.ssh/id_rsa -C "${user}@${project}.com"'
echo "Make sure to copy the key to github as either a deploy key or an account key."
# systools
wget http://garr.dl.sourceforge.net/sourceforge/sysbench/sysbench-0.4.12.tar.gz
tar -xvzf sysbench-0.4.12.tar.gz
cd sysbench-0.4.12
libtoolize --force --copy
./autogen.sh
./configure
make
sudo make install
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment