Commit 1f0e9c5057d2ca98056d7feaa5a56d7d16380084
1 parent
563619a4
Exists in
master
Correção do problema de lock durante provisionamento do ambiente
O problema em questão foi gerado devido à bug do Vagrant/VirtualBox com a versão do centos 6.5, vm utilizada como host do Docker. O problema foi corrigido através da atualização da versão do host para o CentOS 7, versão que não possui o bug com VirtualBox. Também foram realizadas correções de encoding dos arquivos de provisionamento, atualização da vm host e algumas otimizações no processo.
Showing
11 changed files
with
754 additions
and
141 deletions
Show diff stats
Vagrantfile
| 1 | -# -*- mode: ruby -*- | |
| 2 | -# vi: set ft=ruby : | |
| 3 | -require "yaml" | |
| 4 | - | |
| 5 | -# Vagrantfile API/syntax version. Don't touch unless you know what you're doing! | |
| 6 | -VAGRANTFILE_API_VERSION = "2" | |
| 7 | - | |
| 8 | -# Parâmetros de customização do ambiente de desenvolvimento | |
| 9 | -params = if File.exists?("Vagrantfile.conf") then YAML::load_file("Vagrantfile.conf") else {} end | |
| 10 | -params_source_dir = params["source_dir"] || "../sei" | |
| 11 | -params_script_sei = params["script_sei"] || "../sei-db-ref-executivo/sei_2_5_2_BD_Ref_Exec.sql" | |
| 12 | -params_script_sip = params["script_sip"] || "../sei-db-ref-executivo/sip_2_5_2_BD_Ref_Exec.sql" | |
| 13 | -params_memoria_vm = params["memoria_vm"] || "2048" | |
| 14 | -params_repo_arquivos = params["repositorio_arquivos"] || "../sei-arquivos" | |
| 15 | - | |
| 16 | -Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| | |
| 17 | - # All Vagrant configuration is done here. The most common configuration | |
| 18 | - # options are documented and commented below. For a complete reference, | |
| 19 | - # please see the online documentation at vagrantup.com. | |
| 20 | - | |
| 21 | - # Atribuição do hostname da máquina virtual | |
| 22 | - config.vm.hostname = "sei-vagrant" | |
| 23 | - | |
| 24 | - # Every Vagrant virtual environment requires a box to build off of. | |
| 25 | - config.vm.box = "guilhermeadc/centos65" | |
| 26 | - config.vm.box_download_checksum = "76a2a61de2d89f6cfd4d795e57cc4406" | |
| 27 | - config.vm.box_download_checksum_type = "md5" | |
| 28 | - | |
| 29 | - # Disable automatic box update checking. If you disable this, then | |
| 30 | - # boxes will only be checked for updates when the user runs | |
| 31 | - # `vagrant box outdated`. This is not recommended. | |
| 32 | - config.vm.box_check_update = true | |
| 33 | - | |
| 34 | - # Configuração do redirecionamento entre Máquina Virtual e Host | |
| 35 | - # Necessário permissões de root para utilizar a porta 80 (> 1024) | |
| 36 | - config.vm.network :forwarded_port, guest: 80, host: 80 # SIP e SEI (Apache) | |
| 37 | - config.vm.network :forwarded_port, guest: 3306, host: 3306 # Banco de Dados (Mysql) | |
| 38 | - config.vm.network :forwarded_port, guest: 8080, host: 8080 # Jod Converter (Tomcat) | |
| 39 | - config.vm.network :forwarded_port, guest: 8983, host: 8983 # Solr Indexer (Jetty) | |
| 40 | - | |
| 41 | - # Diretórios compartilhados com a durante a execução | |
| 42 | - config.vm.synced_folder ".", "/mnt/sei/ops" | |
| 43 | - config.vm.synced_folder params_source_dir, "/mnt/sei/src", mount_options: ["dmode=777", "fmode=777"] | |
| 44 | - config.vm.synced_folder params_repo_arquivos, "/mnt/sei/arquivos", create: true, mount_options: ["dmode=777", "fmode=777"] | |
| 45 | - config.vm.synced_folder File.dirname(params_script_sei), "/mnt/sei/db_sei" | |
| 46 | - config.vm.synced_folder File.dirname(params_script_sip), "/mnt/sei/db_sip" | |
| 47 | - | |
| 48 | - # Provider-specific configuration so you can fine-tune various | |
| 49 | - # backing providers for Vagrant. These expose provider-specific options. | |
| 50 | - config.vm.provider "virtualbox" do |vb| | |
| 51 | - # Don't boot with headless mode | |
| 52 | - # vb.gui = true | |
| 53 | - # Use VBoxManage to customize the VM. For example to change memory: | |
| 54 | - vb.customize ["modifyvm", :id, "--memory", params_memoria_vm, "--usb", "off", "--audio", "none"] | |
| 55 | - end | |
| 56 | - | |
| 57 | - $script_banco_dados = <<SCRIPT | |
| 58 | - mkdir -p /mnt/sei/ops/mysql/.tmp/ | |
| 59 | - cp /mnt/sei/db_sei/$1 /mnt/sei/ops/mysql/.tmp/sei_mysql.sql | |
| 60 | - cp /mnt/sei/db_sip/$2 /mnt/sei/ops/mysql/.tmp/sip_mysql.sql | |
| 61 | - cp /mnt/sei/ops/sei/ConfiguracaoSEI.php /mnt/sei/src/sei/ConfiguracaoSEI.php | |
| 62 | - cp /mnt/sei/ops/sei/ConfiguracaoSip.php /mnt/sei/src/sip/ConfiguracaoSip.php | |
| 63 | -SCRIPT | |
| 64 | - | |
| 65 | - config.vm.provision "shell", | |
| 66 | - inline: $script_banco_dados, | |
| 67 | - args: [File.basename(params_script_sei), File.basename(params_script_sip)] | |
| 68 | - | |
| 69 | - # Provisionamento da Máquina Virtual responsável por manter os containers do Docker | |
| 70 | - config.vm.provision "docker" do |docker| | |
| 71 | - | |
| 72 | - # Constrói imagens dos containers utilizados no provicionamento | |
| 73 | - docker.build_image "/mnt/sei/ops/mysql", args: "-t 'sei.gov/mysql'" | |
| 74 | - docker.build_image "/mnt/sei/ops/sei", args: "-t 'sei.gov/sei'" | |
| 75 | - docker.build_image "/mnt/sei/ops/solr", args: "-t 'sei.gov/solr'" | |
| 76 | - docker.build_image "/mnt/sei/ops/jod", args: "-t 'sei.gov/jod'" | |
| 77 | - | |
| 78 | - # Provisiona docker containers na máquina virtual | |
| 79 | - # docker run -it --name sei_data -v /mnt/sei/arquivos:/var/sei/arquivos centos:centos6 true | |
| 80 | - docker.run "sei_data", image: "centos:centos6", | |
| 81 | - args: "-v /mnt/sei/arquivos:/var/sei/arquivos", | |
| 82 | - cmd: "true" | |
| 83 | - | |
| 84 | - # docker run -it --name sei_db -p 3306:3306 --rm sei.gov/mysql:latest | |
| 85 | - docker.run "sei_db", image: "sei.gov/mysql:latest", | |
| 86 | - daemonize: true, | |
| 87 | - args: "-p 3306:3306" | |
| 88 | - | |
| 89 | - # docker run -it --name sei_solr -p 8983:8983 --rm -v /mnt/sei/src/sei/solr:/mnt/sei/index sei.gov/solr:latest | |
| 90 | - docker.run "sei_solr", image: "sei.gov/solr:latest", | |
| 91 | - daemonize: true, | |
| 92 | - args: "-p 8983:8983 -v /mnt/sei/src/sei/solr:/mnt/sei/index" | |
| 93 | - | |
| 94 | - # docker run -it --name sei_jod -p 8080:8080 --rm sei.gov/jod:latest | |
| 95 | - docker.run "sei_jod", image: "sei.gov/jod:latest", | |
| 96 | - daemonize: true, | |
| 97 | - args: "-p 8080:8080" | |
| 98 | - | |
| 99 | - # docker run -it --name sei_www -p 80:80 --rm --link sei_solr:solr --link sei_db:db --link sei_jod:jod -v /mnt/sei/src:/var/www/html -v /mnt/sei/ops/sei:/mnt/sei/ops/sei --volumes-from sei_data sei.gov/sei:latest | |
| 100 | - docker.run "sei_www", image: "sei.gov/sei:latest", | |
| 101 | - daemonize: true, | |
| 102 | - args: "-p 80:80 --link sei_db:db --link sei_solr:solr --link sei_jod:jod -v /mnt/sei/src:/var/www/html -v /mnt/sei/ops/sei:/mnt/sei/ops/sei --volumes-from sei_data" | |
| 103 | - end | |
| 104 | - | |
| 105 | - # Limpeza de arquivos temporários criados durante o provisionamento do sistema | |
| 106 | - config.vm.provision "shell", inline: "rm -rf /mnt/sei/ops/mysql/.tmp" | |
| 107 | - | |
| 108 | - # Inicialização dos containers em caso de reinicialização da máquina host | |
| 109 | - config.vm.provision "shell", run: "always", inline: "docker start sei_data sei_db sei_solr sei_jod sei_www" | |
| 110 | -end | |
| 1 | +# -*- mode: ruby -*- | |
| 2 | +# vi: set ft=ruby : | |
| 3 | +require "yaml" | |
| 4 | + | |
| 5 | +# Vagrantfile API/syntax version. Don't touch unless you know what you're doing! | |
| 6 | +VAGRANTFILE_API_VERSION = "2" | |
| 7 | + | |
| 8 | +# Parâmetros de customização do ambiente de desenvolvimento | |
| 9 | +params = if File.exists?("Vagrantfile.conf") then YAML::load_file("Vagrantfile.conf") else {} end | |
| 10 | +params_source_dir = params["source_dir"] || "../sei" | |
| 11 | +params_script_sei = params["script_sei"] || "../sei-db-ref-executivo/sei_2_5_2_BD_Ref_Exec.sql" | |
| 12 | +params_script_sip = params["script_sip"] || "../sei-db-ref-executivo/sip_2_5_2_BD_Ref_Exec.sql" | |
| 13 | +params_memoria_vm = params["memoria_vm"] || "1024" | |
| 14 | +params_repo_arquivos = params["repositorio_arquivos"] || "../sei-arquivos" | |
| 15 | + | |
| 16 | +Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| | |
| 17 | + # All Vagrant configuration is done here. The most common configuration | |
| 18 | + # options are documented and commented below. For a complete reference, | |
| 19 | + # please see the online documentation at vagrantup.com. | |
| 20 | + | |
| 21 | + # Atribuição do hostname da máquina virtual | |
| 22 | + config.vm.hostname = "sei-vagrant" | |
| 23 | + | |
| 24 | + # Every Vagrant virtual environment requires a box to build off of. | |
| 25 | + # config.vm.box = "guilhermeadc/centos65" | |
| 26 | + # config.vm.box_download_checksum = "76a2a61de2d89f6cfd4d795e57cc4406" | |
| 27 | + # config.vm.box_download_checksum_type = "md5" | |
| 28 | + config.vm.box = "chef/centos-7.0" | |
| 29 | + | |
| 30 | + # Disable automatic box update checking. If you disable this, then | |
| 31 | + # boxes will only be checked for updates when the user runs | |
| 32 | + # `vagrant box outdated`. This is not recommended. | |
| 33 | + config.vm.box_check_update = true | |
| 34 | + | |
| 35 | + # Configuração do redirecionamento entre Máquina Virtual e Host | |
| 36 | + # Necessário permissões de root para utilizar a porta 80 (> 1024) | |
| 37 | + config.vm.network :forwarded_port, guest: 80, host: 80 # SIP e SEI (Apache) | |
| 38 | + config.vm.network :forwarded_port, guest: 3306, host: 3306 # Banco de Dados (Mysql) | |
| 39 | + config.vm.network :forwarded_port, guest: 8080, host: 8080 # Jod Converter (Tomcat) | |
| 40 | + config.vm.network :forwarded_port, guest: 8983, host: 8983 # Solr Indexer (Jetty) | |
| 41 | + | |
| 42 | + # Diretórios compartilhados com a durante a execução | |
| 43 | + config.vm.synced_folder ".", "/mnt/sei/ops" | |
| 44 | + config.vm.synced_folder params_source_dir, "/mnt/sei/src", mount_options: ["dmode=777", "fmode=777"] | |
| 45 | + config.vm.synced_folder params_repo_arquivos, "/mnt/sei/arquivos", create: true, mount_options: ["dmode=777", "fmode=777"] | |
| 46 | + config.vm.synced_folder File.dirname(params_script_sei), "/mnt/sei/db_sei" | |
| 47 | + config.vm.synced_folder File.dirname(params_script_sip), "/mnt/sei/db_sip" | |
| 48 | + | |
| 49 | + # Provider-specific configuration so you can fine-tune various | |
| 50 | + # backing providers for Vagrant. These expose provider-specific options. | |
| 51 | + config.vm.provider "virtualbox" do |vb| | |
| 52 | + # Don't boot with headless mode | |
| 53 | + # vb.gui = true | |
| 54 | + # Use VBoxManage to customize the VM. For example to change memory: | |
| 55 | + vb.customize ["modifyvm", :id, "--memory", params_memoria_vm, "--usb", "off", "--audio", "none"] | |
| 56 | + end | |
| 57 | + | |
| 58 | + $script_banco_dados = <<SCRIPT | |
| 59 | + mkdir -p /mnt/sei/ops/mysql/.tmp/ | |
| 60 | + cp /mnt/sei/db_sei/$1 /mnt/sei/ops/mysql/.tmp/sei_mysql.sql | |
| 61 | + cp /mnt/sei/db_sip/$2 /mnt/sei/ops/mysql/.tmp/sip_mysql.sql | |
| 62 | + cp /mnt/sei/ops/sei/ConfiguracaoSEI.php /mnt/sei/src/sei/ConfiguracaoSEI.php | |
| 63 | + cp /mnt/sei/ops/sei/ConfiguracaoSip.php /mnt/sei/src/sip/ConfiguracaoSip.php | |
| 64 | +SCRIPT | |
| 65 | + | |
| 66 | +# Atualização da VM de host do docker | |
| 67 | + config.vm.provision "shell", run: "always", inline: "yum -y update && yum -y upgrade" | |
| 68 | + | |
| 69 | + config.vm.provision "shell", | |
| 70 | + inline: $script_banco_dados, | |
| 71 | + args: [File.basename(params_script_sei), File.basename(params_script_sip)] | |
| 72 | + | |
| 73 | + # Provisionamento da Máquina Virtual responsável por manter os containers do Docker | |
| 74 | + config.vm.provision "docker" do |docker| | |
| 75 | + | |
| 76 | + # Constrói imagens dos containers utilizados no provicionamento | |
| 77 | + docker.build_image "/mnt/sei/ops/solr", args: "-t 'processoeletronico/solr'" | |
| 78 | + docker.build_image "/mnt/sei/ops/mysql", args: "-t 'processoeletronico/mysql'" | |
| 79 | + docker.build_image "/mnt/sei/ops/sei", args: "-t 'processoeletronico/sei'" | |
| 80 | + docker.build_image "/mnt/sei/ops/jod", args: "-t 'processoeletronico/jod'" | |
| 81 | + | |
| 82 | + # Provisiona docker containers na máquina virtual | |
| 83 | + # docker run -it --name sei_data -v /mnt/sei/arquivos:/var/sei/arquivos centos:centos6 true | |
| 84 | + docker.run "sei_data", image: "centos:centos6", | |
| 85 | + args: "-v /mnt/sei/arquivos:/var/sei/arquivos", | |
| 86 | + cmd: "true" | |
| 87 | + | |
| 88 | + # docker run -it --name sei_db -p 3306:3306 --rm processoeletronico/mysql:latest | |
| 89 | + docker.run "sei_db", image: "processoeletronico/mysql:latest", | |
| 90 | + daemonize: true, | |
| 91 | + args: "-p 3306:3306" | |
| 92 | + | |
| 93 | + # docker run -it --name sei_solr -p 8983:8983 --rm -v /mnt/sei/src/sei/solr:/mnt/sei/index processoeletronico/solr:latest | |
| 94 | + docker.run "sei_solr", image: "processoeletronico/solr:latest", | |
| 95 | + daemonize: true, | |
| 96 | + args: "-p 8983:8983 -v /mnt/sei/src/sei/solr:/mnt/sei/index" | |
| 97 | + | |
| 98 | + # docker run -it --name sei_jod -p 8080:8080 --rm processoeletronico/jod:latest | |
| 99 | + docker.run "sei_jod", image: "processoeletronico/jod:latest", | |
| 100 | + daemonize: true, | |
| 101 | + args: "-p 8080:8080" | |
| 102 | + | |
| 103 | + # docker run -it --name sei_www -p 80:80 --rm --link sei_solr:solr --link sei_db:db --link sei_jod:jod -v /mnt/sei/src:/var/www/html -v /mnt/sei/ops/sei:/mnt/sei/ops/sei --volumes-from sei_data processoeletronico/sei:latest | |
| 104 | + docker.run "sei_www", image: "processoeletronico/sei:latest", | |
| 105 | + daemonize: true, | |
| 106 | + args: "-p 80:80 --link sei_db:db --link sei_solr:solr --link sei_jod:jod -v /mnt/sei/src:/var/www/html -v /mnt/sei/ops/sei:/mnt/sei/ops/sei --volumes-from sei_data" | |
| 107 | + end | |
| 108 | + | |
| 109 | + # Limpeza de arquivos temporários criados durante o provisionamento do sistema | |
| 110 | + config.vm.provision "shell", inline: "rm -rf /mnt/sei/ops/mysql/.tmp" | |
| 111 | + | |
| 112 | + # Inicialização dos containers em caso de reinicialização da máquina host | |
| 113 | + config.vm.provision "shell", run: "always", inline: "docker start sei_db sei_solr sei_jod sei_www" | |
| 114 | +end | |
| 111 | 115 | \ No newline at end of file | ... | ... |
Vagrantfile.conf.example
jod/Dockerfile
| ... | ... | @@ -27,7 +27,8 @@ RUN yum -y update libreoffice libreoffice-headless && \ |
| 27 | 27 | yum install -y libreoffice libreoffice-headless |
| 28 | 28 | |
| 29 | 29 | # Instalação da api de serviços de conversão de documentos |
| 30 | -RUN wget -q -O /opt/jodconverter-tomcat-2.2.2.zip http://sourceforge.net/projects/jodconverter/files/JODConverter/2.2.2/jodconverter-tomcat-2.2.2.zip/download | |
| 30 | +ADD jodconverter-tomcat-2.2.2.zip /opt/ | |
| 31 | +# RUN wget -q -O /opt/jodconverter-tomcat-2.2.2.zip http://sourceforge.net/projects/jodconverter/files/JODConverter/2.2.2/jodconverter-tomcat-2.2.2.zip/download | |
| 31 | 32 | RUN unzip /opt/jodconverter-tomcat-2.2.2.zip -d /opt && rm /opt/jodconverter-tomcat-2.2.2.zip |
| 32 | 33 | |
| 33 | 34 | # Script de inicialização dos serviços | ... | ... |
No preview for this file type
jod/run.sh
| 1 | -#!/bin/bash | |
| 1 | +#!/usr/bin/env bash | |
| 2 | + | |
| 2 | 3 | SOFFICE_PATH=/usr/bin/soffice |
| 3 | 4 | TOMCAT6_PATH=/opt/jodconverter-tomcat-2.2.2/bin/catalina.sh |
| 4 | 5 | |
| ... | ... | @@ -6,4 +7,4 @@ echo "Iniciando o serviço LibreOffice headless" |
| 6 | 7 | $SOFFICE_PATH --headless --nologo --nofirststartwizard --accept="socket,host=127.0.0.1,port=8100;urp" & > /dev/null 2>&1 |
| 7 | 8 | |
| 8 | 9 | echo "Iniciando o serviço Tomcat 6" |
| 9 | -$TOMCAT6_PATH run | |
| 10 | 10 | \ No newline at end of file |
| 11 | +$TOMCAT6_PATH run | ... | ... |
sei/Dockerfile
| ... | ... | @@ -16,14 +16,14 @@ MAINTAINER PEN - Processo Eletrônico Nacional |
| 16 | 16 | # Ref: http://sei.processoeletronico.gov.br/wiki/manual_de_instalacao#<SESSAO DE INSTALAÇÃO DO SEI e SIP> |
| 17 | 17 | |
| 18 | 18 | # Instalação do servidor web Apache 2.2, memcache e demais componentes |
| 19 | -RUN yum -y update httpd-2.2.* mysql-5.1.* memcached openssl wget curl unzip gcc java-1.7.0-openjdk libxml2 && \ | |
| 19 | +RUN yum -y update && \ | |
| 20 | 20 | yum -y install httpd-2.2.* mysql-5.1.* memcached openssl wget curl unzip gcc java-1.7.0-openjdk libxml2 |
| 21 | 21 | |
| 22 | 22 | # Configuração do charset do Apache |
| 23 | 23 | RUN echo "AddDefaultCharset iso-8859-1" | tee -a /etc/httpd/conf/httpd.conf |
| 24 | 24 | |
| 25 | 25 | # Instalação do PHP 5 e demais bibliotecas |
| 26 | -RUN yum -y update php-* && \ | |
| 26 | +RUN yum -y update && \ | |
| 27 | 27 | yum -y install php-5.3.* php-common php-cli php-pear php-bcmath php-gd php-gmp \ |
| 28 | 28 | php-imap php-intl php-ldap php-mbstring php-mysql php-odbc php-pdo php-pecl-apc \ |
| 29 | 29 | php-pspell php-zlib php-snmp php-soap php-xml php-xmlrpc php-zts php-devel \ |
| ... | ... | @@ -34,8 +34,8 @@ RUN pecl install uploadprogress && \ |
| 34 | 34 | echo "extension=uploadprogress.so" >> /etc/php.d/uploadprogress.ini |
| 35 | 35 | |
| 36 | 36 | # Configuração dos parâmetros do SEI e SIP |
| 37 | -ADD ConfiguracaoSEI.php /var/www/html/sei/ConfiguracaoSEI.php | |
| 38 | -ADD ConfiguracaoSip.php /var/www/html/sip/ConfiguracaoSip.php | |
| 37 | +ADD ConfiguracaoSEI.php /opt/sei/ConfiguracaoSEI.php | |
| 38 | +ADD ConfiguracaoSip.php /opt/sip/ConfiguracaoSip.php | |
| 39 | 39 | |
| 40 | 40 | # Copia arquivos necessários para a instalação |
| 41 | 41 | ADD sei.ini /etc/php.d/sei.ini |
| ... | ... | @@ -48,4 +48,4 @@ RUN chmod +x /run.sh |
| 48 | 48 | EXPOSE 80 |
| 49 | 49 | |
| 50 | 50 | # Inicialização dos serviços Apache e Memcache |
| 51 | 51 | -CMD ["/run.sh"] |
| 52 | +CMD ["/run.sh"] | |
| 52 | 53 | \ No newline at end of file | ... | ... |
sei/run.sh
| 1 | -#!/bin/bash | |
| 1 | +#!/usr/bin/env bash | |
| 2 | 2 | |
| 3 | 3 | echo "127.0.0.1 sip_www" | tee -a /etc/hosts |
| 4 | 4 | |
| 5 | 5 | # Atribuição dos parâmetros de configuração do SEI |
| 6 | -cp /mnt/sei/ops/sei/ConfiguracaoSEI.php /var/www/html/sei/ConfiguracaoSEI.php | |
| 7 | -cp /mnt/sei/ops/sip/ConfiguracaoSip.php /var/www/html/sip/ConfiguracaoSip.php | |
| 6 | +cp /opt/sei/ConfiguracaoSEI.php /var/www/html/sei/ConfiguracaoSEI.php | |
| 7 | +cp /opt/sip/ConfiguracaoSip.php /var/www/html/sip/ConfiguracaoSip.php | |
| 8 | 8 | |
| 9 | 9 | # Criação do diretório padrão de upload de arquivos |
| 10 | 10 | mkdir /var/www/html/sei/upload && chmod -R 666 /var/www/html/sei/upload |
| 11 | 11 | mkdir /var/www/html/sip/upload && chmod -R 666 /var/www/html/sip/upload |
| 12 | 12 | |
| 13 | +# Permissão de execução para utilitário de conversão de PDFs | |
| 14 | +chmod +x /var/www/html/sei/ferramentas/wkhtmltopdf-amd64 | |
| 15 | + | |
| 13 | 16 | # Inicialização do serviço de cache |
| 14 | 17 | /etc/init.d/memcached start 2>&1 > /dev/null |
| 15 | 18 | ... | ... |
solr/Dockerfile
| ... | ... | @@ -15,22 +15,18 @@ MAINTAINER PEN - Processo Eletrônico Nacional |
| 15 | 15 | # Instalação do MySQL seguindo as recomendações descritas na documentação do SEI |
| 16 | 16 | # Ref: http://<WIKI DO PROJETO>#<SESSAO DE INSTALAÇÃO DO MYSQL> |
| 17 | 17 | |
| 18 | -# Instalação do pacote Java JDK | |
| 19 | -RUN yum update -y java-1.7.0-openjdk && \ | |
| 20 | - yum install -y java-1.7.0-openjdk | |
| 21 | - | |
| 22 | -# Instalação dos utilitários utilizados no provisionamento | |
| 23 | -RUN yum install -y wget tar curl which | |
| 18 | +# Instalação do pacote Java JDK e utilitários utilizados no provisionamento | |
| 19 | +RUN yum update -y && \ | |
| 20 | + yum install -y java-1.7.0-openjdk wget tar curl which | |
| 24 | 21 | |
| 25 | 22 | # Criação de usuário de execução do serviço |
| 26 | 23 | RUN useradd solr |
| 27 | 24 | |
| 28 | 25 | # Obtenção do pacote de instalação do Solr 4.0 |
| 29 | -RUN wget -q -O /opt/solr-4.0.0.tgz http://archive.apache.org/dist/lucene/solr/4.0.0/apache-solr-4.0.0.tgz | |
| 26 | +ADD apache-solr-4.0.0.tgz /opt/ | |
| 30 | 27 | |
| 31 | 28 | # Instalação do Apache Solr |
| 32 | -RUN tar xvz -C /opt -f /opt/solr-4.0.0.tgz && mv /opt/apache-solr-4.0.0 /opt/solr && \ | |
| 33 | - chown -R solr:solr /opt/solr && rm /opt/solr-4.0.0.tgz | |
| 29 | +RUN mv /opt/apache-solr-4.0.0 /opt/solr && chown -R solr:solr /opt/solr | |
| 34 | 30 | |
| 35 | 31 | # Configuração dos parâmetros default |
| 36 | 32 | RUN echo "JAVA_OPTIONS='-Dsolr.solr.home=/opt/solr/example/solr $JAVA_OPTIONS'" | tee -a /etc/default/jetty && \ |
| ... | ... | @@ -74,18 +70,18 @@ RUN mkdir /var/opt/sei/sei-protocolos/conteudo && \ |
| 74 | 70 | |
| 75 | 71 | # Configuração dos links a instalação do Solr e o índice Protocolo |
| 76 | 72 | RUN ln -s /opt/solr/contrib/ /var/opt/sei/sei-protocolos/contrib && \ |
| 77 | - ln -s /opt/solr/dist/ /var/opt/sei/sei-protocolos/dist && \ | |
| 78 | - ln -s /opt/solr/example/lib/ /var/opt/sei/sei-protocolos/lib | |
| 73 | + ln -s /opt/solr/dist/ /var/opt/sei/sei-protocolos/dist && \ | |
| 74 | + ln -s /opt/solr/example/lib/ /var/opt/sei/sei-protocolos/lib | |
| 79 | 75 | |
| 80 | 76 | # Configuração dos links a instalação do Solr e o índice Base de Conhecimento |
| 81 | 77 | RUN ln -s /opt/solr/contrib/ /var/opt/sei/sei-bases-conhecimento/contrib && \ |
| 82 | - ln -s /opt/solr/dist/ /var/opt/sei/sei-bases-conhecimento/dist && \ | |
| 83 | - ln -s /opt/solr/example/lib/ /var/opt/sei/sei-bases-conhecimento/lib | |
| 78 | + ln -s /opt/solr/dist/ /var/opt/sei/sei-bases-conhecimento/dist && \ | |
| 79 | + ln -s /opt/solr/example/lib/ /var/opt/sei/sei-bases-conhecimento/lib | |
| 84 | 80 | |
| 85 | 81 | # Configuração dos links a instalação do Solr e o índice Publicações |
| 86 | 82 | RUN ln -s /opt/solr/contrib/ /var/opt/sei/sei-publicacoes/contrib && \ |
| 87 | - ln -s /opt/solr/dist/ /var/opt/sei/sei-publicacoes/dist && \ | |
| 88 | - ln -s /opt/solr/example/lib/ /var/opt/sei/sei-publicacoes/lib | |
| 83 | + ln -s /opt/solr/dist/ /var/opt/sei/sei-publicacoes/dist && \ | |
| 84 | + ln -s /opt/solr/example/lib/ /var/opt/sei/sei-publicacoes/lib | |
| 89 | 85 | |
| 90 | 86 | # Configuração de log e permissões de pastas |
| 91 | 87 | RUN mkdir /var/log/solr |
| ... | ... | @@ -93,15 +89,15 @@ RUN chown solr:solr -R /opt/solr /var/opt/sei /var/log/solr |
| 93 | 89 | |
| 94 | 90 | # Construção dos índices de protocolos do SEI |
| 95 | 91 | RUN service solr start && sleep 20 && \ |
| 96 | - curl 'http://localhost:8983/solr/admin/cores?action=CREATE&name=sei-protocolos&instanceDir=/var/opt/sei/sei-protocolos&config=sei-protocolos-config.xml&schema=sei-protocolos-schema.xml&dataDir=/var/opt/sei/sei-protocolos/conteudo' | |
| 92 | + curl 'http://localhost:8983/solr/admin/cores?action=CREATE&name=sei-protocolos&instanceDir=/var/opt/sei/sei-protocolos&config=sei-protocolos-config.xml&schema=sei-protocolos-schema.xml&dataDir=/var/opt/sei/sei-protocolos/conteudo' | |
| 97 | 93 | |
| 98 | 94 | # Construção dos índices da base de conhecimento do SEI |
| 99 | 95 | RUN service solr start && sleep 20 && \ |
| 100 | - curl 'http://localhost:8983/solr/admin/cores?action=CREATE&name=sei-bases-conhecimento&instanceDir=/var/opt/sei/sei-bases-conhecimento&config=sei-bases-conhecimento-config.xml&schema=sei-bases-conhecimento-schema.xml&dataDir=/var/opt/sei/sei-bases-conhecimento/conteudo' | |
| 96 | + curl 'http://localhost:8983/solr/admin/cores?action=CREATE&name=sei-bases-conhecimento&instanceDir=/var/opt/sei/sei-bases-conhecimento&config=sei-bases-conhecimento-config.xml&schema=sei-bases-conhecimento-schema.xml&dataDir=/var/opt/sei/sei-bases-conhecimento/conteudo' | |
| 101 | 97 | |
| 102 | 98 | # Construção dos índices de publicações do SEI |
| 103 | 99 | RUN service solr start && sleep 20 && \ |
| 104 | - curl 'http://localhost:8983/solr/admin/cores?action=CREATE&name=sei-publicacoes&instanceDir=/var/opt/sei/sei-publicacoes&config=sei-publicacoes-config.xml&schema=sei-publicacoes-schema.xml&dataDir=/var/opt/sei/sei-publicacoes/conteudo' | |
| 100 | + curl 'http://localhost:8983/solr/admin/cores?action=CREATE&name=sei-publicacoes&instanceDir=/var/opt/sei/sei-publicacoes&config=sei-publicacoes-config.xml&schema=sei-publicacoes-schema.xml&dataDir=/var/opt/sei/sei-publicacoes/conteudo' | |
| 105 | 101 | |
| 106 | 102 | # Construção dos índices de publicações do SEI |
| 107 | 103 | RUN service solr start && sleep 20 && \ |
| ... | ... | @@ -116,4 +112,4 @@ WORKDIR /opt/solr/example |
| 116 | 112 | EXPOSE 8983 |
| 117 | 113 | |
| 118 | 114 | # Inicialização dos serviços Apache e Memcache |
| 119 | 115 | -CMD ["java", "-jar", "start.jar"] |
| 116 | +CMD ["java", "-jar", "start.jar"] | |
| 120 | 117 | \ No newline at end of file | ... | ... |
No preview for this file type
| ... | ... | @@ -0,0 +1,605 @@ |
| 1 | +#!/usr/bin/env bash | |
| 2 | +# | |
| 3 | +# Startup script for jetty under *nix systems (it works under NT/cygwin too). | |
| 4 | + | |
| 5 | +# To get the service to restart correctly on reboot, uncomment below (3 lines): | |
| 6 | +# ======================== | |
| 7 | +# chkconfig: 3 99 99 | |
| 8 | +# description: Jetty 7 webserver | |
| 9 | +# processname: jetty | |
| 10 | +# ======================== | |
| 11 | + | |
| 12 | +# Configuration files | |
| 13 | +# | |
| 14 | +# /etc/default/jetty | |
| 15 | +# If it exists, this is read at the start of script. It may perform any | |
| 16 | +# sequence of shell commands, like setting relevant environment variables. | |
| 17 | +# | |
| 18 | +# $HOME/.jettyrc | |
| 19 | +# If it exists, this is read at the start of script. It may perform any | |
| 20 | +# sequence of shell commands, like setting relevant environment variables. | |
| 21 | +# | |
| 22 | +# /etc/jetty.conf | |
| 23 | +# If found, and no configurations were given on the command line, | |
| 24 | +# the file will be used as this script's configuration. | |
| 25 | +# Each line in the file may contain: | |
| 26 | +# - A comment denoted by the pound (#) sign as first non-blank character. | |
| 27 | +# - The path to a regular file, which will be passed to jetty as a | |
| 28 | +# config.xml file. | |
| 29 | +# - The path to a directory. Each *.xml file in the directory will be | |
| 30 | +# passed to jetty as a config.xml file. | |
| 31 | +# | |
| 32 | +# The files will be checked for existence before being passed to jetty. | |
| 33 | +# | |
| 34 | +# $JETTY_HOME/etc/jetty.xml | |
| 35 | +# If found, used as this script's configuration file, but only if | |
| 36 | +# /etc/jetty.conf was not present. See above. | |
| 37 | +# | |
| 38 | +# Configuration variables | |
| 39 | +# | |
| 40 | +# JAVA | |
| 41 | +# Command to invoke Java. If not set, java (from the PATH) will be used. | |
| 42 | +# | |
| 43 | +# JAVA_OPTIONS | |
| 44 | +# Extra options to pass to the JVM | |
| 45 | +# | |
| 46 | +# JETTY_HOME | |
| 47 | +# Where Jetty is installed. If not set, the script will try go | |
| 48 | +# guess it by first looking at the invocation path for the script, | |
| 49 | +# and then by looking in standard locations as $HOME/opt/jetty | |
| 50 | +# and /opt/jetty. The java system property "jetty.home" will be | |
| 51 | +# set to this value for use by configure.xml files, f.e.: | |
| 52 | +# | |
| 53 | +# <Arg><Property name="jetty.home" default="."/>/webapps/jetty.war</Arg> | |
| 54 | +# | |
| 55 | +# JETTY_PORT | |
| 56 | +# Override the default port for Jetty servers. If not set then the | |
| 57 | +# default value in the xml configuration file will be used. The java | |
| 58 | +# system property "jetty.port" will be set to this value for use in | |
| 59 | +# configure.xml files. For example, the following idiom is widely | |
| 60 | +# used in the demo config files to respect this property in Listener | |
| 61 | +# configuration elements: | |
| 62 | +# | |
| 63 | +# <Set name="Port"><Property name="jetty.port" default="8080"/></Set> | |
| 64 | +# | |
| 65 | +# Note: that the config file could ignore this property simply by saying: | |
| 66 | +# | |
| 67 | +# <Set name="Port">8080</Set> | |
| 68 | +# | |
| 69 | +# JETTY_RUN | |
| 70 | +# Where the jetty.pid file should be stored. It defaults to the | |
| 71 | +# first available of /var/run, /usr/var/run, JETTY_HOME and /tmp | |
| 72 | +# if not set. | |
| 73 | +# | |
| 74 | +# JETTY_PID | |
| 75 | +# The Jetty PID file, defaults to $JETTY_RUN/jetty.pid | |
| 76 | +# | |
| 77 | +# JETTY_ARGS | |
| 78 | +# The default arguments to pass to jetty. | |
| 79 | +# | |
| 80 | +# JETTY_USER | |
| 81 | +# if set, then used as a username to run the server as | |
| 82 | +# | |
| 83 | + | |
| 84 | +usage() | |
| 85 | +{ | |
| 86 | + echo "Usage: ${0##*/} [-d] {start|stop|run|restart|check|supervise} [ CONFIGS ... ] " | |
| 87 | + exit 1 | |
| 88 | +} | |
| 89 | + | |
| 90 | +[ $# -gt 0 ] || usage | |
| 91 | + | |
| 92 | + | |
| 93 | +################################################## | |
| 94 | +# Some utility functions | |
| 95 | +################################################## | |
| 96 | +findDirectory() | |
| 97 | +{ | |
| 98 | + local L OP=$1 | |
| 99 | + shift | |
| 100 | + for L in "$@"; do | |
| 101 | + [ "$OP" "$L" ] || continue | |
| 102 | + printf %s "$L" | |
| 103 | + break | |
| 104 | + done | |
| 105 | +} | |
| 106 | + | |
| 107 | +running() | |
| 108 | +{ | |
| 109 | + local PID=$(cat "$1" 2>/dev/null) || return 1 | |
| 110 | + kill -0 "$PID" 2>/dev/null | |
| 111 | +} | |
| 112 | + | |
| 113 | +started() | |
| 114 | +{ | |
| 115 | + # wait for 60s to see "STARTED" in PID file, needs jetty-started.xml as argument | |
| 116 | + for T in 1 2 3 4 5 6 7 9 10 11 12 13 14 15 | |
| 117 | + do | |
| 118 | + sleep 4 | |
| 119 | + [ -z "$(grep STARTED $1 2>/dev/null)" ] || return 0 | |
| 120 | + [ -z "$(grep STOPPED $1 2>/dev/null)" ] || return 1 | |
| 121 | + [ -z "$(grep FAILED $1 2>/dev/null)" ] || return 1 | |
| 122 | + local PID=$(cat "$2" 2>/dev/null) || return 1 | |
| 123 | + kill -0 "$PID" 2>/dev/null || return 1 | |
| 124 | + echo -n ". " | |
| 125 | + done | |
| 126 | + | |
| 127 | + return 1; | |
| 128 | +} | |
| 129 | + | |
| 130 | + | |
| 131 | +readConfig() | |
| 132 | +{ | |
| 133 | + (( DEBUG )) && echo "Reading $1.." | |
| 134 | + source "$1" | |
| 135 | +} | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | +################################################## | |
| 140 | +# Get the action & configs | |
| 141 | +################################################## | |
| 142 | +CONFIGS=() | |
| 143 | +NO_START=0 | |
| 144 | +DEBUG=0 | |
| 145 | + | |
| 146 | +while [[ $1 = -* ]]; do | |
| 147 | + case $1 in | |
| 148 | + -d) DEBUG=1 ;; | |
| 149 | + esac | |
| 150 | + shift | |
| 151 | +done | |
| 152 | +ACTION=$1 | |
| 153 | +shift | |
| 154 | + | |
| 155 | +################################################## | |
| 156 | +# Read any configuration files | |
| 157 | +################################################## | |
| 158 | +ETC=/etc | |
| 159 | +if [ $UID != 0 ] | |
| 160 | +then | |
| 161 | + ETC=$HOME/etc | |
| 162 | +fi | |
| 163 | + | |
| 164 | +for CONFIG in $ETC/default/jetty{,7} $HOME/.jettyrc; do | |
| 165 | + if [ -f "$CONFIG" ] ; then | |
| 166 | + readConfig "$CONFIG" | |
| 167 | + fi | |
| 168 | +done | |
| 169 | + | |
| 170 | + | |
| 171 | +################################################## | |
| 172 | +# Set tmp if not already set. | |
| 173 | +################################################## | |
| 174 | +TMPDIR=${TMPDIR:-/tmp} | |
| 175 | + | |
| 176 | +################################################## | |
| 177 | +# Jetty's hallmark | |
| 178 | +################################################## | |
| 179 | +JETTY_INSTALL_TRACE_FILE="etc/jetty.xml" | |
| 180 | + | |
| 181 | + | |
| 182 | +################################################## | |
| 183 | +# Try to determine JETTY_HOME if not set | |
| 184 | +################################################## | |
| 185 | +if [ -z "$JETTY_HOME" ] | |
| 186 | +then | |
| 187 | + JETTY_SH=$0 | |
| 188 | + case "$JETTY_SH" in | |
| 189 | + /*) ;; | |
| 190 | + ./*) ;; | |
| 191 | + *) JETTY_SH=./$JETTY_SH ;; | |
| 192 | + esac | |
| 193 | + JETTY_HOME=${JETTY_SH%/*/*} | |
| 194 | + | |
| 195 | + if [ ! -f "${JETTY_SH%/*/*}/$JETTY_INSTALL_TRACE_FILE" ] | |
| 196 | + then | |
| 197 | + JETTY_HOME= | |
| 198 | + fi | |
| 199 | +fi | |
| 200 | + | |
| 201 | + | |
| 202 | +################################################## | |
| 203 | +# if no JETTY_HOME, search likely locations. | |
| 204 | +################################################## | |
| 205 | +if [ -z "$JETTY_HOME" ] ; then | |
| 206 | + STANDARD_LOCATIONS=( | |
| 207 | + "/usr/share" | |
| 208 | + "/usr/share/java" | |
| 209 | + "${HOME}" | |
| 210 | + "${HOME}/src" | |
| 211 | + "${HOME}/opt" | |
| 212 | + "/opt" | |
| 213 | + "/java" | |
| 214 | + "/usr/local" | |
| 215 | + "/usr/local/share" | |
| 216 | + "/usr/local/share/java" | |
| 217 | + "/home" | |
| 218 | + ) | |
| 219 | + JETTY_DIR_NAMES=( | |
| 220 | + "jetty-7" | |
| 221 | + "jetty7" | |
| 222 | + "jetty-7.*" | |
| 223 | + "jetty" | |
| 224 | + "Jetty-7" | |
| 225 | + "Jetty7" | |
| 226 | + "Jetty-7.*" | |
| 227 | + "Jetty" | |
| 228 | + ) | |
| 229 | + | |
| 230 | + for L in "${STANDARD_LOCATIONS[@]}" | |
| 231 | + do | |
| 232 | + for N in "${JETTY_DIR_NAMES[@]}" | |
| 233 | + do | |
| 234 | + POSSIBLE_JETTY_HOME=("$L/"$N) | |
| 235 | + if [ ! -d "$POSSIBLE_JETTY_HOME" ] | |
| 236 | + then | |
| 237 | + # Not a directory. skip. | |
| 238 | + unset POSSIBLE_JETTY_HOME | |
| 239 | + elif [ ! -f "$POSSIBLE_JETTY_HOME/$JETTY_INSTALL_TRACE_FILE" ] | |
| 240 | + then | |
| 241 | + # Trace file not found. skip. | |
| 242 | + unset POSSIBLE_JETTY_HOME | |
| 243 | + else | |
| 244 | + # Good hit, Use it | |
| 245 | + JETTY_HOME=$POSSIBLE_JETTY_HOME | |
| 246 | + # Break out of JETTY_DIR_NAMES loop | |
| 247 | + break | |
| 248 | + fi | |
| 249 | + done | |
| 250 | + if [ -n "$POSSIBLE_JETTY_HOME" ] | |
| 251 | + then | |
| 252 | + # We have found our JETTY_HOME | |
| 253 | + # Break out of STANDARD_LOCATIONS loop | |
| 254 | + break | |
| 255 | + fi | |
| 256 | + done | |
| 257 | +fi | |
| 258 | + | |
| 259 | + | |
| 260 | +################################################## | |
| 261 | +# No JETTY_HOME yet? We're out of luck! | |
| 262 | +################################################## | |
| 263 | +if [ -z "$JETTY_HOME" ]; then | |
| 264 | + echo "** ERROR: JETTY_HOME not set, you need to set it or install in a standard location" | |
| 265 | + exit 1 | |
| 266 | +fi | |
| 267 | + | |
| 268 | +cd "$JETTY_HOME" | |
| 269 | +JETTY_HOME=$PWD | |
| 270 | + | |
| 271 | + | |
| 272 | +##################################################### | |
| 273 | +# Check that jetty is where we think it is | |
| 274 | +##################################################### | |
| 275 | +if [ ! -r "$JETTY_HOME/$JETTY_INSTALL_TRACE_FILE" ] | |
| 276 | +then | |
| 277 | + echo "** ERROR: Oops! Jetty doesn't appear to be installed in $JETTY_HOME" | |
| 278 | + echo "** ERROR: $JETTY_HOME/$JETTY_INSTALL_TRACE_FILE is not readable!" | |
| 279 | + exit 1 | |
| 280 | +fi | |
| 281 | + | |
| 282 | +################################################## | |
| 283 | +# Try to find this script's configuration file, | |
| 284 | +# but only if no configurations were given on the | |
| 285 | +# command line. | |
| 286 | +################################################## | |
| 287 | +if [ -z "$JETTY_CONF" ] | |
| 288 | +then | |
| 289 | + if [ -f $ETC/jetty.conf ] | |
| 290 | + then | |
| 291 | + JETTY_CONF=$ETC/jetty.conf | |
| 292 | + elif [ -f "$JETTY_HOME/etc/jetty.conf" ] | |
| 293 | + then | |
| 294 | + JETTY_CONF=$JETTY_HOME/etc/jetty.conf | |
| 295 | + fi | |
| 296 | +fi | |
| 297 | + | |
| 298 | +################################################## | |
| 299 | +# Get the list of config.xml files from jetty.conf | |
| 300 | +################################################## | |
| 301 | +if [ -z "$CONFIGS" ] && [ -f "$JETTY_CONF" ] && [ -r "$JETTY_CONF" ] | |
| 302 | +then | |
| 303 | + while read -r CONF | |
| 304 | + do | |
| 305 | + if expr "$CONF" : '#' >/dev/null ; then | |
| 306 | + continue | |
| 307 | + fi | |
| 308 | + | |
| 309 | + if [ -d "$CONF" ] | |
| 310 | + then | |
| 311 | + # assume it's a directory with configure.xml files | |
| 312 | + # for example: /etc/jetty.d/ | |
| 313 | + # sort the files before adding them to the list of CONFIGS | |
| 314 | + for XMLFILE in "$CONF/"*.xml | |
| 315 | + do | |
| 316 | + if [ -r "$XMLFILE" ] && [ -f "$XMLFILE" ] | |
| 317 | + then | |
| 318 | + CONFIGS+=("$XMLFILE") | |
| 319 | + else | |
| 320 | + echo "** WARNING: Cannot read '$XMLFILE' specified in '$JETTY_CONF'" | |
| 321 | + fi | |
| 322 | + done | |
| 323 | + else | |
| 324 | + # assume it's a command line parameter (let start.jar deal with its validity) | |
| 325 | + CONFIGS+=("$CONF") | |
| 326 | + fi | |
| 327 | + done < "$JETTY_CONF" | |
| 328 | +fi | |
| 329 | + | |
| 330 | +##################################################### | |
| 331 | +# Find a location for the pid file | |
| 332 | +##################################################### | |
| 333 | +if [ -z "$JETTY_RUN" ] | |
| 334 | +then | |
| 335 | + JETTY_RUN=$(findDirectory -w /var/run /usr/var/run $JETTY_HOME /tmp) | |
| 336 | +fi | |
| 337 | + | |
| 338 | +##################################################### | |
| 339 | +# Find a pid and state file | |
| 340 | +##################################################### | |
| 341 | +if [ -z "$JETTY_PID" ] | |
| 342 | +then | |
| 343 | + JETTY_PID="$JETTY_RUN/jetty.pid" | |
| 344 | +fi | |
| 345 | + | |
| 346 | +if [ -z "$JETTY_STATE" ] | |
| 347 | +then | |
| 348 | + JETTY_STATE=$JETTY_HOME/jetty.state | |
| 349 | +fi | |
| 350 | +JAVA_OPTIONS+=("-Djetty.state=$JETTY_STATE") | |
| 351 | +rm -f $JETTY_STATE | |
| 352 | + | |
| 353 | +################################################## | |
| 354 | +# Setup JAVA if unset | |
| 355 | +################################################## | |
| 356 | +if [ -z "$JAVA" ] | |
| 357 | +then | |
| 358 | + JAVA=$(which java) | |
| 359 | +fi | |
| 360 | + | |
| 361 | +if [ -z "$JAVA" ] | |
| 362 | +then | |
| 363 | + echo "Cannot find a Java JDK. Please set either set JAVA or put java (>=1.5) in your PATH." 2>&2 | |
| 364 | + exit 1 | |
| 365 | +fi | |
| 366 | + | |
| 367 | +##################################################### | |
| 368 | +# See if JETTY_PORT is defined | |
| 369 | +##################################################### | |
| 370 | +if [ "$JETTY_PORT" ] | |
| 371 | +then | |
| 372 | + JAVA_OPTIONS+=("-Djetty.port=$JETTY_PORT") | |
| 373 | +fi | |
| 374 | + | |
| 375 | +##################################################### | |
| 376 | +# See if JETTY_LOGS is defined | |
| 377 | +##################################################### | |
| 378 | +if [ "$JETTY_LOGS" ] | |
| 379 | +then | |
| 380 | + JAVA_OPTIONS+=("-Djetty.logs=$JETTY_LOGS") | |
| 381 | +fi | |
| 382 | + | |
| 383 | +##################################################### | |
| 384 | +# Are we running on Windows? Could be, with Cygwin/NT. | |
| 385 | +##################################################### | |
| 386 | +case "`uname`" in | |
| 387 | +CYGWIN*) PATH_SEPARATOR=";";; | |
| 388 | +*) PATH_SEPARATOR=":";; | |
| 389 | +esac | |
| 390 | + | |
| 391 | + | |
| 392 | +##################################################### | |
| 393 | +# Add jetty properties to Java VM options. | |
| 394 | +##################################################### | |
| 395 | +JAVA_OPTIONS+=("-Djetty.home=$JETTY_HOME" "-Djava.io.tmpdir=$TMPDIR") | |
| 396 | + | |
| 397 | +[ -f "$JETTY_HOME/etc/start.config" ] && JAVA_OPTIONS=("-DSTART=$JETTY_HOME/etc/start.config" "${JAVA_OPTIONS[@]}") | |
| 398 | + | |
| 399 | +##################################################### | |
| 400 | +# This is how the Jetty server will be started | |
| 401 | +##################################################### | |
| 402 | + | |
| 403 | +JETTY_START=$JETTY_HOME/start.jar | |
| 404 | +[ ! -f "$JETTY_START" ] && JETTY_START=$JETTY_HOME/lib/start.jar | |
| 405 | + | |
| 406 | +START_INI=$(dirname $JETTY_START)/start.ini | |
| 407 | +[ -r "$START_INI" ] || START_INI="" | |
| 408 | + | |
| 409 | +RUN_ARGS=(${JAVA_OPTIONS[@]} -jar "$JETTY_START" $JETTY_ARGS "${CONFIGS[@]}") | |
| 410 | +RUN_CMD=("$JAVA" ${RUN_ARGS[@]}) | |
| 411 | + | |
| 412 | +##################################################### | |
| 413 | +# Comment these out after you're happy with what | |
| 414 | +# the script is doing. | |
| 415 | +##################################################### | |
| 416 | +if (( DEBUG )) | |
| 417 | +then | |
| 418 | + echo "JETTY_HOME = $JETTY_HOME" | |
| 419 | + echo "JETTY_CONF = $JETTY_CONF" | |
| 420 | + echo "JETTY_RUN = $JETTY_RUN" | |
| 421 | + echo "JETTY_PID = $JETTY_PID" | |
| 422 | + echo "JETTY_ARGS = $JETTY_ARGS" | |
| 423 | + echo "CONFIGS = ${CONFIGS[*]}" | |
| 424 | + echo "JAVA_OPTIONS = ${JAVA_OPTIONS[*]}" | |
| 425 | + echo "JAVA = $JAVA" | |
| 426 | + echo "RUN_CMD = ${RUN_CMD}" | |
| 427 | +fi | |
| 428 | + | |
| 429 | +################################################## | |
| 430 | +# Do the action | |
| 431 | +################################################## | |
| 432 | +case "$ACTION" in | |
| 433 | + start) | |
| 434 | + echo -n "Starting Jetty: " | |
| 435 | + | |
| 436 | + if (( NO_START )); then | |
| 437 | + echo "Not starting jetty - NO_START=1"; | |
| 438 | + exit | |
| 439 | + fi | |
| 440 | + | |
| 441 | + if [ $UID -eq 0 ] && type start-stop-daemon > /dev/null 2>&1 | |
| 442 | + then | |
| 443 | + unset CH_USER | |
| 444 | + if [ -n "$JETTY_USER" ] | |
| 445 | + then | |
| 446 | + CH_USER="-c$JETTY_USER" | |
| 447 | + fi | |
| 448 | + | |
| 449 | + start-stop-daemon -S -p"$JETTY_PID" $CH_USER -d"$JETTY_HOME" -b -m -a "$JAVA" -- "${RUN_ARGS[@]}" --daemon | |
| 450 | + | |
| 451 | + else | |
| 452 | + | |
| 453 | + if [ -f "$JETTY_PID" ] | |
| 454 | + then | |
| 455 | + if running $JETTY_PID | |
| 456 | + then | |
| 457 | + echo "Already Running!" | |
| 458 | + exit 1 | |
| 459 | + else | |
| 460 | + # dead pid file - remove | |
| 461 | + rm -f "$JETTY_PID" | |
| 462 | + fi | |
| 463 | + fi | |
| 464 | + | |
| 465 | + if [ "$JETTY_USER" ] | |
| 466 | + then | |
| 467 | + touch "$JETTY_PID" | |
| 468 | + chown "$JETTY_USER" "$JETTY_PID" | |
| 469 | + # FIXME: Broken solution: wordsplitting, pathname expansion, arbitrary command execution, etc. | |
| 470 | + su - "$JETTY_USER" -c " | |
| 471 | + exec ${RUN_CMD[*]} --daemon & | |
| 472 | + disown \$! | |
| 473 | + echo \$! > '$JETTY_PID'" | |
| 474 | + else | |
| 475 | + "${RUN_CMD[@]}" & | |
| 476 | + disown $! | |
| 477 | + echo $! > "$JETTY_PID" | |
| 478 | + fi | |
| 479 | + | |
| 480 | + fi | |
| 481 | + | |
| 482 | + if expr "${CONFIGS[*]}" : '.*etc/jetty-started.xml.*' >/dev/null | |
| 483 | + then | |
| 484 | + if started "$JETTY_STATE" "$JETTY_PID" | |
| 485 | + then | |
| 486 | + echo "OK `date`" | |
| 487 | + else | |
| 488 | + echo "FAILED `date`" | |
| 489 | + fi | |
| 490 | + else | |
| 491 | + echo "ok `date`" | |
| 492 | + fi | |
| 493 | + | |
| 494 | + ;; | |
| 495 | + | |
| 496 | + stop) | |
| 497 | + echo -n "Stopping Jetty: " | |
| 498 | + if [ $UID -eq 0 ] && type start-stop-daemon > /dev/null 2>&1; then | |
| 499 | + start-stop-daemon -K -p"$JETTY_PID" -d"$JETTY_HOME" -a "$JAVA" -s HUP | |
| 500 | + | |
| 501 | + TIMEOUT=30 | |
| 502 | + while running "$JETTY_PID"; do | |
| 503 | + if (( TIMEOUT-- == 0 )); then | |
| 504 | + start-stop-daemon -K -p"$JETTY_PID" -d"$JETTY_HOME" -a "$JAVA" -s KILL | |
| 505 | + fi | |
| 506 | + | |
| 507 | + sleep 1 | |
| 508 | + done | |
| 509 | + | |
| 510 | + rm -f "$JETTY_PID" | |
| 511 | + echo OK | |
| 512 | + else | |
| 513 | + PID=$(cat "$JETTY_PID" 2>/dev/null) | |
| 514 | + kill "$PID" 2>/dev/null | |
| 515 | + | |
| 516 | + TIMEOUT=30 | |
| 517 | + while running $JETTY_PID; do | |
| 518 | + if (( TIMEOUT-- == 0 )); then | |
| 519 | + kill -KILL "$PID" 2>/dev/null | |
| 520 | + fi | |
| 521 | + | |
| 522 | + sleep 1 | |
| 523 | + done | |
| 524 | + | |
| 525 | + rm -f "$JETTY_PID" | |
| 526 | + echo OK | |
| 527 | + fi | |
| 528 | + | |
| 529 | + ;; | |
| 530 | + | |
| 531 | + restart) | |
| 532 | + JETTY_SH=$0 | |
| 533 | + if [ ! -f $JETTY_SH ]; then | |
| 534 | + if [ ! -f $JETTY_HOME/bin/jetty.sh ]; then | |
| 535 | + echo "$JETTY_HOME/bin/jetty.sh does not exist." | |
| 536 | + exit 1 | |
| 537 | + fi | |
| 538 | + JETTY_SH=$JETTY_HOME/bin/jetty.sh | |
| 539 | + fi | |
| 540 | + | |
| 541 | + "$JETTY_SH" stop "$@" | |
| 542 | + "$JETTY_SH" start "$@" | |
| 543 | + | |
| 544 | + ;; | |
| 545 | + | |
| 546 | + supervise) | |
| 547 | + # | |
| 548 | + # Under control of daemontools supervise monitor which | |
| 549 | + # handles restarts and shutdowns via the svc program. | |
| 550 | + # | |
| 551 | + exec "${RUN_CMD[@]}" | |
| 552 | + | |
| 553 | + ;; | |
| 554 | + | |
| 555 | + run|demo) | |
| 556 | + echo "Running Jetty: " | |
| 557 | + | |
| 558 | + if [ -f "$JETTY_PID" ] | |
| 559 | + then | |
| 560 | + if running "$JETTY_PID" | |
| 561 | + then | |
| 562 | + echo "Already Running!" | |
| 563 | + exit 1 | |
| 564 | + else | |
| 565 | + # dead pid file - remove | |
| 566 | + rm -f "$JETTY_PID" | |
| 567 | + fi | |
| 568 | + fi | |
| 569 | + | |
| 570 | + exec "${RUN_CMD[@]}" | |
| 571 | + | |
| 572 | + ;; | |
| 573 | + | |
| 574 | + check|status) | |
| 575 | + echo "Checking arguments to Jetty: " | |
| 576 | + echo "JETTY_HOME = $JETTY_HOME" | |
| 577 | + echo "JETTY_CONF = $JETTY_CONF" | |
| 578 | + echo "JETTY_RUN = $JETTY_RUN" | |
| 579 | + echo "JETTY_PID = $JETTY_PID" | |
| 580 | + echo "JETTY_PORT = $JETTY_PORT" | |
| 581 | + echo "JETTY_LOGS = $JETTY_LOGS" | |
| 582 | + echo "START_INI = $START_INI" | |
| 583 | + echo "CONFIGS = ${CONFIGS[*]}" | |
| 584 | + echo "JAVA_OPTIONS = ${JAVA_OPTIONS[*]}" | |
| 585 | + echo "JAVA = $JAVA" | |
| 586 | + echo "CLASSPATH = $CLASSPATH" | |
| 587 | + echo "RUN_CMD = ${RUN_CMD[*]}" | |
| 588 | + echo | |
| 589 | + | |
| 590 | + if [ -f "$JETTY_PID" ] | |
| 591 | + then | |
| 592 | + echo "Jetty running pid=$(< "$JETTY_PID")" | |
| 593 | + exit 0 | |
| 594 | + fi | |
| 595 | + exit 1 | |
| 596 | + | |
| 597 | + ;; | |
| 598 | + | |
| 599 | + *) | |
| 600 | + usage | |
| 601 | + | |
| 602 | + ;; | |
| 603 | +esac | |
| 604 | + | |
| 605 | +exit 0 | |
| 0 | 606 | \ No newline at end of file | ... | ... |