Instala e configura todos os pacotes necessários para configurar um servidor com python/django + nginx + supervisor no ubuntu.
Alterar configurações no fabfile.py:
username = 'root'
host = '192.168.1.111'
Configura um novo servidor instalando todos pacotes necessários:
fab newserver
Reiniciar nginx e supervisor
fab restart
Cria um usuário e banco por site para deixar separado as estruturas, pois cada site tem suas senhas e em caso de invasão só terão acesso a um projeto e não a todos.
Criar uma nova conta no servidor:
fab newaccount
Exclui uma conta no servidor:
fab delaccount
fabfile usado no projeto para subir os dados no servidor.
Estrutura dos projetos - são utilizados 3 domínios media e static separados.
- www.willemallan.com.br ou willemallan.com.br
- static.willemallan.com.br - /home/willemallan/project/static
- media.willemallan.com.br - /home/willemallan/project/media
exemplo do settings.py do projeto:
MEDIA_ROOT = os.path.join(PROJECT_PATH, '..', 'media')
MEDIA_URL = 'http://media.willemallan.com.br/'
STATIC_ROOT = os.path.join(PROJECT_PATH, '..', 'static')
STATIC_URL = 'http://static.willemallan.com.br/'
STATICFILES_DIRS = (
os.path.join(PROJECT_PATH, 'static'),
)
TEMPLATE_DIRS = (
os.path.join(PROJECT_PATH, '..', 'templates')
)
Antes de clonar precisa configurar o settings do projeto de acordo com os dados que o script gera.
Quando vai clonar um projeto é importante adicionar a chave do servidor no bitbucket apenas no deploy key do projeto. Assim o servidor só poderá ler os arquivos e nunca poderá escrever, evitando problemas que acontecem do programador arrumar os bugs do servidor e esquecer de dar commit.
Baixar esse fabfile para o projeto.
Configurar o servidor pela primeira vez (precisa copiar a chave ssh para o repositório do servidor):
fab config (Instala o distribute e os requirements.txt no env. Executa o syncdb, migrate e collectstatic)
Rode o projeto para testar se há alguem erro (depois pode cancelar ctrl+c):
python project/manage.py runserver 8060
Rode o projeto com o gunicorn para testar se ele esta instalado no env e no INSTALLED_APPS:
python project/manage.py run_gunicorn
Sai do servidor: exit
Atualiza o repositório no servidor e reinicia a aplicação do supervisor:
fab deploy
Servidor2 muda para root pois para reiniciar a aplicação precisa ser o root e não o usuário da conta.
Reinicie NGINX
fab nginx_restart
Reinicie SUPERVISOR
fab supervisor_restart