Instalando o ScadaBR no CentOS 7


#1

Olá pessoal, eu estou fazendo a instalação do ScadaBR no sistema CentOS7 e resolvi compartilhar com todos o script de instalação.

Estou instalando o Tomcat7 e o Java8 baixado direto da Oracle e a versão do ScadaBR vinda do tópico de instalação do Java 1.1 com mariaDB no Linux com o patch WEB-INF.zip.

Como algumas pessoas sabem, o CentOS é um sistema não tão amigável quanto o Ubuntu, contudo ele é mais seguro por ter algumas paranoias que vem da RedHat.

Abaixo segue o Script (contudo tenho que salientar que num futuro próximo o link de download do Java pode não estar disponível e deverá ser atualizado, explico isso no final. Enfim: o Código!

#!/usr/bin/bash

yum install -y unzip nano wget
yum -y install epel-release
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
yum -y update
yum install -y mariadb-server

systemctl enable mariadb.service
systemctl start mariadb.service

yum -y update
yum -y install httpd
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --permanent --add-port=502/tcp
firewall-cmd --reload
systemctl enable httpd
systemctl start httpd
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum -y install php70w php70w-fpm
apachectl restart

echo "--- Configurando Mysql"
mysql_secure_installation
mysql -uroot -p --execute="create database scadabr;CREATE USER 'scadabr' IDENTIFIED BY 'scadabr';GRANT ALL PRIVILEGES ON scadabr.* TO scadabr;"


echo "---Instalando o java"
wget -c --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://javadl.oracle.com/webapps/download/AutoDL?BundleId=230531_2f38c3b165be4555a1fa6e98c45e0808" -O java.rpm

yum localinstall -y java.rpm

echo "--- Baixando o tomcat7"
wget http://ftp.unicamp.br/pub/apache/tomcat/tomcat-7/v7.0.85/bin/apache-tomcat-7.0.85.tar.gz

echo "--- Criando pasta do tomcat"

mkdir -p /var/lib/tomcat
echo "--- Criando o usuario e grupo tomcat"

groupadd tomcat
useradd -M -s /bin/nologin -g tomcat -d /var/lib/tomcat tomcat
chgrp -R tomcat /var/lib/tomcat


echo "--- Descompactando o tomcat"
tar xvf apache-tomcat-7.0.85.tar.gz -C /var/lib/tomcat --strip-components=1 
chown tomcat:tomcat /var/lib/tomcat -R

echo "--- Criando Inicializador de Servico do tomcat"
cat > /etc/systemd/system/tomcat.service << EOF
# Systemd unit file for tomcat
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target

[Service]
Type=forking

Environment=JAVA_HOME=/usr/java/jre1.8.0_161
Environment=CATALINA_PID=/var/lib/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/var/lib/tomcat
Environment=CATALINA_BASE=/var/lib/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'

ExecStart=/var/lib/tomcat/bin/startup.sh
ExecStop=/bin/kill -15 $MAINPID

User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

EOF


echo "--- Instalando o Servico tomcat"
systemctl daemon-reload
systemctl enable tomcat.service


echo -e "---  Iniciando o Servico do Tomcat"
systemctl start tomcat.service
sleep 2



echo "--- Baixando e instalando Scada"
wget -c -P /var/lib/tomcat/webapps http://www.powerprime.com.br/download/scadabr/ScadaBR.war
systemctl start tomcat.service
echo "--- Aguarde 30 segundos ..."
sleep 5
echo "--- Aguarde 25 segundos ..."
sleep 5
echo "--- Aguarde 20 segundos ..."
sleep 5
echo "--- Aguarde 15 segundos ..."
sleep 5
echo "--- Aguarde 10 segundos ..."
sleep 5
echo "--- Aguarde 5 segundos ..."
sleep 5
echo "--- Encerrando Tomcat para a instalação do patch WEB-INF ..."
 
systemctl stop tomcat.service

echo "--- Baixando o patch WEB-INF ..."

wget -c -P /var/lib/tomcat/webapps/ScadaBR http://www.powerprime.com.br/download/scadabr/WEB-INF.zip

echo "--- Instalando o Patch"
cd /var/lib/tomcat/webapps/ScadaBR/
unzip -o WEB-INF.zip

echo "--- Setando Permissoes da pasta"
chown tomcat:tomcat /var/lib/tomcat -R

echo "--- Subindo o tomcat"
systemctl stop tomcat.service

echo " --- Processo Terminado!"

Sobre a instalação do Java, Entre na página de Download do Java, (https://java.com/en/download/linux_manual.jsp) escolha o Linux x64 RPM e copie o link de download. Esse link deve ser colocado no lugar do link atual caso ele deixe de funcionar no futuro.

wget --no-cookies --no-check-certificate --header “Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie” “http://link_copiado_do_site

De Brinde o script instala um servidor LAMP com php, caso deseje hospedar alguma coisa WEB no mesmo servidor.

Nao foi instalado a libRXTX neste script pois ele depende basicamente de onde o java foi instalado. Fiz o script abaixo o mais generico possível para instalar a Lib RXTX

wget http://rxtx.qbang.org/pub/rxtx/rxtx-2.1-7-bins-r2.zip 
cp rxtx-2.1-7-bins-r2/RXTXcomm.jar /usr/java/default/lib/ext/
cp rxtx-2.1-7-bins-r2/Linux/x86_64-unknown-linux-gnu/librxtxSerial.so /usr/java/default/lib/amd64/

Por padrao, quando vc instala o java da Oracle, ele se instala em /usr/java/jre_XXXXX
como esse XXXX é a versão atual do java, pode ser meio complicado de decorar, por isso geralmente se tem um atalho criado como a pasta /usr/java/default.

Por isso o script acima de instalação manual da lib RXTX esta separada do código do instalador CentOS7


#2

Obrigado, está funcionando.
Mas tenho um problema ao carregar uma imagem …
Eu não sei o que pode ser, a pasta tem todas as permissões …

org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: org.apache.commons.fileupload.FileUpload.getFileSizeMax()J
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:978)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:201)
	at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:178)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:162)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at com.serotonin.mango.web.filter.WebContextFilter.doFilter(WebContextFilter.java:57)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at com.serotonin.mango.web.filter.LoggedInFilter.doFilter(LoggedInFilter.java:81)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at com.serotonin.web.filter.CharacterSetFilter.doFilter(CharacterSetFilter.java:37)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:498)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoSuchMethodError: org.apache.commons.fileupload.FileUpload.getFileSizeMax()J
	at org.springframework.web.multipart.commons.CommonsFileUploadSupport.prepareFileUpload(CommonsFileUploadSupport.java:214)
	at org.springframework.web.multipart.commons.CommonsMultipartResolver.parseRequest(CommonsMultipartResolver.java:156)
	at org.springframework.web.multipart.commons.CommonsMultipartResolver.resolveMultipart(CommonsMultipartResolver.java:142)
	at org.springframework.web.servlet.DispatcherServlet.checkMultipart(DispatcherServlet.java:1099)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:932)
	... 46 more

#3

java.lang.NoSuchMethodError: org.apache.commons.fileupload.FileUpload.getFileSizeMax

eu nao entendi essa mensagem de erro. Sério! Parece que a imagem que vc ta tentando fazer upload é grande demais para o scadabr.


#4

O arquivo pesa 50k.
Também não me deixa fazer gráficos, o erro é o mesmo ao salvar :pensive: :weary:


#5

Acho que deve ser a ultima versao do Java 8. o jeito será baixar uma versao mais velha do java. voce pode testar pra mim o download do java7

Acesse esse link, faca o cadastro e baixe a versao 7 do java para o seu sistema.

http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html