Paste

Snippet never expires Compare Snippets View Raw Gist New snippet
  1. #!/bin/sh
  2.  
  3. # Script de Instalação Automática do SPDO
  4. # wget -O - http://repositorio.interlegis.gov.br/il.spdo/trunk/docs/install-spdo.sh | sh
  5.  
  6. VERSION="1.0"
  7. INSTALL_DIR="/var/interlegis/spdo"
  8. DOWNLOAD_URL="http://launchpad.net/plone/4.1/4.1.4/+download/Plone-4.1.4-UnifiedInstaller.tgz"
  9. LOG_FILE="/tmp/spdo-install.log"
  10. AUTOSOLVER=1
  11. PRESERVE_ARCHIVE=0
  12. UNINSTALL=0
  13. ERR_FATAL=1
  14.  
  15. for PARAM in $@; do
  16.   eval $PARAM
  17. done
  18.  
  19. log() {
  20.   echo `date` $1 >> $LOG_FILE
  21. }
  22.  
  23. puts() {
  24.   echo $1
  25.   log "$1"
  26. }
  27.  
  28. puts_separator() {
  29.   puts "-----------------------------------"
  30. }
  31.  
  32. exec_cmd() {
  33.   TITLE=$1
  34.   COMMAND=$2
  35.   
  36.   puts "$TITLE $COMMAND"
  37.   `$COMMAND`
  38. }
  39.  
  40. fatal_error() {
  41.   puts "Erro: $1"
  42.   exit $ERR_FATAL
  43. }
  44.  
  45. is_command_present() {
  46.   puts "Verificando a existência do comando: $1"
  47.   
  48.   CMD=`whereis -b $1 | awk '{ print $2 }'`
  49.   [ -n "$CMD" ] && return 0 || return 1
  50. }
  51.  
  52. detect_os() {
  53.   puts "Detectando a distribuição..."
  54.  
  55.   is_command_present "lsb_release"
  56.   if [ $? -eq 0 ]; then
  57.     puts "LSB info: `lsb_release -a`"
  58.     DISTRIB_ID=`lsb_release -si`
  59.     return 0
  60.   fi
  61.   
  62.   [ -f /etc/redhat-release ] && DISTRIB_ID="RedHat"  
  63.   [ -f /etc/fedora-release ] && DISTRIB_ID="Fedora"
  64.   [ -f /etc/debian_version ] && DISTRIB_ID="Debian"
  65. }
  66.  
  67. resolve_deps() {
  68.   puts "Resolvendo dependências..."
  69.  
  70.   if [ "$DISTRIB_ID" = "Debian" -o "$DISTRIB_ID" = "Ubuntu" ]; then
  71.       apt-get update
  72.       apt-get -y install build-essential git-core libfreetype6 libfreetype6-dev \
  73.       libjpeg62 libjpeg62-dev libmysqlclient-dev libreadline6 libreadline-dev \
  74.       libssl-dev mysql-client ssh subversion zlib1g zlib1g-dev
  75.       DEBIAN_FRONTEND=noninteractive apt-get -y install mysql-server
  76.   fi
  77.   
  78.   if [ "$DISTRIB_ID" = "RedHat" -o "$DISTRIB_ID" = "Fedora" -o "$DISTRIB_ID" = "CentOS" ]; then
  79.       fatal_error "O instalador automático ainda não suporta sua distribuição."
  80.   fi
  81. }
  82.  
  83. check_dependencies() {
  84.   [ "x$AUTOSOLVER" = "x1" ] && resolve_deps
  85. }
  86.  
  87. check_environment() {
  88.   puts "Verificando ambiente..."
  89.   
  90.   [ "`whoami`" != "root" ] && fatal_error "O instalador deve ser executado com o usuário root."
  91.   
  92.   puts "Sistema: `uname -a`"
  93.   
  94.   detect_os
  95.   [ "x$DISTRIB_ID" != "x" ] && puts "Distribuição: $DISTRIB_ID"
  96. }
  97.  
  98. install_plone() {
  99.   puts "Instalando Plone..."
  100.   
  101.   mkdir -p $INSTALL_DIR/installer; cd $INSTALL_DIR/installer
  102.  
  103.   # Verifica a necessida de baixar o Plone de novo.
  104.   if [ ! -f  $INSTALL_DIR/installer/Plone-4.1.4-UnifiedInstaller.tgz ]; then
  105.     exec_cmd "Baixando instalador Plone:" "wget $DOWNLOAD_URL"
  106.     [ $? -ne 0 ] && fatal_error "Erro ao tentar baixar o instalador do Plone."
  107.   fi
  108.  
  109.   # Artifício para mudança da biblioteca Freetype2.
  110.   if [ ! -f  /usr/local/include/freetype/fterrors.h ]; then
  111.     ln -s /usr/include/freetype2 /usr/local/include/freetype
  112.   fi
  113.  
  114.   tar -zxvf Plone-4.1.4-UnifiedInstaller.tgz
  115.   cd Plone-4.1.4-UnifiedInstaller
  116.   ./install.sh --target=$INSTALL_DIR standalone
  117.   [ $? -ne 0 ] && fatal_error "Erro ao instalar Plone."
  118.   
  119.   if [ "x$PRESERVE_ARCHIVE" != "x1" ]; then
  120.     exec_cmd "Removendo instalador:" "rm -rf $INSTALL_DIR/installer"
  121.     cd $INSTALL_DIR
  122.   fi
  123.  
  124.   puts "Plone instalado!"
  125. }
  126.  
  127. install_spdo_src() {
  128.   puts "Instalando fontes SPDO..."
  129.   
  130.   puts "Baixando o código fonte do il.spdo..."
  131.   cd $INSTALL_DIR/zinstance/src
  132.   svn co http://repositorio.interlegis.gov.br/il.spdo/trunk/ il.spdo
  133.  
  134.   puts "Executando o buildout..."
  135.   cd $INSTALL_DIR/zinstance
  136.   puts "Abrindo editor, altere a senha do Banco de Dados, encerre o editor após alteração."
  137.   gedit $INSTALL_DIR/zinstance/src/il.spdo/il/spdo/config.py
  138.   puts "Abrindo editor, altere a senha do Banco de Dados, encerre o editor após alteração."
  139.   gedit $INSTALL_DIR/zinstance/src/il.spdo/il/spdo/profiles/default/saconnections.xml
  140.   ln -sf $INSTALL_DIR/zinstance/src/il.spdo/il/spdo/buildout/*.cfg .
  141.   ./bin/buildout -c develop.cfg
  142.   [ $? -ne 0 ] && fatal_error "Erro ao instalar fontes SPDO."
  143.  
  144.   puts "Fontes SPDO instalado!"
  145. }
  146.  
  147. install_tabelas_banco() {
  148.   puts "Criando banco de dados..."
  149.   #mysql -uroot -p -e "create database spdo"
  150.   mysql -uroot -e "create database spdo"
  151.   [ $? -ne 0 ] && fatal_error "Erro ao criar banco de dados."
  152.   mysql -uroot -p -e "grant all on spdo.* to root@localhost; flush privileges"
  153.   [ $? -ne 0 ] && fatal_error "Erro ao criar permissões do banco de dados."
  154.   #mysql -uroot -e "create database spdo"
  155.   #mysql -uroot -e "grant all on spdo.* to root@localhost identified by 'interlegis'; flush privileges"
  156.   $INSTALL_DIR/zinstance/bin/zopepy $INSTALL_DIR/zinstance/src/il.spdo/il/spdo/db.py
  157.   [ $? -ne 0 ] && fatal_error "Erro ao criar tabelas do sistema no banco de dados."
  158.  
  159.   puts "Banco de dados criado!"
  160. }
  161.  
  162. install_final_steps() {
  163.   puts "Finalizando instalação..."
  164.  
  165.   puts "Criando diretório para armazenamento de anexos..."
  166.   mkdir -p $INSTALL_DIR/anexos
  167.   chown -R plone $INSTALL_DIR/anexos
  168.  
  169.   puts "Atualizando o /etc/rc.local"
  170.   sed -i '/exit 0/d' /etc/rc.local
  171.   echo "$INSTALL_DIR/zinstance/bin/instance start" >> /etc/rc.local
  172.   echo "exit 0" >> /etc/rc.local
  173.  
  174.   puts "Iniciando o SPDO..."
  175.   $INSTALL_DIR/zinstance/bin/instance start
  176.  
  177.   puts "SPDO instalado!"
  178. }
  179.  
  180. install_product() {
  181.   install_plone
  182.   install_spdo_src
  183.   install_tabelas_banco
  184.   install_final_steps
  185. }
  186.  
  187. uninstall_product() {
  188.   rm -rf $INSTALL_DIR
  189.   sed -i '/$INSTALL_DIR\/zinstance\/bin\/instance start/d' /etc/rc.local
  190.   puts "SPDO desinstalado!"
  191. }
  192.  
  193. main() {
  194.   puts_separator
  195.   puts "Instalador Automático SPDO."
  196.   puts_separator
  197.   
  198.   check_environment
  199.   
  200.   if [ "x$UNINSTALL" = "x1" ]; then
  201.     uninstall_product
  202.   else
  203.     check_dependencies
  204.     install_product
  205.   fi
  206. }
  207.  
  208. main

Reply to this snippet →

Ctrl+⏎ ou ⌘+⏎
 

The contents and data of this website are published under license:
Creative Commons 4.0 Brasil - Atribuir Fonte - Compartilhar Igual.