Commit d59915d4ec14487883338bcddb976c659bd7030d
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
10 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 |
@@ -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 |