Introdução Link para o cabeçalho
O pacote shiny do R é uma excelente ferramenta para criar aplicações web com as seguintes funções:
- mostrar como a Estatística pode ser utilizada para ensino
- divulgação de informações públicas através de uma ferramenta interativa
- ferramenta de controle de produção em empresas (dashboards, no jargão popular)
Eu mantenho uma página no site da universidade com aplicações criadas por mim e por meus alunos que ilustram o poder desta ferramenta.
Qualquer pessoa pode utilizar gratuitamente o site shinyapps.io para hospedar as suas próprias criações. Entretanto, por ser um serviço gratuito, ele apresenta diversas limitações de uso. Por isso, o tutorial abaixo mostra como instalar o shiny em um servidor utilizando Ubuntu 18.04, a versão LTS mais atual de uma das distribuições de Linux mais utilizadas.
Caso o seu uso do shiny seja acadêmico, mande um email para mim que podemos conversar a respeito de hospedagem gratuita para o seu aplicativo no meu site, sem limitação alguma.
Instalação do R Link para o cabeçalho
Vou assumir a partir de agora que o leitor dispõe de um servidor remoto com Ubuntu 18.04 instalado e que possui privilégios de administrador nesta máquina. Na verdade, é possível utilizar comandos bem parecidos com estes para instalar o shiny em qualquer servidor Linux. Bastam pequenas alterações no script.
Antes de instalar o R, é preciso fazer a atualização do Ubuntu através do comando
sudo apt-get update && sudo apt-get dist-upgrade
Para um uso despreocupado da ferramenta, recomendo pelo menos 10GB de espaço em disco disponível. Dá para instalar o shiny com menos espaço do que isso, mas é possível que falte espaço para pacotes do R ou para os dados a serem analisados. Para checar o espaço disponível na sua máquina, rode o comando
df -h
Em seguida, é necessário instalar alguns pacotes extras no Ubuntu. Isto é resolvido através do comando
sudo apt install apt-transport-https software-properties-common
Para instalar o R, é necessário alterar o arquivo de sistema com informações sobre repositórios de programas. Isto é feito da seguinte forma no Ubuntu:
sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/'
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9
Agora sim podemos finalmente instalar o R. Rodo os comandos abaixo caso ele ainda não esteja instalado em seu servidor.
sudo apt update
sudo apt install -y r-base r-base-core r-recommended
Alguns pacotes do R precisarão de programas especiais para serem instalados. Estes programas são instalados da seguinte maneira:
sudo apt install -y build-essential libcurl4-openssl-dev libxml2-dev openjdk-8-jdk git libssl-dev
Além disso, o java exige algumas configurações extras que devem ser realizadas da seguinte maneira:
export LD_LIBRARY_PATH=/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server
sudo R CMD javareconf
Por fim, caso seu servidor tenha pouco espaço em disco, é preciso atualizar o local em que os pacotes do R serão instalados. Para fazer isso, abra o arquivo Renviron
com o seguinte comando:
sudo nano /usr/lib/R/etc/Renviron
Após o editor de texto estar aberto, procure a primeira linha abaixo e comente-a, colocando o caractere #
na sua frente. Em seguida, copie e cole a instrução R_LIBS_USER=${R_LIBS_USER-‘~/Library/R/3.5/library’}
logo abaixo. No final ,é isto que deve estar presente no arquivo:
#R_LIBS_USER=${R_LIBS_USER-‘~/R/x86_64-pc-linux-gnu-library/3.0’}
R_LIBS_USER=${R_LIBS_USER-‘~/Library/R/3.5/library’}
Com o R configurado, agora é hora de iniciar o programa como usuário root para instalar pacotes para todos os usuários. Rode
sudo -i R
para fazer isto. Vamos instalar alguns pacotes da maneira como sempre foi feito no R:
install.packages(c("shiny", "tidyverse", "devtools"),
repos = "https://cran.rstudio.com/",
dependencies=TRUE)
Estou colocando repos="https://cran.rstudio.com/"
como repositório porque já vi alguns usuários reportarem que tiveram problemas ao instalar o shiny sem fazer isso.
Em seguida, devemos deixar a pasta dos pacotes legível para o shiny. Para saber que pasta é esta, rode o comando abaixo no R:
.libPaths() # /usr/local/lib/R/site-library é o meu resultado; isto pode variar
Para deixar a pasta dos pacotes legível para o shiny, saia do R e rode o seguinte comando no terminal:
sudo chmod 777 /usr/lib/R/site-library # lembre-se de alterar o que vem depois de 777 com o resultado de .libPaths()
Instalação do shiny server Link para o cabeçalho
Finalmente, podemos instalar o servidor do shiny. O endereço de download abaixo pode estar desatualizado no momento em que este post está sendo lido. Visite este site para obter a versão mais recente do servidor.
sudo apt install -y gdebi-core
wget https://download3.rstudio.org/ubuntu-14.04/x86_64/shiny-server-1.5.9.923-amd64.deb
sudo gdebi shiny-server-1.5.9.923-amd64.deb
Rode o comando abaixo para permitir que outros usuários vejam seus apps:
sudo chmod -R 777 /srv
Por fim, teste o seu novo servidor em um browser, substituindo o ip abaixo pelo ip ou domínio do seu site:
127.0.0.1:3838
Tudo deve estar funcionando neste momento. Parabéns!
Instalação dos web apps Link para o cabeçalho
Para rodar os seus próprios apps no servidor, copie a pasta com os arquivos dos apps (em geral, global.R
, server.R
e ui.R
) para o servidor e mova-os para a pasta /srv/shiny-server/
:
sudo mv PastaComApp /srv/shiny-server/
Agora é só acessar os apps através da pasta na qual eles estão
127.0.0.1:3838/PastaComApp
Manutenção do Servidor Link para o cabeçalho
Para substituir a porta do servidor e não ter que ficar digitando a porta de acesso toda vez que desejar acessar um app, rode
sudo nano /etc/shiny-server/shiny-server.conf
Dentro do editor, altere a linha
listen 3838;
para
listen 80;
Reinicie o servidor do shiny:
sudo systemctl restart shiny-server
Para verificar seu status, isto é, para checar se ele está rodando de fato, rode
sudo systemctl status shiny-server
Este comando deve retornar a informação de que o sistema está rodando.
Eu recomendo que, para evitar problemas de segurança, o seu Ubuntu seja atualizado periodicamente. Para isso, rode o comando
sudo apt-get update && sudo apt-get dist-upgrade -y && sudo apt-get autoremove -y
Para atualizar os pacotes do R, rode
sudo Rscript -e 'update.packages(repos="http://cran.rstudio.com", ask=FALSE); source("http://bioconductor.org/biocLite.R"); biocLite(ask=FALSE)'
Conclusão Link para o cabeçalho
Estes são os passos gerais para a instalação do shiny server em uma máquina rodando Linux. Em condições normais, este procedimento leva em torno de duas a três horas para ser completado. O tempo vai depender de vários fatores, como a experiência de quem estiver realizando-o, a velocidade de conexão à internet do servidor e até mesmo a facilidade en resolver alguns detalhes chatos que podem surgir pelo caminho.
Caso a sua empresa esteja interessada em fazer uso deste serviço e não tenha pessoal habilitado, saiba que estou disponível para prestar consultoria no assunto. Além disso, ofereço treinamento personalizado em R e estatística. Entre em contato para saber mais a respeito.
Não custa lembrar que se o uso do shiny pela tua parte é acadêmico, mande um email para mim que podemos conversar a respeito de hospedagem gratuita para o seu aplicativo no meu site, sem limitação alguma.