Недавно начал изучать фреймворк Django и столкнулся с одной проблемой – нигде в интернете нет подробного и работающего руководства по установке Django. Я решил исправить эту проблему и представляю на ваш суд пошаговый мануал по установке Django на Ubuntu linux.
Будем считать, что работающее приложение будет использовать БД MySQL, в роли веб-сервера выступает Apache с модулем mod_python.
Все нижеследующие команды должны выполняться с правами суперпользователя.
Установка MySQL:
|
1 |
apt-get install mysql-server mysql-client |
Установка Apache и mod_python:
|
1 |
apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-python |
Установка самого Django:
|
1 |
apt-get install python-django |
Теперь настало время создать БД и пользователя для Django. Для этого запускаем клиент MySQL и выполняем следующие команды:
|
1 2 3 4 5 6 |
CREATE DATABASE mydjango; CREATE USER 'mydjango'@'localhost' IDENTIFIED BY 'mydjango' CREATE USER 'mydjango'@'%' IDENTIFIED BY 'mydjango' GRANT ALL PRIVILEGES ON mydjango.* to 'mydjango'@'%' WITH GRANT OPTION; GRANT ALL PRIVILEGES ON mydjango.* to 'mydjango'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES; |
Это позволит нам создать БД mydjango и пользователя mydjango с паролем mydjango, имеющего к ней полный доступ.
Теперь можно приступить к созданию проекта:
|
1 2 3 4 5 6 7 8 9 10 |
mkdir ~/www cd ~/www sudo mkdir media sudo ln -s /usr/share/django/django/contrib/admin/media ./admin_media /usr/share/django/django/bin/django-admin.py startproject mydjango cd mydjango ./manage.py startapp someapp cd someapp mkdir templates cd .. |
Мы создали проект someapp, теперь настало время его настроить. Для этого открываем файл settings.py и изменяем:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
DATABASES = { 'default': { 'ENGINE': 'mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', $ 'NAME': 'mydjango', # Or path to database fil$ 'USER': 'mydjango', # Not used with sqlite3. 'PASSWORD': 'mydjango', TIME_ZONE = 'Russia/Moscow' MEDIA_ROOT = '/home/username/www.media/' MEDIA_URL = 'http://dev-4-web.ru/media' TEMPLATE_DIRS = ( # Put strings here, like "/home/html/django_templates" # Always use forward slashes, even on Windows. # Don't forget to use absolute paths, not relative paths. "/home/username/www/mydjango/someapp/templates" ) INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', # Uncomment the next line to enable the admin: 'django.contrib.admin', # Uncomment the next line to enable admin documentation: # 'django.contrib.admindocs', 'mydjango.someapp', ) |
Конечно же пути к папкам должны быть заменены на те, которые соответствуют вашей системе.
Теперь вносим изменения в urls.py:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
from django.conf.urls.defaults import * # Uncomment the next two lines to enable the admin: from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', # Example: # (r'^someapp/', include('someapp.foo.urls')), # Uncomment the admin/doc line below to enable admin documentation: # (r'^admin/doc/', include('django.contrib.admindocs.urls')), # Uncomment the next line to enable the admin: #(r'^admin/', include(admin.site.urls)), (r'^admin/(.*)', admin.site.root), ) |
Теперь выполняем синхронизацию БД и задаем логин и пароль администратора Django:
|
1 |
./manage.py syncdb |
Можно переходить к настройке Apache. Поправьте файл /etc/apache2/conf/sites-available/default в соответствии вот с этим:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<virtualHost *:80> RewriteEngine On ServerAdmin webmaster@localhost ServerName knowledgebase <location "/"> SetHandler python-program PythonHandler django.core.handlers.modpython SetEnv DJANGO_SETTINGS_MODULE knowledgebase.settings PythonDebug On PythonPath "['/home/username/www'] + sys.path" </location> Alias /media /home/username/www/media <location "/media"> SetHandler None </location> Alias /admin_media /home/username/www/admin_media <location "/admin_media"> SetHandler None </location> <locationmatch ".(jpg|gif|png)"> SetHandler None </locationmatch> ErrorLog /var/log/apache2/knowledgebase-error.log LogLevel warn CustomLog /var/log/apache2/knowledgebase-access.log combined </virtualHost> |
Необходимо только оставить ваши пути. При необходимости можно создать отдельный виртуальный хост под ваши нужды. И обязательно нужно перезапустить Apache:
|
1 |
service apache2 restart |
Вот и все – установка Django завершена, теперь при заходе по адресу http://вашсайт/admin можно увидеть окно авторизации админского интерфейса.