Created
November 14, 2011 17:49
-
-
Save gustavohenrique/1364585 to your computer and use it in GitHub Desktop.
Install hudson, maven, archiva, collabnet svn, tomcat and play! framework
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 | |
IPS_HOME="/opt/ips" | |
BUILD_DIR="$IPS_HOME/build" | |
DOWNLOAD_DIR="$DOWNLOAD_DIR" | |
TOMCAT_DIR="$IPS_HOME/tomcat7" | |
TOMCAT_USER="ips" | |
TOMCAT_PASSWORD="ips" | |
TOMCAT_PORT="8888" | |
WEBAPPS_DIR="$TOMCAT_DIR/webapps" | |
APACHE_DIR="/etc/apache2" | |
MAVEN2_DIR="$IPS_HOME/maven2" | |
MAVEN3_DIR="$IPS_HOME/maven3" | |
DEFAULT_MAVEN=$MAVEN3_DIR | |
SVN_DIR="$IPS_HOME/csvn" | |
DOWNLOAD_DIR="/tmp" | |
function create_ips_user() { | |
warn "Criando usuario do IPS... " | |
useradd -d /home/$1 -m -s /bin/bash -U $1 | |
} | |
function create_ips_directory_skel() { | |
warn "Criando estrutura de diretorios $BUILD_DIR..." | |
mkdir -p $BUILD_DIR 2> /dev/null | |
} | |
function download() { | |
local url=$1 | |
local file="$2" | |
if [ ! -f "$DOWNLOAD_DIR/$file" ]; then | |
warn "Baixando $url/$file..." | |
cd $DOWNLOAD_DIR | |
wget "$url/$file" | |
fi | |
if [ ! -f "$DOWNLOAD_DIR/$file" ]; then | |
error "O arquivo $DOWNLOAD_DIR/$file nao existe e nao foi possivel fazer o download dele." | |
exit 1 | |
fi | |
} | |
function extract_tar_gz() { | |
local file=$1 | |
cd $DOWNLOAD_DIR | |
warn "Descompactando $file..." | |
tar zxvf $file > /dev/null | |
} | |
function copy() { | |
local orig=$1 | |
local dest=$2 | |
local command="cp -rf" | |
if [ -d "$DOWNLOAD_DIR/$orig" ]; then | |
warn "Movendo $orig para $dest..." | |
rm -rf $dest 2> /dev/null | |
$command "$DOWNLOAD_DIR/$orig" $dest | |
elif [ -f "$DOWNLOAD_DIR/$orig" ]; then | |
$command "$DOWNLOAD_DIR/$orig" $dest | |
else | |
warn "Erro ao copiar. Arquivo/diretorio $orig nao existe." | |
exit 1 | |
fi | |
} | |
function install_maven() { | |
local url="$1" | |
local file=$2 | |
local dest_dir=$3 | |
download $url $file | |
extract_tar_gz $file | |
local extracted_dir=`basename $file .tar.gz | cut -d "-" -f1-3` | |
copy $extracted_dir $dest_dir | |
} | |
function install_tomcat() { | |
local url=$1 | |
local file=$2 | |
local dest_dir=$3 | |
download $url $file | |
extract_tar_gz $file | |
local extracted_dir=`basename $file .tar.gz` | |
copy $extracted_dir $dest_dir | |
} | |
function install_play_framework() { | |
local url=$1 | |
local file=$2 | |
local dest_dir=$3 | |
download $url $file | |
cd $DOWNLOAD_DIR | |
unzip $file | |
local extracted_dir=`basename $file .zip` | |
copy $extracted_dir $dest_dir | |
} | |
function install_war_file() { | |
local url=$1 | |
local file=$2 | |
local dest_dir=$3 | |
download $url $file | |
copy $file $dest_dir | |
} | |
function install_svn() { | |
local url=$1 | |
local file=$2 | |
local dest_dir=$3 | |
download $url $file | |
extract_tar_gz $file | |
local extracted_dir="csvn" | |
copy $extracted_dir $dest_dir | |
} | |
function configure_tomcat() { | |
local user=$1 | |
local pass=$2 | |
local file=$3 | |
warn "Adicionando o user $user no tomcat..." | |
echo "<?xml version='1.0' encoding='utf-8'?> | |
<tomcat-users> | |
<role rolename=\"manager-gui\"/> | |
<role rolename=\"admin-gui\"/> | |
<user username=\"$user\" password=\"$pass\" roles=\"manager-gui, admin-gui\"/> | |
</tomcat-users>" > $file | |
# change port | |
echo -e "%s/8080/$TOMCAT_PORT/g\nwq" | ex -s $TOMCAT_DIR/conf/server.xml | |
} | |
function configure_apache_virtualhost() { | |
local server_name=$1 | |
local file="ips" | |
warn "Configurando virtualhost para [$server_name]..." | |
echo "<VirtualHost *:80> | |
ServerName $server_name | |
DocumentRoot /var/www | |
<IfModule mod_proxy.c> | |
ProxyRequests off | |
ProxyPreserveHost On | |
keepalive Off | |
SetEnv force-proxy-request-1.0 1 | |
SetEnv proxy-nokeepalive 1 | |
SSLProxyEngine on | |
<Location /csvn> | |
ProxyPass http://localhost:3343/csvn | |
ProxyPassReverse http://localhost:3343/csvn | |
Order Allow,Deny | |
Allow from all | |
</Location> | |
<Location /svn> | |
ProxyPass http://localhost:8080/svn | |
ProxyPassReverse http://localhost:8080/svn | |
Order Allow,Deny | |
Allow from all | |
</Location> | |
<Location /viewvc> | |
ProxyPass http://localhost:8080/viewvc | |
ProxyPassReverse http://localhost:8080/viewvc | |
Order Allow,Deny | |
Allow from all | |
</Location> | |
<Location /viewvc-static> | |
ProxyPass http://localhost:8080/viewvc-static | |
ProxyPassReverse http://localhost:8080/viewvc-static | |
Order Allow,Deny | |
Allow from all | |
</Location> | |
<Location /ips> | |
ProxyPass http://localhost:$TOMCAT_PORT/ connectiontimeout=30 timeout=30 | |
ProxyPassReverse http://localhost:$TOMCAT_PORT/ | |
Order Allow,Deny | |
Allow from all | |
</Location> | |
<Location /manager> | |
ProxyPass http://localhost:$TOMCAT_PORT/manager connectiontimeout=30 timeout=30 | |
ProxyPassReverse http://localhost:$TOMCAT_PORT/manager | |
Order Allow,Deny | |
Allow from all | |
</Location> | |
<Location /archiva> | |
ProxyPass http://localhost:$TOMCAT_PORT/archiva connectiontimeout=30 timeout=30 | |
ProxyPassReverse http://localhost:$TOMCAT_PORT/archiva | |
Order Allow,Deny | |
Allow from all | |
</Location> | |
<Location /hudson> | |
ProxyPass http://localhost:$TOMCAT_PORT/hudson connectiontimeout=30 timeout=30 | |
ProxyPassReverse http://localhost:$TOMCAT_PORT/hudson | |
Order Allow,Deny | |
Allow from all | |
</Location> | |
</IfModule> | |
</VirtualHost>" > "$APACHE_DIR/sites-available/$file" | |
a2enmod proxy | |
a2enmod proxy_http | |
a2enmod ssl | |
a2ensite $file | |
} | |
function install_archiva() { | |
if [ ! -d "$TOMCAT_DIR" ]; then | |
warn "Instale o tomcat antes de instalar o archiva." | |
exit 1 | |
fi | |
local url=$1 | |
local file=$2 | |
download $url $file | |
mkdir "$TOMCAT_DIR/archiva" | |
copy $file "$TOMCAT_DIR/archiva/" | |
# Archiva dependencies | |
download "http://mirrors.ibiblio.org/pub/mirrors/maven2/javax/mail/mail/1.4.1" "mail-1.4.1.jar" | |
download "http://mirrors.ibiblio.org/pub/mirrors/maven2/javax/activation/activation/1.1" "activation-1.1.jar" | |
download "http://mirrors.ibiblio.org/pub/mirrors/maven2/org/apache/derby/derby/10.1.3.1" "derby-10.1.3.1.jar" | |
download "http://mirrors.ibiblio.org/pub/mirrors/maven2/org/apache/derby/derbytools/10.1.3.1" "derbytools-10.1.3.1.jar" | |
# Copy dependencies to tomcat lib dir | |
cp "$DOWNLOAD_DIR/mail-1.4.1.jar" $TOMCAT_DIR/lib | |
cp "$DOWNLOAD_DIR/activation-1.1.jar" $TOMCAT_DIR/lib | |
cp "$DOWNLOAD_DIR/derby-10.1.3.1.jar" $TOMCAT_DIR/lib | |
cp "$DOWNLOAD_DIR/derbytools-10.1.3.1.jar" $TOMCAT_DIR/lib | |
# Create a archiva context | |
mkdir -p $TOMCAT_DIR/conf/Catalina/localhost | |
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?> | |
<Context path=\"/archiva\" docBase=\"$TOMCAT_DIR/archiva/apache-archiva-1.3.5.war\"> | |
<Resource name=\"jdbc/users\" auth=\"Container\" type=\"javax.sql.DataSource\" username=\"sa\" password=\"\" driverClassName=\"org.apache.derby.jdbc.EmbeddedDriver\" url=\"jdbc:derby:database/users;create=true\" /> | |
<Resource name=\"jdbc/archiva\" auth=\"Container\" type=\"javax.sql.DataSource\" username=\"sa\" password=\"\" driverClassName=\"org.apache.derby.jdbc.EmbeddedDriver\" url=\"jdbc:derby:database/archiva;create=true\" /> | |
<Resource name=\"mail/Session\" auth=\"Container\" type=\"javax.mail.Session\" mail.smtp.host=\"localhost\"/> | |
</Context>" > $TOMCAT_DIR/conf/Catalina/localhost/archiva.xml | |
} | |
function create_ips_init_script() { | |
local ips_script=$1 | |
warn "Criando o script de inicializacao [$ips_script]..." | |
echo "#!/bin/bash | |
export CATALINA_HOME=$TOMCAT_DIR | |
export CATALINA_OPTS=\"-Dappserver.home=\$CATALINA_HOME -Dappserver.base=\$CATALINA_HOME\" | |
export JAVA_HOME=/usr/lib/jvm/java-6-sun | |
export JAVA_OPTS=\"-Xms512m -Xmx1024m -Djava.awt.headless=true\" | |
export HUDSON_HOME=$BUILD_DIR | |
export MAVEN_HOME=$DEFAULT_MAVEN | |
export M2_HOME=\$MAVEN_HOME | |
export MAVEN_OPTS=\"-Xms512m -Xmx1024m\" | |
export PATH=\$PATH:\$MAVEN_HOME/bin | |
$TOMCAT_DIR/bin/startup.sh | |
$SVN_DIR/bin/csvn start | |
" > $ips_script | |
chmod +x $ips_script | |
} | |
function install_dependencies() { | |
warn "Instalando dependencias via apt-get..." | |
apt-get install apache2 sun-java6-jre git git-svn graphviz subversion subversion-tools | |
} | |
function warn() { | |
local blue='\e[0;34m' | |
local nocolor='\e[0m' | |
echo -e "\n${blue}$1${nocolor}" | |
} | |
function error() { | |
local red='\e[0;31m' | |
local nocolor='\e[0m' | |
echo -e "\n${blue}$1${nocolor}" | |
} | |
function main() { | |
create_ips_directory_skel | |
create_ips_user "ips" | |
install_maven "http://ftp.unicamp.br/pub/apache/maven/binaries" "apache-maven-2.2.1-bin.tar.gz" $MAVEN2_DIR | |
install_maven "http://ftp.unicamp.br/pub/apache/maven/binaries" "apache-maven-3.0.3-bin.tar.gz" $MAVEN3_DIR | |
install_tomcat "http://ftp.unicamp.br/pub/apache/tomcat/tomcat-7/v7.0.20/bin" "apache-tomcat-7.0.20.tar.gz" $TOMCAT_DIR | |
install_war_file "http://hudson-ci.org/downloads/war/2.1.1" "hudson.war" $WEBAPPS_DIR | |
install_archiva "http://ftp.unicamp.br/pub/apache/archiva/binaries" "apache-archiva-1.3.5.war" | |
install_svn "http://downloads-guests.open.collab.net/files/documents/61/4671" "CollabNetSubversionEdge-2.0.0_linux-x86.tar.gz" $SVN_DIR | |
install_play_framework "http://download.playframework.org/releases" "play-1.2.3.zip" "$IPS_HOME/play" | |
configure_tomcat $TOMCAT_USER $TOMCAT_PASSWORD "$TOMCAT_DIR/conf/tomcat-users.xml" | |
configure_apache_virtualhost "ipsdev.wdev.com.br" | |
create_ips_init_script "/etc/init.d/ips" | |
chown ips:ips -Rf $IPS_HOME | |
warn "Sucesso. Execute o script [/etc/init.d/ips] para comecar a usar o IPS." | |
} | |
if [ "$1" != "--skip-dependencies" ]; then | |
install_dependencies | |
fi | |
main |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment