2014-01-27 5 views
3

Я часто забываю о шагах и желаю получить краткое руководство по развертыванию проекта django на Heroku.Установка и развертывание приложения Django на Heroku

Как установить и развернуть приложение Django на Heroku?

Я опубликовал пошаговый ответ для шагов, которые сработали для меня.

Вы получите:

  • Django приложение как на Heroku и ваш компьютер.
  • Postgres база данных на оба машинах
  • мерзавца/Bitbucket
  • аутентификация: Логин, выход из системы, регистр, забыл передать, аутентификация только по электронной почте (по желанию & по умолчанию)
  • статических файлов, работающих на оба машинах
  • Bootstrap 3,0 +0,3 включены
  • Юг Миграции (instructions)

Требования

  • Heroku счета
  • GitHub/Bitbucket счет
  • макинтош с OSX (проверено на 10.9)
+0

Я согласен с @ MilenA.Radev здесь, это пошаговое руководство и будет более подходящим для github.io или другой такой платформы. Во всяком случае, это должен быть хороший ресурс для поиска людей на SO. –

ответ

1

В моем другом ответе процесс хорошо описан, но требует времени. Поэтому я сделал готовую установку, которая хороша для менее чем за 15 минут.

https://github.com/mgpepe/django-heroku-15

Если бы предпочел полное объяснение с длинным путем ответ приведен ниже.

+0

Также посмотрите [официальный шаблон Heroku Django] (https://github.com/heroku/heroku-django-template). –

5

UPDATE:

Чтобы сделать установку быстрый способ, почитайте другие ответ.


структура папок

  • PROJECT_WRAPPER - это будет держать все, в том числе PS
  • DJANGO_PROJECT - это будет держать код
  • DJANGO_APP - главное приложение будет иметь это имя

Везде, где вы видите их, замените своими настоящими именами !!!

Виртуальный конв

Если у вас нет virtualenv, что вам нужно, чтобы получить его. Это позволит вам иметь отдельные установки программного обеспечения для каждого проекта:

pip install virtualenv 

мы создаем наш проект:

cd ~ 
mkdir PROJECT_WRAPPER && cd PROJECT_WRAPPER 
virtualenv venv 

Теперь у вас есть отдельная папка, которая будет содержать независимые установки и версию питона, джанго и т. д.

Активирует и и начать работать над проектом следующим образом:

source venv/bin/activate 

Postrges приложение

Просто прежде чем мы продолжим, мы установим postgres.app. Захватите его от: http://postgresapp.com/

Установите.

Мы теперь подключить нашу окружающую среду с ним:

PATH=/Applications/Postgres.app/Contents/MacOS/bin/:$PATH 

Requirements.txt

Теперь нам нужно будет установить следующие вещи:

  • Python, Django - без объяснений требуется
  • South - Миграция базы данных (версия Dev Django не требует этого)
  • Джанго-Toolbelt - требуется Heroku и включает в себя все необходимое для Heroku
  • Psycopg - базы данных Postgres
  • simplejson, mixpanel - это не обязательно, вы можете пропустить, если вам не нравится

Так создать файл requirements.txt, мы получим, что готов из моего репозитория мерзавца:

clone https://raw2.github.com/mgpepe/django-heroku-15/master/requirements.txt -o requirements.txt 

Теперь с помощью одной команды мы установим все из нашего requirements.txt:

pip install -r requirements.txt 

Отлично, теперь мы можем убедиться, что мы имеем Джанго с:

python -c "import django; print(django.get_version())" 

Запустите Django проекта

Давайте начнем проект с этой линией и не забудьте точку в конец:

django-admin.py startproject DJANGO_PROJECT . 

Теперь, если вы наберете ls вы должны увидеть папку с именем проекта тха t содержит ваш проект Django.

Чтобы убедиться, что все работает запустить:

python manage.py runserver 

DATABASE

Пропустите Postgres приложение.

Создание базы данных с (я использовал мое имя OSX):

createdb YOUR_DATABASE_NAME --owner=YOUR_OSX_USERNAME 

Измените DATABASES выглядеть следующим образом:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.postgresql_psycopg2', 
     'NAME': 'YOUR_DATABASE_NAME', 
     'USER': 'YOUR_OSX_USERNAME', 
     'PASSWORD': 'YOUR_DATABASE_PASSWORD', #might be empty string '' 
     'HOST': '127.0.0.1', 
     # 'PORT': '5432', 
    } 
} 

А также давайте подключить Южные миграции. Ваш INSTALLED_APPS должен выглядеть так:

INSTALLED_APPS = (
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'south', 
) 

Изменение SECRET_KEY переменной на что-то другое, чем то, что она есть.

Теперь, если все было хорошо, вы должны быть в состоянии создать первые таблицы с:

python manage.py syncdb 

ПЕРВЫЙ APP

Теперь сделайте свое первое приложение в проекте

python manage.py startapp DJANGO_APP 

в файл: ~/PROJECT_WRAPPER/DJANGO_PROJECT/settings.py

добавить DJANGO_APP к списку в переменной INSTALLED_APPS. Должно выглядеть так:

INSTALLED_APPS = (
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'south', 
    'DJANGO_APP', 
) 

ШАБЛОНЫ

в настройках файла добавьте строку:

TEMPLATE_DIRS = [os.path.join(BASE_DIR, 'templates')] 

Для того, чтобы шаблоны должны быть хорошо организованы и работают, мы будем копировать base.html в одна папка и остальные шаблоны в самом приложении:

cd ~/PROJECT_WRAPPER/ 
mkdir templates 
curl https://raw2.github.com/mgpepe/django-heroku-15/master/templates/base.html -o base.html 

Остальные шаблоны:

cd ~/PROJECT_WRAPPER/DJANGO_APP/ 
mkdir templates && cd templates 
mkdir DJANGO_APP 
curl https://raw2.github.com/mgpepe/django-heroku-15/master/DjMainApp/templates/DjMainApp/changepass.html -o changepass.html 
curl https://raw2.github.com/mgpepe/django-heroku-15/master/DjMainApp/templates/DjMainApp/forgot_pass.html -o forgot_pass.html 
curl https://raw2.github.com/mgpepe/django-heroku-15/master/DjMainApp/templates/DjMainApp/home.html -o home.html 
curl https://raw2.github.com/mgpepe/django-heroku-15/master/DjMainApp/templates/DjMainApp/login.html -o login.html 
curl https://raw2.github.com/mgpepe/django-heroku-15/master/DjMainApp/templates/DjMainApp/logout.html -o logout.html 
curl https://raw2.github.com/mgpepe/django-heroku-15/master/DjMainApp/templates/DjMainApp/registration.html -o registration.html 
curl https://raw2.github.com/mgpepe/django-heroku-15/master/DjMainApp/templates/DjMainApp/splash.html -o splash.html 

AUTH СИСТЕМА С ПОЧТОЙ

Поскольку это было в последнее время модно использовать электронную почту, а не имя пользователя, мы будем делать это.

* ПРИМЕЧАНИЕ. Если вы решите не использовать его, вы можете пропустить этот шаг, но вы должны отредактировать представления и шаблоны, чтобы использовать имя пользователя вместо электронной почты. *

В настройках добавьте следующую строку:

AUTHENTICATION_BACKENDS = (DJANGO_PROJECT.backends.EmailAuthBackend’,) 

затем скопировать файл backends.py в нашем каталоге проекта:

cd ~/PROJECT_WRAPPER/DJANGO_PROJECT/ 
clone https://raw2.github.com/mgpepe/django-heroku-15/master/DjangoHerokuIn15/backends.py -o backends.py 

Heroku Локально

Вы можете имитировать Heroku работает на ваш компьютер с Форман.Давайте создадим простейший файл конфигурации:

cd ~/PROJECT_WRAPPER 
echo "web: gunicorn DJANGO_PROJECT.wsgi" > Procfile 
foreman start 

Теперь, когда вы видите, что работает без ошибок остановить его с CTRL+C

в настройках всех путей в нижней части дополнения:

# HEROKU 
########################### 
# Parse database configuration from $DATABASE_URL 
if os.environ.has_key('DATABASE_URL'): 
    import dj_database_url 
    DATABASES['default'] = dj_database_url.config() 

# Honor the 'X-Forwarded-Proto' header for request.is_secure() 
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') 

# Allow all host headers 
ALLOWED_HOSTS = ['*'] 

В ваших DJANGO_PROJECT/wsgi.py файл и добавить нижеследующее:

from dj_static import Cling 
application = Cling(get_wsgi_application()) 

СТАТИЧЕСКИЕ ФАЙЛЫ

В идеале вы должны статичные файлы сервера из Amazon или что-то в этом роде. Но для простых сайтов вы можете использовать Django. Для его настройки необходимо добавить это в файл настроек:

# HEROKU STATIC ASSETS CONFIGURATION 
################################ 
import os 
BASE_DIR = os.path.dirname(os.path.abspath(__file__)) 
STATIC_ROOT = 'staticfiles' 
STATIC_URL = '/static/' 

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'), 
) 

и поместить все статические файлы в определенную папку. Сначала зайдите в папку проекта с чем-то вроде:

cd ~/PROJECT_WRAPPER/DJANGO_PROJECT/ 

и теперь вы можете просто скопировать/вставить остальные:

mkdir static && cd static 
mkdir css && cd css 
clone https://raw2.github.com/mgpepe/django-heroku-15/master/DjangoHerokuIn15/static/css/bootstrap.min.css -o bootstrap.min.css 
clone https://raw2.github.com/mgpepe/django-heroku-15/master/DjangoHerokuIn15/static/css/styles.css -o styles.css 
cd .. 
mkdir js && cd js 
clone https://raw2.github.com/mgpepe/django-heroku-15/master/DjangoHerokuIn15/static/js/bootstrap.min.js -o bootstrap.min.js 
cd .. 
mkdir img && cd img 

В этой последней папке, вы поставите все изображения вам нужно.

URL НАСТРОЙКИ И МНЕНИЯ

В urls.py скопировать эти строки перед 'например':

url(r'^$', "pmfmain.views.splash", name="splash"), 
url(r'^login$', "pmfmain.views.login_view", name="login"), 
url(r'^signup$', "pmfmain.views.register", name="signup"), 
url(r'^forgot$', "pmfmain.views.forgot_pass", name="forgotmypass"), 
url(r'^logout$', "pmfmain.views.logout_user", name="logout"), 
url(r'^dashboard$', "pmfmain.views.home", name="home”), 

затем скопировать views.py из моего GitHub репо в папку DJANGO_PROJECT:

cd ~/PROJECT_WRAPPER/DJANGO_APP/ 
rm views.py 
clone https://raw2.github.com/mgpepe/django-heroku-15/master/DjMainApp/views.py -o views.py 

Найти & заменить замену DjMainApp на ваше настоящее имя DJANGO_APP на протяжении всего views.py

клон https://raw2.github.com/mgpepe/django-heroku-15/master/DjMainApp/forms.py -o forms.py

GIT

Некоторые файлы не должны быть в мерзавца, так что давайте установить конфигурации для этого:

echo -e "venv\n*.pyc\n*.log\n*.pot\nstaticfiles" > .gitignore 

и теперь позволяет совершать:

git init 
git add . 
git commit -m ‘initial commit of django app’ 

Создайте репозиторий в git, затем скопируйте git url (тот, который e nds в .git). Тогда:

git remote add origin THE_URL 
git pull origin master 

Bitbucket АЛЬТЕРНАТИВА

Если вы не хотите платить за GitHub, и вы хотите, чтобы ваш репозиторий частных, вы можете использовать Bitbucket.

Войти в свою учетную запись Создать новый репозиторий Нажми добавить существующий проект

git remote add origin https://[email protected]/USERNAME/REPOSITORY_NAME.git 

НЕСКОЛЬКО Heroku Accounts & КЛЮЧЕЙ

Даже если вы никогда не должны иметь несколько учетных записи Heroku, это легкий путь настроить и использовать его даже для одной учетной записи. Так мы идем:

cd ~ 
heroku plugins:install git://github.com/ddollar/heroku-accounts.git 

оных счет Heroku с:

  • heroku accounts:add personal
  • Введите учетные данные Heroku.
  • Email: YOUR_HEROKU_EMAIL
  • Пароль: YOUR_HEROKU_PASSWORD

Он говорит, что это в консоли, и вы должны это сделать:

Добавьте следующие строки в ~/.ssh/конфигурации

Host heroku.personal 
    HostName heroku.com 
    IdentityFile /PATH/TO/PRIVATE/KEY 
    IdentitiesOnly yes 

Перейдите в папку проекта с чем-то вроде:

cd ~/PROJECT_WRAPPER 

, а затем установить новую учетную запись, как:

heroku accounts:set personal 

Чтобы создать новый ключ SSH:

ssh-keygen -t rsa 

При запросе имени, написать полный путь и имя, как показано на рисунке. затем введите пароль или оставьте пустой

Затем добавьте ключи и к вашему OSX и Heroku:

heroku keys:add ~/.ssh/YOUR_KEY_NAME.pub 
ssh-add ~/.ssh/YOUR_KEY_NAME 

развертывающей Heroku ФАЙЛЫ

Теперь, когда у вас есть ключи в порядке, вы должны быть в состоянии сделать heroku apps

и посмотреть, что приложений нет. Чтобы добавить свое первое приложение:

heroku apps:create YOUR_APP_NAME 

И теперь, чтобы загрузить на сервер:

git push heroku master 

теперь переходим к YOUR_APP_NAME.herokuapp.com, чтобы увидеть свой сайт!

DOMAIN НАСТРОЙКА

остается объяснить, если кто-то хочет, дайте мне знать

ПРИМЕЧАНИЯ

Углубленное документация по адресу:

Смежные вопросы