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