29.12.10

Управление запуском сервера Subversion с помощью xinetd.

  В Fedora нет скрипта запуска сервера SVN, в init.d, поэтому его приходится запускать в ручную, либо делать самописные скрипты. Но есть еще один вариант, передать всю работу по запуску-отстанову сервера демону xinetd.
  Установить сам демон можно с помошью команды:
yum install xinetd

  Не забудте так же включить его автоматический запуск:
chkconfig xinetd on

  Для того что бы передать демону xinetd любой сервис в системе следует создать файл настроек для данного сервиса в каталоге /etc/xinetd.d/ . Например,  в нашем случае, создадим файл subversion со следующим содержимым:

service svn
{
        socket_type     = stream
        protocol        = tcp
        user            = svn
        wait            = no
        disable         = no
        server          = /usr/bin/svnserve
        server_args     = -i --root /path/to/repo
        port            = 3690
}


  Где server путь до команды запуска демона, server_args аргументы запуска демона, user имя пользователя от имени которого следует запускать демон. Если нужно что бы демон слушал порт только на определенном интерфейсе то добавьте параметр bind в котором укажите ip интерфейса на котором слушать порт. По умолчания в Fedora в файле /etc/services прописаны параметры:

svn             3690/tcp                        # Subversion
svn             3690/udp                        # Subversion


  Если их нет то следует их внести, что бы демон знал как следует запускать сервис svn. Название сервиса (svn) должно совпадать в обоих настоечных файлах, если меняет его в одном из них то меняйте и в другом.
  Теперь запускаем демон:
service xinetd start

  Проверить слушет ли демон порт можно командой:
netstat -ant | grep 3690

  Ответ должне быть что то вроде этого, если это не так смотрите системный лог файл
tcp        0      0 0.0.0.0:3690                0.0.0.0:*                   LISTEN

  Теперь пробуйте соединится клиентом с сервером.

3.11.10

Релиз ОС Fedora 14 и Russian Fedora 14

  Итак вышел релиз ОС Fedora 14, одновременно с ней был выпущен релиз ремикса Russian Fedora. Обновление для тех кто уже установил предыдущую версию Fedora, как обычно производим с помощью утилиты preupgrade. Или обновлением пакетов fedora-release и fedora-release-notes.
 Новшеств в данном релизе не особенно много, из основных для пользователя стоит отметить последнюю версию KDE 4.5, с поддержкой звукового сервера Phonon. Большинство нововведений относится именно к KDE. Добавлены новые версии сред Sugar, и окружение MeeGo. Новые пакеты
gnome-applet-netspeed для слежения за трафиком по каналам, eurephia система аутентификации в OpenVPN и gnome-gmail для работы с почтовой системой.
 Полный список изменений можно увидеть на сайте документации федора здесь.

26.10.10

Установка сервера 1С предприятия на CenOS 5.5

  Создание сервер 1C предприятия на базе CentOS, имеет некоторые нюансы. Не учтенные они могут в последствии вызвать некоторые проблемы. Изначально я устанавливал те пакеты которые предлагают сами 1c, но в процессе использования понял, что данные пакеты собраны очень криво и не будут работать адекватно. Поэтому последние версии я собирал сам, но и тут скрывалось пару подводных камней. Например сборка по x86_64 вызвала непонятные сбои в базе данных на поиск причины которых я потратил не мало времени. Поэтому я использовал 32-битную CentOS.
  Итак скачиваем дистрибутив и устанавливаем его на наш сервер. После установки следует скачать SRPM Postgresql с сайта 1С отсюда, берем версию 8.3.8 как самую стабильную сборку 1С на данный момент. Так же нам понадобится библиотека icu, скачать можно с официального сайта. Нам нужна версия 3.4 находится она здесь, скачайте сжатый архив исходников для LInux:
 #wget ftp://ftp.software.ibm.com/software/globalization/icu/3.4.1/icu-3.4.1.tgz
  На свежеустановленной системе инсталлируем все что нужно для сборки пакетов для системы:
#yum install rpm-build glibc-devel bison flex python-devel tcl-devel readline-devel zlib-devel pam-devel gcc doxygen gcc-c++
  В самом начале создаем непривилигерованного пользователя от имени которого мы будем производить сборку пакетов.
#useradd  builduser
#passwd builduser
Теперь создадим дерево каталогов для сборки пакетов, в Fedora это делается одной командой, здесь придется выполнить две :)
#mkdir -p ~/rpmbuild/{BUILD,RPMS,S{OURCE,PEC,RPM}S}
#echo "%_topdir $HOME/rpmbuild" > ~/.rpmmacros
  Ну вот все приготовительные действия закончены, начнем сборку пакетов. Во первых соберем libicu который требуется для 1c предприятия, для этого помещаем скачанный архив icu-3.4.1.tgz в каталог сборочного дерева для исходных кодов:
#cp icu-3.4.1.tgz ~/rpmbuild/SOURCES/
  Нам понадобится spec файл для сборки пакета, я брал его из более поздней версии исходных кодов, привожу его здесь полностью:
Name:            icu
Version:        3.4.1
Release:        3.1
Summary:        International Components for Unicode

Group:          Applications/Text
License:        X License
URL:            http://www.ibm.com/software/globalization/icu/
Source0:        ftp://ftp.software.ibm.com/software/globalization/icu/%{version}/%{name}-%{version}.tgz
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

BuildRequires:  doxygen

%description
The International Components for Unicode (ICU) libraries provide
robust and full-featured Unicode services on a wide variety of
platforms.

%package     -n lib%{name}
Summary:        International Components for Unicode - libraries
Group:          System Environment/Libraries

%description -n lib%{name}
%{summary}.

%package     -n lib%{name}-devel
Summary:        Development files for International Components for Unicode
Group:          Development/Libraries
Requires:       lib%{name} = %{version}-%{release}

%description -n lib%{name}-devel
%{summary}.

%package     -n lib%{name}-doc
Summary:        Documentation for International Components for Unicode
Group:          Documentation

%description -n lib%{name}-doc
%{summary}.


%prep
%setup -q -n %{name}

%build
cd source
export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing"
%configure --enable-static --with-data-packaging=library --disable-samples
make # %{?_smp_mflags} # -j(X>1) may "break" man pages as of 3.2, b.f.u #2357
make doc


%install
rm -rf $RPM_BUILD_ROOT source/__docs
make -C source install DESTDIR=$RPM_BUILD_ROOT
make -C source install-doc docdir=__docs
chmod +x $RPM_BUILD_ROOT%{_libdir}/*.so.*


%check || :
make -C source check


%clean
rm -rf $RPM_BUILD_ROOT


%post -n lib%{name} -p /sbin/ldconfig

%postun -n lib%{name} -p /sbin/ldconfig


%files
%defattr(-,root,root,-)
%doc license.html readme.html
%{_bindir}/derb
%{_bindir}/genbrk
%{_bindir}/gencnval
%{_bindir}/genrb
%{_bindir}/makeconv
%{_bindir}/pkgdata
%{_bindir}/uconv
%{_sbindir}/*
%{_mandir}/man1/derb.1*
%{_mandir}/man1/gencnval.1*
%{_mandir}/man1/genrb.1*
%{_mandir}/man1/makeconv.1*
%{_mandir}/man1/pkgdata.1*
%{_mandir}/man1/uconv.1*
%{_mandir}/man8/*.8*

%files -n lib%{name}
%defattr(-,root,root,-)
%{_libdir}/*.so.*

%files -n lib%{name}-devel
%defattr(-,root,root,-)
%{_bindir}/%{name}-config
%{_mandir}/man1/%{name}-config.1*
%{_includedir}/layout
%{_includedir}/unicode
%{_libdir}/*.a
%{_libdir}/*.so
%{_libdir}/%{name}
%dir %{_datadir}/%{name}
%dir %{_datadir}/%{name}/%{version}
%{_datadir}/%{name}/%{version}/mkinstalldirs
%{_datadir}/%{name}/%{version}/config
%doc %{_datadir}/%{name}/%{version}/license.html

%files -n lib%{name}-doc
%defattr(-,root,root,-)
%doc source/__docs/%{name}/html/*

 В SPEC для icu я исправил под более старую версию пакета некоторые параметры.
 Итак создаем данный spec файл в каталоге ~/rpmbuild/SPECS/:
#vi ~/rpmbuild/SPECS/icu.spec
 И проводим сборку пакета от непривилегированного пользователя builduser:
#rpm -bb  ~/rpmbuild/SPECS/icu.spec
 Если все хорошо, устанавливаем собранные пакеты, командой от root:
#rpm -ihv /home/builduser/rpmbuild/RPMS/i386/libicu-devel-3.4.1-3.1.i386.rpm  /home/builduser/rpmbuild/RPMS/i386/libicu-3.4.1-3.1.i386.rpm
 Теперь от пользователя builduser скачиваем postgresql:
#wget http://v8.1c.ru/overview/postgresql_patches/8-3-8/postgresql-8.3.8-1.1C.src.rpm
 Устанавливаем его в дерево каталогов, запустив от пользователя builduser команду:
#rpm -ihv postgresql-8.3.8-1.1C.src.rpm
 Немного исправим spec файл для postgresql от 1С, который после установки SRPM должен находится в каталоге SPECS, , в нем следует найти такие строки:
cp %{local_libdir}/libicuuc.so.34 %{buildroot}/%{_libdir}/pgsql
cp %{local_libdir}/libicui18n.so.34 %{buildroot}/%{_libdir}/pgsql
cp %{local_libdir}/libicudata.so.34 %{buildroot}/%{_libdir}/pgsql
 И исправить их на такие:
cp %{_libdir}/libicuuc.so.34 %{buildroot}/%{_libdir}/pgsql
cp %{_libdir}/libicui18n.so.34 %{buildroot}/%{_libdir}/pgsql
cp %{_libdir}/libicudata.so.34 %{buildroot}/%{_libdir}/pgsql
 Возможно вы захотите что бы postgres использовал библиотеку libicu от самих 1C, тогда вам придется установить сначала сам сервер 1C, о чем я написал ниже, и в SPEC файле указать пути до библитек из сборки 1С:

cp /opt/1C/v8.1/i386/libicuuc.so.34 %{buildroot}/%{_libdir}/pgsql
cp /opt/1C/v8.1/i386/libicui18n.so.34 %{buildroot}/%{_libdir}/pgsql
cp /opt/1C/v8.1/i386/libicudata.so.34 %{buildroot}/%{_libdir}/pgsql

 И запускаем сборку:
#rpmbuild -bb ~/rpmbuild/SPECS/postgresql-8.3.1C.spec
 Если сборка завершилась удачно, в сборочном дереве, в каталоге RPMS мы получим наши rpm файлы для установки. Устанавливать их следует командой:
#rpm -ihv /home/builduser/rpmbuild/RPMS/i386/postgresql-*
 После установки нужно изменить файл профиля для пользователя postgres который создается при установке postgresq, точнее следует указать какую локаль следует использовать серверу Postgresq, для этого открываем файл /var/lib/pgsql/.bash_profile и добавляем следующие строчки:

LANG=ru_RU.UTF-8
export LANG
 Кстати там я заметил переменную PGDATA которая казалось бы должна определять где будет лежать база данных, но она не работает. Такая же переменная существует в скрипте запуска сервера, думаю что если поменять ее значение в обоих местах то можно добиться что бы база лежала в нужном месте, я не стал заморачиватся так как все равно делаю бекапы на другой компьютер в сети. Итак после того как переменная будет записана делаем инициализацию базы данных:
#service postgres initdb
 Теперь поправим конфигурационный файл что бы можно было заходить локально без пароля, что бы этот самый пароль установить. Открываем файл /var/lib/pgsql/data/pg_hba.conf и изменяем там строчку:
host    all         all         127.0.0.1/32          md5
на:
host    all         all         127.0.0.1/32          trust
теперь можно запустить сервер:
#service postgres start
и войти в систему под пользователем postgres:

#psql -h 127.0.0.1 -U postgres
И поменять пароль доступа для пользователя postgres:

>ALTER USER postgres PASSWORD 'password';
 Теперь вновь открываем конфиг /var/lib/pgsql/data/pg_hba.conf и меняем там в строчке:
host    all         all         127.0.0.1/32          trust
 Слово trust на md5.
 Сделаем перезагрузку сервера:
 #service postgres reload
 Теперь с postgresql законченно. Следующий шаг установка самого сервера 1C. Скачайте ваш дистрибутив с сайта 1C, напрмиер в домашнюю директорию и установите его командой:
#rpm -ihv ~/1C_Enterprise-*
 Следует скачать драйвера от аппаратного ключа и сервер лицензия для него же, взять их можно отсюда: aksusdb и hasplm.
 Скачиваем и распаковываем их. Втыкаем ключи. Файлы hasplm-redhat-8.30-1.i386.rpm и aksusbd-redhat-1.8.1-3.i386.rpm копируем на сервер и ставим командой:
#rpm -ihv hasplm-redhat-8.30-1.i386.rpm aksusbd-redhat-1.8.1-3.i386.rpm
 Все защита установлена, теперь запускаем сервер предприятий:
#service srv1cv81 start
Если все стартовало нормально, ставим клиент. Я ставил клиента с SMB ресурса с опцией /adm что позволяет обновить все клиенты в сети. Но это не обязательно. Кстати клиент для 1C неплохо работает под wine. Теперь с помощью консоли управления сервером создаем базу данных, как приведено ниже на скриншотах, тока не забудьте поставить данные актуальные для вас ;) :





Все прошло хорошо? Тогда запускаем клиент указываем существующую базу данных our_base на сервере 1с_server и загружаем свой конфигурацию! На этом пока все.

17.9.10

Установка и настройка сервера управления предприятием Alfresco

  Система управления предприятием Alfresco один из самых мощных проектов из подобных Opensource проектов. Продукт написан на Java и имеет приятный и понятный пользовательский интерфейс. К сожалению система не доступна из репозитариев, но установщик Community версии достаточно хорошо работает из коробки. Итак, для начала скачем пакет для Linux с официального сервера Alfresco здесь. После того как пакет будет скачан, следует установить его. Запускать его можно как от обычного пользователя так и от root. Запустите установку пакета, предварительно присвоив ему бит запускаемости:
#chmod +x Alfresco-Community-3.3g-Linux-x86-Install
#./Alfresco-Community-3.3g-Linux-x86-Install

  Я устанавливал пакет на сервер где не было X-ов, если запускать установщик под ними, то вы увидите мастер установщик, наподобие стандартных мастеров Windows. Я же буду говорить о консольном варианте, в общем то между ними не очень много различий. Итак запустив установщик, подтвердите установку клавишей Y, и укажите, либо оставьте по умолчанию, папку куда будет установлен сервер. По умолчанию сервер встает на /opt/Alfresco/ что мне лично подошло, поэтому я ничего не менял.
Также нужно установить и настроить сервер MySql, устанавливается командой
#yum install mysql-server

  Когда я пробовал ставить систему Alfresco на домашней машине, я столкнулся с проблемой с русскими именами в названиях документов и папок в системе Alfresco, вместо кириллицы система выдавала знаки вопросов. Решило проблему принудительная установка кодировок Mysql сервера, в конфиге /etc/my.cnf я добавил следующие директивы:

В раздел  mysqld:
[mysqld]
default-character-set=utf8
В раздел client:
[client]
default-character-set=utf8

  Для создания базы данных в Mysql выполните команды Mysql:
mysql> create database alfresco default character set utf8 collate utf8_bin;
mysql>grant all on alfresco.* to 'alfresco'@'localhost' identified by 'alfresco' with grant option;

  По умолчанию Alfresco, а вернее веб сервер tomcat работает на порту 8080, но у меня на данном сервере крутится еще несколько веб сервисов, поэтому я решил проксировать клиентов на порт 8080 с помощью http сервера Apache. Для этого в конфиг апача я добавил секцию директив:

NameVirtualHost *:80
<virtualhost *:80\="">
    ServerName alfresco.domain.local
    ProxyPass   /  http://alfresco.domain.local:8080/
    ProxyPassReverse  /  http://alfresco.domain.local:8080/
</virtualhost>


  Теперь следует настроить стартовые скрипты alfresco:
alf_start.sh
alf_stop.sh
alfresco.sh

  В первом скрипте, alf_start.sh, следует указать директорию куда вы установили сервер Alfresco вместо метки @@ALF_HOME@@.
Во втором скрипте аналогично.
В третьем скрипте уксзваем, так же вместо @@ALF_HOME@@ нужную нам папку, а также путь до директории с запускаемым файлом java вместо метки @@JAVA_HOME@@ ( у меня путь был /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre)

  Теперь запустим наш сервер и попробуем зайти на него с любого веб-браузера:
#/opt/Alfresco/alf_start.sh
Using CATALINA_BASE:   /opt/Alfresco/tomcat
Using CATALINA_HOME:   /opt/Alfresco/tomcat
Using CATALINA_TMPDIR: /opt/Alfresco/tomcat/temp
Using JRE_HOME:        /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre
Using CLASSPATH:       /opt/Alfresco/tomcat/bin/bootstrap.jar

  Если все хорошо, то в браузере набираем адрес который вы установили в виртуальных хостах вашего Apache, либо если вы не стали ставить апач, то имя сервера с указание порта 8080. У меня путь выглядел слудющим образом:
http://alfresco.domain.local/share
   Следует подождать, при первом запуске система инициализирует базу данных в Mysql а также Java сервер, (кстати продолжительный запуск сервиса ожидает вас и при готовой базе, если вы перезагружали сервис).

Теперь останавливаем сервис:
#/opt/Alfresco/alf_stop.sh

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

  Пакет устанавливается путем добавления содержимого архива в папку:
/Путь/до/папки/сервера/tomcat/shared/classes/alfresco/messages

  А также указать нужный язык в конфигурационном файле:
/Путь/до/папки/сервера/tomcat/shared/classes/alfresco/extension/web-client-config-custom.xml
  В этом файле надите и раскоментируте следующий ниже параметр:
<config condition="Languages" evaluator="string-compare">
    <languages>
       <language locale="ru_RU">Русский</language>
    </languages></config>"

  Теперь запускаем систему вновь и используем по назначению. Подробнее об использовании системы можно почитать в официально Wiki проекта, а также в официальных уроках.

11.9.10

Расширение для Gnome-terminal Terminator

  Терминал в Gnome не отличается большим функционал и настройками, в принципе он достаточно функционален для домашнего использования, но вот для использования на рабочем месте он не очень функционален. Но на базе этого терминала есть несколько реализация с расширенными функциями, одно из них это Terminator.
  Устанавливается программа командой:
#yum install terminator
  После установки ярлычок для запуска помещается в главном меню, Приложения/Стандартные/Terminator
  Основной фишкой программы является возможность разбить окно на несколько областей являющихся так же терминалами, причем разбивку можно сохранить как схему и запускать программу указывая какую именно схему следует загрузить:


Для того что бы запустить Terminator с нужной схемой, следует запускать программу с опцией -l например:
#terminator -l "My layout"
Для удобства можно создать несколько схем и сделать для каждой ярлычок на панели, например:

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

А еще для каждого окна можно установить свои параметры шрифтов, обоев и прочего. Достаточно создать нужный профиль терминала на вкладке Profiles, и указать ее в закладке Layout:

Для программы существует несколько плагинов, включить или отключить которые можно на вкладке Plugins. Например там присутствует плагин позволяющий разместить в контекстном меню пункты запускающие определенные команды пользователя.

В общем использовать это приложения для некоторой автоматизации администрирования сети очень удобно, если же использовать в месте с Terminator на компьютерах в сети программу screen, можно значительно улучшить удобство работы.

Популярные сообщения