Преимущества облачного хостинга в наше время объяснять не приходиться, а Red Hat предлагает нам ещё и опробовать все вкусности бесплатно (естественно с некоторыми ограничениями).
Вы не платите за хостинг и получаете?
Ну а если необходимого языка не нашлось можно создать Do-It-Yourself приложение и настроить его как душе угодно.
Мы же рассмотрим развёртывание Django приложения.
Мануалов в интернете мной было найдено предостаточно, но подводные камни заставили повозиться. Опишу ниже.
Итак после регистрации на openshift.com лучше установить rhc — тулзу для управления выделенными для нас ресурсами. Почему лучше? Да просто можно настраивать всё и из веб браузера, но через консоль много проще и быстрее особенно в linux.
Установить rhc в ubuntu можно так:
Теперь выполните логин через консоль:
Готово. Мы в сети.
Создаём python приложение:
habr — это конечно же имя приложения.
Утилита сообщает, что наше приложение создано и доступно по адресу: http://habr-lamazavr.rhcloud.com/
, а также адрес git нашего приложения (скопируйте его куданибуть).
Видим такую страницу:
Теперь переходим к установке django. Переходим в каталог wsgi и создаём django приложение:
Редактируем файл application в каталоге wsgi:
Для установки django раскоментируйте строку
в файле setup.py в корне приложения openshift.
Теперь нужно всё это залить на сервер.
Войдя в каталог wsgi добавим папку приложения в git:
В ходе выполнения на сервер установился и django (в моём случае 1.5.1, т.е. последняя на сегодня версия).
По окончании видим стартовую страницу django:
Но какоеже приложение без базы данных.
Добавим базу данных mysql, phpmyadmin и настроим django проект для работы с ней.
Добавляем катридж mysql к приложению habr:
Cохраните для себя имя пользователя и пароль базы данных из вывода rhc:
Добавляем phpmyadmin:
Будет опять выведен пароль и имя для вохода phpmyadmin, хотя это дубль пароля и имени к базе.
Важна тут только ссылка для входа в админа. habr-lamazavr.rhcloud.com/phpmyadmin
Phpmyadmin я добавляю для того, чтобы импортировать готовую базу данных на сервер. Выполнять syncdb там не очень удобно.
Настраиваем django для работы с базой данных в файле settings.py нашего django приложения.
Естественно нужно импортировать модуль os в начале файла.
Коммитим изменения и заливаем:
После окончания заходим на страничку нашего приложения. Всё нормально. Значит база данных подключена, иначе видим 501 ошибку. Тогда смотрим логи командой:
Создадим также django-приложение внутри нашего проекта:
Добавляем строчку:
в INSTALLED_APPS в файле settiongs.py проекта django.
Сделаем view с css и media файлами соответственно.
Создаём в каталоге habr/habr (рядом с файлом settings.py) папку templates и в ней файл index.html:
Вьюху пишем во views.py:
Указываем url в urls.py:
Теперь указываем каталог с шаблонами нашему проеку в файле settings.py:
Добавляем в git созданную нами папку с шаблоном и приложение django:
С путями примеры не привожу, ниже архив с примером.
Коммитим и заливаем
Заходим видим нашу страницу.
Ну а теперь только вкусности с media файдами.
Во первый добавляем статик файлы админки. Собираем их:
Получаем папку admin, которую ложим в каталог static в каталоге wsgi.
В каталоге wsgi создаём файл .htaccess:
Причём именно так! application нужен, а не ошибка.
Создаём папку media/css/ в ней файл style.css и вносим в него цвет нашего приветствия.
Не забываем добавить созданное в git:
Заходим на страницу. Текст изменил цвет.
Как обещал проект.
Вы не платите за хостинг и получаете?
- 1 Gb дискового пространства
- возможность создать 3 приложения
- поддержку php 5.3, Ruby 1.9, Node.js 0.6, Perl 5.10, python 2.6 (3.3), Zend Server 5.6 и это ещё не полный список.
Ну а если необходимого языка не нашлось можно создать Do-It-Yourself приложение и настроить его как душе угодно.
Мы же рассмотрим развёртывание Django приложения.
Мануалов в интернете мной было найдено предостаточно, но подводные камни заставили повозиться. Опишу ниже.
Итак после регистрации на openshift.com лучше установить rhc — тулзу для управления выделенными для нас ресурсами. Почему лучше? Да просто можно настраивать всё и из веб браузера, но через консоль много проще и быстрее особенно в linux.
Установить rhc в ubuntu можно так:
$ sudo yum install rubygems git
$ sudo gem install rhc
Теперь выполните логин через консоль:
$ rhc setup
Готово. Мы в сети.
Создаём python приложение:
$ rhc app create habr python-2.6
habr — это конечно же имя приложения.
Утилита сообщает, что наше приложение создано и доступно по адресу: http://habr-lamazavr.rhcloud.com/
, а также адрес git нашего приложения (скопируйте его куданибуть).
Видим такую страницу:
Теперь переходим к установке django. Переходим в каталог wsgi и создаём django приложение:
$ cd habr/wsgi/
$ django-admin startproject habr
Редактируем файл application в каталоге wsgi:
#!/usr/bin/env python
# some original codes we need
import os
virtenv = os.environ['APPDIR'] + '/virtenv/'
os.environ['PYTHON_EGG_CACHE'] = os.path.join(virtenv, 'lib/python2.6/site-packages')
virtualenv = os.path.join(virtenv, 'bin/activate_this.py')
try:
execfile(virtualenv, dict(__file__=virtualenv))
except:
pass
# new codes we adding for Django
import sys
import django.core.handlers.wsgi
os.environ['DJANGO_SETTINGS_MODULE'] = os.environ['OPENSHIFT_APP_NAME']+'.settings'
sys.path.append(os.path.join(os.environ['OPENSHIFT_REPO_DIR'], 'wsgi', os.environ['OPENSHIFT_APP_NAME']))
application = django.core.handlers.wsgi.WSGIHandler()
Для установки django раскоментируйте строку
install_requires=['Django>=1.3'],
в файле setup.py в корне приложения openshift.
Теперь нужно всё это залить на сервер.
Войдя в каталог wsgi добавим папку приложения в git:
$ git add habr
$ git commit -a -m "Initialization"
$ git push
В ходе выполнения на сервер установился и django (в моём случае 1.5.1, т.е. последняя на сегодня версия).
По окончании видим стартовую страницу django:
Но какоеже приложение без базы данных.
Добавим базу данных mysql, phpmyadmin и настроим django проект для работы с ней.
Добавляем катридж mysql к приложению habr:
$ rhc cartridge add mysql-5.1 -a habr
Cохраните для себя имя пользователя и пароль базы данных из вывода rhc:
Added mysql-5.1 to application habr
MySQL 5.1 database added. Please make note of these credentials:
Root User: пользователь
Root Password: пароль
Database Name: habr
Connection URL: mysql://$OPENSHIFT_MYSQL_DB_HOST:$OPENSHIFT_MYSQL_DB_PORT/
You can manage your new MySQL database by also embedding phpmyadmin-3.4.
The phpmyadmin username and password will be the same as the MySQL credentials above.
Добавляем phpmyadmin:
$ rhc cartridge add phpmyadmin-3.4 -a habr
Будет опять выведен пароль и имя для вохода phpmyadmin, хотя это дубль пароля и имени к базе.
Важна тут только ссылка для входа в админа. habr-lamazavr.rhcloud.com/phpmyadmin
Phpmyadmin я добавляю для того, чтобы импортировать готовую базу данных на сервер. Выполнять syncdb там не очень удобно.
Настраиваем django для работы с базой данных в файле settings.py нашего django приложения.
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': os.environ['OPENSHIFT_APP_NAME'], # Or path to database file if using sqlite3.
'USER': os.environ['OPENSHIFT_MYSQL_DB_USERNAME'], # Not used with sqlite3.
'PASSWORD': os.environ['OPENSHIFT_MYSQL_DB_PASSWORD'], # Not used with sqlite3.
'HOST': os.environ['OPENSHIFT_MYSQL_DB_HOST'], # Set to empty string for localhost. Not used with sqlite3.
'PORT': os.environ['OPENSHIFT_MYSQL_DB_PORT'], # Set to empty string for default. Not used with sqlite3.
Естественно нужно импортировать модуль os в начале файла.
Коммитим изменения и заливаем:
$ git commit -a -m "db init"
$ git push
После окончания заходим на страничку нашего приложения. Всё нормально. Значит база данных подключена, иначе видим 501 ошибку. Тогда смотрим логи командой:
$ rhc tail habr
Создадим также django-приложение внутри нашего проекта:
$ django-admin startapp habrapp
Добавляем строчку:
'habrapp',
в INSTALLED_APPS в файле settiongs.py проекта django.
Сделаем view с css и media файлами соответственно.
Создаём в каталоге habr/habr (рядом с файлом settings.py) папку templates и в ней файл index.html:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="/media/css/style.css" type="text/css" />
<title>{{title}}</title>
</head>
<body>
<h3>{{text}}</h3>
</body>
</html>
Вьюху пишем во views.py:
from django.shortcuts import render_to_response
def index(request):
c = { 'title': 'Habratitle', 'text': 'Hello habrahabr from OpenShift!',}
return render_to_response('index.html',c)
Указываем url в urls.py:
(r'^$','habrapp.views.index'),
Теперь указываем каталог с шаблонами нашему проеку в файле settings.py:
TEMPLATE_DIRS = (
os.path.join(os.path.dirname(__file__),'templates').replace('\\','/'),
)
Добавляем в git созданную нами папку с шаблоном и приложение django:
$ git add templates/
$ git add habrapp/
С путями примеры не привожу, ниже архив с примером.
Коммитим и заливаем
$ git commit -a -m 'views add'
$ git push
Заходим видим нашу страницу.
Ну а теперь только вкусности с media файдами.
Во первый добавляем статик файлы админки. Собираем их:
$ python manage.py collectstatic
Получаем папку admin, которую ложим в каталог static в каталоге wsgi.
В каталоге wsgi создаём файл .htaccess:
RewriteEngine On
RewriteRule ^application/media/(.+)$ /static/media/$1 [L]
Причём именно так! application нужен, а не ошибка.
Создаём папку media/css/ в ней файл style.css и вносим в него цвет нашего приветствия.
h3 {
color: #6DA3BD;
}
Не забываем добавить созданное в git:
$ git add .
$ git add .
$ git add .htaccess
$ git commit -a -m 'media files'
$ git push
Заходим на страницу. Текст изменил цвет.
Как обещал проект.