Created
August 27, 2011 01:14
-
-
Save gunnertech/1174823 to your computer and use it in GitHub Desktop.
CentOS Setup Script for Passenger/MySQL/Nginx/Rails
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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