Este tutorial é referente a um servidor executando Ubuntu 16.04.4 LTS. Todos os passos acompanham um shell script equivalente.
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
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.
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
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.
Para iniciar o banco de dados, basta habilitar o serviço via systemctl
:
$ sudo systemctl enable --now postgresql.service
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.
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
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.
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.