вторник, 24 июля 2012 г.

Установка и настройка Apache, mod_wsgi, Django, MySQL в Debian / Ubuntu



Copypast-ю себе чтобы не искать потом. реальная тема ))

Django (читается как Джанго) - это свободно распространяемый фреймворк с открытым исходным кодом для разработки веб приложений на языке Python. Django обладает следующими архитектурными отличиями:
  • использование концепции Модель-Представление-Контроллер (Model-View-Controller, MVC). В терминологии Django это будет Модель-Шаблон-Вид (Model-Template-View, MTV)
  • использование концепции приложений. Весь код рекомендуется оформлять в виде приложений и делать его подключаемым и переносимым
  • диспетчер URL на основе регулярных выражений
  • ORM для работы с БД (с поддержкой транзакций)
  • встроенный веб-сервер для разработки
  • встроенная административная панель

Установка и настройка Django

Django можно установить двумя способами: из репозитариев или скачав исходники фреймворка с сайта. Как правило, в репозитариях находится не самая свежая версия. Поэтому, обычно используется второй способ, хотя это и не Debian-way.

Установка Django из репозитория

Пакет Django находится в стандартном репозитории, поэтому ничего нового подключать не надо. Для установки необходимо выполнить следующее:
$ sudo aptitude install python-django

Установка последней стабильной версии Django

Для установки последней версии необходимо скачать исходники и распаковать их:
$ sudo mkdir ~/django
$ cd ~/django
$ wget http://www.djangoproject.com/download/1.1/tarball/
$ tar xzf Django-1.1.tar.gz
Далее, необходимо узнать, в какую директорию необходимо устанавливать пакеты, чтобы Python узнал об этом. Для этого необходимо выполнить:
$ python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
/usr/lib/python2.5/site-packages
В данном случае, видно что основной версией является Python 2.5 и все дополнительные пакеты устанавливаются в директорию "/usr/lib/python2.5/site-packages".
Следующим шагом необходимо создать символическую связь для распакованной директории Django:
$ sudo ln -s ~/django/Django-1.1/django /usr/lib/python2.5/site-packages/django
И в конце, чтобы сделать команду django-admin.py доступной из любой директории системы, необходимо добавить еще одну символическую ссылку:
$ sudo ln -s ~/django/Django-1.1/django/bin/django-admin.py /usr/local/bin

Проверка корректности установки Django

Чтобы убедиться, что Django нормально установлен, необходимо запустить интерпретатор Python и импортировать модуль django:
$ python -c "import django; print django.VERSION;"
(1, 1, 0, 'final', 0)
Все в порядке. Последняя версия Django корректно установлена.

Установка и настройка Apache, mod_wsgi

Для работы с Django необходимы http-сервер Apache и модуль к нему - mod-wsgi. Модуль mod_wsgi пришел на смену mod_python и в настоящее время рекомендуется авторами Django как наиболее подходящее решение для использования в реальных условиях.
Установка Apache и mod_wsgi тривиальна:
$ sudo aptitude install apache2 libapache2-mod-wsgi

Установка MySQL

Кроме самого сервера MySQL необходимо также установить пакет, который позволяет работать с MySQL из Python:
$ sudo aptitude install mysql-server python-mysqldb
При установке необходимо будет указать пароль для root-пользователя БД MySQL.

Создание и настройка проекта в Django

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

Создание проекта Django

Далее приведен код создание Django-проекта и некоторых дополнительных директорий в нем:
# директория для django проектов
$ sudo mkdir -p /home/django-projects/debianworld_ru

# новый django-проект
$ cd /home/django-projects/debianworld_ru
$ sudo django-admin.py startproject apps

# корректируем название модуля для корректного импорта
$ sudo perl -pi -e 's/apps.urls/urls/g' apps/settings.py

# директория для настроек wsgi
$ sudo mkdir -p /home/django-projects/debianworld_ru/deploy

# директория для статики
$ sudo mkdir -p /home/django-projects/debianworld_ru/media

# директория для логов
$ sudo mkdir -p /home/django-projects/debianworld_ru/logs

Создание пользователя для проекта

Для того, чтобы изолировать код проекта от остальной системы (в целях безопасности), необходимо добавить в систему пользователя, от имени которого будет исполняться код проекта:
# создается системная группа
$ sudo addgroup --quiet --system dw

# создается системный пользователь
$ sudo adduser --quiet --system --ingroup dw --no-create-home --no-create-home dw

# новый владелец для проекта
$ sudo chown dw:www-data -R /home/django-projects/debianworld_ru

# права доступа на проект. Право на чтение для www-data необходимо
# для корректной отдачи статики
$ sudo chmod u=rwx,g=rx,o= -R /home/django-projects/debianworld_ru

Настройка виртуального хоста в Apache

Далее, чтобы код проекта отзывался на какой-либо URL-адрес, необходимо настроить виртуальный хост Apache. Необходимо создать новый файл:
$ sudo -u dw vim /home/django-projects/debianworld_ru/deploy/debianworld.ru
И добавить в него следующий код:
<VirtualHost 10.1.0.4>
    # Описание сервера
    ServerAdmin admin@wsgi.debianworld.ru
    ServerName wsgi.debianworld.ru

    # Логи
    ErrorLog    /home/django-projects/debianworld_ru/logs/error_log
    CustomLog   /home/django-projects/debianworld_ru/logs/access_log common

    # wsgi-обработчик (см. ниже)
    WSGIScriptAlias / /home/django-projects/debianworld_ru/deploy/django.wsgi
    # Параметры запуска wsgi
    WSGIDaemonProcess dw-site user=dw group=dw home=/home/django-projects/debianworld_ru/media/ \
                      processes=2 threads=4 maximum-requests=100 display-name=apache-dw-wsgi
    WSGIProcessGroup dw-site

    # Статические файлы django-админки
    Alias "/media_admin/" "/usr/lib/python2.5/site-packages/django/contrib/admin/media/"
    <Location "/media_admin/">
        SetHandler None
    </Location>

    # Статические файлы проекта
    Alias "/media/" "/home/django-projects/debianworld_ru/media/"
    <Location "/media/">
        SetHandler None
    </Location>
</VirtualHost>
В данном случае 10.1.0.4 - это IP-адрес машины, на которой работает Apache.

Настройка wsgi

Теперь, когда виртуальный хост создан, необходимо создать wsgi-обработчик. Для этого создается файл:
$ sudo -u dw vim /home/django-projects/debianworld_ru/deploy/django.wsgi
В файл добавляется следующий код:
#/usr/bin/python
# -*- coding: utf-8 -*-
import os, sys

# В python path добавляется директория проекта
dn = os.path.dirname
PROJECT_ROOT = os.path.abspath( dn(dn(__file__)) )
DJANGO_PROJECT_ROOT = os.path.join(PROJECT_ROOT, 'apps')
sys.path.append( DJANGO_PROJECT_ROOT )

# Установка файла настроек
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

# Запуск wsgi-обработчика
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Включение виртуального хоста Apache

На заключительном шаге необходимо дать знать о наличии нового виртуального хоста в Apache, включить его и перезагрузить сам Apache:
# Добавляет ссылку на виртуальный хост в список доступных хостов
$ sudo ln -s /home/django-projects/debianworld_ru/deploy/debianworld.ru \
             /etc/apache2/sites-available/debianworld.ru

# включаем виртуальный хост
$ sudo a2ensite debianworld.ru

# рестарт Apache
$ sudo /etc/init.d/apache2 restart

Проверка корректности установки

Чтобы проверить, что Django корректно работает через mod_wsgi необходимо попытаться открыть URL "http://wsgi.debianworld.ru/" в браузере.
Результатом должно быть приглашение:
It worked!
Congratulations on your first Django-powered page.

Of course, you haven't actually done any work yet. Here's what to do next:
  * If you plan to use a database, edit the DATABASE_* settings in settings/settings.py.
  * Start your first app by running python settings/manage.py startapp [appname].

Создание БД/пользователя в MySQL, настройка Django

После того, как есть уверенность, что Django установлен и работает, необходимо обеспечить возможность работы с БД. Для этого необходимо залогиниться в MySQL под root'ом:
$ mysql --user=root -p
И создать новую базу данных и нового пользователя:
mysql> CREATE DATABASE debianworld_db CHARACTER SET utf8;
Query OK, 1 row affected (0.01 sec)

mysql> CREATE USER debianworld_usr@localhost IDENTIFIED BY 'mega-secure-password';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL ON debianworld_db.* TO debianworld_usr@localhost;
Query OK, 0 rows affected (0.00 sec)
После того, как новые БД и пользователь готовы, необходимо прописать их в конфиг Django. Для этого необходимо открыть файл настроек:
$ sudo -u dw vim /home/django-projects/debianworld_ru/apps/settings.py
И прописать следующие значения:
# ...
DATABASE_ENGINE = 'mysql'                   # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
DATABASE_NAME = 'debianworld_db'            # Or path to database file if using sqlite3.
DATABASE_USER = 'debianworld_usr'           # Not used with sqlite3.
DATABASE_PASSWORD = 'mega-secure-password'  # Not used with sqlite3.
DATABASE_HOST = ''                          # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = ''                          # Set to empty string for default. Not used with sqlite3.
# ...
Кроме того, чтобы правильно "подхватились" статические файлы django-админки и основго проекта, необходимо так же прописать:
# ...
MEDIA_URL = '/media/
ADMIN_MEDIA_PREFIX = '/media_admin/'
# ...
И в заключении, необходимо дать команду Django создать в БД основные таблицы:
$ sudo -u dw /home/django-projects/debianworld_ru/apps/manage.py syncdb
Creating table auth_permission
Creating table auth_group
Creating table auth_user
Creating table auth_message
Creating table django_content_type
Creating table django_session
Creating table django_site

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (Leave blank to use 'dw'): admin
E-mail address: admin@wsgi.debianworld.ru
Password:
Password (again):
Superuser created successfully.
Installing index for auth.Permission model
Installing index for auth.Message model
Вот и все. Теперь Django настроено полностью. Далее можно создавать приложения слдеующей командой:
$ sudo -u dw /home/django-projects/debianworld_ru/apps/manage.py startapp firstapp
или непосредственно под тем пользователем, под которым работает весь код проекта:
$ sudo -u dw bash
$ cd /home/django-projects/debianworld_ru/apps/
$ ./manage.py startapp firstapp

вторник, 5 июня 2012 г.

Основы LVM

Запишу основные команды LVM

Активация lvm  (на случай загрузки с livecd)
vgchange -ay

Создание логического тома
lvcreate -L 1G -n lvm_vol1 vg1

Создание снимка
lvcreate -L592M -s -n vol1_backup /dev/test/lvm_vol1

Восстановление тома из снимка
lvconvert --merge /dev/test/vol1_backup


Удаление тома или снимка

lvremove /dev/test/vol1_backup

и еще много чего потом напишу :) ...





Java Applets аплеты в Ubuntu (Kubuntu)

Потребовались мне аплеты в Firefox а по умолчанию не работаю и вот (чтобы не забыть потом запишу для себя тут) самое простое решение этой проблемки.
Если у вас установлен OpenJDK тогда нужно установить 1 пакет
sudo apt-get install icedtea-7-plugin

Если же у вас стоит SunJDK как у меня тогда придется кинуть линк
mkdir ~/.mozilla/plugins
ln -s /opt/jdk1.7.0_02/jre/lib/amd64/libnpjp2.so ~/.mozilla/plugins
И после этого усе заработает 
 

пятница, 25 мая 2012 г.

Установка Ubuntu Desktop на LVM

По умолчанию установщик ubuntu desktop не видел lvm разделы так как не активирован lvm в live-dvd

Нужно это просто исправить
и так начнем

1. Грузимся с livedvd

2. Устанавливаем lvm

sudo apt-get install lvm2

3. Освобождаем место для LVM используя например GParted

4. Подключаем фозические диски или разделы для lmv

sudo pvcreate /dev/sda1

5. создаем группу томов

sudo vgcreate local /dev/sda1

6. И, наконец, создаем необходимые логические тома

sudo lvcreate -L 7G -n root local
sudo lvcreate -L 5G -n home local
sudo lvcreate -L 3G -n swap local
sudo lvcreate -L 10G -n data local

7. Теперь необходимо создать файловые системы на созданных логических томах

sudo mkfs.ext4 /dev/local/root
sudo mkfs.ext4 /dev/local/home
sudo mkswap -f /dev/local/swap
sudo mkfs.ext4 /dev/local/data

8. Ставим красивые метки

sudo tune2fs -L Data /dev/local/data

9. Теперь можно спокойно установиться на созданные разделы. Дождитесь завершения установки, но компьютер не перезагружайте!

10. Теперь нужно активировать lvm в установленной системе, так как она еще не знает что ей нудно при загрузке искать себя на lvm.

Для начала, смонтируйте логический том, который вы выделили под корень, в папку /mnt.

sudo mount /dev/local/root /mnt

11. Подключим важные системные ресурсы

sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys  /mnt/sys

12. Переключимся на установленную систему

sudo chroot /mnt /bin/bash

13. И установим lvm

apt-get install lvm2

Ну теперь можно выходить из терминала и перегружаться в установленную ос которая будет работать на LVM :)

четверг, 24 мая 2012 г.

Превращаем обычную веб-камеру в камеру слежения, работающую в Ubuntu Linux

И как же можно заставить линукс следить за обстановкой через веб-камеру?
А оказывается достаточно просто:

1. установим motion

sudo apt-get install motion

2. Запускаем

sudo motion

По умолчанию изображения сохраняются в директории "/tmp/motion", 
Можете сконфигурировать и изменить настройки в "/etc/motion/motion.conf".
Если вы захотите изменить директорию, где хранятся полученные  изображения, просто найдите и измените строку "target_dir /tmp/motion".

3. Делаем автоматическу отправку изображений на свой ftp сервер

sudo apt-get install wput

редактируем “motion.conf”
в конце файла добавим следующую строку:
on_picture_save wput ftp://username:password@ftpserver %f

и вуаля все снимки отправляются )))

4. Можно открыть веб-интерфейс программы Motion, набрав для этого в веб-браузере сервера адрес localhost:8000.

Если вы хотите видеть видеопоток в реальном времени, то наберите в веб-браузере на сервере адрес localhost:8001

понедельник, 21 мая 2012 г.

Программа для наблюдения, слежки, контроля за пользователем

Вот интересная и простая программа для слежения за пользователем
SWTracking (http://software-tracking.ru)
Мне понравилась простотой и дешевизной.
Большие планы на будущее.
Всем советую попробовать
 

вторник, 28 февраля 2012 г.

Разработка под Android в NetBeans 7.1 (Ubuntu Linux)

Для этого необходимо:

1. Установить NetBeans. (скачиваем, распаковываем и устанавливаем install.sh )

2. Скачиваем Android SDK
  Распаковываем и докачиваем компоненты
  android-sdk-linux$ tools/android update sdk --no-ui

3. Устанавливаем плагин поддержки Android для NetBeans (источник)
Заходим в NetBeans / Сервис / Подключаемые модули / Настройки / жмем - Добавить и указываем урл http://kenai.com/projects/nbandroid/downloads/download/updatecenter/updates.xml
После чего появляется возможность установить плагин Android и Android Test Runner, устанавливаем их.

4. Далее заходим в Сервис / Параметры / Разное / Android и указываем где у нас лежит Android SDK (куда вы его распаковали).

Теперь при создании проекта можно указать Android  :)

Лично у меня проект сначала не хотел собираться, а оказалось что ant который идет в комплекте с NetBeans не находится при сборке и я не долго думая установил его из репы.
apt-get install ant и все заработало

Приятного программирования