Blog of Khlebalin Dmitriy

(Дорогу осилит идущий…)

Web-сервер (FreeBSD + Apache2 + PHP +MySQL + ProDTPd + SVN + Trac) (часть 1).

VPN (mpd5)>>DNS (bind 9.x)>>Kernel>> Squid (NAT)>>Postfix (Mail)>>Samba>>ftp>>DHCP>>Apache+PHP+MySQL (web)

В своих предыдущих обзорах я уже частично касался настройки веб сервера, но это было лишь частично, теперь пришло время полноценно заняться самим веб сервером. Многократно использовал данную связку на виндовой машинке (winxp) и на серваке (win2003), думаю многие меня сейчас прокляли, но поверьте мне при нормальной настройке сервака, все это работает ни грамма ни хуже, чем на юнихе или линухе, за пару лет сервак с апачем на винде упал всего один раз (и то из-за того, что кончилось место на винте), ну это все лирика. А теперь к делу: так как в данный момент я всего себя посвятил изучению юниха, то пришло время прикрутить все тоже самое на юниховом серваке.

Ни для кого не секрет что PHP и MySQL на данный момент являются практически 70%-й составляющей всех интернет проектов, за счет легкости в освоении, переносимости и прочем.  И 90% хостинговых компаний предлагают именно эту среду для своих клиентов,

Но, для начала, давайте определимся с предполагаемым функционалом нашего web-сервера:

  • Apache2, ввиду того что является практически стандартом “де-факто” на 90% процентах интернет серверов. Установлен будет без фронтенда, т.к. данный web-сервер все-таки рассчитан на небольшую группу программистов.
  • PHP, ну тут собственно и говорить ничего не надо. Установим и его, и необходимые расширения.
  • MySQL, тоже практически стандарт “де-факто” на 90% интернет ресурсах.
  • PhpMyAdmin, веб среда для управления базами данных. Тут тоже обойдемся без объяснений, скорее всего вы знаете, что это такое.
  • ProFTPd в качестве ftp сервера с хранением пользователей, логов и прочих прелестей в MySQL
  • SVN – контроль версий, в групповой работе без него никуда!
  • Trac – веб-морда к SVN с кучей всяких вкусностей.
  • Какая-нибудь web-морда для управления сервером, ибо ковыряться без конца в конфигах из консоли.

В качестве серверной OC будем использовать FreeBSD 8.1 на моей тестовой виртуалке.

 

Предварительная настройка:

Попав в консоль вы заметите некое неудобство стандартного приглашения csh\tcsh, но это легко поправим, и поэтому я предлагаю использовать свой вариант csh\tcsh prompt, код которой приведен ниже:

set prompt=»%{^[[40;33;1m%}[%T] %M %{^[[40;32;1m%} %/ >»

Куда все это вписывать? В .cshrc

Набираем в консоли ee /root/.cshrc и в появившемся редакторе вместо стандартного set prompt вписываем вышенаписанную строчку. Нажимаем CTRL+C, в command пишем exit и разлогиниваемся из рута. Снова su, логин под рутом и видим, как преобразилось приглашение J Мелочь, а удобноJ

Далее, меняем hostname нашей машины на что-нибудь более внятное, например на dev.local. Делается это таким образом:

hostname dev.local

Снова перелогиниваемся и смотрим результат в приглашении csh

Далее… Текстовый редактор… Я привык уже к ee.

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

portsnap fetch update

Оно начинает что-то качать, шуршать, ждем окончания… Все зависит от скорости вашего интернета. В моем случае 63мб качались около 10 минут.

По окончании делаем

portsnap extract && portsnap fetch update

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

Собственно продолжаем далее. Начинаем потихонечку настраивать систему, а именно настроим функционал для сборки ПО.

Для этого идем в директорию /etc и открываем там файл make.conf Если его там нет ( а я вижу что его там нет)

то создаем его командой ee /etc/make.conf  и дописываем в него следующие строки.

WITHOUT_X11=YES

WITHOUT_JAVA=YES

MAKE_KERBEROS4=false

MAKE_KERBEROS5=false

NO_BIND=true

NO_SENDMAIL=true

NO_GAMES=true

PERL_VER=5.8.9

PERL_VERSION=5.8.9

PERL_ARCH=mach

NOPERL=no

WITH_PERL=yes

WITHOUT_PERL=no

WITH_XCHARSET=all

FORCE_PKG_REGISTER=yes

Установка Apache2.

Ставим Apache2.

cd /usr/ports/www/apache22 && make install clean && rehash

Откроется окно настроек, в котором можно оставить все по умолчанию, но я для себя убрал поддержку IPv6 (собственно еще ни разу не пользовался и не настраивал данный протокол, почему? – сказать сложно, но так уж сложилось). В процессе сборки и установки будет появляться несколько подобных окошек, оставляем все по умолчанию.

После установки начинаем настраивать Apache2

Для начала запишем Apache2 в автозагрузку:

echo ‘apache22_enable=”YES”’ >> /etc/rc.conf

Проверим что все добавилось:

Ну и попробуем запустить сам Apache2.

/usr/local/etc/rc.d/apache22 start

Но не тут то было у меня апач наотрез отказался стартовать

 

В итоге пришлось сделать следующее:

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

Проверяем

Решение простое  : наш сервер не знает какой IP присвоить 

Правим файл hosts : bsd# ee /etc/hosts

192.168.44.100 – мой внутренний айпишник

Далее правим httpd.conf

ee /usr/local/etc/apache22/httpd.conf

 

Проверяем

Порт может быть закрыт фаерволом (у меня не закрыт пока) это на всякий случай необходимо проверить:

ockstat -4 | grep :80

Если закрыт, то вот сюда надо добавить некие строки:

 Ee /etc/pf.conf 

pass in on $ext_if proto tcp from any to 202.4.2.1 port 80 flags S/SA synproxy state

ребутаем /etc/rc.d/pf reload

то можем быть уверенными в том что сервера стартанул и готов обрабатывать запросы.

Ну и для пущей убедительности пробуем открыть сервер по http, обратившись по адресу http://your_ip (в моем случае это 192.168.44.100) .В ответ мы должны увидеть “It works!” Если это так, значит все отлично, если нет, разбираемся в логах и идем в гугл!

Но у меня наконец все заработало. Честно сказать я так и не понял, почему это не работало, но чтоб решить данную проблему мне потребовалось немало времени.

 

Перенастроим пути до корневой директории web-сервера на /usr/web/www. Для этого сделаем следующее:

mkdir –p /usr/web/www

chown –R www:www /usr/web/www

chmod –R 777 /usr/web/www

Следом откроем /usr/local/etc/apache22/httpd.conf и поменяем пути до корневой директории в конфиге.

И как итог перезапусти Apache2 командой:

/usr/local/etc/rc.d/apache22 restart

Снова зайдем по адресу http://your_ip и увидим пустую директорию, но сразу ее увидеть не получится: высветится окошко что отсутствую права на просмотр. Для того чтоб они появились надо здесь же в httpd.conf поправить следующий раздел:

 

В этом случае будет все гуд.

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

Всем удачи!

15.06.2011 Posted by | linux and unix | 2 комментария