воскресенье, 23 декабря 2012 г.

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

 Последнюю версию Django берем от сюда
 Распаковываем архив. Заходим в папку с распакованным архивом. Запускаем команду
sudo python setup.py install

 Для проверки корректности установки:
python -c "import django; print django.VERSION;"
(1, 3, 1, 'final', 0)
 Django успешно установлен.
 Далее создадим проект Django. Определим место положения проектов. В моем случае это /home/user/django.
sudo mkdir /home/user/django
cd /home/user/django
 Для создания проекта вводим (в моем случае название проекта mysite):
django-admin.py startproject mysite
 Для связки Apache и Django нужен пакет mod_wsgi
 Для установки данного пакета вводим команду:
sudo apt-get install libapache2-mod-wsgi

 Проверим, что в Apache подгружается mod_wsgi:
ls -l /etc/apache2/mods-enabled/ | grep wsgi
 Должно появиться:
lrwxrwxrwx 1 root root 27 2009-02-18 22:41 wsgi.conf -> ../mods-available/wsgi.conf
lrwxrwxrwx 1 root root 27 2009-02-18 22:41 wsgi.load -> ../mods-available/wsgi.load
 Далее "научим" Apache запускать наш проект.
 В папке с проектом (в моем случае /home/user/django/mysite) создайте каталог (допустим apache). В данном каталоге создайте файле django.wsgi
Содержимое данного файла (Обратите внимание на sys.path.append() и os.environ['DJANGO_SETTINGS_MODULE']):
import os
import sys

sys.path.append('/home/user/django/mysite/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
 Создали интерфейс между Django и WSGI
 Конфигурация виртуального хоста
 Откройте конфигурационный файл вашего сервер, например, /etc/apache2/sites-available/django.example.ru.conf и внесите в него изменения:
<virtualhost *:80*>
   ServerName django.example.ru
   DocumentRoot /home/user/django/mysite
   WSGIScriptAlias / /home/user/django/mysite/apache/django.wsgi
</virtualhost>
 Включаем виртуальный хост:
cd/etc/apache2/sites-available
sudo a2ensite django.example.ru.cong
 Рестарт Apache
sudo /etc/init.d/apache2 restart
 Чтобы проверить, что Django корректно работает через mod_wsgi необходимо попытаться открыть URL
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].
 Использованные ссылки:
http://www.vdsadmin.ru/webserver-apache-wsgi-django

понедельник, 24 сентября 2012 г.

Добавление кодировок в Ubuntu


Для просмотра установленных кодировок.
locale -a

Запускаем реконфиг локалей
sudo dpkg-reconfigure locales

Генерируем локаль
locale-gen ru_RU.CP1251
или
locale-gen ru_RU.UTF-8

вторник, 4 сентября 2012 г.

Смена кодировки Postgresql 8.4 на Debian (Ubuntu)

Кодировку в Postgresql возможно сменить только у всего кластера сервера. Если имеются базы данных, то необходимой сделать копии этих баз. После действий описанных в данной статье иницилизируется новый кластер сервера.
Остановим сервер Pjstresql командой:
/etc/init.d/postgresql stop

Удалить (или переместить старую базу):
mv /var/lib/postgresql/8.4/main /var/lib/postgresql/8.4/main.old

Проинициализируем новую базу с необходимыми настройками:
su -c "/usr/lib/postgresql/8.4/bin/initdb -E WIN1251 --locale=ru_RU.CP1251-8 -D /var/lib/postgresql/8.4/main" postgres

Закоментируем в /etc/postgresql/8.2/main/postgresql.conf строчку
ssl = true.

Запустить сервер:
/etc/init.d/postgresql start

После данных действий возможно будут проблемы с аутентификации пользователя postgres. Необходимо сменить пароль данного пользователя. Для этого правим файл /etc/postgresql/8.4/main/pg_hba.conf. Добавляем или изменяем чтобы в методах идентификации было:
local all all trust

Перезапускаем сервер:
/etc/init.d/postgresql restart

Логинемся в postgres:
sudo su postgres -c psql template
Меняем пароль:
ALTER USER postgres with PASSWORD 'password';

Меняем строчку в pg_hba.conf обратно. Например:
host all postgres md5



четверг, 30 августа 2012 г.

Ubuntu: команда "apt-get update" выдает ошибку 404

 
     Если при выполнении команды apt-get update / apt-get upgrade получаем ошибку "404 Not Found", то проблема вызвана следующей причиной:

Ваш релиз Ubuntu более не поддерживается:

    Проверить поддерживается ли Ваш релиз и/или когда была/будет прекращена поддержка можно https://wiki.ubuntu.com/Releases (раздел End of Life).
    Проверить версию релиза можно командой:    
lsb_release -a

    Если релиз релиз  не поддерживается, то надо произвести его upgrade. Для этого переходим по https://help.ubuntu.com/community/UpgradeNotes . Находим наш релиз и смотрим раздел "See more information for upgrade".
    Для примера обновим Ubuntu 8.10.
    Согласно примеру из статьи на надо в репозитарий внести следующие источники:
 
## EOL upgrade sources.list
# Required
deb http://old-releases.ubuntu.com/ubuntu/ intrepid main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ intrepid-updates main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ intrepid-security main restricted universe multiverse
# Optional
#deb http://old-releases.ubuntu.com/ubuntu/ intrepid-backports main restricted universe multiverse
#deb http://old-releases.ubuntu.com/ubuntu/ intrepid-proposed main restricted universe multiverse

    Важно, все остальные, имеющие источники надо закомментировать.
    Для внесения изменений в список репозитариев вводим команду в терминале:
sudo mcedit /etc/apt/sources.list
    1 И правим данный файл,согласно рекомендации выше и сохраняем его.
    2. Далее вводим команду в терминале:
sudo aptitude update && sudo aptitude safe-upgrade
    3. Производим обновление релиза:
sudo do-release-upgrade
    4. Перезагружаем компьютер и проверяем версию релиза командой:
lsb_release -a
    Если в результате мы получили релиз который также не поддерживается заново производим эти же действия, только уже для другого релиза
Оригинал статьи взят http://h3x.no/2010/11/08/ubuntu-apt-get-update-gives-404-not-found-error

среда, 22 августа 2012 г.

POSTRESQL (Npgsql) и C#

Взято из статьи: http://npgsql.projects.postgresql.org/docs/manual/UserManual.html
Перевел, что посчитал нужным.
Качаем драйвер Npgsql для MS.Net от отсюда.
Добавляем в проект ссылки на данный драйвер и namespace:
using Npgsql;

Установка соединения с СУДБ
Сервер:  127.0.0.1, Порт:  5432 (по умолчанию), Пользователь: postgres (по умолчанию), Пароль: 12345678, База данных: testd
using System;
using System.Data;
using Npgsql;
public class NpgsqlUserManual
{
    public static void Main(String[] args)
    {
         NpgsqlConnection conn = new NpgsqlConnection("Server=127.0.0.1;Port=5432;User Id=postgres;Password=12345678;Database=testd;");
        conn.Open();
        conn.Close();
     }
}

Добавление записей в таблицу
ExecuteNonQuery() - идеально подходит для добавление или обновления записей, поскольку, возвращает целое число - добавленных/измененных "рядов".
using System;
using System.Data;
using Npgsql;
public static class NpgsqlUserManual
{
    public static void Main(String[] args)
    {
        NpgsqlConnection conn = new NpgsqlConnection("Server=127.0.0.1;Port=5432;User Id=postgres;Password=12345678;Database=testd;");
        conn.Open();
        NpgsqlCommand command = new NpgsqlCommand("insert into table1 values(1, 1)", conn);
        int rowsaffected;
        try
        {
            rowsaffected = command.ExecuteNonQuery();
            Console.WriteLine("It was added {0} lines in table table1", rowsaffected);
        }
        finally
        {
            conn.Close();
        }
    }
}

ExecuteScalar() - получение результата содержащее единственную запись.
NpgsqlCommand command = new NpgsqlCommand("select version()", conn);
String serverversion;
try
{
    serverversion = (String)command.ExecuteScalar();
    Console.WriteLine("PostgreSQL server version: {0}", serverversion);
}
finally
{
    conn.Close();
 }

Получение результата. метод ExecuteReader() и NpgsqlDataReader.
NpgsqlCommand command = new NpgsqlCommand("select * from tablea", conn);
try
{
    NpgsqlDataReader dr = command.ExecuteReader();
    while(dr.Read())
    {
        for (i = 0; i < dr.FieldCount; i++)
        {
            Console.Write("{0} \t", dr[i]);
        }
        Console.WriteLine();
    }
}
finally
{
   conn.Close();
}

Использование параметров в запросах.
Параметры позволяют динамически добавлять значения в текст запроса в режиме run-time. Обозначение параметра в тексте запроса производится с использованием префикса ":"
// Заявление параметров в строке запроса
using(NpgsqlCommand command = new NpgsqlCommand("select * from tablea where column1 = :value1", conn))
{
    //Добавим параметр в коллекцию специального типа
    command.Parameters.Add(new NpgsqlParameter("value1", NpgsqlDbType.Integer));
    //Добавим значение в параметр в команда
    command.Parameters[0].Value = 4;
    using(NpgsqlDataReader dr = command.ExecuteReader())
    {
        while(dr.Read())
        {
            for (i = 0; i < dr.FieldCount; i++)
            {
                Console.Write("{0} \t", dr[i]);
            }
         Console.WriteLine();
        }
    }
}