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 | \ No newline at end of file | 115 | \ No newline at end of file |
Vagrantfile.conf.example
| @@ -13,4 +13,4 @@ script_sip: "../sei-db-ref-executivo/sip_2_5_2_BD_Ref_Exec.sql" | @@ -13,4 +13,4 @@ script_sip: "../sei-db-ref-executivo/sip_2_5_2_BD_Ref_Exec.sql" | ||
| 13 | repositorio_arquivos: "../sei-arquivos" | 13 | repositorio_arquivos: "../sei-arquivos" |
| 14 | 14 | ||
| 15 | # Quantidade de memória utilizada pela VM do VirtualBox (em Megabytes) | 15 | # Quantidade de memória utilizada pela VM do VirtualBox (em Megabytes) |
| 16 | -memoria_vm: "2048" | 16 | +memoria_vm: "1024" |
jod/Dockerfile
| @@ -27,7 +27,8 @@ RUN yum -y update libreoffice libreoffice-headless && \ | @@ -27,7 +27,8 @@ RUN yum -y update libreoffice libreoffice-headless && \ | ||
| 27 | yum install -y libreoffice libreoffice-headless | 27 | yum install -y libreoffice libreoffice-headless |
| 28 | 28 | ||
| 29 | # Instalação da api de serviços de conversão de documentos | 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 | RUN unzip /opt/jodconverter-tomcat-2.2.2.zip -d /opt && rm /opt/jodconverter-tomcat-2.2.2.zip | 32 | RUN unzip /opt/jodconverter-tomcat-2.2.2.zip -d /opt && rm /opt/jodconverter-tomcat-2.2.2.zip |
| 32 | 33 | ||
| 33 | # Script de inicialização dos serviços | 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 | SOFFICE_PATH=/usr/bin/soffice | 3 | SOFFICE_PATH=/usr/bin/soffice |
| 3 | TOMCAT6_PATH=/opt/jodconverter-tomcat-2.2.2/bin/catalina.sh | 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,4 +7,4 @@ echo "Iniciando o serviço LibreOffice headless" | ||
| 6 | $SOFFICE_PATH --headless --nologo --nofirststartwizard --accept="socket,host=127.0.0.1,port=8100;urp" & > /dev/null 2>&1 | 7 | $SOFFICE_PATH --headless --nologo --nofirststartwizard --accept="socket,host=127.0.0.1,port=8100;urp" & > /dev/null 2>&1 |
| 7 | 8 | ||
| 8 | echo "Iniciando o serviço Tomcat 6" | 9 | echo "Iniciando o serviço Tomcat 6" |
| 9 | -$TOMCAT6_PATH run | ||
| 10 | \ No newline at end of file | 10 | \ No newline at end of file |
| 11 | +$TOMCAT6_PATH run |
sei/Dockerfile
| @@ -16,14 +16,14 @@ MAINTAINER PEN - Processo Eletrônico Nacional | @@ -16,14 +16,14 @@ MAINTAINER PEN - Processo Eletrônico Nacional | ||
| 16 | # Ref: http://sei.processoeletronico.gov.br/wiki/manual_de_instalacao#<SESSAO DE INSTALAÇÃO DO SEI e SIP> | 16 | # Ref: http://sei.processoeletronico.gov.br/wiki/manual_de_instalacao#<SESSAO DE INSTALAÇÃO DO SEI e SIP> |
| 17 | 17 | ||
| 18 | # Instalação do servidor web Apache 2.2, memcache e demais componentes | 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 | yum -y install httpd-2.2.* mysql-5.1.* memcached openssl wget curl unzip gcc java-1.7.0-openjdk libxml2 | 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 | # Configuração do charset do Apache | 22 | # Configuração do charset do Apache |
| 23 | RUN echo "AddDefaultCharset iso-8859-1" | tee -a /etc/httpd/conf/httpd.conf | 23 | RUN echo "AddDefaultCharset iso-8859-1" | tee -a /etc/httpd/conf/httpd.conf |
| 24 | 24 | ||
| 25 | # Instalação do PHP 5 e demais bibliotecas | 25 | # Instalação do PHP 5 e demais bibliotecas |
| 26 | -RUN yum -y update php-* && \ | 26 | +RUN yum -y update && \ |
| 27 | yum -y install php-5.3.* php-common php-cli php-pear php-bcmath php-gd php-gmp \ | 27 | yum -y install php-5.3.* php-common php-cli php-pear php-bcmath php-gd php-gmp \ |
| 28 | php-imap php-intl php-ldap php-mbstring php-mysql php-odbc php-pdo php-pecl-apc \ | 28 | php-imap php-intl php-ldap php-mbstring php-mysql php-odbc php-pdo php-pecl-apc \ |
| 29 | php-pspell php-zlib php-snmp php-soap php-xml php-xmlrpc php-zts php-devel \ | 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,8 +34,8 @@ RUN pecl install uploadprogress && \ | ||
| 34 | echo "extension=uploadprogress.so" >> /etc/php.d/uploadprogress.ini | 34 | echo "extension=uploadprogress.so" >> /etc/php.d/uploadprogress.ini |
| 35 | 35 | ||
| 36 | # Configuração dos parâmetros do SEI e SIP | 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 | # Copia arquivos necessários para a instalação | 40 | # Copia arquivos necessários para a instalação |
| 41 | ADD sei.ini /etc/php.d/sei.ini | 41 | ADD sei.ini /etc/php.d/sei.ini |
| @@ -48,4 +48,4 @@ RUN chmod +x /run.sh | @@ -48,4 +48,4 @@ RUN chmod +x /run.sh | ||
| 48 | EXPOSE 80 | 48 | EXPOSE 80 |
| 49 | 49 | ||
| 50 | # Inicialização dos serviços Apache e Memcache | 50 | # Inicialização dos serviços Apache e Memcache |
| 51 | -CMD ["/run.sh"] | 51 | -CMD ["/run.sh"] |
| 52 | +CMD ["/run.sh"] | ||
| 52 | \ No newline at end of file | 53 | \ No newline at end of file |
sei/run.sh
| 1 | -#!/bin/bash | 1 | +#!/usr/bin/env bash |
| 2 | 2 | ||
| 3 | echo "127.0.0.1 sip_www" | tee -a /etc/hosts | 3 | echo "127.0.0.1 sip_www" | tee -a /etc/hosts |
| 4 | 4 | ||
| 5 | # Atribuição dos parâmetros de configuração do SEI | 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 | # Criação do diretório padrão de upload de arquivos | 9 | # Criação do diretório padrão de upload de arquivos |
| 10 | mkdir /var/www/html/sei/upload && chmod -R 666 /var/www/html/sei/upload | 10 | mkdir /var/www/html/sei/upload && chmod -R 666 /var/www/html/sei/upload |
| 11 | mkdir /var/www/html/sip/upload && chmod -R 666 /var/www/html/sip/upload | 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 | # Inicialização do serviço de cache | 16 | # Inicialização do serviço de cache |
| 14 | /etc/init.d/memcached start 2>&1 > /dev/null | 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,22 +15,18 @@ MAINTAINER PEN - Processo Eletrônico Nacional | ||
| 15 | # Instalação do MySQL seguindo as recomendações descritas na documentação do SEI | 15 | # Instalação do MySQL seguindo as recomendações descritas na documentação do SEI |
| 16 | # Ref: http://<WIKI DO PROJETO>#<SESSAO DE INSTALAÇÃO DO MYSQL> | 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 | # Criação de usuário de execução do serviço | 22 | # Criação de usuário de execução do serviço |
| 26 | RUN useradd solr | 23 | RUN useradd solr |
| 27 | 24 | ||
| 28 | # Obtenção do pacote de instalação do Solr 4.0 | 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 | # Instalação do Apache Solr | 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 | # Configuração dos parâmetros default | 31 | # Configuração dos parâmetros default |
| 36 | RUN echo "JAVA_OPTIONS='-Dsolr.solr.home=/opt/solr/example/solr $JAVA_OPTIONS'" | tee -a /etc/default/jetty && \ | 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,18 +70,18 @@ RUN mkdir /var/opt/sei/sei-protocolos/conteudo && \ | ||
| 74 | 70 | ||
| 75 | # Configuração dos links a instalação do Solr e o índice Protocolo | 71 | # Configuração dos links a instalação do Solr e o índice Protocolo |
| 76 | RUN ln -s /opt/solr/contrib/ /var/opt/sei/sei-protocolos/contrib && \ | 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 | # Configuração dos links a instalação do Solr e o índice Base de Conhecimento | 76 | # Configuração dos links a instalação do Solr e o índice Base de Conhecimento |
| 81 | RUN ln -s /opt/solr/contrib/ /var/opt/sei/sei-bases-conhecimento/contrib && \ | 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 | # Configuração dos links a instalação do Solr e o índice Publicações | 81 | # Configuração dos links a instalação do Solr e o índice Publicações |
| 86 | RUN ln -s /opt/solr/contrib/ /var/opt/sei/sei-publicacoes/contrib && \ | 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 | # Configuração de log e permissões de pastas | 86 | # Configuração de log e permissões de pastas |
| 91 | RUN mkdir /var/log/solr | 87 | RUN mkdir /var/log/solr |
| @@ -93,15 +89,15 @@ RUN chown solr:solr -R /opt/solr /var/opt/sei /var/log/solr | @@ -93,15 +89,15 @@ RUN chown solr:solr -R /opt/solr /var/opt/sei /var/log/solr | ||
| 93 | 89 | ||
| 94 | # Construção dos índices de protocolos do SEI | 90 | # Construção dos índices de protocolos do SEI |
| 95 | RUN service solr start && sleep 20 && \ | 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 | # Construção dos índices da base de conhecimento do SEI | 94 | # Construção dos índices da base de conhecimento do SEI |
| 99 | RUN service solr start && sleep 20 && \ | 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 | # Construção dos índices de publicações do SEI | 98 | # Construção dos índices de publicações do SEI |
| 103 | RUN service solr start && sleep 20 && \ | 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 | # Construção dos índices de publicações do SEI | 102 | # Construção dos índices de publicações do SEI |
| 107 | RUN service solr start && sleep 20 && \ | 103 | RUN service solr start && sleep 20 && \ |
| @@ -116,4 +112,4 @@ WORKDIR /opt/solr/example | @@ -116,4 +112,4 @@ WORKDIR /opt/solr/example | ||
| 116 | EXPOSE 8983 | 112 | EXPOSE 8983 |
| 117 | 113 | ||
| 118 | # Inicialização dos serviços Apache e Memcache | 114 | # Inicialização dos serviços Apache e Memcache |
| 119 | -CMD ["java", "-jar", "start.jar"] | 115 | -CMD ["java", "-jar", "start.jar"] |
| 116 | +CMD ["java", "-jar", "start.jar"] | ||
| 120 | \ No newline at end of file | 117 | \ No newline at end of file |
No preview for this file type
| @@ -0,0 +1,605 @@ | @@ -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 | \ No newline at end of file | 606 | \ No newline at end of file |