The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Создание Web и почтового сервера во FreeBSD (web php apache freetds postfix)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: web, php, apache, freetds, postfix,  (найти похожие документы)
From: Григорьев Максим <kongo@towar.ru.> Newsgroups: email Date: Mon, 09 Feb 2009 17:02:14 +0000 (UTC) Subject: Создание Web и почтового сервера во FreeBSD ------------------- Создание вебсервера для 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 (после некоторых безуспешных попыток выполнить свои задачи в другом порядке инсталляций). 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 распаковываю 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 ---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 я поставил из портов в самую последнюю очередь - после того как машина была полностью подготовлена и прописана по сетевым интерфейсам

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
 
  • 1, den, 13:20, 01/03/2009 [ответить] [смотреть все]
  • +/
    А почему из портов не ставим.
    Оперативная система - этото как ? Насколько оперативная ?
     
  • 2, Happy_demon, 17:32, 24/09/2009 [ответить] [смотреть все]
  • +/
    а где про почту?
     
  • 3, simer, 18:31, 04/01/2010 [ответить] [смотреть все]
  • +/
    не в обиду, но по-деревенски написано как-то
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:





      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor