Настройка openvpn в Debian Squeeze

Конфигурация сервера

    1. Устанавливаем пакет openvpn
      aptitude install openvpn

      openvpn debian howto

    2. cp -R /usr/share/doc/openvpn/examples/easy-rsa /etc/openvpn/
    3. cd /etc/openvpn/easy-rsa/2.0/
      source vars
      ./clean-all
    4. Генерируем мастер-сертификат, ключ Диффи-Хеллмана, сертификат и ключ сервера
      ./build-ca
      ./build-dh
      ./build-key-server server

Читать далее Настройка openvpn в Debian Squeeze

Система контроля версий Mercurial (hg)

Basics

  1. Create repository
    hg init ~/projects/myproject
    hg clone ~/projects/myproject ~/workspace/myproject
  2. Manage your files
    hg add FILE
    hg remove FILE
    hg rename OLD NEW
  3. See what changed
    hg status
    hg diff -rOLDREVISION FILE
  4. Commit your changes
    hg commit
  5. Undo your messed up commit
    hg rollback

    (and start over)

  6. Publish your changes
    hg push ~/projects/myproject

Читать далее Система контроля версий Mercurial (hg)

django virtualenvs nginx uwsgi supervisor debian

Предполагается, что у нас уже есть настроенное виртуальное окружение virtualenv debian
nginx в стандартном репозитории Debian Squeeze старый, поэтому ставить будем из backports
/etc/apt/sources.list

deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
deb http://ftp.ru.debian.org/debian testing main non-free contrib
deb http://ftp.ru.debian.org/debian unstable main non-free contrib

/etc/apt/preferences

Package: *
Pin: release a=stable
Pin-Priority: 700
Package: *
Pin: release a=squeeze-backports
Pin-Priority: 675
Package: *
Pin: release a=testing
Pin-Priority: 650
Package: *
Pin: release a=unstable
Pin-Priority: 600

Указываем использовать stable по умолчанию

echo 'APT::Default-Release "stable";' > /etc/apt/apt.conf.d/default

Обновляем список репозиториев

aptitude update

Читать далее django virtualenvs nginx uwsgi supervisor debian

Часто используемые команды MySQL

  1. Создать базу данных с кодировкой utf8
    CREATE DATABASE IF NOT EXISTS `my_db` CHARACTER SET utf8 COLLATE utf8_general_ci;
  2. Список БД
    SHOW DATABASES;
  3. Узнать кодировку БД
    SHOW CREATE DATABASE 
  4. Выбрать БД
    USE ;
  5. Создать таблицу table-name с первичным ключом id
    CREATE TABLE table-name
        (id SMALLINT,
         name VARCHAR(30),
         CONSTRAINT pk_table-name PRIMARY KEY (id)
        );
         
  6. Просмотр таблиц
    SHOW TABLES FROM ;
  7. Список столбцов MySQL
    describe ;
  8. Добавить данные в таблицу MySQL
    INSERT INTO <table_name> (<col1_name>, <col2_name>)
    VALUES ('VALUE1', 'VALUE2')
  9. Изменить значения столбцов в таблице MySQL
    UPDATE <table_name>
    SET <col1> = 'VALUE2'
    WHERE <col2> = 'VALUE1';
  10. Просмотр значения столбцов
    SELECT  FROM  WHERE  = 'VALUE';
  11. Просмотр индексов
    SHOW INDEX FROM ;
  12. Добавить пользователей MySQL
    mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost
        ->     IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
    mysql> GRANT ALL PRIVILEGES ON *.* TO monty@"%"
            -> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
    mysql> GRANT RELOAD,PROCESS ON *.* TO admin@localhost;
    mysql> GRANT USAGE ON *.* TO dummy@localhost;
    

    monty
    Полноценный суперпользователь — он может подсоединяться к серверу откуда угодно, но должен использовать для этого пароль some_pass. Обратите внимание на то, что мы должны применить операторы GRANT как для monty@localhost, так и для monty@»%». Если не добавить запись с localhost, запись анонимного пользователя для localhost, которая создается при помощи mysql_install_db, будет иметь преимущество при подсоединении с локального компьютера, так как в ней указано более определенное значение для поля Host, и она расположена раньше в таблице user.
    admin
    Пользователь, который может подсоединяться с localhost без пароля; ему назначены административные привилегии RELOAD и PROCESS. Эти привилегии позволяют пользователю запускать команды mysqladmin reload, mysqladmin refresh и mysqladmin flush-*, а также mysqladmin processlist. Ему не назначено никаких привилегий, относящихся к базам данных (их можно назначить позже, дополнительно применив оператор GRANT).
    dummy
    Пользователь, который может подсоединяться к серверу без пароля, но только с локального компьютера. Все глобальные привилегии установлены в значение ‘N’-тип привилегии USAGE, который позволяет создавать пользователей без привилегий. Предполагается, что относящиеся к базам данных привилегии будут назначены позже.

  13. Пользователи
    DESC mysql.user;
    SELECT host, user, password FROM mysql.user;
  14. Просмотр привилегий пользователей
    SHOW GRANTS FOR @;
    SHOW GRANTS;
    SHOW GRANTS FOR CURRENT_USER;
    SHOW GRANTS FOR CURRENT_USER();
  15. Просмотр прав пользователя на конкретную БД
    SELECT user,host FROM mysql.db WHERE `db` = 'some_database';
    
  16. Значения системных переменных
    SHOW VARIABLES;
  17. Статистика по MySQL процессам
    SHOW [FULL] PROCESSLIST;
  18. Общая статистика
    SHOW STATUS;
  19. Статистика по всем таблицам в бд
    SHOW TABLE STATUS [FROM db_name];
  20. Удалить таблицу
    DROP TABLE [IF EXISTS] tbl_name [, tbl_name,...] [RESTRICT | CASCADE]
  21. Удалить БД
    DROP DATABASE [IF EXISTS] db_name
  22. Удалить строку
    DELETE [LOW_PRIORITY | QUICK] FROM table_name
        [WHERE where_definition]
        [ORDER BY ...]
        [LIMIT rows]
  23. Обновить столбец
    UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
        SET col_name1=expr1 [, col_name2=expr2 ...]
        [WHERE where_definition]
        [ORDER BY ...]
        [LIMIT rows]
    или
    UPDATE [LOW_PRIORITY] [IGNORE] tbl_name [, tbl_name ...]
        SET col_name1=expr1 [, col_name2=expr2 ...]
        [WHERE where_definition]
  24. Изменить пароль root
    mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
  25. Сделать дамп БД
    mysqldump -uroot -p  > db.sql
  26. Развернуть дамп БД
    mysql -uroot -p  < db.sql
  27. Просмотреть информация от таблицах INNODB
    SHOW ENGINE INNODB STATUS\G
  28. Полезная информация
    SHOW PROCESSLIST;
    SHOW GLOBAL STATUS;

Настройка proftpd debian

  1. Ставим proftpd. Режим запуска standalone
    aptitude install proftpd

    .
    proftpd howto debian
    установка ftp сервера debian

  2. Редактируем файл конфигураций.
    vim /etc/proftpd/proftpd.conf

    Я изменил следующие параметры, остальные оставил как есть.

    ServerName             "catalog"
    Umask                   133  022
    RootLogin               off
    RequireValidShell       off
    UseFtpUsers             on
    DefaultRoot             ~/djcode/

Миграция моделей в Django с помощью South

Команда ./manage.py syncdb в django предназначена только для создания новых таблиц на основе моделей. Добавлять или удалять поля из существующей таблицы она не будет, ровно как и вносить изменения в существующие поля. Эти манипуляции остаются за разработчиком приложения. Однако есть удобное средство миграции, South

  1. Устанавливаем south
    pip install south
  2. Добавляем в ‘INSTALLED_APPS’ в вашем settings.py
    INSTALLED_APPS = (
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.sites',
        'django.contrib.messages',
        'django.contrib.staticfiles',
         'django.contrib.admin',
         'django.contrib.admindocs',
         'south',
  3. Выполняем syncdb
    python manage.py syncdb
  4. Читать далее Миграция моделей в Django с помощью South

Создать базу данных и пользователя mysql с правами на эту базу данных

  1. Логинимся с правами суперпользователя
    mysql -uroot -p
  2. Создаем ДБ
    CREATE DATABASE `my_db` CHARACTER SET utf8 COLLATE utf8_general_ci;
  3. Создаем пользователя с полными правами на только что созданную ДБ и с возможностью входа с localhost
    mysql> GRANT ALL PRIVILEGES ON .* TO new_user@localhost
        ->     IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
  4. Если необходим удаленный вход, вместо @localhost необходимо выполнить @»%»
    mysql> GRANT ALL PRIVILEGES ON .* TO new_user@"%"
        ->     IDENTIFIED BY 'some_pass' WITH GRANT OPTION;

    Также необходимо в настройках /etc/mysql/my.cnf изменить строку bind-address с 127.0.0.1 на 0.0.0.0 и перезапустить демон mysql

    bind-address = 0.0.0.0

Настройка виртуального окружения Django virtualenv

Хорошим тоном считается ставить Django в виртуальное окружение. Также это может оказаться удобным, когда на сервере необходимо держать разные версии Django или python, или любого друго программного обеспечения.
Устанавливаем менеджер пакетов python

aptitude install python-pip python-dev build-essential
pip install --upgrade pip
pip install virtualenv

на Debian Squeeze может возникнуть такая ошибка

Traceback (most recent call last):
  File "/usr/bin/pip", line 11, in 
    from pip.vcs import vcs, get_src_requirement, import_vcs_support
ImportError: cannot import name import_vcs_support
Traceback (most recent call last):
  File "/usr/bin/pip", line 8, in <module>
    from pip.baseparser import parser
ImportError: cannot import name parser

Лечится следующим образом

easy_install pip
rm /usr/bin/pip
ln -sv /usr/local/bin/pip-2.6 /usr/bin/pip
pip install pip --upgrade

Затем еще раз пробуем установить virtualenv

pip install virtualenv

Для простоты работы с virtualenv будем использовать virtualenvwrapper. Ставим.
Читать далее Настройка виртуального окружения Django virtualenv

iptables DNAT Проброс порта за NAT

Для проброса порта сервера, находящегося за NAT средствами iptables

iptables -t nat -A PREROUTING -p tcp -d $EXT_R_IP --dport $PORT1 -j DNAT --to-destination $LOCAL_IP:$PORT2
iptables -A FORWARD -i eth0 -d $LOCAL_IP -p tcp --dport $PORT2 -j ACCEPT

Смотрим

iptables -t nat -L -v -b
iptables -L -v -n

gpt и parted Debian Squeeze / Wheezy

GUID Partition Table (GPT) — стандарт формата размещения таблиц разделов на физическом жестком диске. Он является частью Расширяемого микропрограммного интерфейса (англ. Extensible Firmware Interface, EFI) — стандарта, предложенного Intel на смену отжившего BIOS, одного из последних реликтов первозданной IBM PC. EFI использует GPT там, где BIOS использует Главную загрузочную запись (англ. Master Boot Record, MBR). Для жестких дисков размером больше 2 TB использовать необходимо GPT, MBR с такими дисками работать не будет. Если вы используете Debian или Ubuntu Linux, вам нужно перекомпилировать ядро, с параметром CONFIG_EFI_PARTITION.

File Systems
   Partition Types
     [*] Advanced partition selection
     [*] EFI GUID Partition support (NEW)
egrep -i CONFIG_EFI_PARTITION /boot/config-`uname -r`
CONFIG_EFI_PARTITION=y

UPD:
На новых ядрах Debian поддержка EFI Partitions включена изначально.

:~# egrep -i CONFIG_EFI_PARTITION /boot/config-`uname -r`
CONFIG_EFI_PARTITION=y
:~# uname -r
3.2.0-4-686-pae

В RedHat и CentOS поддержка GPT в ядре работает изначально. Для работы с GPT партициями необходимо использовать утилиту parted. fdisk и cfdisk работать с такими партициями не будут.

aptitude install parted
parted /dev/sdb
(parted) help

parted gpt linux
Читать далее gpt и parted Debian Squeeze / Wheezy