Skip to content

Instantly share code, notes, and snippets.

@ranisalt
Last active March 12, 2018 14:38
Show Gist options
  • Save ranisalt/f9321be1381ba0abc9b255cca501fa0f to your computer and use it in GitHub Desktop.
Save ranisalt/f9321be1381ba0abc9b255cca501fa0f to your computer and use it in GitHub Desktop.

Este tutorial é referente a um servidor executando Ubuntu 16.04.4 LTS. Todos os passos acompanham um shell script equivalente.

Instalar dependências do sistema

Instalaremos o banco de dados, o git e bibliotecas que futuramente serão usadas para compilar as dependências do Helios.

$ sudo apt install gettext git libldap2-dev libpq-dev libsasl2-dev nginx postgresql python-pip python-virtualenv uwsgi uwsgi-plugin-python

PostgreSQL

Configurar banco de dados

Para maior segurança, o banco de dados será configurado para escutar apenas via socket, desabilitando qualquer conexão através da rede, e não será acessível por senha. Substitua 9.5 pela versão instalada do PostgreSQL.

Habilitar autenticação sem senha

Habilitamos autenticação sem senha para o usuário helios inserindo a linha local all helios trust em /etc/postgresql/9.5/main/pg_hba.conf acima de todas as outras configurações, e.g. acima da linha # DO NOT DISABLE!:

$ sudo sed -e '/DO NOT DISABLE/ ilocal all helios trust' -i /etc/postgresql/9.5/main/pg_hba.conf

Desabilitar conexões TCP

Desabilitamos conexões TCP alterando a variável listen_address para uma string vazia (''). O padrão é localhost, portanto não podemos deixar esta variável desconfigurada.

$ sudo tee -a  /etc/postgresql/9.5/main/postgresql.conf <<<"listen_address = ''"

Após ambos os passos, o banco de dados fica completamente isolado da rede, aceitando apenas conexões de programas executando na mesma máquina, e independente de uma senha, sendo protegido pelo próprio sistema de autenticação do sistema.

Para segurança máxima, desabilite login com senha por SSH e utilize apenas login por RSA.

Iniciar o banco de dados

Para iniciar o banco de dados, basta habilitar o serviço via systemctl:

$ sudo systemctl enable --now postgresql.service

Helios

Clonar repositório

Usamos a versão mais recente do repositório no Github.

$ git clone https://github.com/caravelahc/helios
$ cd helios

Trabalharemos então dentro do diretório recém criado.

Criar virtualenv e instalar dependências

Trabalhar com um virtualenv é importante para isolar o ambiente Python do resto do sistema. Depois, basta instalar as dependências listadas no arquivo requirements.txt através do pip.

$ python -m virtualenv .
$ pip install -r requirements.txt

Criar e importar o banco de dados

Criaremos um usuário chamado helios no Postgres, pelo qual faremos todas as configurações daqui em diante.

$ sudo -u postgres -- psql -c "create role helios with createdb createrole login"

Depois, criaremos um banco de dados também chamado helios e importaremos o schema e as migrações do Helios.

$ createdb -U helios helios
$ python manage.py syncdb
$ python manage.py migrate

É importante salientar que no segundo passo (syncdb) o Django perguntará se você deseja criar um novo superusuário. É recomendado fazê-lo neste passo.

Nginx + uWSGI

Até aqui, temos o Helios, suas dependências e o banco de dados instalados e configurados. Agora, configuraremos o servidor web que recebe os requests (Nginx) e interage com o Helios (uWSGI). É possível usar Apache + mod_wsgi ou Apache + mod_python, mas a stack Nginx + uWSGI é de maior conhecimento do autor.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment