Создание вебсервера для 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
Там же скачивается дистрибутив.
Я ограничился минимальными конфигурациями для инсталяции:
Во всплывающих окнах инсталяционной программы указал :
Выбираю нужный диск и форматирую его полностью автоматически, не
вдаваясь в сложности.
В окне 'Choose distributions' отмечаю опции :
В окне choose installation media выбираю cd и нажимаю ок и ожидаю
поздравлений по завершении инсталяции, после чего отказываюсь от всех
дополнительных настроечных визитов, выхожу из программы инсталляции,
соглашаюсь с перезагрузкой и вынимаю диск.
Таким образом получаю систему с минимальными настройками
После перезагрузки ввожу логин: root и получаю полный доступ к
дальнейшей работе с системой freebsd.
Следующим действием мне необходимо
а)задать пароль для администратора root
б)ввести нового супер-пользователя, для работы в системе с корневыми допусками
в)прописать основные настройки, необходимые для дальнейших инсталляций.
Пароль для администратора root ввожу следующей командой:
Ввожу нового пользователя коммандой:
(группа wheel наделяет пользователя kmg правами суперпользователя, под
которыми в дальнейшем будет проводиться инсталляции всех модулей)
После чего мне нужно только задать и поддтвердить пароль для нового
пользователя (все остальные настройки оставляем заданными по умолчанию).
Теперь нам необходимо прописаться в локальной сети ,открыть доступ к
интернету и назначить сервер имён.
Для этого
1) редактирую файл /etc/rc.conf с помощью утилиты ee
и вписываю следующие строки
выхожу из редакции и захожу в настроечный файл сервера inetd
мне необходимо запустить ftp службу для скачивания дополнительных
дистрибутивов в процессе инсталляции (с указанных мной локальных машин
или из интернета). Для этого я раскомментирую первую строку в данном
настроечном файле
теперь при запуске системы у меня будет запущен сервер ftp
Выхожу из настройки inetd и проверяю свои сетевые интерфейсы коммандой:
Узнаю, что кроме локального интерфейса lo0 у меня есть ещё сетевой адаптер realtec под именем rl0. Открываю редактором знакомый уже файл
и прописываю локальный адрес для сетевой карты , адрес шлюза для выхода
в интернет (или данные, указанные провайдером, если машина напрямую
смотрит в интернет) и имя машины kmg.towar.ru (имеется доменное имя
towar.ru). Для этого добавляю строки
сразу оговорюсь, что у меня провайдер выделяет нам кусок подсети из
нескольких внешних адресов, и настраивает обратную зону так, чтобы
обратная зона для одного внешнего адреса точно соответствовала названию
сайта http://www.towar.ru (необходимо ,например, если apache запускается
с поддержкой ssl), а обратная зона другого врешнего адреса соответсвовала
хосту почтового сервера mail.towar.ru, который находится на этой же
машине ( это для того, чтоб очень строгие сервера
могли не находили изьян при проверке соответствий данных протокола
smtp). Таким образом мне нужно прописать на тот же сетевой интерфейс
ещё 2 внешних ip и попросить провайдера прописать на эти ip имена
хостов в обратной зоне
выхожу из редактора и редактирую файл для запроса к серверу имён
(скорее всего такого файла пока нет — редактор его создаст) у меня есть
собственный dns server, у кого его нет — должен указать адреса, данные
провайдером
Перезагружаю машину и вхожу под пользователем kmg, после чего коммандой
su и указанием пароля для root становлюсь суперпользователем и могу
продолжать инсталляцию (не забывая, однако, пропинговать что нибудь
вроде yandex.ru, чтобы убедиться в правильности сетевых настроек и
доступов).
Убеждаюсь, что у нас существуют директории /usr/src/sys /usr/ports
если их не существует, то вставляю первый (у меня и единственный)
инсталляционный диск freebsd и запускаю комманду
в инсталляционном окне нажимаю
следом — distributions
потом отмечаю — ports
потом — на всякий случай — src — all
(существуют более обоснованные и последовательные методы работы с
портами и исходными файлами , но для этого определяются задачи, отличные
от тех, которые я указал в начале статьи)
Для дальнейшего удобства я решил поставить текстовый редактор deco,
утилиту sudo (для работы с такими программами posgresql из оболочки nologin)
и утилиту gmake.
Ставится она просто из потров
Все конфигурационные опции — по умолчанию
Установка OPENSSL
Для того, чтоб не углубляться в конфигурации последующих дистрибутивов
со своими дополнительными указаниями или исправлениями я решил в самом
начале поставить openssl (после некоторых безуспешных попыток выполнить
свои задачи в другом порядке инсталляций).
Установка 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 требуют следующего:
нахожу в интернете файл php-5.2.5.tar.gz распаковываю, захожу в
директорию и читаю внимательно ./configure -help | grep (всё что
касается mssql, текстов, конвертеров, чарсетов, odbs и всего
сопутсовующего добра), так как мне необходимо сконфигурировать
freetds протокола не ниже 7.0 http://www.freetds.org/userguide/choosingtdsprotocol.htm
и задать в последующей конфигурации параметр
захожу — cd freetds-0.64
2) читаю конфигурации ./configure —help, одновременно сверяясь с описанием
http://www.freetds.org/userguide/config.htm
3)конфигурирую
предпочитаю держать все файлы в отдельной папке
так же добавляю опции
(убеждаюсь, что библиотеки iconv мне необходимы как для php5, так и для
freetds) поэтому иду в порт и ставлю заранее
(заранее инсталлирую из портов cd /usr/ports/databases/unixODBC && make install)
4)make
5)Проверяю:
Пока работает — несколько команд t — sql — читаю каракули с небольшой
тестовой таблицы, выхожу командой quit
6) изменяю конфигурации :
захожу в редактор deco и нахожу файл /usr/local/freetds/etc/freetds.conf
нахожу опцию [global] — меняю версию
повторяю проверку согласно пункту 5 — получаю знаки вопроса вместо
кириллицы — не смущаюсь — выхожу и приступаю к следующей настройке
Установка APACHE2
сервер httpd я устанавливаю в отдельную директорию — /usr/local/apache2
(в случае неудачи или невнимательности — я просто удаляю данную
директорию и инсталлирую заново)
1) нахожу скачиваю и распаковываю файл
2) захожу в созданную директорию и конфигурирую
Опытным путём я заключил, что решения вышеуказанных задач подойдут
следующие конфигурации.
3)make
4)и соответственно запускаю
5)захожу снаружи по ip http://192.168.0.2 и получаю дефолтовое
приветствие сервера apache
Теперь нужно сделать стартовый файл для сервера apache
для этого я захожу в директорию
создаю и редактирую файл
где пишу следующие строки
обращаем данный файл в исполняемую программу
соответственно редактируем
Установка POSTGRESQL
Установку и настройку базы данных postgresql я выполнил почти в
соответсвии с рекоммендациями данной статьи http://opennet.ru/base/net/postfix_mail_guide.txt.html
конфигурации по умолчанию
нахожу строку с пользователем pgsql и меняем оболочку /bin/sh на /usr/sbin/nologin
следующей коммандой запускаю первичную инициализацию базы данных
создаю редактором стартовый файл
в него заношу следующие строки
обращаем данный файл в исполняемую программу
перезапускаю машину и проверяю как работают процессы apache и postgresql
если всё работает — можно приступать к следующей ступени
УстановкаPHP5
задача — удачно сконфигурировать php примерно так:
сервер apache2 был сконфигурирован с параметром -enable-so
проверяю ldd /usr/local/apache2/bin/httpd
установлен
установлен
проверяю свои подозрения, что библиотека gettext уже имеется
получаю список
установлен ранее
устанавливаю cd /usr/ports/grephics/gd && make config &&
выбираю опции: X11, FONTCONFIG,ICONV, make install clean
устанавливаю cd /usr/ports/graphics/jpeg && make install clean
устанавливаю cd /usr/ports/graphics/png && make install clean
О настройке самой связки 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 я поставил из портов в самую последнюю очередь —
после того как машина была полностью подготовлена и прописана по сетевым
интерфейсам