sistemas:suap:instalacaosuapproducao

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

sistemas:suap:instalacaosuapproducao [2022/04/01 15:54] (atual)
Joao Victor Ribeiro Galvino criada
Linha 1: Linha 1:
 +====== INSTALAÇÃO DO SUAP - AMBIENTE DE PRODUÇÃO ======
  
 +1) Instalar alguns pacotes necessários para a aplicação SUAP
 +
 +<code bash>
 +sudo apt update -y && sudo apt upgrade -y && sudo apt autoremove -y
 +</code>
 +
 +<code bash>
 +# pacotes utilizados pelo IFCE
 +sudo apt install git python-dev libpq-dev libssl-dev libldap2-dev libsasl2-dev python-setuptools build-essential libncurses5 libncurses5-dev python-pil python-simplejson freetds-dev libxml2 libxml2-dev libxslt-dev cython libblas-dev liblapack-dev libatlas-base-dev gfortran libjpeg8-dev libffi-dev xvfb python-yaml python3-pip virtualenv nginx supervisor python3-setuptools -y
 +
 +# adicionais dos pacotes do IFRN que não constam nos nossos pacotes
 +sudo apt install ghostscript libjpeg-dev libfreetype6-dev zlib1g-dev libxmlsec1-dev libxslt1-dev libglu1-mesa libcairo2 libcups2 libdbus-glib-1-2 libxinerama1 libsm6 python3-dev python3-wheel python3-cffi libpango-1.0-0 libpangocairo-1.0-0 poppler-utils ntpdate swig zlib1g-dev libffi7 -y
 +
 +# pacotes sob análise (que não foram encontrados ou apresentaram versões diferentes)
 +# consta no IFRN e não foi encontrado no Ubuntu 20.04 (utilizando libffi7 como teste)
 +libffi6 
 +# constava no nosso mas a versão encontrada foi python3-suds
 +python-suds 
 +
 +</code>
 +
 +<fc #ff0000>Instalar o wkhtmltopdf (versão >= 0.12.4 - não instalar via apt-get) FIXME [verificar se ainda é necessário]</fc>
 +
 +<code bash>
 +cd /tmp
 +wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
 +tar xf wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
 +sudo cp /tmp/wkhtmltox/bin/wkhtmltopdf /usr/bin/wkhtmltopdf
 +sudo chown root:root /usr/bin/wkhtmltopdf
 +</code>
 +
 +<fc #ff0000>Para testar o wkhtmltopdf:</fc>
 +
 +<code bash>
 +sudo wkhtmltopdf  --disable-smart-shrinking  --lowquality --enable-external-links --enable-internal-links suap.ifce.edu.br test.pdf
 +</code>
 +--------------------
 +
 +2) Criar a pasta /var/opt/suap 
 +
 +<code bash>
 +sudo mkdir -p /var/opt/suap && sudo chown -R suap:suap /var/opt/suap
 +</code>
 +
 +3) Fazer o clone do SUAP
 +
 +**Clone do projeto SUAP com chave de deploy**
 +
 +Obs.: É preciso criar chave de deploy no Gitlab
 +<code bash>
 +git clone https://<username>:<deploy_token>@gitlab.ifce.edu.br/SUAP/suap.git /var/opt/suap
 +</code>
 +
 +4) Configuração de diretórios compartilhados pelo NFS
 +
 +<code bash>
 +sudo apt install nfs-common -y
 +sudo systemctl enable nfs-common --now
 +
 +# Importante verificar na máquina de NFS se o arquivo **/etc/exports** consta o IP da máquina local liberado
 +# Na máquina do NFS --> Após alteração do arquivo /etc/exports, reiniciar o serviço com **sudo service nfs-kernel-server restart**
 +</code>
 +
 +Caso encontre o erro **"Failed to enable unit: Unit file /lib/systemd/system/nfs-common.service is masked"**
 +<code bash>
 +sudo rm /lib/systemd/system/nfs-common.service
 +</code>
 +
 +Comando para montar volume nos clientes: 
 +
 +<code bash>
 +# montando sessions
 +sudo mount 200.17.33.234:/opt/suap/deploy/sessions /var/opt/suap/deploy/sessions/ 
 +
 +# montando media
 +[ -d /var/opt/suap/deploy/media ] || mkdir -p /var/opt/suap/deploy/media
 +sudo chown suap:suap /var/opt/suap/deploy/media
 +sudo chmod 777 /var/opt/suap/deploy/media 
 +sudo mount 200.17.33.234:/opt/suap/deploy/media /var/opt/suap/deploy/media/
 +
 +# montando arquivos_siape
 +sudo mount 200.17.33.234:/opt/suap/rh/arquivos_siape /var/opt/suap/rh/arquivos_siape/
 +sudo chown -R www-data:www-data /var/opt/suap/rh/arquivos_siape/
 +
 +# verificando a existência dos três pontos de montagem acima
 +df -h
 +</code>
 +
 +Adicionar no crontab:
 +
 +<code bash>
 +# Abrir o crontab como sudo:
 +sudo crontab -e
 +# Inserir conteúdo abaixo:
 +@reboot /bin/mount 200.17.33.234:/opt/suap/deploy/sessions /opt/suap/deploy/sessions
 +@reboot /bin/mount 200.17.33.234:/opt/suap/deploy/media /opt/suap/deploy/media
 +@reboot /bin/mount 200.17.33.234:/opt/suap/rh/arquivos_siape /opt/suap/rh/arquivos_siape
 +</code>
 +
 +5) Crie o arquivo settings.py
 +
 +<code bash>
 +# settings_sample.py é um template --> fazer as devidas mudanças em settings.py
 +cp /var/opt/suap/suap/settings_sample.py /var/opt/suap/suap/settings.py
 +</code>
 +
 +6) Criação do ambiente virtual (Virtualenv) e instalação das bibliotecas do Python/Django com sudo pip install 
 +
 +<code bash>
 +# criando e ativando ambiente virtual com a versão do python3
 +virtualenv /home/suap/suap -p $(which python3) && source /home/suap/suap/bin/activate
 +
 +# inserindo a habilitação automática do ambiente virtual no shell padrão do usuário suap
 +echo "source /home/suap/suap/bin/activate" >> /home/suap/.bashrc && exec /bin/bash
 +
 +# instalando os requirements para a aplicação 
 +pip install -U -r /var/opt/suap/requirements/production.txt
 +
 +# caso ocorra o erro "ERROR: Command errored out with exit status 128:...", basta executar o comando abaixo e executar o comando acima novamente
 +git config --global url."https://".insteadOf git://
 +</code>
 +
 +7) Alterar permissões em pastas e arquivos específicos
 +
 +Alterar proprietário de pastas
 +
 +<code bash>
 +sudo mkdir /var/opt/suap/static
 +sudo chown -R www-data:www-data /var/opt/suap/deploy/sessions /var/opt/suap/static
 +sudo chmod -R ugo+rw /var/opt/suap/static
 +</code>
 +
 +Criar e dar permissões em arquivos de log
 +
 +<code bash>
 +sudo touch /var/opt/suap/deploy/logs/debug.log /var/opt/suap/deploy/logs/gunicorn/gunicorn.log 
 +sudo chmod ugo+rwx /var/opt/suap/deploy/logs/debug.log /var/opt/suap/deploy/logs/gunicorn/gunicorn.log
 +sudo mkdir /var/log/suap
 +sudo chown -R suap:suap /var/log/suap
 +
 +</code>
 +
 +8) Aumentar o número máximo de descritores e arquivos abertos
 +
 +No terminal, digite o comando a seguir:
 +
 +<code bash>
 +ulimit -n
 +</code>
 +
 +Se o terminal exibe 1024, é insuficiente. Como **root**, Adicione as linhas abaixo ao arquivo /etc/security/limits.conf file e reinicie a máquina.
 +<code bash>
 +echo -e "root soft nofile 65536\nroot hard nofile 65536 \n* soft nofile 65536\n* hard nofile 65536" >> /etc/security/limits.conf 
 +</code>
 +--------------------
 +
 +9) Configurar Gunicorn e Supervisor
 +
 +<code bash>
 +# se o comando abaixo não retornar nada o Gunicorn instalado atualmente 
 +# deve ser removido e então instalado via pip
 +pip freeze | grep gunicorn
 +# caso seja necessário desinstalar
 +sudo apt purge gunicorn
 +sudo pip install gunicorn
 +</code>
 +
 +<code bash>
 +cp /var/opt/suap/deploy/templates/gunicorn_start.sh /var/opt/suap/deploy/gunicorn_start.sh
 +sudo chmod ugo+x /var/opt/suap/deploy/gunicorn_start.sh
 +sudo cp /var/opt/suap/deploy/templates/suap.conf.supervisor /etc/supervisor/conf.d/suap.conf
 +</code>
 +
 +<code bash>
 +sudo systemctl enable supervisor --now
 +
 +</code>
 +
 +10) Configurar o Nginx
 +
 +Embora exista um arquivo template, é importante verificar potenciais mudanças.
 +
 +Em ambiente de homologação sem ssl:
 +
 +<code bash>
 +sudo cp /var/opt/suap/deploy/templates/suap_homologacao.nginx /etc/nginx/sites-available/suap
 +sudo ln -s /etc/nginx/sites-available/suap /etc/nginx/sites-enabled/suap
 +sudo systemctl enable nginx --now
 +</code>
 +
 +Configurando em ambiente de produção com ssl:
 +<code bash>
 +sudo cp /var/opt/suap/deploy/templates/suap.nginx /etc/nginx/sites-enabled/suap
 +</code>
 +
 +Iniciando e habilitando o NGINX:
 +<code bash>
 +sudo systemctl enable nginx --now
 +</code>
 +
 +11) Usar o comando sync
 +
 +<code bash>
 +python /var/opt/suap/manage.py sync
 +</code>
 +
 +
 +
 +
 +
 +
 +-----------
 +
 +[[sistemas:suap|Voltar à página Principal do SUAP]]
  • sistemas/suap/instalacaosuapproducao.txt
  • Última modificação: 2022/04/01 15:54
  • por Joao Victor Ribeiro Galvino