Роман Теличко

Заметки веб-разработчика/админа

Тег linux

PostgreSQL. Храним таблицу в оперативной памяти (RAM)

// Ноябрь 7, 2013 | 4315 просмотров | комментариев (0)

Несмотря на то что PostgreSQL является довольно мощной базой данных, в ней отсутствует полноценная поддержка хранения таблиц в оперативной памяти.
Ниже я расскажу как заставить PostgreSQL хранить выбранные таблицы в оперативной памяти для быстрых операций с ними.
Всё будет происходить в Debian.

Создадим пустую папку для монтирования

mkdir /mnt/ramfs

И смонтируем в неё ramfs

mount -t ramfs none /mnt/ramfs

Создадим папку для PostgreSQL и назначим на неё права.

mkdir /mnt/ramfs/pgdata
chown postgres:postgres /mnt/ramfs/pgdata
chmod 600 /mnt/ramfs/pgdata

Далее зайдём под суперпользователем базы данных PostgreSQL — postgres

su postgres
psql

И создадим новый TABLESPACE, размещение которого мы укажим в папке с смонтированной ramfs

postgres=# CREATE TABLESPACE ram LOCATION '/mnt/ramfs/pgdata';

Выдадим права на работу с этом TABLESPACE нашему пользователю (например myuser)

postgres=# GRANT CREATE ON TABLESPACE ram TO myuser;

Теперь нам осталось только создать новую таблицу и указать при её создании TABLESPACE ram.
Например:

CREATE TABLE mytesttable (
    begin_ip ip4 NOT NULL,
    end_ip ip4 NOT NULL,
    begin_num bigint NOT NULL,
    end_num bigint NOT NULL,
    country_code character(2) NOT NULL,
    country_name character varying(255) NOT NULL,
    ip_range ip4r
)
TABLESPACE ram;

Теперь PostgreSQL будет работать с этой таблицей как и с другими даже не подозревая что она «лежит» в ОЗУ.

Это всё.
Удачи.

Настройка связки nginx + SVN/Subversion + trac (без Apache)

// Сентябрь 30, 2013 | 5104 просмотров | 2 комментария

Сегодня я расскажу как можно отказаться от медленного Apache для настройки связки trac + SVN/Subversion. Итак, начнём.

1. Устанавливаем и настраиваем SVN/Subversion

Ставим SVN/Subversion на наш сервер

sudo apt-get install subversion

Создаём репозиторий (для примера — в папке /var/svn/my-repository)

sudo svnadmin create /var/svn/my-repository

Устанавливаем владельца www-data для папки с репозиторием

sudo chown -R www-data:www-data /var/svn/my-repository

Теперь нам необходимо выполнить импорт файлов в репозиторий.
Для этого создадим где-то на локальной машинке (впрочем, можно и прямо на удалённом сервере) папку с некоторым именем (для примера: my-files)

mkdir my-files

И выполняем первый импорт на наш настроенный SVN-сервер:

svn import -m 'initial commit' my-files svn+ssh://my-username@my-cool-webserver/var/svn/my-repository

Где
  my-files — папка с файлами которые необходимо проимпортировать в репозиторий,
  my-username — имя пользователя на сервере,
  my-cool-webserver — адрес сервера,
  /var/svn/my-repository — путь в файловой системе сервера к репозитории

Теперь мы можем выполнять коммиты в этот репозиторий, только вначале необходимо будет сделать checkout репозитория в папку для дальнейшей работы.
Делается это так:

svn checkout svn+ssh://my-username@my-cool-webserver/var/svn/my-repository

Данный способ настройки SVN/Subversion называется SVN over SSH.
Читать далее…

Как узнать температуру и нагрузку видеокарты ATI Radeon в Linux/Ubuntu

// Август 31, 2013 | 8025 просмотров | 2 комментария

Узнать текущую нагрузку (GPU Load) видеокарты и её температуру (GPU Temperature) можно с помощью стандартной утилиты проприетарного драйвера ATI Radeon.

Достаточно выполнить следующую команду:

# aticonfig --odgc --odgt

Вывод будет следующим:

Default Adapter - AMD Radeon HD 6670
                            Core (MHz)    Memory (MHz)
           Current Clocks :    810           1000
             Current Peak :    810           1000
  Configurable Peak Range : [400-900]     [1000-1150]
                 GPU load :    0%

Default Adapter - AMD Radeon HD 6670
                  Sensor 0: Temperature - 35.50 C

Кстати, я уже писал о том как установить проприетарный драйвер видеокарты ATI Radeon в Ubuntu.

Как установить драйвер видеокарты ATI Radeon в Ubuntu 13.04

// Август 30, 2013 | 22809 просмотров | комментариев (0)

Сегодня я расскажу как установить проприетарный драйвер от ATI на видеокарту ATI Radeon в Ubuntu 13.04.

Для начала нам необходимо скачать свежие драйвера с официального сайта.
Вот ссылка для ленивых: https://support.amd.com/us/gpudownload/Pages/index.aspx

Поскольку у меня система 64-битная, в последнем дропдауне я выбрал Linux x86_64.
В итоге нас отправили на страницу скачивания AMD Catalyst™ 13.4 Proprietary Linux x86 Display Driver.
Скачиваем и распаковываем ZIP-архив.

Ещё нам необходимо установить зависимые пакеты

# sudo apt-get install ia32-libs debhelper dh-modaliases execstack lib32gcc1 libc6-i386 dkms libqtgui4

А также нужно удалить пакет xserver-xorg-video-radeon, т.к. он будет «мешать»

# sudo apt-get remove --purge xserver-xorg-video-radeon

Мы готовы к инсталляции.
Устанавливаем права на выполнение скачанного нами RUN-файла

# chmod +x amd-driver-installer-catalyst-*.run

Запускаем процесс сборки DEB-пакетов fglrx

# sudo ./amd-driver-installer-catalyst-*.run --buildpkg Ubuntu/raring
# sudo dpkg -i fglrx*.deb

Если пакеты успешно установлены, далее нам необходимо сгенерировать новый /etc/X11/xorg.conf файл.

Запускаем его генерацию так:

# sudo aticonfig --initial -f

В случаe, если у вас две видеокарты, тогда вам ещё нужно сделать так
ВАЖНО! Не запускайте эту строчку, если у вас видеокарты в режиме CrossFire

# sudo aticonfig --initial -f --adapter=all

В случаe двух мониторов вам нужно сделать вот так:

# sudo aticonfig --initial -f
# sudo aticonfig --set-pcs-str="DDX,EnableRandR12,FALSE"

Указываем системе на изменения файла /etc/X11/xorg.conf явно. Это важная строчка, без которой система просто не будет знать о том, что вы изменили этот конфигурационный файл.

# sudo aticonfig --input=/etc/X11/xorg.conf --tls=1

Перезагружаемся уже с новыми конфигами.

# reboot

Если вы дошли до графической среды — скорее всего вы всё сделали правильно.
Проверим это с помощью информационной утилиты fglrxinfo.

# fglrxinfo

Ответ должен быть каким-то таким:

display: :0.0  screen: 0
OpenGL vendor string: Advanced Micro Devices, Inc.
OpenGL renderer string: AMD Radeon HD 7800 Series 
OpenGL version string: 4.2.12217 Compatibility Profile Context 12.104

Запустим простую утилиту для тестирования графической карты.

# fgl_glxgears

Её вывод в консоль у меня был следующим:

11916 frames in 5.0 seconds = 2383.200 FPS

Вот и всё.
Удачи.

Ubuntu: Как узнать температуру процессора, видеокарты и материнской платы

// Август 29, 2013 | 98137 просмотров | 6 комментариев

Иногда необходимо узнать температуру процессора, видеокарты или материнской платы в данный момент. В Ubuntu/Linux это сделать довольно просто.

Итак, вначале установим пакет lm-sensors.
Делается это так

# sudo apt-get install lm-sensors

После чего утилите необходимо определить устройства чтобы корректно отображать температуру, напряжение CPU и скорость вращения кулеров.
Делается это тоже довольно просто. Запускаем sensors-detect так:

# sudo sensors-detect

Утилита будет просто засыпать вопросами, на которые нужно отвечать Enter’ом (что по-умолчанию будет означать — yes).
В самом конце утилита sensors-detect спросит о разрешении добавления необходимых для мониторинга модулей при загрузке системы (файл /etc/modules), на что необходимо будет ввести yes

To load everything that is needed, add this to /etc/modules:
#----cut here----
# Chip drivers
coretemp
w83627ehf
#----cut here----
If you have some drivers built into your kernel, the list above will
contain too many modules. Skip the appropriate ones!

Do you want to add these lines automatically to /etc/modules? (yes/NO) yes
Successful!

После чего необходимо перезагрузить ваш компьютер.

После перезагрузки вы можете с помощью команды sensors (обратите внимание что ей не требуется root-полномочия) получать необходимую информацию о температурах процессора, видеокарты и материнской платы, напряжение процессора и скорость вращения кулеров.

# sensors
acpitz-virtual-0
Adapter: Virtual device
temp1:        +27.8°C  (crit = +99.0°C)
temp2:        +29.8°C  (crit = +99.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Physical id 0:  +34.0°C  (high = +80.0°C, crit = +98.0°C)
Core 0:         +34.0°C  (high = +80.0°C, crit = +98.0°C)
Core 1:         +29.0°C  (high = +80.0°C, crit = +98.0°C)
Core 2:         +33.0°C  (high = +80.0°C, crit = +98.0°C)
Core 3:         +33.0°C  (high = +80.0°C, crit = +98.0°C)

nct6776-isa-0290
Adapter: ISA adapter
Vcore:         +0.97 V  (min =  +0.00 V, max =  +1.74 V)
in1:           +1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
AVCC:          +3.39 V  (min =  +2.98 V, max =  +3.63 V)
+3.3V:         +3.39 V  (min =  +2.98 V, max =  +3.63 V)
in4:           +1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in5:           +2.04 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
3VSB:          +3.38 V  (min =  +2.98 V, max =  +3.63 V)
Vbat:          +3.31 V  (min =  +2.70 V, max =  +3.63 V)
fan1:            0 RPM  (min =    0 RPM)  ALARM
fan2:         1516 RPM  (min =    0 RPM)  ALARM
fan3:         1145 RPM  (min =    0 RPM)  ALARM
fan4:            0 RPM  (min =    0 RPM)  ALARM
fan5:            0 RPM  (min =    0 RPM)  ALARM
SYSTIN:        +29.0°C  (high =  +0.0°C, hyst =  +0.0°C)  ALARM  sensor = thermistor
CPUTIN:        -60.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = CPU diode
AUXTIN:        +28.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor
PECI Agent 0:  +22.5°C  
cpu0_vid:     +0.000 V
intrusion0:   OK
intrusion1:   ALARM

radeon-pci-0100
Adapter: PCI adapter
temp1:        +43.5°C

В моём выводе программы sensors отображается температура каждого ядра процессора (их у меня 4), напряжения датчиков процессора, скорости вращения кулеров (2 из 5), температуру материнской платы (+29.0°C) и видеокарты (+43.5°C).

Вот и всё.
Удачи.

Загрузка правил iptables при активации сетевого интерфейса в Ubuntu/Debian

// Август 12, 2013 | 12054 просмотров | комментариев (0)

Сегодня я расскажу как настроить firewall iptables на Ubuntu/Debian при поднятии (активации) сетевого интерфейса. Сами команды управления iptables описывать я не буду, т.к. этого в Сети вы найдёте море.
Читать далее…

Создаём SOCKS 5 прокси с помощью SSH-соединения через удалённый сервер в Linux

// Июль 30, 2013 | 15970 просмотров | комментариев (0)

Cоздать SOCKS 5 прокси довольно просто. Достаточно выполнить команду по следующей схеме:

ssh -f -C2qTnN -D < порт> < удаленный_пользователь>@< удаленный_сервер>

Где
-f Запросит ssh перейти в фоновый режим только перед выполнением команды.
-C Включит сжатие всех данных (включая stdin, stdout, stderr и данные для перенаправленных Х11 и TCP/IP соединений).
-2 Принуждает ssh использовать только протокол версии 2.
-q Тихий режим. Подавляет все предупреждения и диагностические сообщения. Будут отображены только фатальные ошибки.
-T Отменить переназначение терминала.
-n Перенаправляет стандартный ввод из /dev/null (фактически, предотвращает чтение из стандартного ввода).
-N Не выполнять удаленную команду.
-D [локальный IP : ] порт
Читать далее…

Что будет если выполнить rm -Rf / в Линуксе?

// Июль 10, 2013 | 6288 просмотров | комментариев (0)

Как известно, команда удаления всех данных рекурсивно вниз без задавания лишних вопросов для заданной папки в Линукс выглядит как rm -Rf .
И тут возникает вопрос:
«А что будет если такой папкой будет корневой каталог системы (/)?»
Читать далее…

Логирование PHP скриптов отправляющих почту

// Июнь 16, 2013 | 12187 просмотров | комментариев (0)

Сегодня я расскажу как можно вести лог скриптов, что отправляют почту методами PHP.
Это удобно, если у вас на сервере поселился спаммер и вы не знаете где его искать, т.к. сами пути запускающих скриптов по-умолчанию не падают в /var/log/syslog или в /var/log/mail.log. Читать далее…

Как переименовать имена файлов из одной кодировки в другую в Linux

// Июнь 1, 2013 | 1283 просмотров | комментариев (0)

Для этих целей существует отличная программа convmv.
Ставится она из репозитория довольно просто:

sudo apt-get install convmv

После чего вам просто необходимо указать папку, в которой необходимо совершить переименование файлов из одной кодировке в другую.
Например, мне нужно переименовать файлы из KOI8-R в UTF-8 рекурсивно вниз.
Делается это так:

convmv -r --notest -f koi8-r -t utf-8 Folder/

Опция --notest отвечает за переименование.
Т.е. без этой опции вы просто сделаете тест и посмотрите как файлы будут «выглядеть» в нужной кодировке.

Удачи.