2016-05-05 3 views
2

Попытка упростить процесс развертывания на webfaction.com для моего приложения django, у меня есть мастер (рабочая копия) и ветка разработки.Процесс развертывания Django для Webfaction.com

В настоящее время я делаю следующее:

  1. Внести изменения в отрасль разработки в местной среде Dev
  2. Когда изменения работают, тест с локальным сервером выполнения, а затем сливаться с моей главной ветвью
  3. git push, так что код находится в моем удаленном репо (у этого есть другие проблемы, такие как пароли, ключи и т. Д., Которые я еще не совсем решил) (также я не верю, что это возможно для кода scp для webfaction, и я не очень фанатом любой из служб FTP, которые я использовал до сих пор)
  4. SSH в мой webfaction сервер и сделать мерзавец тянуть и мерзавец объединить
  5. тест, чтобы увидеть, если все еще работает (он никогда не является)
  6. Сделать anychanges требуется, чтобы все снова
  7. работает совершать какие-либо изменения, я должен был сделать, чтобы исправить все то отодвигают на удаленный репозиторий
  8. вернуться к моей среде разработки и синхронизации кода с кодом производства
  9. полоскание Repeat для следующей функции

очевидно Я пропущенный эффективный тренинг по разработке, для записи я работал с джанго всего пару месяцев в качестве хобби.

Может кто-нибудь предложить процесс развертывания django, который был бы более благоприятным для нормального развития?

ответ

2

Я бы настоятельно рекомендуем Ткань для обработки развертываний в WebFaction: http://docs.fabfile.org/en/1.11/tutorial.html

С помощью Fabric можно развернуть код и выполнять другие операции на стороне сервера с локального терминала без необходимости вручную SSH к серверу. Первая установка Ткань:

pip install Fabric 

Создайте файл fabfile.py в корневой папке проекта. Вот пример fabfile, который вы можете получить начала:

from fabric.api import task, env, run, cd 
from fabric.context_managers import prefix 

env.hosts = ('[email protected]_username.webfactional.com',) 
env.forward_agent = True 

MANAGEPY = '~/webapps/my_project/code/my_project/manage.py' 
PY = '~/webapps/my_project/env/bin/python2.7' 

@task 
def deploy(): 
    with cd('~/webapps/my_project/code/'): 
     with prefix('source production'): 
      run('git pull --rebase origin master') 
      run('pip install -r requirements.txt') 
      run('{} {} migrate'.format(PY, MANAGEPY)) 
      run('{} {} collectstatic --noinput'.format(PY, MANAGEPY)) 
      run('touch my_project/my_project/wsgi.py') 

Вы можете запустить потрясающий задачу из вашего терминала с:

fab deploy 

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

+0

Друг также рекомендовал использовать бродягу. Это похоже на Ткань? – AnythingMapping

+0

Не совсем, Vagrant используется для автоматического предоставления виртуальных машин, и использовать его нельзя в WebFaction. – ozren1983

+0

Ткань помогает вам оптимизировать использование SSH для задач развертывания приложений и системного администрирования. В основном я использую Fabric для автоматизации развертывания. Вместо использования вашего предыдущего потока, где вы нажимаете код на git, ssh на сервер, извлекаете код, произвольно выполняете миграцию или устанавливаете требования и перезагружаете сервер, с помощью fab вы можете запускать одну команду из своего локального терминала, которая будет выполнять всю эту повторяющуюся работу для тебя. – ozren1983

0

Самый лучший и кратчайший путь

В settings.py:

try: 
    from production_settings import * 
except ImportError as e: 
    pass 

Вы можете изменить то, что необходимо в production_settings.py; он должен оставаться вне контроля версий, и вы можете использовать git находчиво.