Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Django + git + apache mod_wsgi na Kinghost

#Django + git + apache mod_wsgi na Kinghost

NOTE: Atualmente não é necessário tanto para fazer deploy de aplicações Django na Kinghost.

I hope you like it!

##Início

Talvez você não queira ficar digitando a senha toda vez que usar o ssh, então adicione sua chave pública ao seu host:

No servidor:

mkdir ~/.ssh
chmod 0700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/*

Na máquina local:

cat ~/.ssh/id_rsa.pub | ssh user@hostname 'cat >> .ssh/authorized_keys'

Crie o projeto Django no painel ou manualmente, juntamente com o virtualenv e tudo mais...

##Se precisar de ajuda para instalar o virtualenv...

Crie a pasta .site-packages e instale com o easy_install que é o que há disponível fora do virtualenv

mkdir ~/apps_wsgi/.site-packages
easy_install --install-dir=$PYTHONPATH virtualenv

Crie o seu ambiente virtual, por exemplo:

mkdir ~/.virtualenvs
python apps_wsgi/.site-packages/virtualenv .virtualenvs/MEU_AMBIENTE_VIRTUAL

Aí só ativar o ambiente antes de instalar seus pacotes com o pip:

source ~/.virtualenvs/MEU_AMBIENTE_VIRTUAL/bin/activate

Note: Sim, a kinghost deixa a gente meio "engessado" para trabalhar. Se quiser instalar alguns módulos que executam, por exemplo, o gcc pra compilar códigos C precisam ser solicitados via ticket, pois o ssh deles não é com acesso root.

##Configurações no servidor

Antes de prosseguir basta fazer o básico que é instalar seu django, seus módulos desejados em seu ambiente virtual, e então configurar seus arquivos bash:

.bash_profile

.bashrc

Depois configure o git no seu server:

django-git-kinghost-server.sh

##Arquivo de configuração Apache.mod_wsgi/Django

my_project.wsgi

touch my_project.wsgi

##Configurações na máquina local

django-git-kinghost-local-machine.sh

##EXTRA:

Dependendo de como você vai trabalhar com os arquivos estáticos, você pode usar da maneira como no arquivo:

urls.py

PATH=$PATH:$HOME/bin:$HOME/CAMINHO PARA O SEU DJANGO/django/bin
#... outros conteúdos do .bashrc
export PYTHONPATH="/home/SEU_USUARIO/virtualenvs/ENV/lib/python2.4/site-packages OU OUTRA PASTA QUE CONTENHA SEU AMBIENTE"
cd your-local-repository/
git init
git remote add user@server/~/.git/my_project_repository.git
ssh user@server
cd ~/
mkdir .git
cd .git/
mkdir my_project_repository.git
cd my_project_repository.git
git --bare init
cd ~/apps_wsgi/my_project
git init
git remote add ~/.git/my_project_repository.git
import os
import sys
# Calculates the path based on location of WSGI script.
apache_configuration = os.path.realpath(os.path.dirname(__file__))
project = os.path.join(apache_configuration, 'my_project')
sys.path.append(apache_configuration)
sys.path.append(project)
sys.path.insert(0, "/home/SEU_USUARIO/virtualenv OU OUTRA PASTA QUE CONTENHA SEU AMBIENTE, INSIRA O CAMINHO ATÉ */site-packages")
os.environ['PYTHON_EGG_CACHE'] = '/home/SEU_USUARIO/apps_wsgi/.python-eggs'
os.environ['DJANGO_SETTINGS_MODULE'] = 'my_project.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
# outros imports
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns = patterns('',
# outros urls
)
# isto resolve os arquivos estaticos
urlpatterns += staticfiles_urlpatterns()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment