понеділок, 19 січня 2009 р.

Розгортаємо сайт на Django задарма

При роботі з Django існує одна проблема, яка дещо заважає на початковому етапі - обмежений вибір пропозицій по хостингу. Зокрема, я маю на увазі, безплатний хостинг (з платним якраз особливих проблем немає). Одна з компаній, яка надає такі послуги - французька Alwaysdata. Отже, не платячи нічого, ви отримуєте:

  • 10Мб дискового простору;

  • 1Гб місячної квоти на трафік;

  • 40Мб оперативної пам'яті;

  • Python 2.4 або 2.5, PHP5, Ruby 1.8.6, Perl 5.8.8;

  • офіційна підтримка Django та Ruby on Rails;

  • сумісність з TurboGears, Pylons, Symphony та ін.;

  • необмежена кількість баз mySQL або PostgreSQL;

  • phpMyAdmin та phpPgAdmin;

  • підтримка POP3, SMTP, IMAP;

  • доступ по FTP та SSH;

  • та багато ін.;


При цьому жодної реклами. Єдине, що дещо незвично - сайт Alwaysdata.com є повністю франкомовним. Це також стосується і адмінки, і вікі. Правда це справа звички, якщо ви хоча б на середньому рівні володієте англійською, то й тут розберетеся.

Отже, перш за все, зареєструємо новий аккаунт. Для цього входимо у розділ Inscription. У поле Nom du pack вводите назву аккаунту, а у Type de pack обираєте Pack gratuit (10Mo). Потім тиснемо Continuer l'inscription. Далі, заповнюєте анкету, у якій потрібно обов'язково вказати свою електронну пошту (Adresse email) і пароль до аккаунту (Type de pack та Confirmez le mot de passe). Інші поля є необов'язковими. Підтверджуєте, і отримуєте свій новий обліковий запис.


Попасти у панель адміністрування можна просто вбивши свою електронну пошту і пароль на горі сторінки, у блоці Connexion. Потім тиснете Valider і попадаєте в адмінку.


Виконаємо деяке початкове налаштування. У розділі Environnement -> Python оберемо потрібну версію Python і Django.


Далі, створимо базу даних. Тут є вибір між mySQL та PostgreSQL. Достатньо обрати у розділі Bases de données бажану платформу, а потім створити нову базу натиснувши Ajouter une base de données. У поле Nom потрібно ввести ім'я бази. Кодування по замовчуванню пропонується UTF-8, тк і потрібно бути. Після натиснення Ajouter у вас з'явиться нова база.


Ще нам знадобиться доступ по SSH. По замовчуванню, він заборонений, а тому потрібно перейти у Accès distant -> SSH і активувати дану опцію (по замовчуванню для аккаунту встановлено non, тому натискаємо Modifier, щоб мати змогу змінити на oui).


ОК, наступним етапом потрібно завантажити на сервер наш сайт. Для цього, можна скористатися будь-яким FTP-клієнтом. Я віддаю перевагу FileZilla (sudo apt-get install filezilla). Параметри підключення наступні:
Хост: ftp.alwaysdata.com
Порт: 21

Логін і пароль відповідно, ті, що ви вводили при реєстрації. У кореневій папці, яку вам виділено, ви можете побачити єдиний файл index.html. Це файл-заглушка, яку можна побачивши набравши у браузері http://ваш_логін.alwaysdata.net/. Папку з вашим Django проектом потрібно помістити сюди ж.

Наступним кроком, запускаємо термінал і набираємо команду:
ssh ваш_логін@ssh.alwaysdata.com

Вводимо пароль і попадаємо у вашу домашню папку на сервері Alwaysdata. Щоб працювати було простіше, можна запустити Midnight Commander (команда mc). Наступним кроком, потрібно перейти у папку з проектом і створити підпапку public. Далі переходимо в неї і створюємо файл django.fcgi з наступним вмістом:
#!/usr/bin/python
import os, sys

_PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, _PROJECT_DIR)
sys.path.insert(0, os.path.dirname(_PROJECT_DIR))

_PROJECT_NAME = _PROJECT_DIR.split('/')[-1]
os.environ['DJANGO_SETTINGS_MODULE'] = "%s.settings" % _PROJECT_NAME

from django.core.servers.fastcgi import runfastcgi
runfastcgi(method="threaded", daemonize="false")

І встановлюємо йому права на виконання:
chmod +x django.fcgi

Далі, створюємо файл .htaccess з наступним вмістом:
AddHandler fcgid-script .fcgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ django.fcgi/$1 [QSA,L]

І, якщо ви використовуєте адмінку Django, то потрібно ще виконати команду
ln -s /var/lib/python/django/1.0/django/contrib/admin/media/ media

Тепер, повертаємося у папку з проектом і у файлі setings.py прписуємо необхідні параметри бази даних. Якщо ви використовуєте mySQL, то це буде виглядати приблизно так:
DATABASE_ENGINE = 'mysql'
DATABASE_NAME = 'назва_бази_даних'
DATABASE_USER = 'логін'
DATABASE_PASSWORD = 'пароль'
DATABASE_HOST = 'mysql.alwaysdata.com'
DATABASE_PORT = ''

Зберігши зміни, потрібно синхронізувати базу даних. Це звична операція:
python manage.py syncdb


Все, що тепер залишається - це перейти в адмінку вашого аккаунту, обрати Domaines і змінити кореневу папку вашого сайту.


Все. Тепер ви можете знайти свій сайт за адресою http://ваш_логін.alwaysdata.net/

4 коментарі:

  1. невелике уточнення - перед тим, як лізти на сервер по ssh, треба для свого акаунту включити ssh-доступ (Accès distant->SSH, переконуємось що навпроти логіна стоїть non і натискуємо Modifier, щоб появилось oui)

    ВідповістиВидалити
  2. Саме так. Підкорегував статтю.

    ВідповістиВидалити
  3. :) я прочитавши статтю придумав собі інший варіант використання цього хостингу, дякую

    ВідповістиВидалити
  4. тільки дискового простору малувато для безкоштовного трифу (((

    ВідповістиВидалити