sistemas:suap:instalacaosuapproducao

INSTALAÇÃO DO SUAP - AMBIENTE DE PRODUÇÃO

1) Instalar alguns pacotes necessários para a aplicação SUAP

sudo apt update -y && sudo apt upgrade -y && sudo apt autoremove -y
# 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

Instalar o wkhtmltopdf (versão >= 0.12.4 - não instalar via apt-get) FIXME [verificar se ainda é necessário]

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

Para testar o wkhtmltopdf:

sudo wkhtmltopdf  --disable-smart-shrinking  --lowquality --enable-external-links --enable-internal-links suap.ifce.edu.br test.pdf

2) Criar a pasta /var/opt/suap

sudo mkdir -p /var/opt/suap && sudo chown -R suap:suap /var/opt/suap

3) Fazer o clone do SUAP

Clone do projeto SUAP com chave de deploy

Obs.: É preciso criar chave de deploy no Gitlab

git clone https://<username>:<deploy_token>@gitlab.ifce.edu.br/SUAP/suap.git /var/opt/suap

4) Configuração de diretórios compartilhados pelo NFS

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**

Caso encontre o erro “Failed to enable unit: Unit file /lib/systemd/system/nfs-common.service is masked”

sudo rm /lib/systemd/system/nfs-common.service

Comando para montar volume nos clientes:

# 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

Adicionar no crontab:

# 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

5) Crie o arquivo settings.py

# 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

6) Criação do ambiente virtual (Virtualenv) e instalação das bibliotecas do Python/Django com sudo pip install

# 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://

7) Alterar permissões em pastas e arquivos específicos

Alterar proprietário de pastas

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

Criar e dar permissões em arquivos de log

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

8) Aumentar o número máximo de descritores e arquivos abertos

No terminal, digite o comando a seguir:

ulimit -n

Se o terminal exibe 1024, é insuficiente. Como root, Adicione as linhas abaixo ao arquivo /etc/security/limits.conf file e reinicie a máquina.

echo -e "root soft nofile 65536\nroot hard nofile 65536 \n* soft nofile 65536\n* hard nofile 65536" >> /etc/security/limits.conf 

9) Configurar Gunicorn e Supervisor

# 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
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
sudo systemctl enable supervisor --now

10) Configurar o Nginx

Embora exista um arquivo template, é importante verificar potenciais mudanças.

Em ambiente de homologação sem ssl:

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

Configurando em ambiente de produção com ssl:

sudo cp /var/opt/suap/deploy/templates/suap.nginx /etc/nginx/sites-enabled/suap

Iniciando e habilitando o NGINX:

sudo systemctl enable nginx --now

11) Usar o comando sync

python /var/opt/suap/manage.py sync

Voltar à página Principal do SUAP

  • sistemas/suap/instalacaosuapproducao.txt
  • Última modificação: 2022/04/01 15:54
  • por Joao Victor Ribeiro Galvino