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 поправить следующий раздел:
В этом случае будет все гуд.
Продолжение следует…
Всем удачи!
2 комментария
Sorry, the comment form is closed at this time.
«Порт может быть закрыт фаерволом (у меня не закрыт пока) это на всякий случай необходимо проверить:
ockstat -4 | grep :80»
Поправьте очепятку плиз 🙂 «sokstat»
спасибо за статью!
комментарий от dmitry1975 | 15.06.2011
ок. спасибо.
комментарий от khlebalin | 20.06.2011