Quarta-feira, 2 de Abril de 2008

Django e Python2.5 no dreamhost - Parte 2

Bom depois de Configurado o Python, como visto no post anterior é hora de colocar o django no ar. Ahh lembrando que o Django não é suportado oficialmente pela dreamhost por isso a instalação é um pouquinho...digamos...xarope ehhehe, mas é possivel sim!

Usei como base para esse post a instalação do Django que está no wiki do Dreamhost, mas tinha dado uns probleminhas e, garimpando aki e ali... cheguei no resultado que vou passar para voces!

Configurando o site no dreamhost


bom pra começar, crie um dominio no painel de controle da Dreamhost, no meu caso criei um subdominio, mas o processo é o mesmo!

Escolha “Manage Domains” e depois “Add New Domain / Sub-Domain”
Escolha oome para seu (sub)dominio, no meu caso coloquei django.mdpetry.net
Escolha “Extra web security” e “Fast CGI Support” e submeta o formulário


Depois crie uma base de dados e uma tabela para seu projeto (não vo ficar explicando isso, mas é bem fácil de fazer! :) )

Configurando o Django


Entre por ssh na sua conta, e no home seu usuário, crie uma pasta django e dentro dela a pasta django_projects, para adicionar os seus projetos.

dentro da pasta ~/django, baixe o source do django, através do svn utilizando o comando:
svn co http://code.djangoproject.com/svn/django/trunk/ django_src

Altere o seu .bash_profile, adicionando as linhas:
export PATH=$PATH:$HOME/django/django_src/django/bin
export PYTHONPATH=$PYTHONPATH:$HOME/django/django_src:$HOME/django/django_projects

e ative as mudanças digitando source ~/.bash_profile

agora entre no diretório django_projects e crie um novo projeto:
django-admin.py startproject myproject

Como de costume, ele criou uma série de arquivos, crie as pastas para os templates e para as imagens (geralmente eu as crio dentro da pasta do projeto, mas tanto faz onde elas serão criadas)
no meu caso criei a pasta templates e media.

á no arquivo settings.py e altere as configurações:

de banco de dados:

DATABASE_ENGINE = 'mysql' # 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'.
DATABASE_NAME = 'django_db' # Or path to database file if using sqlite3.
DATABASE_USER = 'usuario' # Not used with sqlite3.
DATABASE_PASSWORD = 'senha' # Not used with sqlite3.
DATABASE_HOST = 'djangomysql.mdpetry.net' # Set to empty string for localhost. Not used with sqlite3.


de internacionalização:
TIME_ZONE = 'America/Sao_Paulo'
LANGUAGE_CODE = 'pt-br'


de templates:
TEMPLATE_DIRS = (
# Put strings here, like "/home/html/django_templates".
# Always use forward slashes, even on Windows.
"/home/mdpetry/django/django_projects/myproject/templates"
)


mídia:

MEDIA_ROOT = '/home/mdpetry/django/django_projects/myproject/media'
MEDIA_URL = 'http://django.mdpetry.net/media/'
ADMIN_MEDIA_PREFIX = '/admin_media/'


insira a seguinte linha no .bash_profile
export DJANGO_SETTINGS_MODULE=myproject.settings e ative novamente o arquivo.

após isso, sincronize o BD e crie u musuário para acessar a area de adminsitração com as suas alterações na pasta do projeto, digite:
django-admin.py syncdb

instalando e configurando o FASTCGI e o mod_rewrite


vá até o subdominio criado e vaixe o script python

wget http://svn.saddi.com/py-lib/trunk/fcgi.py e altere as permissões do arquivo chmod 755 fcgi.py

crie o arquivo dispatch.fcgi
#!/home/mdpetry/opt/bin/python
import sys
sys.path += ['/home/mdpetry/django/django_src']
sys.path += ['/home/mdpetry/django/django_projects']
from fcgi import WSGIServer
from django.core.handlers.wsgi import WSGIHandler
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings'
WSGIServer(WSGIHandler()).run()


para o mod rewrite, crie o arquivo .htaccess:
RewriteEngine On
RewriteBase /
RewriteRule ^(media/.*)$ - [L]
RewriteRule ^(admin_media/.*)$ - [L]
RewriteRule ^(dispatch\.fcgi/.*)$ - [L]
RewriteRule ^(.*)$ dispatch.fcgi/$1 [L]


reinicia o python para validar as mudanças:
pkill python

Configurações finais


altere as os links dos arquivos de midia para o projeto do django:
ln -s $HOME/django/django_src/django/contrib/admin/media $HOME/django.mdpetry.net/admin_media

adicione no arquivos settings.py do seu projeto a app de adminsitração:

INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
)


e no arquivos urls.py, deconmente a linahs da adminsitração tbem:
(r'^admin/', include('django.contrib.admin.urls')),

reinicie o python e na pasta do projeto instale o proejto com o manage.py
pkill python
python manage.py syncdb


e... ta pronto! se voce acessar http://django.DEUDOMINIO.com/admin, deverá aparecer a tela de login da interface de adminsitração do django!

Terça-feira, 1 de Abril de 2008

Django e Python2.5 no dreamhost - Parte 1

Estava com alguns probleminhas para isntalar o Django no Dreamhost, no meu caso, o servidor, depois de um tempo tentando estabelecer conexão, aparecia aquela indesejavel tela de erro 500, foi ai que o Andrews me deu a idéia de isntalar o python2.5, e de primeira deu tudo certo!

bom os passos para instalar:

Baixe o arquivo com o source do python e coloque numa pasta, no meu caso coloquei na opt do meu home, e após isso descompacte o arquivo:

cd ~
mkdir opt
wget http://www.python.org/ftp/python/2.5.2/Python-2.5.2.tgz
tar xvzf Python-2.5.2.tgz


entre na pasta do source, e instale com os comandos abaixo:

./configure --prefix=$HOME/opt/ --enable-unicode=ucs4
make
make install


após instalado, altere o .bash_profile:

vim ~/.bash_profile

e insira a seguinte linha no arquivo:

export PATH=$HOME/opt/bin/:$PATH


execute o arquivo e verifique a versão do python instalada!

source .bash_profile
python --version


Ele irá retornar a versão correta do python no caso a 2.5.2

Feito isso, será necessário instalar o módulo de conexão com o mysql, e agora com o python 2.5 vai se beem + fácil! :)


wget http://internap.dl.sourceforge.net/sourceforge/mysql-python/MySQL-python-1.2.2.tar.gz
tar xvzf MySQL-python-1.2.2.tar.gz
cd MySQL-python-1.2.2
python setup.py install



Amanha (ou depois hehe), posto como está configurado o djando na minha conta!