Создание Web и почтового сервера во FreeBSD

Published on Март 30, 2009 by   ·   Комментариев нет

Создание вебсервера для php5 + apache2 + freetds 7.0 и почтового сервера
postfix/imap на одной машине

Заголовок: Возникла необходимость настроить в корпоративной сети
отдельную станцию на FreeBSD, для работы веб-сайта и почтового сервера.
Таким образом, чтобы

а)сайт полноценно обрабатывал и отображал данные в кириллице,
находящиеся на удалённом сервере mssql2005 в локальной сети

б) модуль php взаимодействовал с графическими библиотеками для чтения
редакции больших изображений изображений

в) сервер мог предоставлять различные права для работы с ftp различным
клиентам (системным пользователям).

Иными словами: Возникла необходимость на системе freebsd 6.3 доставить
следующие дистрибутивы (я выбрал такую последовательность):

1.openssl
2.freetds
3.apache2
4.postgresql
5.php5
6.postfix
7.ssh2
8.proftpd

источники :
http://opennet.ru/base/net/postfix_mail_guide.txt.html
http://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/
http://www.freetds.org/userguide/config.htm
http://wiki.centos.org/HowTos/postfix_restrictions

Установка оперативной системы FeeBSD-6.3.

Основы установки системы подробно описаны в документации на сайте http://freebsd.org
Там же скачивается дистрибутив.

Я ограничился минимальными конфигурациями для инсталяции:
Во всплывающих окнах инсталяционной программы указал :

         Country Selection - Russian Federation
         System Console Keymap - Russian KOI8-R
         Sysinstall main menu  - express

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

В окне 'Choose distributions' отмечаю опции :

  Developer,Kern-developer, User

В окне choose installation media выбираю cd и нажимаю ок и ожидаю
поздравлений по завершении инсталяции, после чего отказываюсь от всех
дополнительных настроечных визитов, выхожу из программы инсталляции,
соглашаюсь с перезагрузкой и вынимаю диск.

Таким образом получаю систему с минимальными настройками

После перезагрузки ввожу логин: root и получаю полный доступ к
дальнейшей работе с системой freebsd.

Следующим действием мне необходимо

а)задать пароль для администратора root
б)ввести нового супер-пользователя, для работы в системе с корневыми допусками
в)прописать основные настройки, необходимые для дальнейших инсталляций.

Пароль для администратора root ввожу следующей командой:

        # passwd root
        New password: ******
        Retype new password: ******

Ввожу нового пользователя коммандой:

        # adduser
        Username: kmg
        Full name: kmg
        Uid:
        Login group [kmg]:
        Default group is kmg.Invite kmg into other groups[]: wheel

(группа wheel наделяет пользователя kmg правами суперпользователя, под
которыми в дальнейшем будет проводиться инсталляции всех модулей)

После чего мне нужно только задать и поддтвердить пароль для нового
пользователя (все остальные настройки оставляем заданными по умолчанию).

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

Для этого
1) редактирую файл /etc/rc.conf с помощью утилиты ee

   # ee /etc/rc.conf

и вписываю следующие строки

 inetd_enable="YES"

выхожу из редакции и захожу в настроечный файл сервера inetd

  # ee /etc/inetd.conf

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

  ftp streem tcp nowait ..........

теперь при запуске системы у меня будет запущен сервер ftp
Выхожу из настройки inetd и проверяю свои сетевые интерфейсы коммандой:

  # ifconfig

Узнаю, что кроме локального интерфейса lo0 у меня есть ещё сетевой адаптер realtec под именем rl0. Открываю редактором знакомый уже файл

   # ee /etc/rc.conf

и прописываю локальный адрес для сетевой карты , адрес шлюза для выхода
в интернет (или данные, указанные провайдером, если машина напрямую
смотрит в интернет) и имя машины kmg.towar.ru (имеется доменное имя
towar.ru). Для этого добавляю строки

        ifconfig_rl0="inet 192.168.0.2 netmask 255.255.255.0"
        hostname="kmg.towar.ru"

сразу оговорюсь, что у меня провайдер выделяет нам кусок подсети из
нескольких внешних адресов, и настраивает обратную зону так, чтобы
обратная зона для одного внешнего адреса точно соответствовала названию
сайта http://www.towar.ru (необходимо ,например, если apache запускается
с поддержкой ssl), а обратная зона другого врешнего адреса соответсвовала
хосту почтового сервера mail.towar.ru, который находится на этой же
машине ( это для того, чтоб очень строгие сервера
могли не находили изьян при проверке соответствий данных протокола
smtp). Таким образом мне нужно прописать на тот же сетевой интерфейс
ещё 2 внешних ip и попросить провайдера прописать на эти ip имена
хостов в обратной зоне

        ifconfig_rl0_alias0="xxx.xxx.xxx.xxx netmask 255.255.255.248"
        ifconfig_rl0_alias1="xxx.xxx.xxx.xxx netmask 255.255.255.248"

выхожу из редактора и редактирую файл для запроса к серверу имён

        # ee /etc/resolv.conf

(скорее всего такого файла пока нет — редактор его создаст) у меня есть
собственный dns server, у кого его нет — должен указать адреса, данные
провайдером

        domain towar.ru
        nameserver 192.168.0.1

Перезагружаю машину и вхожу под пользователем kmg, после чего коммандой
su и указанием пароля для root становлюсь суперпользователем и могу
продолжать инсталляцию (не забывая, однако, пропинговать что нибудь
вроде yandex.ru, чтобы убедиться в правильности сетевых настроек и
доступов).

Убеждаюсь, что у нас существуют директории /usr/src/sys /usr/ports

если их не существует, то вставляю первый (у меня и единственный)
инсталляционный диск freebsd и запускаю комманду

    # sysinstall

в инсталляционном окне нажимаю

    Configure

следом — distributions
потом отмечаю — ports
потом — на всякий случай — src — all

(существуют более обоснованные и последовательные методы работы с
портами и исходными файлами , но для этого определяются задачи, отличные
от тех, которые я указал в начале статьи)

Для дальнейшего удобства я решил поставить текстовый редактор deco,
утилиту sudo (для работы с такими программами posgresql из оболочки nologin)
и утилиту gmake.
Ставится она просто из потров

            cd /usr/ports/misc/deco && make install clean
            cd /usr/ports/security/sudo && make install clean
            cd /usr/ports/devels/gmake && make install clean

Все конфигурационные опции — по умолчанию

Установка OPENSSL

Для того, чтоб не углубляться в конфигурации последующих дистрибутивов
со своими дополнительными указаниями или исправлениями я решил в самом
начале поставить openssl (после некоторых безуспешных попыток выполнить

microsoft antivirus software

свои задачи в другом порядке инсталляций).

         cd /usr/ports/security/openssl
         make OPENSSL_OVERWRITE_BASE=yes install

Установка FREETDS
——————

Необходим прежде всего для связки php5 и удалённого сервера mysql. Тут
нужно внимательно изучить возможности конфигурации php5 и freetds для
того, чтобы можно было отображать и правильно редактировать большие
тексты в кириллице на сервере mssql2005 через веб — интерфейс.

Такие как например карточка ростовской фирмы music_star http://towar.ru/ff/sfi~34923_48_138/sk~no-no/s1~/sg~1
или объявление китайских поставщиков http://www.towar.ru/bull~1044
конфигурации php-5.2.5 требуют следующего:

        ./configure -with-apxs2=/usr/local/apache2/bin/apxs --with-mssql=/usr/local/freetds \
            --with-pgsql=/usr/local --with-gettext=/usr/local --with-iconv-dir=/usr/local \
            --with-libxml-dir=/usr/local --with-gd=/usr/local --with-zlib \
            --with-freetype-dir=/usr/local --enable-gd-native-ttf --with-jpeg-dir=/usr/local \
            --with-png-dir=/usr/local --with-ttf=/usr/local --enable-sockets

нахожу в интернете файл php-5.2.5.tar.gz распаковываю, захожу в
директорию и читаю внимательно ./configure -help | grep (всё что
касается mssql, текстов, конвертеров, чарсетов, odbs и всего
сопутсовующего добра), так как мне необходимо сконфигурировать
freetds протокола не ниже 7.0 http://www.freetds.org/userguide/choosingtdsprotocol.htm
и задать в последующей конфигурации параметр

 client charset = cp1251


Приступаю к установке freetds
1)нахожу и скачиваю freetds-0.64.tar.gz распаковываю

      [cc lang="bash" tab_size="2" lines="-1"]  tar zxvf freetds-0.64.tar.gz

захожу — cd freetds-0.64

2) читаю конфигурации ./configure —help, одновременно сверяясь с описанием
http://www.freetds.org/userguide/config.htm

3)конфигурирую

./configure

предпочитаю держать все файлы в отдельной папке

 --prefix=/usr/local/freetds

так же добавляю опции

  --with-libiconv-prefix=/usr/local

(убеждаюсь, что библиотеки iconv мне необходимы как для php5, так и для
freetds) поэтому иду в порт и ставлю заранее

        cd /usr/ports/converters/iconv && make install clean
       /* cd /usr/ports/converters/libiconv && make install clean */
        --with-tdsver-7.0
        --with-unixodbc=/usr/local

(заранее инсталлирую из портов cd /usr/ports/databases/unixODBC && make install)

        --enable-msdblib
        /* --enable-sybase-compat */

4)make

   make install

5)Проверяю:

 /usr/local/freetds/bin/tsql -S 192.168.0.5 -p 1433 -U *** -P ******

Пока работает — несколько команд t — sql — читаю каракули с небольшой
тестовой таблицы, выхожу командой quit

6) изменяю конфигурации :
захожу в редактор deco и нахожу файл /usr/local/freetds/etc/freetds.conf
нахожу опцию [global] — меняю версию

        tds version = 7.0
        client charset = CP1251

повторяю проверку согласно пункту 5 — получаю знаки вопроса вместо
кириллицы — не смущаюсь — выхожу и приступаю к следующей настройке

Установка APACHE2

сервер httpd я устанавливаю в отдельную директорию — /usr/local/apache2
(в случае неудачи или невнимательности — я просто удаляю данную
директорию и инсталлирую заново)

1) нахожу скачиваю и распаковываю файл

 tar zxvf httpd-0.61.tar.bz2

2) захожу в созданную директорию и конфигурирую

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

        ./configure --prefix=/usr/local/apache2 --enable-cgi --enable-rewrite \
            --enable-so --enable-shared=max

3)make

  make install

4)и соответственно запускаю

 /usr/local/apache2/bin/apachectl start

5)захожу снаружи по ip http://192.168.0.2 и получаю дефолтовое
приветствие сервера apache
Теперь нужно сделать стартовый файл для сервера apache
для этого я захожу в директорию

 cd /usr/local/etc/rc.d

создаю и редактирую файл

 ee apache.sh

где пишу следующие строки

        #!/bin/sh
        case "$1" in
        start)
        /usr/local/apache2/bin/apachectl start
        ;;
        stop)
        /usr/local/apache2/bin/apachectl stop
        ;;
        esac
        exit 0

обращаем данный файл в исполняемую программу

  chmod +x apache.sh

соответственно редактируем

        ee /etc/rc.conf и добавляем туда строку
        apache_enable="YES" - перезагружаем сервер и проверяем запущен ли apache
        ps -ax|grep httpd

Установка POSTGRESQL

Установку и настройку базы данных postgresql я выполнил почти в
соответсвии с рекоммендациями данной статьи http://opennet.ru/base/net/postfix_mail_guide.txt.html

  cd /usr/ports/databases/postgresql80-server
        make install

конфигурации по умолчанию

 ee /etc/passwd

нахожу строку с пользователем pgsql и меняем оболочку /bin/sh на /usr/sbin/nologin
следующей коммандой запускаю первичную инициализацию базы данных

 sudo -u pgsql initdb -D /uasr/local/pgsql/data

создаю редактором стартовый файл

        cd /usr/local/etc/rc.d
        ee postgresql.sh

в него заношу следующие строки

        #!/bin/sh
        echo "POSTGRESQL" $1
        /usr/local/bin/sudo -u pgsql /usr/local/bin/pg_ctl -D /usr/local/pgsql/data \ $1
        exit

обращаем данный файл в исполняемую программу

        chmod +x postgresql.sh

перезапускаю машину и проверяю как работают процессы apache и postgresql

если всё работает — можно приступать к следующей ступени

УстановкаPHP5

задача — удачно сконфигурировать php примерно так:

        ./configure
         --with-apxs2=/usr/local/apache2/bin/apxs

сервер apache2 был сконфигурирован с параметром -enable-so
проверяю ldd /usr/local/apache2/bin/httpd

        --with-mssql=/usr/local/freetds

установлен

        --with-pgsql=/usr/local

установлен

        --with-gettext=/usr/local

проверяю свои подозрения, что библиотека gettext уже имеется

         cd /usr/local/lib
         ls *text*

получаю список

        --with-iconv-dir=/usr/local

установлен ранее

        --with-libxml-dir=/usr/local


иду и устанавливаю cd /usr/ports/textproc && make install clean
[cc lang="bash" tab_size="2" lines="-1"]
        ---with-gd=/usr/local

устанавливаю cd /usr/ports/grephics/gd && make config &&
выбираю опции: X11, FONTCONFIG,ICONV, make install clean

        --with-zlib
        --with-ttf
        --enable-gd-native-ttf

        --with-jpeg-dir=/usr/local

устанавливаю cd /usr/ports/graphics/jpeg && make install clean

        --with-png-dir=/usr/local

устанавливаю cd /usr/ports/graphics/png && make install clean

        --enable-sockets

        make && make install

О настройке самой связки postgresql+postfix+imap по моему удачно
написано здесь: http://opennet.ru/base/net/postfix_mail_guide.txt.html

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

И ещё
О правилах ограничения smtp в настройках postfix для работы в
глобальной сети ничего проще и доступнее пока не находил чем тут http://wiki.centos.org/HowTos/postfix_restrictions

PS. ssh2 и proftpd я поставил из портов в самую последнюю очередь —
после того как машина была полностью подготовлена и прописана по сетевым
интерфейсам

zp8497586rq


































































































Смотрите также:

Readers Comments (Комментариев нет)

Comments are closed.



Exchange 2007

Проведение мониторинга Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 3)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Проведение мониторинга Exchange 2007 с помощью диспетчера System ... [+]

Практическое рассмотрение перехода с Exchange 2003 на Exchange 2007 (часть 1)

Введение В этой статье из нескольких частей я хочу показать вам процесс, который недавно использовал для перехода с существующей среды Exchange 2003 ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 2)

Если вы пропустили первую часть этой серии, пожалуйста, прочтите ее по ссылке Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (Часть ... [+]

Мониторинг Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 2)

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Мониторинг Exchange 2007 с помощью диспетчера System Center Operations ... [+]

Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 5)

Если вы пропустили предыдущие части этой серии статей, перейдите по ссылкам: Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 1) ... [+]

Установка и настройка Exchange 2007 из командной строки (Часть 3)

If you missed the previous parts in this article series please read: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 1)

Инструмент ExRCA Текущий выпуск инструмента предоставляется только в целях тестирования и оснащен 5 опциями: Тест подключения Outlook 2007 Autodiscover Тест подключения Outlook 2003 RPC ... [+]

Развертывание сервера Exchange 2007 Edge Transport (часть 5)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Развертывание сервера Exchange 2007 Edge Transport (часть 1) Развертывание ... [+]

Установка и настройка Exchange 2007 из командной строки (часть 2)

Если вы пропустили первую статью данного цикла, пожалуйста, перейдите по ссылке: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование интегрированных сценариев Using Exchange Server 2007 – часть 2: генерирование отчетов агента Transport AntiSpam Agent

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Использование интегрированных сценариев Using Exchange Server 2007 – часть ... [+]