среда, 22 октября 2008 г.

Настройка заданий для DSpace

Для того, чтобы можно было сказать, что наша установка DSpace завершена, необходимо сделать ещё несколько вещей.

Задания для демона 'cron'
Пара функций DSpace требуют регулярного запуска. Это подписка по e-mail, которая оповещает пользователя о новых поступлениях в библиотеке, и новый медиа-фильтр, который генерирует миниатюры из изображений и извлекает полный текст документов для индексирования. Для их запуска мы будем использовать демон 'cron'.

cron — демон-планировщик задач в UNIX-образных операционных системах, использующийся для периодического выполнения заданий в заданное время.

Каждый пользователь системы имеет свой файл заданий crontab (файлы всех пользователей хранятся в каталоге /var/spool/cron/crontabs), в котором описано, в какое время и какие программы запускать от имени этого пользователя. Для редактирования файла crontab используется специальная одноименная программа crontab, позволяющая не прерывать процесс cron на время редактирования.

Файл заданий имеет следующий формат:

* * * * * выполняемая команда
- - - - -
| | | | |
| | | | ----- День недели (0 - 7) (Воскресенье =0 или =7)
| | | ------- Месяц (1 - 12)
| | --------- День (1 - 31)
| ----------- Час (0 - 23)
------------- Минута (0 - 59)

  • Итак, создадим файл с именем dspace-services:

    # Запуск рассылки подписок ежедневно в 01:00
    0 1 * * * /opt/dspace/bin/sub-daily
    # Запуск медиа-фильтра ежедневно в 02:00
    0 2 * * * /opt/dspace/bin/filter-media
    # Запуск проверки контрольных сумм каждый день в 03:00
    0 3 * * * /opt/dspace/bin/checker -lp
    # Выслать ежедневный отчет администратору в 04:00
    0 4 * * * /opt/dspace/bin/dsrun org.dspace.checker.DailyReportEmailer -c
    # Формирование статистических отчетов
    0 1 * * * /opt/dspace/bin/stat-general
    0 1 * * * /opt/dspace/bin/stat-monthly
    0 2 * * * /opt/dspace/bin/stat-report-general
    0 2 * * * /opt/dspace/bin/stat-report-monthly

    Теперь на основе этого файла создадим для пользователя tomcat задание:
    sudo crontab -u tomcat dspace-services

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

  • Производительность PostgreSQL выиграет от регулярного запуска процесса чистки базы, который оптимизирует индексы и очищает удаленные данные.

    Создадим файл postgresql-services:

    # Очистка базы каждую ночь в 04:20
    20 4 * * * vacuumdb --analyze dspace > /dev/null 2>&1

    Создаем задание для пользователя postgres:
    sudo crontab -u postgres postgresql-services

четверг, 16 октября 2008 г.

Установка DSpace

DSpace - это сервис, который осуществляет сбор, хранение, и распространение цифрового материала. Говоря проще - это электронная библиотека.

Платформа электронных библиотек DSpace разрабатывалась совместно компанией Hewlett-Packard и библиотеками MIT (Massachusetts Institute of Technology). 4-го ноября 2002 года система была запущена как действующая служба, поддерживаемая библиотеками MIT. Также на основании лицензии BSD открыт исходный код с намерением поощрить формирование сообщества открытых кодов вокруг DSpace.

Преимуществами DSpace являются - открытая лицензия, кроссплатформенность (DSpace написан на java), полнотекстовый поиск.

DSpace реализован как J2EE приложение, поэтому может функционировать в любом стандартном J2EE-контейнере. В качестве базы данных может использоваться Oracle или Postgresql.

Дистрибутив DSpace поставляется в исходных кодах. Для его сборки требуются: Java Development Kit, Apache Maven, Apache Ant.

Apache Maven

Maven - это высокоуровневый проект с открытым исходным кодом Apache Software Foundation, созданный, в первую очередь, для управления сложным процессом создания проекта Jakarta Turbine. Несмотря на такое скромное начало, разработчики проектов с открытым исходным кодом и в закрытых областях предпочли Maven в качестве системы создания проектов.
Подробно о Maven можно прочитать на сайте IBM.

Установка Apache Maven:
  • Скачаем последнюю версию Apache Maven:
    wget http://www.sai.msu.su/apache/maven/binaries/apache-maven-2.0.9-bin.tar.gz

  • Распакуем архив и перемести его в каталог /opt:
    tar xvzf apache-maven-2.0.9-bin.tar.gz
    sudo mv apache-maven-2.0.9 /opt

  • Создадим ссылку с именем /opt/apache-maven:
    sudo ln -s /opt/apache-maven-2.0.9 /opt/apache-maven

  • В файле /etc/environment добавим к переменной PATH путь исполняемым файлам, должно получиться что-то вроде:
    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/apache-maven/bin"

    Помните, что для того чтобы изменения в файле environment вступили в действие необходимо перезапустить сессию (т.е. сделать logout, login)

  • Если выход в интернет у вас настроен через прокси-сервер, тогда необходимо прописать его в файле /opt/apache/maven/conf/settings.xml.
    Найдите следующий текст:
    <!-- proxy
    | Specification for one proxy, to be used in connecting to the network.
    |
    <proxy>
    <id>optional</id>
    <active>true</active>
    <protocol>http</protocol>
    <username>proxyuser</username>
    <password>proxypass</password>
    <host>proxy.host.net</host>
    <port>80</port>
    <nonProxyHosts>local.net,some.host.com</nonProxyHosts>
    </proxy>
    -->

    И замените на:
    <proxy>
    <id>optional</id>
    <active>true</active>
    <protocol>http</protocol>
    <username>ИМЯ_ПОЛЬЗОВАТЕЛЯ</username>
    <password>ПАРОЛЬ</password>
    <host>ИМЯ_ПРОКСИ_СЕРВЕРА</host>
    <port>80</port>
    </proxy>

  • Сделаем владельцем каталога пользователя root:
    sudo chown -RLv root:admin /opt/apache-maven

  • Для проверки заставим показать maven номер версии:
    mvn --version


    В ответ должны получить что-то похожее на:
    Maven version: 2.0.9
    Java version: 1.6.0_06
    OS name: "linux" version: "2.6.24-19-server" arch: "amd64" Family: "unix"


Apache Ant

Apache Ant (англ. ant — муравей) — это средство компоновки, основанное на Java. Согласно утверждениям ее первого автора Джеймса Данкана Дэвидсона (James Duncan Davidson), его название - это акроним "another neat tool" (еще одно средство автоматизации).
Средства компоновки при разработке программного обеспечения используются для преобразования исходного кода и других исходных файлов в исполняемый формат (и, возможно, в образы для установки продукта). Поскольку процесс компоновки приложений становится все более сложным, важно гарантировать постоянство процесса при каждой компоновке с максимально возможной автоматизацией.
Подробно об Ant можно прочитать на сайте IBM.

Установка Apache Ant:
  • Скачаем последнюю версию Apache Maven:
    wget http://www.sai.msu.su/apache/ant/binaries/apache-ant-1.7.1-bin.tar.gz

  • Распакуем архив и перемести его в каталог /opt:
    tar xvzf apache-ant-1.7.1-bin.tar.gz
    sudo mv apache-ant-1.7.1 /opt

  • Создадим ссылку с именем /opt/apache-ant:
    sudo ln -s /opt/apache-ant-1.7.1 /opt/apache-ant

  • В файле /etc/environment добавим к переменной PATH путь исполняемым файлам, должно получиться что-то вроде:
    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/apache-maven/bin:/opt/apache-ant/bin"

  • Сделаем владельцем каталога пользователя root:
    sudo chown -RLv root:admin /opt/apache-ant

  • Для проверки заставим показать ant номер версии:
    ant -version


    В ответ должны получить что-то похожее на:
    Apache Ant version 1.7.1 compiled on June 27 2008


Установка DSpace
  • Дистрибутив DSpace выкладывается на сайте SourceForge.net

    Скачаем дистрибутив:
    wget http://ovh.dl.sourceforge.net/sourceforge/dspace/dspace-1.5.1-src-release.tar.gz

  • Распакуем архив:
    tar xvzf dspace-1.5.1-src-release.tar.gz

  • Создадим пользователя базы данных Postgresql:
    sudo su postgres
    createuser -d -A -P dspace

    Введите пароль пользователя dspace. На запрос "Позволить роли создавать другие роли", ответим отрицательно.

  • Создадим базу данных dspace, владельцем сделаем пользователя dspace:
    createdb -O dspace -E UNICODE dspace
    exit

  • Отредактируем файл [dspace-source]/dspace/config/dspace.cfg:

    #Каталог установки dspace
    dspace.dir = /opt/dspace

    #URL главной страницы DSpace, вместо localhost:8080 пропишите полное имя вашего сервера и порт, на котором работает web-контейнер.
    dspace.url = http://localhost:8080/xmlui

    #Полное имя вашего сервера (порт указывать не нужно)
    dspace.hostname = localhost

    #Имя вашего сайта (для корректного отображения русского названия воспользуйтесь утилитой native2ascii из jdk)
    dspace.name = \u042d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430

    #Используемая СУБД
    db.name = postgres

    #Строка подключения к БД - jdbc:postgresql://[сервер]:[порт]/[имя БД]
    db.url = jdbc:postgresql://localhost:5432/dspace

    #Пользователь и пароль для подключения к БД
    db.username = dspace
    db.password = ПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ

    #Имя SMTP сервера
    mail.server = ИМЯ_ВАШЕГО_SMTP_СЕРВЕРА

    #Обратный адрес сообщений
    mail.from.address = ВАШ_ПОЧТОВЫЙ_АДРЕС

    #Почтовый адрес для обратной связи
    feedback.recipient = ВАШ_ПОЧТОВЫЙ_АДРЕС

    #Почтовый адрес администратора
    mail.admin = ВАШ_ПОЧТОВЫЙ_АДРЕС

    #Почтовый адрес для сообщения об ошибках
    alert.recipient = ${mail.admin}

    #Кодировка писем
    mail.charset = UTF8

    #Локализация
    default.locale = ru

    #Язык сообщений
    default.language = ru_RU

    #Каталог для хранения бинарных потоков (загруженных файлов)
    #Рекомендуется разместить на специальном разделе
    assetstore.dir = ${dspace.dir}/assetstore

  • Создадим каталог, в который будем устанавливать DSpace:
    mkdir /opt/dspace

  • Произведем сборку DSpace, для этого воспользуемя Apache maven:
    cd  [dspace-source]/dspace/
    mvn package

    При этом будет произведена загрузка всех необходимых пакетов и зависимостей в каталог ~/.m2
    В случае успеха вы увидите сообщение BUILD SUCCESSFUL

  • Инициализируем базу данных и произведем установку DSpace:
    cd [dspace-source]/dspace/target/dspace-1.5.1-build.dir
    ant fresh_install

    В конце вы должны также получить сообщение BUILD SUCCESSFUL

  • Сделаем владельцем каталога /opt/dspace пользователя tomcat, т.е. пользователя под которым работает web-контейнер:
    sudo chown -Rv tomcat:nogroup /opt/dspace

  • Создадим ссылки на web-приложения DSpace:
    sudo -u tomcat ln -s /opt/dspace/webapps/xmlui /opt/apache-tomcat/webapps/xmlui
    sudo -u tomcat ln -s /opt/dspace/webapps/sword /opt/apache-tomcat/webapps/sword
    sudo -u tomcat ln -s /opt/dspace/webapps/oai /opt/apache-tomcat/webapps/oai

  • Создадим учетную запись администратора:
    [dspace]/bin/create-administrator

    Программа последовательно запросит почтовый адрес (e-mail), имя, фамилию и пароль администратора.

  • Вот он - момент истины! Открываем браузер по адресу http://ИМЯ_СЕРВЕРА:ПОРТ/xmlui и пробуем зайти с учетной записью администратора:




В следующей главе я опишу процесс дополнительной настройки DSpace.

суббота, 13 сентября 2008 г.

Установка Apache Tomcat

Apache Tomcat - программа-контейнер сервлетов, написанная на языке Java и реализующая спецификацию сервлетов и спецификацию JavaServer Pages (JSP), которые являются стандартами для разработки веб-приложений на языке Java.

Если вы попробуете скачать и распаковать Tomcat, а потом еще его и запустить командой каталог_tomcat/bin/catalina.sh run, то уверен на 99%, что у вас все прекрасно заработает и вы сможете открыть страничку по адресу http://имя_сервера:8080. Написано на java - работает везде! Сказано - сделано!

Интересности начинаются когда вы попробуете запустить tomcat на стандартном - 80 порту. Порты с номерами меньше 1024 являются в linux привилегированными, открывать их может только пользователь root. А запускать веб-сервер из-под root - это просто небезопасно.

Второй вопрос, который возникает - как запустить tomcat в качестве сервиса, т.е. чтобы он стартовал при старте системы.


Итак, пошаговая инструкция по установке Apache Tomcat:
  • Первое, что необходимо сделать это установить jdk, как это сделать написано здесь.

  • Затем, необходимо скачать последнюю версию Tomcat. На момент написания - это 6.0.18.

  • Лично я устанавливаю все приложения не входящие в репозиторий в каталог /opt(от слова optional). Поэтому распакуем скачанный файл и переместим туда каталог:
    tar xvzf apache-tomcat-6.0.18.tar.gz
    sudo mv apache-tomcat-6.0.18 /opt


    Создадим ссылку с именем /opt/apache-tomcat, для того, чтобы не переписывать скрипты при смене версии:
    sudo ln -s /opt/apache-tomcat-6.0.18 /opt/apache-tomcat

  • Cоздадим системного пользователя tomcat, под которым будет работать наш сервер:
    sudo adduser --system tomcat


    Сделаем хозяином каталога /opt/apache-tomcat пользователя tomcat:
    sudo chown -RLv tomcat:nogroup /opt/apache-tomcat

  • Проводим пробный запуск:
    sudo -u tomcat /opt/apache-tomcat/bin/catalina.sh run


    Открываем браузер по адресу http://имя_сервера:8080. Если все сделано правильно, то увидим следующую картину:


  • Теперь необходимо заставить сервер запускаться на стандартных портах. Для этого необходимо отредактировать файл /opt/apache-tomcat/conf/server.xml
    Ищем следующий текст:
    <connector port="8080" protocol="HTTP/1.1" connectiontimeout="20000" redirectport="8443"></connector>

    Меняем порт на стандартный для http - 80, и указываем кодировку для URI:
    <connector port="80" protocol="HTTP/1.1" connectiontimeout="20000" redirectport="8443" URIEncoding="UTF-8"></connector>

    Теперь при запуске сервера будет выходить ошибка доступа:
    java.net.BindException: Permission denied<null>:80
    at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:502)
    at org.apache.coyote.http11.Http11Protocol.init(Http11Protocol.java:176)
    at org.apache.catalina.connector.Connector.initialize(Connector.java:1058)
    at org.apache.catalina.core.StandardService.initialize(StandardService.java:677)
    at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:795)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:530)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:550)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:260)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:412)

    Как уже говорилось - порты с номерами меньше 1024 может открывать только пользователь root.

  • Для запуска сервера под пользователем tomcat на стандартном порту необходимо установить утилиту jsvc:
    sudo apt-get install jsvc -y


    JSVC - утилита предназначенная, чтобы запускать java-программы как сервисы(демоны) операционной системы.

    Далее в каталоге /etc/init.d создадим файл tomcat со следующим содержанием:
    #!/bin/sh
    JAVA_HOME=/usr/lib/jvm/java-6-sun
    CATALINA_HOME=/opt/apache-tomcat
    TOMCAT_USER=tomcat

    TMP_DIR=/var/tmp
    PID_FILE=/var/run/apache-tomcat.pid
    CATALINA_BASE=/opt/apache-tomcat

    CATALINA_OPTS="-Xmx1024m -Xms512m -XX:MaxPermSize=128m -Djava.awt.headless=true"
    CLASSPATH=\
    $JAVA_HOME/lib/tools.jar:\
    $CATALINA_HOME/bin/commons-daemon.jar:\
    $CATALINA_HOME/bin/tomcat-juli.jar:\
    $CATALINA_HOME/bin/bootstrap.jar

    case "$1" in
    start)
    #
    # Start Tomcat
    #
    jsvc \
    -user $TOMCAT_USER \
    -home $JAVA_HOME \
    -Dcatalina.home=$CATALINA_HOME \
    -Dcatalina.base=$CATALINA_BASE \
    -Djava.io.tmpdir=$TMP_DIR \
    -Dfile.encoding=UTF-8 \
    -Duser.timezone=Europe/Samara \
    -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
    -Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties \
    -wait 10 \
    -pidfile $PID_FILE \
    -outfile $CATALINA_HOME/logs/catalina.out \
    -errfile '&1' \
    $CATALINA_OPTS \
    -cp $CLASSPATH \
    org.apache.catalina.startup.Bootstrap
    #
    # To get a verbose JVM
    #-verbose \
    # To get a debug of jsvc.
    #-debug \
    exit $?
    ;;

    stop)
    #
    # Stop Tomcat
    #
    jsvc \
    -stop \
    -pidfile $PID_FILE \
    org.apache.catalina.startup.Bootstrap
    exit $?
    ;;
    restart)
    #
    # Restart Tomcat
    #
    $0 stop
    sleep 2
    $0 start
    ;;
    *)
    echo "Usage tomcat start/stop"
    exit 1;;
    esac

    Или, скачайте его отсюда.

    Сделаем его исполняемым:
    sudo chown root:root /etc/init.d/tomcat
    sudo chmod 755 /etc/init.d/tomcat


    Для проверки работы запустим tomcat:
    sudo /etc/init.d/tomcat start


    Сервер должен запуститься на 80 порту. Для остановки используем следующую команду:
    sudo /etc/init.d/tomcat stop

  • Создадим ссылки на скрипт для автоматического запуска и останова:
    sudo update-rc.d tomcat defaults


    Перезагружаем сервер:
    sudo shutdown -r now


    Теперь tomcat будет запускаться автоматически.



понедельник, 8 сентября 2008 г.

Установка Ubuntu Server: настройка сети виртуальной машины

По-умолчанию, для связи виртуальной машины с сетевым интерфейсом хост-системы используется трансляция сетевых адресов - NAT. Это наиболее простой способ, но он обладает серьезным недостатком - из виртуальной машины вы можете обратится куда-угодно, а вот вашу машину никто в сети не увидит. Если вы хотите использовать виртуальную машину в качестве сервера, то это может стать серьезной проблемой.

Выходом из этой ситуации является создание хост-интерфейса.

Создание хост-интерфейса в Ubuntu Linux:

Для начала нужно установить два пакета, необходимых для создания сетевого моста и TAP-интерфейса:
sudo apt-get install bridge-utils uml-utilities

Для конфигурирования моста, нам необходимо сделать две вещи на хост-системе: создать мост и объявить реальный сетевой интерфейс, который вы хотите добавить в мост; и, затем, объявить виртуальный интерфейс.

Для создания моста необходимо отредактировать файл /etc/network/interfaces

sudo gedit /etc/network/interfaces
auto eth0
iface eth0 inet manual

auto br0
iface br0 inet dhcp
bridge_ports eth0 vbox0

# The loopback network interface
auto lo
iface lo inet loopback

br0 - это имя нашего моста, вы можете использовать любое другое. Для того, чтобы изменения вступили в действие необходимо перезапустить сеть:
$sudo /etc/init.d/networking restart

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

Для создания виртуального интерфейса для virtualbox отредактируем файл /etc/vbox/interfaces

sudo gedit /etc/vbox/interfaces

# Each line should be of the format :
# <interface name> <user name> [<bridge>]
vbox0 <andrey> br0
vbox1 <andrey> br0
...

"vbox#" - это имя виртуального интерфейса. Вы можете определить здесь столько интерфейсов, сколько пожелаете.

Для того, чтобы изменения вступили в силу, необходимо перезапустить сеть virtualbox:
sudo /etc/init.d/vboxnet restart

Теперь добавим новую сетевую карту к нашей машине:



В файле /etc/network/interfaces виртуальной машины пропишем вторую сетевую карту:



Перезапускаем сеть:
sudo /etc/init.d/networking restart

Проверяем:
sudo ifconfig|more



Теперь мы можем обращаться к нашей виртуальной машине из внешней сети через интерфейс eth1.

Оригинал шпаргалки смотреть здесь.

Установка Ubuntu Server: ставим Java

Java - объектно-ориентированный язык программирования, разрабатываемый компанией Sun Microsystems с 1991 года. "Написано на Java - работает везде!" - вот основной девиз этого языка. Программы написанные на Java являются кроссплатформенными, т.е. работают в различных операционных средах без перекомпиляции. Такую переносимость обеспечивает виртуальная машина Java (Java Virtual Machine - JVM).
Для большинства программ на java требуется установить только среду исполнения - JRE, однако, если вы хотите разрабатывать программы на java или запустить сервер приложений, то необходимо установить комплект разработчика - JDK.

Устанавливаем комплект разработчика java:
sudo apt-get install sun-java6-jdk -y


Если в системе установлено несколько java-машин, тогда необходимо указать какую именно мы хотим использовать по-умолчанию. В этом нам поможет команда update-java-alternatives:
  • Получить список установленных java-машин:
    sudo update-java-alternatives -l


    Команда выведет список установленных java-машин и их расположение:
    java-6-openjdk 1061 /usr/lib/jvm/java-6-openjdk
    java-6-sun 63 /usr/lib/jvm/java-6-sun

    OpenJDK - это полностью свободная java от sun, но, к сожалению, пока нельзя сказать, что она отличается стабильностью. Поэтому будем пока использовать стабильную и проприетарную машину от Sun.

  • Сделать java-машину от Sun используемой по-умолчанию:
    sudo update-java-alternatives -s java-6-sun




Проверяем правильность установки:

java -version


В ответ должны получить что-то вроде:
java version "1.6.0_07"
Java(TM) SE Runtime Environment (build 1.6.0_07-b06)
Java HotSpot(TM) 64-Bit Server VM (build 10.0-b23, mixed mode)


Также необходимо прописать переменные окружения JAVA_HOME и JDK_HOME. Для этого добавьте в файле /etc/environment:
JDK_HOME="/usr/lib/jvm/java-6-sun"
JAVA_HOME="/usr/lib/jvm/java-6-sun"

Установка Ubuntu Server: ставим PostgreSQL


PostgreSQL - по-настоящему свободная СУБД. Быстрая, надежная, с богатыми возможностями. Используется такими проектами как Zabbix, DSpace и кучей других.

Собственно, сама установка укладывается в одну команду:
sudo apt-get install postgresql postgresql-contrib postgresql-client -y


Все, СУБД postgresql установлена и функционирует.
Однако, собственно для работы с БД необходимо сделать ещё несколько вещей:
  • Установить пароль для суперпользователя postgres:
    Становимся пользователем postgres:
    sudo su postgres

    Запускаем терминал к нашей СУБД:
    psql

    Меняем пароль пользователя:
    alter user postgres with password 'НОВЫЙ ПАРОЛЬ';

    Например:
    alter user postgres with password '[eqzdfvcrf;ecdjqgfhjkm';


  • Импортируем скрипт, включающий улучшенные функции логирования и мониторинга для pgAdmin:
    \i /usr/share/postgresql/8.3/contrib/adminpack.sql

    Закрываем терминал и выходим из сеанса postgres:
    \q
    exit


  • Разрешаем доступ к нашей СУБД с других машин. Для этого нам небходимо отредактировать два файла (необходимы права root).
    Файл /etc/postgresql/8.3/main/postgresql.conf
    Ищем секцию CONNECTIONS AND AUTHENTICATION и меняем строку
    #listen_addresses = 'localhost'
    на
    listen_addresses = '*'




    Файл /etc/postgresql/8.3/main/pg_hba.conf
    Идем в самый конец файла и ищем строки:
    # IPv4 local connections:
    host all all 127.0.0.1/32 md5

    127.0.0.1/32 это маска разрешенной сети (32 - это число значащих бит в маске, т.е. в данном случае - все), добавляем строку с маской вашей сети, например:
    host all all 192.168.1.0/24 md5
    , т.е. будут разрешены все соединения с адресов 192.168.1.1 и по 192.168.1.254.
    Или, для большей безопасности, добавляете конкретную машину:
    host all all 192.168.1.3/32 md5




  • Перезапускаем службу:
    sudo /etc/init.d/postgresql-8.3 restart




пятница, 5 сентября 2008 г.

Установка Ubuntu Server: ставим дополнения гостевой ОС

VirtualBox мне нравится все больше и больше.
Вышедшая на днях версия 2.0 не только поддерживает 64-разрядные ОС, но и нормально работает с серверным ядром. Так что пост от 23 июля "Установка Ubuntu Server: установка ядра generic" можно считать устаревшим.

Однако для комфортной работы с виртуальной машиной не хватает самой малости - установить дополнения ОС.
Установка этого набора драйверов несколько облегчает жизнь при работе с гостевой системой в графическом режиме (интеграция мыши) и не только (использование общих папок).

Перед установкой дополнений выполняем следующую команду:
sudo aptitude install build-essential linux-headers-`uname -r`


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

Далее подключаем CD с дополнениями:

Монтируем CD-ROM:
mount /cdrom
cd /cdrom

И запускаем файл предназначенный для вашей системы:


sudo ./VBoxLinuxAdditions-amd64.run
для 64-битных систем, или
sudo ./VBboxLinuxAdditions-x86.run
для 32 битных.

После установки необходимо перезагрузится:
sudo shutdown -r now


Для чего все это?

Установка дополнений гостевой ОС дает возможность использования общих папок. Т.е. создание папок общих для хост системы и гостевой системы. Когда необходимо что-нибудь скопировать в виртуальную машину (или, наоборот, что-либо забрать с виртуальной машины) - совершенно необходимая вещь.

Для создания общей папки выбираем соответствующий пункт меню:



В открывшемся диалоге, жмем плюсик:


Необходимо указать путь к общей папке в вашей хост-системе, имя папки (любое удобное для вас имя) и можно поставить галочку "Создать постоянную папку", тогда эта папка будет доступна и после перезапуска виртуальной машины.


Для подключения общей папки в виртуальной машине, необходимо смонтировать его:
sudo mount -t vboxsf <имя виртуальной папки> <путь монтирования>, т.е. что-то вроде
sudo mount -t vboxsf temp /mnt


Теперь папка /mnt виртуальной машины будет общей с папкой /space/temp хост-системы.

пятница, 1 августа 2008 г.

Установка Ubuntu Server: базовая настройка

Самое необходимое:

Самая нужная программа в консоли - это файловый менеджер Midnight Commander. Можно конечно файлы копировать командами интерпритатора, а редактировать с помощью vim. Но учтите, что в этом случае у вас вырастет борода и пивной живот (девушек тоже касается).

В убунту врожденная неприязнь к русскому шрифту в консоли. После установки все сообщения печатаются крякозябрами (мы же установили русскую локализацию). Чтобы этого избежать перед выполняемой командой необходимо дописать LANG=C, тогда все сообщения будут на английском языке.

LANG=C sudo apt-get install mc -y


Руссификация консоли:

Для исправления крякозябр на удобочитаемый текст, нужно переконфигурировать пакет console-setup:
LANG=C sudo dpkg-reconfigure console-setup


  • Выбираем тип используемой клавиатуры. Если есть кнопки 'Windows', то подойдет стандартная 105-клавишная.

  • Раскладка клавиатуры - 'Russia - Winkeys'.
  • Какими клавишами переключаться на другую раскладку (logo - это и есть та самая кнопка 'Windows').
  • Временный переключатель. Другая раскладка будет включаться при удерживании заданного сочетания клавиш. Пригодится если вам часто нужно набирать короткие слова на английском в русском тексте.
  • Клавиша - модификатор. Нужна для раскладок со сложными символами (для всяких надчеркиваний, завитушек и прочего).
  • Композитная клавиша - указывает, что после её нажатия будет ожидаться код сивола. Используется для ввода символов отсутствующих на клавиатуре.
  • Выбираем кодировку по-умолчанию. Выбор UTF-8 позволит избежать многих проблем. К тому же - это международный стандарт.

  • На следующем экране выбираем набор символов. Ищем строчки со словом Cyrillic. Третий набор Combined позволяет установить шрифт Terminus, который несколько приятнее стандартного.
  • Выбираем шрифт.


  • Размер шрифта. Размеры вида NNxMM не поддерживаются. Поэтому выбор только из 14 и 16.

  • Задаем для каких консолей следует использовать заданные настройки (оставляем по-умолчанию).


Если все сделано правильно, то при запуске mc, его интерфейс будет на русском.

Продолжение следует...

четверг, 24 июля 2008 г.

Установка Ubuntu Server: если нет интернета

Хорошо когда есть интернет: нужно установить какую-нибудь программу, пишешь
apt-get update (обновить список пакетов), а затем
apt-get install чего-нибудь (установить пакет)

И никаких мучений.

А вот когда интернета нет? Как быть?
Ваша система будет, в лучшем случае, знать только те пакеты, которые есть на установочном диске. А там нет даже midnight commander'а. Без него-то совсем туго придется.

Выходов есть несколько.
1. Скачать себе весь репозиторий пакетов. Ну или если повезет, взять у друзей штук 5 DVD со срезом.

2. Воспользоваться утилитами навроде APTonCD или apt-zip. Однако в первом случае нужно иметь две идентичных системы, одна из которых имеет выход в интернет. А apt-zip я, честно говоря, не использовал, может и зря конечно, посмотрю на досуге.

3. Решение которое мне показалось наиболее простым. Скорее всего его можно использовать совместно с apt-zip.
Итак нужно иметь две системы с одинаковой архитектурой (т.е. обе x86 или x86_64). Они не обязаны быть идентичными.

  • На системе с выходом в интернет обновляем список пакетов:
    sudo apt-get update


  • Копируем на переносной носитель (флешка, cd-rom) следующие каталоги: /etc/apt, /var/lib/apt и можно, но необязательно /var/cache/apt. В последнем хранится кэш скачанных пакетов.
  • Заменяем этими каталогами соответствующие им на системе без интернета. Теперь наша система будет знать о существующих пакетах и обновлениях.

  • Для создания списка закачек делаем:
    sudo apt-get install ИМЯ_ПАКЕТА --print-uris -y > ИМЯ_ФАЙЛА

    (вот тут, наверное, лучше использовать apt-zip).

  • Закачиваем пакеты перечисленные в файле, полученном на предыдущем шаге.

  • Помещаем закачанные пакеты в каталог /var/cache/apt/archives.

  • Выполняем команду sudo apt-get install ИМЯ_ПАКЕТА -y.
Проще способа я, к сожалению, не обнаружил.

Продолжение следует...

среда, 23 июля 2008 г.

Установка Ubuntu Server: установка ядра generic

В связи с выходом VirtualBox 2.0 данный пост можно не читать - в новой версии прекрасно работает серверное ядро.


Итак, при установке Ubuntu Server на виртуальную машину, мы получили такую, удручающую, картину:


Серверное ядро в виртуальной машине не работает. Аналогичный результат я получил и в VMware.
Для того чтобы установить generic ядро, проделываем следующее:

1. Монтируем к виртуальной машине диск, с которого мы устанавливали ubuntu.
2. Перезагружаем виртуальную машину, но на этот раз в начальном меню выбираем пункт "Восстановить систему".


Режим восстановления сначала мало отличается от установки системы. По крайней мере вопросы будут теже самые. До тех пор, пока не дойдете до:


Здесь перечислены разделы нашего диска:
/dev/sda1 - корневой раздел '/'
/dev/sda2 - swap
/dev/sda3 - /tmp
/dev/sda4 - расширенный раздел
/dev/sda5 - логический раздел /var

Выбираем корневой раздел /dev/sda1.


И запускаем в этом разделе оболочку (верхний пункт меню), в следующем окне выбираем "Продолжить".


Маленькая решетка внизу - это приглашение командной строки.

Фактически мы загрузились с ядра generic, взяв его с компакт диска и подмонтировали корневой раздел нашего диска. Осталось только установить ядро.

Для установки нам потребуется подключить ещё раздел /var, для этого пишем:
mount /dev/sda5


Если при установке системы у Вас небыло доступа к интернету, то ядро можно установить с установочного диска. Для этого проделываем следующее.
  • Добавляем наш компакт диск как источник программного обеспечения:
    apt-cdrom add

    Утилита попросит вставить диск и нажать ENTER. Диск у нас уже вставлен, поэтому сразу жмем ENTER.
  • Монтируем CD-ROM в систему:
    mount /cdrom

  • и устанавливаем generic-ядро:
    apt-get install linux-generic


Если при установке доступ к интернету был, то список пакетов был обновлен и ядро все равно будет грузится с основного репозитория.

Поэтому можно сразу сделать:
mount /dev/sda5
apt-get install linux-generic



Отвечаем 'Y' и ждем окончания установки.

Для выхода из оболочки набираем
exit
, а в появившемся меню - Перезагрузка системы (не забудьте извлечь диск из CD-ROM'а, иначе загрузка пойдет с него).
Когда появиться таймер обратного отсчета загрузчика GRUB, нажмите ESC.


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

Продолжение следует...

понедельник, 21 июля 2008 г.

Установка Ubuntu Server: установка в виртуальной машине

Диск вставлен, загрузка началась:


Выбираем родной русский язык.

Жмем на "Install Ubuntu Server" (видимо у переводчиков были трудности с этой строчкой).

Пара секунд и начинается установка:


Выбираем страну проживания и клавишу переключения раскладок:


Далее начнется загрузка необходимых библиотек, определение оборудования и прочие мелочи.
Экран настройки сети:

Задаем сетевое имя нашего компьютера. Под этим именем наш компьютер будет виден в сети.


Выбираем свой часовой пояс.


При установке на виртуальную машину можно с чистой совестью выбрать пункт "Авто - использовать весь диск", однако мы, для общего развития выберем пункт "Вручную":


Выбираем наш виртуальный диск и даем согласие на создание новой таблицы разделов (в реальном случае это означает, что если на диске до этого существовали какие-либо разделы, то все они будут уничтожены):


Соглашаемся - жмем "ДА".


Ставим курсор на "СВОБОДНОЕ МЕСТО" и жмакаем ENTER,


Выбираем "Создать новый раздел".
Вообще планируется разметить диск так:
1. / - корневой раздел(4GB)
2. swap - раздел подкачки(576MB)
3. /tmp - раздел для файловой системы(1GB)
4. /var - раздел для рабочих файлов(3GB)

Можно ещё создать отдельные разделы для /boot, /home и т.п., а можно и не создавать ;-)

и задаем размер раздела.

Определяем раздел как "Первичный"

и размещаем его в начале диска:


Точку монтирования задаем "/", т.е. этот раздел будет корневым. Метим раздел загрузочным, и выбираем пункт "Настройка раздела закончена".

Далее в окне разметки диска ставим курсор на свободное место и создаем новый раздел размером 1.5 * размер оперативной памяти. В нашем случае это 576MB. Определяем его как первичный в начале диска (т.е. он будет следовать сразу за корневым разделом).
В пункте "Использовать как" выбираем "раздел подкачки".

И заканчиваем разметку раздела.

Затем подобным образом создаем ещё один раздел на 1GB, точку монтирования указываем "/tmp". А на оставшемся свободном месте создадим логический раздел, который примонтируем в каталог "/var". В итоге получим следующую картинку:

Выбираем пункт "Закончить разметку и записать изменения на диск". На вопрос "Записать изменения на диск?" выбираем "Да".

Сразу вслед за этим запишется созданная таблица разделов и начнется установка системы:


После установки системы необходимо создать учетную запись пользователя. В отличии от Debian - это не пользователь root. Однако этот пользователь будет входить в группу admin, т.е. будет иметь возможность запускать команды из-под sudo.


Задаем имя пользователя, а в следующих окнах - логин и пароль.


В следующем окне настраиваем параметры прокси-сервера, если имеется прямой доступ в интернет, то поле оставляем пустым:


Если выход в интернет настроен, то установщик АВТОМАТИЧЕСКИ скачает необходимые обновления, поэтому если вы нехотите тратить трафик, или хотите установить обновления самостоятельно, то отключите сеть.


В этом окне вы можете выбрать базовые задачи для вашего сервера. (LAMP - это связка Linux, Apache, MySQL и PHP). Однако, как показывает практика, лучше все необходимое установить самим. Потом. По мере надобности.
Поэтому жмем "Продолжить".


Ну вот теперь точно все. Отключаем CD-ROM, чтобы загрузка шла с жесткого диска и жмем "Продолжить". Наша виртуальная машина уйдет в свою первую перезагрузку и мы наконец-то увидим работающий ubuntu server....


Как-бы не так!
Оказывается серверное ядро не умеет работать в виртуальной машине. Придется установить общее (generic) ядро. Но об этом читайте в следующий раз.

Если вы используете VirtualBox 2.0 или выше, то серверное ядро будет прекрасно работать, а следующий пост можно пропустить.


Продолжение следует...