26 октября 2013 г.

Установка Oracle Instant Client на Linux, привязка к PHP. Без заморочек.


Клиент устанавливаем не самый свежий — 11.2 — используется для нормальной работы со старыми базами Oracle (версии 9). Последний на данный момент релиз 12.1 их уже не поддерживает, но данная инструкция позволяет установить и его.

Сразу ставим эту библиотеку:
aptitude install libaio1

Качаем Oracle Instant Client и прочие необходимые компоненты с сайта.

Копируем из zip архивов содержимое в
/opt/oracle/

В моем случае получилось
/opt/oracle/instantclient_11_2/

Далее по порядку:
TNS_ADMIN=/opt/oracle/network
LD_LIBRARY_PATH=/opt/oracle/
instantclient_11_2/
ORACLE_HOME=/opt/oracle
instantclient_11_2/
PATH=$PATH:$ORACLE_HOME/
export TNS_ADMIN ORACLE_HOME LD_LIBRARY_PATH PATH


Как показывает практика, команды показанные выше, необходимы для работы SQLPlus, но не обязательны для PHP. Еще нужно найти способ, чтобы система эти пути запомнила навсегда, иначе после перезагрузки вам придется прописывать пути заново.

Далее создаем папку network — дочернюю для ORACLE_HOME 

В моем случае:
/opt/oracle/instantclient_11_2/network/

В ней создаем файл

tnsnames.ora 

Содержимое файла в моем случае такое:
NAMEFORUSE =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.200)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = SERVICE_NAME)
    )
  )
В большинстве случаев вам нужно поменять только те значения, что выделены жирным: имя для подключения к базе (используется, например, в PHP), IP адрес сервера, где находится база данных и имя базы данных (сервисное имя).

Также требуется создать папку admin в /opt/oracle/instantclient_11_2/network/ и разместить в ней созданный файл tnsnames.ora 

Создадим файл
/etc/ld.so.conf.d/oracle.conf   
пропишем  путь
/opt/oracle/instantclient_11_2/

Выполним команду:
ldconfig

Привязываем к PHP. Я всегда использую удобный пакет для развертывания Apache, PHP, MySQL — LAMPP.

После установки, вся конфигурация для работы с базами Orcale сводится к вводу команды:
/opt/lampp/lampp oci8
Система попросит указать путь к библиотекам Oracle, в моем случае я ввел:
/opt/oracle/instantclient_11_2/

Все готово для работы, теперь можно соединяться с базами данных, используя PHP.

18 марта 2013 г.

Получение списка IP сетевых устройств в LAN

Запускаем bat файл вида:
@echo off
setlocal enabledelayedexpansion
for /l %%a in (1,1,254) do (
ping -n 1 192.168.1.%%a | find "TTL" >nul
if !errorlevel!==0 ( echo IP 192.168.1.%%a - OK ) else ( echo IP 192.168.1.%%a is not responding )
)
и... получаем результат


25 января 2013 г.

Установка и настройка Pure-FTPD (Pure FTP)

Здесь я опишу подробный способ установки FTP-сервера Pure-FTPD и помогу вам избежать проблем, с которыми столкнулся сам: из-за не окрепшей дружбы с линуксом, или не очевидных и не описанных нюансов в установке и настройке.

Устанавливаем обычную версию (еще бывает mysql):
apt-get install pure-ftpd-common pure-ftpd

Здесь важно отметить, что после установки сервис запускается автоматически с параметрами по умолчанию. Остановка, старт или перезапуск:
/etc/init.d/pure-ftpd stop
/etc/init.d/pure-ftpd start
или
/etc/init.d/pure-ftpd restart

Далее мы должны создать группу пользователей FTP и пользователя, который будет находиться в этой группе, и под которым будут работать все пользователи FTP как виртуальные  (не нужно плодить реальных пользователей в системе — удобно)
groupadd ftpgroup
useradd -g ftpgroup -d /dev/null -s /etc ftpuser

Теперь можно добавить виртуального пользователя:
pure-pw useradd remote -u ftpuser -g ftpgroup -d /home/pubftp/remote -N 10

Где remote  имя пользователя для доступа к FTP, а /home/pubftp/remote — персональная директория, с которой он будет работать. -N 10 задает квоту в 10МБ (ограничение на использование дискового пространства). Эту директорию не нужно создавать вручную, т.к. она появится автоматически (параметр задается при конфигурировании, об этом чуть позже) при первом подключении и обмене данными с сервером.

Так же после первого выполнения этой команды создается файл, который будет хранить данные для доступа пользователей.

Список существующих пользователей:
pure-pw list

Подробная информация о пользователе:
pure-pw show remote


Удаление пользователя — когда-нибудь может пригодиться, но не сейчас:
pure-pw userdel remote

Удаляем методы авторизации имеющиеся по умолчанию:
rm /etc/pure-ftpd/conf/PAMAuthentication /etc/pure-ftpd/auth/70pam

Включаем puredb — преимущества в скорости работы, наверное (:
ln -s ../conf/PureDB /etc/pure-ftpd/auth/45puredb


При первом запуске команда создает БД, а после любых операций с пользователями — обновляет (не забывайте ее запускать каждый раз):
pure-pw mkdb

24 января 2013 г.

Запись образа Debian на флешку

Все операции производились из под Mac OS X.

Скачиваем подходящий ISO образ установочного диска.

Сначала узнаем под каким именем флешка в системе (предварительно подключив ее):

diskutil list

В моем случае это была /dev/disk5

Далее просто побитно записываем образ на флешку, используя dd:

sudo dd if=/path/to/debian.iso of=/dev/disk5 bs=8192

Размер блока почти не влияет на скорость записи, некоторые рекомендуют использовать в Mac OS X 8192. В моем случае образ размером 200МБ записывался на флешку около 7 минут.

Метод наверняка будет работать и с другими дистрибутивами Linux. Да — записывать можно на USB HDD, USB FLASH DRIVE, FLASH CARD.

Файлы базы данных Paradox и работа с ними используя PHP

Появилась необходимость подружить древние и мало-кем используемые файлы формата Paradox (*.px + *.db) с веб-приложением.

Попытка установить расширение PECL для работы с этими файлами на виртуальный Debian провалилась, не смотря на следование разным инструкциям, опубликованных добрыми людьми. Убил я на это час или два.

Наверное убил бы больше, если бы необходимость в этом веб-приложении не ушла в сторону, на время или навсегда. Но данные дернуть из файлов все же потребовалось, дабы проанализировать их хотя-бы визуально и стал я копать дальше.

Наткнулся на интересный инструмент под Linux-like системы — pxtools от некоего Jan Kneschke. С помощью него можно конвертировать вышеуказанные файлы в добрые SQL, CSV или XML, которые затем легко использовать, в том числе в разработке/работе веб-приложений.

Установка утилиты не вызвала никаких проблем:

wget http://jan.kneschke.de/assets/projects/pxtools/pxtools-0.0.20.tar.gz
tar xvfz pxtools-0.0.20.tar.gz
cd pxtools-0.0.20
./configure
make
make install

Чтобы убедиться в том, что наши файлы подходят для препарирования сим инструментом, можно выполнить команду:

pxinfo -f  /path/to/db/file.db

И достать данные, сохранив в формате MySQL:

pxsqldump -d mysql -f /path/to/db/file.db > /path/to/saving/file.sql

Или csv:

pxcsvdump -f /path/to/db/file.db > /path/to/saving/file.csv

Конечно-же все это дело можно теперь автоматизировать и обрабатывать как угодно много файлов  — работает быстро, в т.ч. используя PHP.