Статьи

Установка приложения Django в OpenShift PAAS Red Hat

Кажется, что у каждого есть свое собственное решение PAAS в наши дни, и если у него его еще нет, то это просто вопрос времени, прежде чем он его получит. Red Hat недавно присоединилась к веселью со своей платформой OpenShift .

Я решил взять его на тест-драйв и поделиться своими результатами с вами. Этот сервис все еще находится в бета-версии, и все время что-то меняется, поэтому эти заметки могут не работать в будущем, примите это во внимание при использовании в качестве руководства.

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

OpenShift состоит из двух частей: Flex и Express.

Flex :


«Выделенное облачное решение. Получите больше контроля над своими приложениями или с легкостью перенесите свои существующие приложения в облако! Flex — это специализированное облачное решение, которое предоставляет все необходимое для простого масштабирования, подготовки, развертывания и мониторинга ваших приложений».

Flex работает поверх вашей учетной записи Amazon EC2 и в настоящее время поддерживает только Java и PHP. Он ориентирован на корпоративную аудиторию и имеет больше возможностей по сравнению с Express.

Экспресс :


«Совместное облачное решение. Express — это бесплатная облачная платформа для приложений Java, Perl, PHP, Python и Ruby. Это очень просто — ваша среда разработки — это и среда развертывания: git push, и вы в облако!»

Express работает на серверах Red Hat и в настоящее время поддерживает приложения Java, Ruby, PHP, Perl и Python. Он не обладает такими же возможностями Flex, но если вам не нужны эти расширенные функции, тогда экспресс может подойти вам. Поскольку я заинтересован в развертывании приложений на Python, а Express — единственная, которая поддерживает приложения на Python, я покажу вам ее сегодня.

Чтобы было проще показать вам, как это работает, я создам простое приложение django и проведу вас по шагам его развертывания. Я собираюсь развернуть djangoCMS, чтобы выразить, что будет подключаться к базе данных MySQL.

шаги:

1. Создайте аккаунт

Создайте аккаунт, заполнив форму на http://openshift.redhat.com/ и не забудьте свои имя пользователя и пароль, они понадобятся вам позже.

2. Установите предварительные условия:

  • мерзавец
  • питон
  • клиент openshift

    Git:

    Я не собираюсь идти по шагам для установки git, для получения дополнительной информации, вы можете получить его с сайта git. http://git-scm.com/download

    Python:

    Если вы используете Mac или Linux, на нем, скорее всего, уже установлен python, если вы используете Windows, то, вероятно, у вас не установлен python. Зайдите на сайт Python и вы найдете инструкции по установке Python в вашей системе. http://python.org/download/

    Клиент OpenShift:

    Для получения инструкций по установке клиента перейдите на эту страницу. https://openshift.redhat.com/app/express#mac Вот мои шаги для MacOS X

$ sudo gem install json_pure
$ sudo gem install rhc

3. Создайте домен.

Теперь, когда у вас все установлено, ваш первый шаг — создать домен. Запустите следующую команду и замените $ mydoman и $ loginemail своим собственным доменом и адресом электронной почты для входа, который вы использовали при создании учетной записи.

$ rhc-create-domain -n $mydomain -l $loginemail

4. Создайте приложение

Теперь, когда у вас есть домен, вам нужно создать приложение, которое вы можете развернуть в этом домене. Выполнение следующей команды создаст новое приложение wsgi под названием «блог». Вы можете назвать свое заявление как угодно, в пределах разумного. Мы выбираем wsgi, потому что наше приложение на Python будет совместимо с wsgi.

$ rhc-create-app -a blog -t wsgi-3.2

5. Добавьте MySQL в ваше приложение

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

$ rhc-ctl-app -a blog -e add-mysql-5.1

6. Добавьте phpmyadmin, чтобы помочь вам управлять базой данных

OpenShift не предоставляет вам прямой доступ к вашей базе данных, поэтому вам понадобится способ управления базой данных другим способом. Они предоставляют возможность добавить PHPMyAdmin в ваше приложение, чтобы вы могли получить доступ к вашим данным. Этот шаг не является обязательным, но рекомендуется.

$ rhc-ctl-app -a blog -e add-phpmyadmin-3.4

7. Добавьте это репозиторий от github.

Когда вы создаете свое приложение, оно создает каталог с кучей других файлов и каталогов в нем. Если бы вы начинали с нуля и создавали свое приложение, вы бы начали отсюда. Чтобы упростить задачу, я создал проект на github, который позволит вам быстрее начать работу с DjangoCMS. Чтобы использовать мой проект, вам нужно будет выполнить следующие команды, чтобы он запустил код в ваш проект.

$ cd blog
$ git remote add upstream -m master git://github.com/kencochrane/django-cms-openshift.git
$ git pull -s recursive -X theirs upstream master

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

8. Развертывание приложения

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

$ git push

 

Когда это толкает ваше приложение в открытую смену, оно будет делать следующее. (без установленного дополнения jenkins)

  1. остановить приложение
  2. * pre_build
  3. * сборка
  4. start_dbs
  5. * развернуть
  6. start_app
  7. * post_deploy

Шаги, помеченные *, представляют собой сценарии, которые находятся в
.openshift / action_hooks / <script_name>, если у вас есть что-то в этих файлах, он будет их запускать, а если нет, он будет проходить прямо. Они очень полезны, если вы хотите, чтобы что-то происходило в процессе развертывания. Например, в сценарии развертывания вы заметите, что у меня есть некоторый код для запуска django syncdb, переноса и сбора статических команд. Они будут запускаться каждый раз, когда я развертываю приложение.

I have also created a django management command that will check to see if there is a django admin account created and if not, it will create one and set the default password. I had to do this because there is currently no way that I know of where you can kick off django management commands after the deployment is finished. It will only create the admin account once, and every other time it will just get ignored.

ВАЖНО: Важно отметить, что если вы хотите сделать что-либо, связанное с базой данных, вы не можете сделать это в скриптах pre_build или build , потому что база данных еще не доступна. Это одна вещь причиняла мне много боли, потому что я не мог понять, что мои миграции не работали. Если вы допустите ошибку, пытаясь создать базу данных, связанную с сценарием сборки, вы увидите такую ​​ошибку.


«remote: ОШИБКА 2003 (HY000): не удается подключиться к серверу MySQL в« xxx.x.xx.x »(111)»

 

Вот и все, теперь вы можете оформить заявку в приложении (по умолчанию учетной записью администратора является admin / <пароль, указанный во время развертывания>):

Http: //blog-$yourdomain.rhcloud.com

Once you visit the page you should see the djangoCMS default page. First things first, login to the django admin, and change the password from the default password to something secure. Then get started building your own app.

Helpful tips:

Viewing logs:

If you would like to view your logs to see what is going on with your application you just need to run this command.

$ rhc-tail-files -a blog

Application information:

If you would like more information about your application you can run this command.

$ rhc-user-info

Also checkout the README file they add when you create an application, it is pretty helpful, and might answer some common questions.

Application dependencies:

OpenShift uses virtualenv but it doesn’t use pip, it depends on the dependencies be listed in the setup.py file. During the deploy process I did notice that it installed pip, so it might be possible to add a requirements.txt file, and then in your build action_hook script call pip install -r <path>/requirements.txt but I’m not sure if this is supported, or if it will cause problems, so it might be best to stick with what they have for now.

Static media:

If you look in wsgi/static/.htaccess there a rewrite rule to get the media to work correctly, you can use this trick for other apache tricks if you want. For more information on this checkout the README file.

What is it open shift running:

Red Hat linux with Apache / mod_wsgi, and mysql 5.1

What type of apps do they support?

Here is the current link which can be found if you run this commands and look at the types.

$ rhc-create-app -h

raw-0.1, php-5.3, jbossas-7.0, rack-1.1, jenkins-1.4, perl-5.10, wsgi-3.2

What else does it support?

Things are changing all of the time, but if you run this command you will get a list of the current supported addons.

$ rhc-ctl-app -L

List of supported embedded cartridges:

Obtaining list of cartridges (please excuse the delay)...

    - metrics-0.1
    - mysql-5.1
    - jenkins-client-1.4
    - 10gen-mms-agent-0.1
    - phpmyadmin-3.4
    - rockmongo-1.1
    - mongodb-2.0

Web based control panel:

They offer a web based control panel to do some of the things you can do with the command line, which will be nice, but it doesn’t work right now. It doesn’t display the correct information, and it doesn’t even show the applications I have created, so I don’t trust it. Hopefully these issues will get fixed in the future, and this tool will make it easier for less technical people to get started.

Conclusion:

It is nice to see another platform on the market, it is still pretty rough, and there isn’t much documentation, but I found it usable. I’m sure once they stabilize things, they will spend more time on the documentation side of things.

 

Source: http://kencochrane.net/blog/2012/01/installing-django-application-on-openshift/