Instalando a última versão estável do NIRA

Pré-requisitos para instalação

Para realizar a instalação é necessário conhecimentos básicos na plataforma Linux. Para acessar o sistema com um nome (nira.exemplo.br) é preciso configurar um servidor de DNS. A configuração de um DNS está fora do escopo desta documentação.

Instalação do NIRA para um ambiente Linux

Instalação do NIRA para um ambiente Linux Debian (Jessie), utilizando Python 2.7, Virtualenv, Apache2, Git e PostgreSQL.

1. Pacotes necessários

Precisamos instalar o git, postgres, apache2 e outras dependências:

apt-get install python-pip apache2 git postgresql-9.4 libpq-dev python-dev libapache2-mod-wsgi

Baixe o virtualenv:

pip install virtualenv

2. Virtualenv

Criar um virtualenv

Para criar um virtualenv em um diretório, por exemplo /var/lib, faça:

cd /var/lib
virtualenv sistema-nira

Baixar o NIRA no virtualenv

Baixe o NIRA Dev do git para dentro do virtualenv com o seguinte comando:

cd /var/lib/sistema-nira
git clone https://github.com/neuromat/nira.git

Ativar o virtualenv

Ative o virtualenv e siga para realizar os próximos passos:

cd /var/lib/sistema-nira
source bin/activate

3. Instalar os pacotes necessários para o funcionamento do NIRA na versão desejada

Instale os pacotes necessários da versão obtida do GitHub:

cd /var/lib/sistema-nira/nira/
pip install -r requirements.txt

4. Alterar o arquivo wsgi.py

Abra o arquivo de wsgi:

cd /var/lib/sistema-nira/nira/sistema
vi /var/lib/sistema-nira/nira/sistema/wsgi.py

Deixe similar ao seguinte código, modificando caso seu diretório seja diferente:

"""
WSGI config for NIRA project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/
"""

import os
import sys

# Altere o path de acordo com seu sistema
# aqui usamos o caminho /var/lib/sistema-nira/nira
paths = ['/var/lib', '/var/lib/sistema-nira', '/var/lib/sistema-nira/nira',]

for path in paths:
    if path not in sys.path:
        sys.path.append(path)

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "sistema.settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

5. Configure um banco de dados

Configurar um banco de dados PostgreSQL é simples, são três passos:

  1. Usando o usuário postgres:

    su postgres
    
  2. Crie um usuário de banco e defina uma senha:

    createuser seu_usuario --pwprompt --encrypted
    
  3. Crie um banco:

    createdb seu_banco --owner=seu_usuario
    

6. Configure seu settings_local

O arquivo settings_local.py deve ser criado no diretório “sistema” do projeto, no nosso caso:

cd /var/lib/sistema-nira/nira/sistema/
vi settings_local.py

Em settings_local.py você deve configurar o sistema para usar o seu banco de dados PostgreSQL. Você também deve alterar a variável com o nome do seu CEPID.

# -*- coding: utf-8 -*-
from django.utils.translation import ugettext_lazy as _
import os

# Generate a secret key
try:
    from secret_key import *
except ImportError:
    from helpers.views.secret_key_generator import *
    SETTINGS_DIR = os.path.abspath(os.path.dirname(__file__))
    generate_secret_key(os.path.join(SETTINGS_DIR, 'secret_key.py'))
    from secret_key import *

DEBUG = True

TEMPLATE_DEBUG = True

ALLOWED_HOSTS = []

# Ajuste o caminho para static
STATIC_ROOT = '/var/lib/sistema-nira/nira/static/'

# Aqui você deve colocar as suas configurações de banco de dados
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'seu_banco',
        'USER': 'seu_usuario',
        'PASSWORD': 'sua_senha',
        'HOST': 'localhost',
    }
}

7. Configuração do Apache

Crie um diretório para armazenar os logs de erro do sistema:

mkdir /var/log/apache2/nira

Vá para o diretório de sites do Apache e abra um arquivo para o nira, nira.conf:

cd /etc/apache2/sites-available
vi nira.conf

Coloque algo similar ao código abaixo, alterando ServerAdmin, ServerName, ServerAlias de acordo seu ambiente e altere o diretório caso seja necessário:

# Dependendo da versão do Apache esse arquivo varia, acesse para mais infos http://wiki.apache.org/httpd/ClientDeniedByServerConfiguration

WSGIPythonPath /var/lib:/var/lib/sistema-nira/lib/python2.7/site-packages

<VirtualHost *:80>
        ServerAdmin seu_email@exemplo.br
        ServerName nira.exemplo.br
        ServerAlias www.nira.exemplo.br

        DocumentRoot /var/lib/sistema-nira/nira

        <Directory />
           Options FollowSymLinks
           AllowOverride None
        </Directory>

        Alias /static/ /var/lib/sistema-nira/nira/static/

        <Directory /var/lib/sistema-nira/nira>
                Require all granted
        </Directory>

        WSGIScriptAlias / /var/lib/sistema-nira/nira/sistema/wsgi.py

        # Caminho definido para o erro do apache
        ErrorLog /var/log/apache2/nira/error.log

</VirtualHost>

Desabilite o virtualhost padrão do Apache e habilite o NIRA:

a2dissite 000-default.conf
a2ensite nira

8. Configurações finais

Para obter os arquivos de static, faça:

cd /var/lib/sistema-nira/nira/
python manage.py collectstatic

Permita que a pasta de mídia suporte para uploads de imagens:

chown www-data /media

Configure o banco de dados com os apps do NIRA:

python manage.py migrate

Crie um usuário administrador:

python manage.py createsuperuser

Coloque no banco de dados os perfis básicos de usuários e os tipos básicos para trabalhos acadêmicos:

python manage.py loaddata load_initial_person
python manage.py loaddata load_initial_research

Para popular a base de dados com cidades de todos os continentes, faça:

python manage.py cities_light

Mais informações sobre as cidades podem ser encontradas aqui.

Reinicie o Apache:

service apache2 restart

Se todos os itens foram realizados sem nenhum erro, então o NIRA está pronto para ser utilizado. Acesse o sistema com o nome configurado no Virtualhost (Item 7, Configuração do Apache). Você pode logar no sistema com os dados de acesso do usuário administrador, criado no Item 8.