====== 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://:@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 ----------- [[sistemas:suap|Voltar à página Principal do SUAP]]