Last active
April 22, 2020 23:04
-
-
Save jjesusfilho/7b7001745cbb8f7b1ad36e7bfe5d43e8 to your computer and use it in GitHub Desktop.
Instalação do R, Rstudio-server, shiny-server, nginx, ssl e autenticação do usuário do shinyapp no Ubuntu 18.04.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Instalar o R | |
## Assegure-se de que o lsb-release está instalado: | |
apt-get update && apt-get install -y lsb-release && apt-get clean all | |
## Remova pacotes que já não são necessários | |
apt --autoremove | |
## Adicione o endereço do repositório do cran ao sources.list: | |
sudo echo "deb https://cloud.r-project.org/bin/linux/ubuntu `lsb_release -cs`-cran35/" | sudo tee -a /etc/apt/sources.list | |
## Adiciona a chave | |
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 | |
sudo apt-get update | |
sudo apt-get install -y r-base r-base-dev | |
## Instalando Java | |
sudo apt-get install -y default-jre | |
sudo apt-get install -y default-jdk | |
## Atualiza onde o R deve encontra arquivos java. | |
sudo R CMD javareconf | |
## Instalando Rjava | |
Rscript -e 'install.packages("Rjava")' | |
## Instala tesseract, caso você queira aplicar ocr e ler textos em imagens(pdf/png..) | |
sudo apt install libtesseract-dev libleptonica-dev | |
sudo apt-get install tesseract-ocr-eng | |
sudo apt-get install tesseract-ocr-por | |
## Instala o libpopler, caso você queira ler textos em pdf | |
sudo add-apt-repository -y ppa:cran/poppler | |
sudo apt update upgrade | |
sudo sudo apt-get install -y libpoppler-cpp-dev | |
## Instalando o rstudio-server | |
sudo apt-get install gdebi-core | |
wget https://download2.rstudio.org/server/trusty/amd64/rstudio-server-1.2.5033-amd64.deb | |
sudo gdebi rstudio-server-1.2.5033-amd64.deb | |
## Instalando Tidyverse e companhia | |
sudo apt install libssl-dev | |
sudo apt install libcurl4-openssl-dev | |
sudo apt install libxml2-dev | |
Rscript -e 'install.packages(c("tidyverse,"xml2")' | |
## Instalando o Shiny-server | |
sudo su - \ | |
-c "R -e \"install.packages('shiny', repos='https://cran.rstudio.com/')\"" | |
wget https://download3.rstudio.org/ubuntu-12.04/x86_64/shiny-server-1.5.5.872-amd64.deb | |
sudo gdebi shiny-server-1.5.5.872-amd64.deb | |
# Aqui, geralmente comento (#) a linha do /etc/R/Renviron que especifica a biblioteca do usário, | |
## para que o usuário shiny possa usar os pacotes instalados por mim. | |
## Instalando o nginx | |
sudo apt-get update | |
sudo apt-get install nginx | |
## Configurando o SSL | |
## O certbot client automatiza todos os passos para aquisição de certificado ssl. | |
add-apt-repository ppa:certbot/certbot | |
apt-get update | |
## Instalar o certbot | |
apt-get install python-certbot-nginx | |
## Adicionar o ip ou domínio ao server_name | |
vim /etc/nginx/sites-available/default | |
## Verificar se está tudo ok | |
nginx -t | |
## Reiniciar o nginx | |
systemctl reload nginx | |
## Autorizar portas via ufw | |
ufw allow ssh ## Fazer isso antes de habilitar o firewall. | |
## Agora podemos habilitar o firewall | |
ufw enable | |
## Agora autorizar o ngnix-full, ou seja, portas 443 e 80. | |
ufw allow 'Nginx Full' | |
## Feito isto, se você tentar acessar o rstudio e o shiny, não será possível porque estas portas | |
## foram bloqueadas. O passo agora é emitir o certificado. | |
## O SSL encrypt não emite certificado para IP, somente para domínio. | |
## Vamos registrar um domínio | |
## Ir para o seguinte endereço, criar um domínio gratuito e apontar para o Digital Ocean | |
https://my.freenom.com/ | |
## Criar um registro no Digital Ocean para o domínio e direcioná-lo para o ip | |
## Adicionar o domínio à configuração do Nginx | |
nano /etc/nginx/sites-available/default | |
## Solicitar a certificação | |
certbot --nginx -d datathon.ml -d www.datathon.ml | |
## Adicionar o proxy-reverso para o rstudio e o shiny-server no seguinte arquivo: | |
vim /etc/nginx/sites-available/default | |
### isso deve ser adicionado em qualquer parte abaixo do html.index... | |
location /rstudio/ { | |
proxy_pass http://127.0.0.1:8787/; | |
proxy_http_version 1.1; | |
proxy_set_header Upgrade $http_upgrade; | |
proxy_set_header Connection "upgrade"; | |
} | |
location /shiny/ { | |
rewrite ^/shiny/(.*)$ /$1 break; | |
proxy_pass http://127.0.0.1:3838/; | |
proxy_redirect / $scheme://$http_host/shiny/; | |
proxy_http_version 1.1; | |
proxy_set_header Upgrade $http_upgrade; | |
proxy_set_header Connection $connection_upgrade; | |
proxy_read_timeout 20d; | |
proxy_buffering off; | |
} | |
## adicionar | |
location ~ /.well-known { | |
allow all; | |
} | |
## Para que o nginx-server funcione, vc tem de adicionar a seguinte diretiva no arquivo `/etc/nginx/nginx.conf` | |
map $http_upgrade $connection_upgrade { | |
default upgrade; | |
'' close; | |
} | |
## Aumentando o tamanho máximo dos arquivos carregados | |
### O Rstudio permite que você faça upload de arquivos ou pastas zipadas por meio da aba upload. No entanto, o nginx | |
### limita o tamanho dos uploas a 100M. Se aumentar, acrescente a seguinte diretiva no arquivo `/etc/nginx/nginx.conf` | |
http { | |
... | |
client_max_body_size 100M; | |
} | |
## Segurança extra | |
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048 | |
## Cria usuários | |
useradd -m jose | |
passwd jose | |
addgroup usuarios | |
## Adiciona usuário ao grupo | |
usermod -a -G usuarios jose | |
sudo chown -R :usuarios /usr/local/lib/R/site-library | |
sudo chmod -R g+w /usr/local/lib/R/site-library | |
sudo chmod -R o-x /usr/local/lib/R/site-library | |
## Faça o mesmo com shiny | |
sudo chown -R :usuarios /srv/shiny-server | |
sudo chmod -R g+w /srv/shiny-server | |
sudo chmod -R o-x /srv/shiny-server | |
## Backup a configuração do nginx | |
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default2 | |
## Caso queira instalar o openblas, siga o seguinte tutorial: | |
https://csantill.github.io/RPerformanceWBLAS/ | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment