Bem vindo!

ao blog Willem Allan

Configurando Ubuntu Server – Django + nginx + gunicorn + supervisor + git

Siga passo a passo para criar um servidor rodando projetos django.

INSTALAÇÃO DOS PACOTES

Atualizando servidor

sudo apt-get update
sudo apt-get upgrade

Pacote de binários

sudo apt-get install build-essential

Instalando os pacotes

sudo apt-get install python python-dev automake python-mysqldb mysql-server python-setuptools python-pip python-virtualenv git gunicorn nginx supervisor libmysqlclient-dev

Atualizando servidor

sudo apt-get update
sudo apt-get upgrade

CONFIGURAÇÃO DO PROJETO

diretório dos projetos

cd /var/
sudo mkdir www

alterando permissão da pasta para o usuário ubuntu

sudo chown ubuntu:ubuntu www
criando a pasta do site
cd www
mkdir soslink
cd soslink
mkdir logs
touch logs/access.log
touch logs/error.log

CONFIGURANDO O BANCO MYSQL

acessando banco

mysql -u root -p

Criando banco, usuário e dando permissão para o usuário

CREATE DATABASE IF NOT EXISTS soslink;
CREATE USER 'soslink'@'localhost' IDENTIFIED BY 'senha';
GRANT ALL PRIVILEGES ON `soslink` . * TO 'soslink'@'localhost';

criando env

virtualenv env --no-site-packages

Criando chave ssh no servidor

ssh-keygen

Copie o código gerado e adicione ao seu servidor no meu caso (bitbucket)

cat ~/.ssh/id_rsa.pub

clonando projeto

git clone git@bitbucket.org:willemarf/soslinks.git project

ativando env

source env/bin/activate

instalando requirements

pip install -r project/requirements.txt

caso de problema no distribute

easy_install -U distribute

instale requirements de novo

pip install -r project/requirements.txt

* configurar o settings.py com novo banco e usuário, static e media

criando as tabelas da aplicação

python project/app/manage.py syncdb
python project/app/manage.py migrate

rodar projeto para ver se ocorreu tudo bem

python project/app/manage.py runserver 8000

criar links simbolicos (depende do projeto)

ln -s project/app/static/ static
ln -s project/app/media/ media

* projeto funcionando agora precisamos configurar nginx, gunicorn e supervisor

CONFIGURANDO NGINX

editar o arquivo

sudo nano /etc/nginx/nginx.conf

adicionar a baixo dos includes que já existem

include /var/www/*/nginx.conf;

criar um arquivo nginx.conf na pasta do usuário

nano /var/www/soslink/nginx.conf

adicionar o seguinte código

upstream soslink {
  server 127.0.0.1:8000;
}
 
server {
    listen 80;
    server_name soslink.com.br www.soslink.com.br;
    client_max_body_size 50M;
 
    access_log /var/www/soslink/logs/access.log;
    error_log /var/www/soslink/logs/error.log;
 
    location /static/ {
        alias /var/www/soslink/project/static/;
    }
    location /media/ {
        alias /var/www/soslink/project/media/;
    }
    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
 
        if (!-f $request_filename) {
            proxy_pass http://soslink;
            break;
        }
    }
}

reiniciar nginx

sudo /etc/init.d/nginx restart

inicie na mão o projeto e teste no navegador passando a porta 8000 e verifique se está funcionando o nginx na porta 80

python project/app/manage.py runserver 8000

Caso de erros – para verificar os erros do nginx

tail -f /var/www/soslink/logs/error.log

* caso funcione agora precisamos configurar o nginx, gunicorn e o supervisor

INSTALANDO E CONFIGURANDO GUNICORN

instalando no env

pip install gunicorn

atualizando requirements

pip freeze > project/requirements.txt

editar o arquivo settings.py do projeto e adicionar

INSTALLED_APPS = (
    ...
    "gunicorn", 
 
)

rodar o projeto com gunicorn para ver se funcionou

python project/app/manage.py run_gunicorn -b 0.0.0.0:8000

CONFIGURANDO SUPERVISOR

supervisor não deixará sua aplicação fechar caso ocorra erro.

Editando arquivo de configuração do supervisord

sudo nano /etc/supervisor/supervisord.conf

comente a linha do files e adicione a sua onde ficaram os projetos:

[include]
;files = /etc/supervisor/conf.d/*.conf
files = /var/www/*/supervisor.conf

criar um arquivo na pasta do usuário com nome supervisor.conf

nano /var/www/soslink/supervisor.conf

adicionar o código a baixo:

[program:soslink]
command=/var/www/soslink/env/bin/python /var/www/soslink/project/app/manage.py run_gunicorn -b 127.0.0.1:8000 -w 3
directory=/var/www/soslink/project
autostart=true
autorestart=true

reinicie o supervisord

sudo /etc/init.d/supervisor restart

verifique se está rodando o projeto

sudo supervisorctl

no console do supervisor que irá mostrar os status das aplicações rodando

status

inicia ou para app

start nome_app
stop nome_app

Espero ter ajudado!! abs