Показаны сообщения с ярлыком centos. Показать все сообщения
Показаны сообщения с ярлыком centos. Показать все сообщения

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 и загружаем свой конфигурацию! На этом пока все.

6.8.09

Статья по настройке Very Secure FTP для анонимного и пользовательского доступа.

Настройка Vsftpd для анонимного и пользовательского входа.

Данная система настроена и работает на сервере с операционной системой CentOS release 4.7 (Final), используются пакеты из родного репозитария CentOS, без перекомпиляций. От сервера требовалось: Разрешить анонимный вход для пользователей только на чтение и только к определённому каталогу. Разрешить аутентифицированным пользователям доступ к определённым каталогам за запись. Основной конфигурационный файл находиться в каталоге /etc/vsftpd/ . я использовал следующие директивы:

ftpd_banner=Welcome to FTP server!
anonymous_enable=YES
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
user_config_dir=/etc/vsftpd_user_conf
chroot_local_user=YES
guest_enable=YES
guest_username=virtual
chown_username=virtual
pam_service_name=ftp
listen=YES

Разберём каждую

При входе на сервер клиенту будет высвечиваться сообщение указанное в
строке этой директивы:
ftpd_banner=Welcome to FTP server!

Разрешаем подключаться анонимным пользователям
anonymous_enable=YES

Разрешаем подключаться локальным пользователям. В нашем случае это пользователи в базе данных, в более общем случае это пользователи описанные в /etc/passwd
local_enable=YES

Запрещаем запись файлов для всех (для нужных пользователей запись
откроем в их конфигах)
write_enable=NO

Запрещаем загрузку файлов на сервер анонимным пользователям.
anon_upload_enable=NO

А также запрещаем создание каталогов и вообще изменение чего-бы то ни было для анонимных пользователей:
anon_mkdir_write_enable=NO
anon_other_write_enable=NO

Что бы управлять доступами аутентифицированных пользователей создаём каталог в котором будут храниться конфиги для них:
#mkdir /etc/vsftpd_user_conf

и прописываем данный каталог в конфиг vsftpd
user_config_dir=/etc/vsftpd_user_conf

Что бы пользователь вbдел свой каталог как корневую директорию и не мог покинуть указанную директорию, должна быть указана следующая директива:
chroot_local_user=YES

Указываем что все аутентифицированные пользователи будут иметь права гостя на сервере
guest_enable=YES

Для создания гостевой учётной записи создадим учётную запись virtual со
следующими параметрами
virtual:x:32009:32009::/home/ftp:/sbin/nologin

и группу для него
virtual:x:32009:

и укажем эту учётную запись для гостевого входа:
guest_username=virtual
chown_username=virtual

указываем серверу как использовать pam аутентификацию, для этого указываем на файл ftp который находиться в каталоге конфигурации /etc/pam.d . О содержимом этого файла будет сказано ниже:
pam_service_name=ftp


Указываем что демон vsftpd запускался в одиночном режиме:
listen=YES


Далее можно запустить демон для проверки конфига и проверки  анонимного соединения

#/etc/init.d/vsftpd start

теперь из консоли наберем
#ftp our_hostname_or_ip

В ответ на приглашение типа:
Connected to our_hostname_or_ip (10.10.10.10).
220 Welcome to FTP server!
Name (our_hostname_or_ip:username):

введём логин
#anonymous

на запрос пароля жмем энтер, должно получиться следущее:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.

Если все правильно то вход выполнен и на команду ls будет выведен список директорий в каталоге /var/ftp (Является домашним для автоматически создаваемого пользователя ftp)

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

Например файл logins.txt:

vasya
password
tanya
lond_passwod

и так далее.

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

#db_load -T -t hash -f logins.txt /etc/vsftpd/vsftpd_login.db

в результате будет сгенерирована база с хешами из файла logins.txt.

Что бы научить pam работать с этой базой, в файле /etc/pam.d/ftp
сделаем ссылку на нашу базу:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

!Обратите внимание что файл с базой прописывается без расширения.

Теперь следует создать конфиги для наших пользователей в папке /etc/vsftpd_user_conf которая указана в директиве user_config_dir в основном конфиге.

Каждому пользователю соответствует свой файл с именем этого пользователя. Например для пользователя vasya следует создать файл vasya в котором описать настройки сервера именно для этого пользователя:

anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
local_root=/home/ftp/vasya
anon_other_write_enable=YES
anon_umask=0002

Что означает:
Путь до каталога пользователя. На этом каталоге должны стоять права на чтение и изминение для реального пользователя virtual которого описали выше:
local_root=/home/ftp/vasya

Разрешить пользователю удалять любые файлы в своем каталоге
anon_world_readable_only=NO

Разрешить пользователю запись и создание каталогов в своей директории
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES

Обратная маска для файлов создаваемых пользователем в восмеричном
формате.

После создания всех файлов для всех пользователей следует удалить или
закрыть доступ для файла logins.txt.

Рестартуем демон
/etc/init.d/vsftpd restart
На этом все настройки закончены.

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