Эта статья собрана из собственной шпаргалки, которую я составлял когда-то для себя. Предполагается, что читатель знаком с основами работы на FreeBSD и имеет навыки использования текстового редактора “ee”, а так же имеет представление о работе веб-сервера, препроцессора гипертекста PHP и баз данных MySQL. Знаком с терминами, используемыми в данной статье и не имеет претензий по орфографическому содержанию текста.
Я описываю установку и настройку веб-сервера в 4 этапа.
- Установка FreeBSD.
- Первоначальная настройка. Настройка SSH, FTP.
- Установка и настройка Apache, PHP, MySQL, phpMyAdmin.
- Окончательная настройка и работа с сервером.
Задача: Необходимо собрать веб-сервер в локальной сети для создания сайта с последующим переносом его на сторонний хостинг.
Бюджет: 0 рублей.
Средства: Настольный компьютер, художник.
Исходя из вышеизложенного, была выбрана последняя, на момент сборки сервера, версия ОС FreeBSD 8.2-RELEASE доступная на сайте freebsd.org. Т.к. наш сайт не имел ни каких требований к версиям ПО, я решил устанавливать последние версии Apache, PHP, MySQL доступные из портов.
Приступим.
1. Установка FreeBSD
Я думаю не стоит описывать процесс установки FreeBSD слишком подробно, поэтому коротко по пунктам…
Первое меню Country Selection
Выбираем страну. Я выбрал Russian Federation, она находиться под номером 182, и жмем OK.
System Console Keymap
Долго не думая выбираем Russia KOI8-R и OK.
Sysinstall Main Menu
Выбираем Standart
Далее редактор разделов FDISK просит нас разделить место. Я выбираю Use Entire Disk кнопкой “A” и созданный раздел freebsd ставлю загрузочным кнопкой “S”. После нажатия “S”, напротив раздела в поле Flags, появляется флаг “A” и выбираем Finish кнопкой “Q”.
Меню Install Boot Manager
Т.к. у меня будет установлена одна ОС, я выбираю None и жму OK.
Далее выскакивает программа Disklabel Editor. Я доверяю ей монтировать все по умолчанию и снова нажимаю “A” затем “Q”.
Меню Choose Distributions
Установщик предлагает нам выбрать необходимые дистрибутивы. Я не буду выбирать ни чего поэтому Exit и OK.
Choose Installation Media
В этом меню необходимо указать источник, из которого мы хотим установить FreeBSD. Мы хотим его установить с диска, образ которого предварительно был скачан с сайта FreeBSD и записан на болванку, поэтому выбираю CD/DVD и жму OK.
Установщик сообщает о том, что если мы продолжим установку, то потеряем данные с диска и вроде бы (не уверен в своем английском) рекомендует сделать бэкап. Жмем Yes.
Далее мы видим поздравление и пару советов, которые оставляем без особого внимания, и жмем OK. На все следующие вопросы установщика я отвечаю No и в конце получаю сообщение которое говорит что необходимо установить пароль для пользователя root. Жму OK и ввожу пароль пользователя.
Далее, отказываюсь от посещения меню конфигурации, отвечая No, на следующий вопрос и попадаю в меню sysinstall. Жму на кнопку Exit Install. В появившемся окне подтверждаю свой выбор, нажимая кнопку Yes. Достаю диск и нажимаю OK.
Компьютер уходит на перезагрузку и после этого мы увидим загрузку FreeBSD и приглашение к началу работы в виде строки login:
2. В серверной холодно и шумно – перейдем в кабинет (Настройка удаленного доступа)
Я подумал что было бы хорошо поскорее убраться от сюда к себе в кабинет и управлять сервером удаленно. Для этого мне необходимо настроить сеть, создать пользователя и запустить демон SSH. Заходим в систему под пользователем root. Теперь настроим сеть. Необходимо узнать как FreeBSD назвал интерфейс сетевой карты компьютера, для этого наберем
# ifconfig
и увидим все доступные интерфейсы. Мой назван ae0 и так как у меня в сети есть DHCP сервер, я просто говорю ему получить настройки от DHCP, добавив в файл /etc/rc.conf строку ifconfig_ae0=”DHCP”.
# echo 'ifconfig_ae0="DHCP"' >> /etc/rc.conf
И за одно назовем наш компьютер localhost.
# echo 'hostname="localhost"' >> /etc/rc.conf
Следующим шагом будет создание пользователей. Подумаем. Мне будет нужен доступ по SSH к серверу и по FTP к сайту. Художник тоже захочет доступ по FTP к сайту. Значит нужно создать двух пользователей минимум.
Поехали.
Набираем
# adduser
и заполняем поля:
Username: sb (имя пользователя для входа)
Full name: Belov Sergey (полное имя пользователя)
Дальше оставляем все поля пустыми, т.е. оставляем так, как предлагает FreeBSD.
После вводим пароль.
Следующий вопрос пропускаем – Enter.
Видим заполненную анкету пользователя и соглашаемся, набирая Yes. Add another user? (yes/no) отвечаем No.
Теперь по аналогии нужно добавить пользователя для художника и займемся запуском SSH и FTP.
Мы не будем вручную запускать эти два демона, это сделает сама FreeBSD после того как мы добавим в файл /etc/rc.conf строки sshd_enable=”YES” и ftpd_enable=”YES”.
# echo 'sshd_enable="YES"' >> /etc/rc.conf # echo 'ftpd_enable="YES"' >> /etc/rc.conf
Еще нам нужно отредактировать файл /etc/group для того чтобы пользователь sb мог подключиться к машине по SSH.
# ee /etc/group
После этого добавим пользователя sb в группу wheel. Найдите в файле строку wheel:*:0:root и отредактируйте ее чтобы получилось так
wheel:*:0:root,sb
Перезагрузим машину и если все сделано правильно, должны запуститься SSH и FTP, а так же заработать сеть и интернет.
# reboot
В процессе загрузки я увидел какие то странные рисунки инопланетян и это говорит о том что SSH заработал кроме того строки “Starting sshd” и “Starting ftpd” подтверждают мои догадки.
И так, «Предварительная настройка» завершена. Осталось лишь проверить сеть и узнать IP адрес компьютера в локальной сети. Заходим под root и выполняем ifconfig
# ifconfig ae0
В поле inet я могу увидеть IP адрес который DHCP присвоил моему ПК 192.168.51.61. Записываю его на листик бумаги и для полной уверенности в работе сети делаю ping.
# ping ya.ru
Яндекс ответил – значит, все получилось. Жмем CTRL+C для прерывания работы программы ping и пишем exit.
# exit
Иду курить и перемещаюсь в кабинет.
3. Установка MySQL
Теперь с другого рабочего места я могу спокойно управлять нашим веб – сервером через SSH, для этого я буду использовать PUTTY. Устанавливаю подключение с типом SSH на хост 192.168.51.61 порт 22 и захожу в систему под пользователем sb. Сразу хапаю себе права root
$ su
Далее нужно обновить порты. Там мы найдем то что нам нужно. Я делаю это в 3 шага
# portsnap fetch
Ждем.
# portsnap extract
Ждем =)
# portsnap update
Ну на последней операции ждать долго не нужно и это радует. Теперь поищем нашу MySQL в портах. Для этого пишем
# cd /usr/ports/databases # ls | grep mysql | grep -server
Ну вот, у меня mysql55-server последняя, буду ставить ее. Для этого продолжаем
# cd mysql55-server # make install clean
Мы видим окно опций для пакета mysql-server 5.5.12. Ни чего не меняя жмем OK.
Сразу скажу, что установка MySQL будет самой длинной и примерно займет 10 минут. Курим, но не долго — будут появляться еще опции, на которые придется обратить внимание, но менять мы тоже ни чего не будет, поэтому OK везде.
Установка закончена?
Теперь необходимо установить базы, это обычно делалось так:
# mysql_install_db
но почему в версии 5.5 это выдает FATAL ERROR: Could not find ./bin/my_print_defaults который исправно лежит в /usr/local/bin =). Это лечиться легко – делаем так
# cd /usr/local # ; mysql_install_db
Далее необходимо выдать права пользователю и группе mysql на доступ к базам:
# chown mysql /var/db/mysql # chgrp mysql /var/db/mysql
Добавим строку mysql_enable=”YES” в /etc/rc.conf для автоматического старта сервера.
# echo 'mysql_enable="YES"' >> /etc/rc.conf
И перезагрузим машину
# reboot
После перезагрузки мы должны увидеть строку Starting mysql и никаких ошибок ниже. Если все хорошо заходим в систему и установим пароль для root
# mysqladmin -u root password 123
На этом мы пока оставим MySQL в покое и перейдем к следующему шагу.
4. Установка Apache
Снова заходим в порты и смотрим доступные версии apache.
# cd /usr/ports/www/ # ls | grep apache
У меня последняя apache22. Дальше делаем по аналогии с mysql
# cd apache22 # make install clean
В опциях пакета apache 2.2.18 я ставлю крестик напротив MYSQL и убираю крестик напротив IPV6. Жму OK. Опции других пакетов я оставлю, пожалуй, по умолчанию. По завершению установки давайте подкрутим кое чего в файле /usr/local/etc/apache22/httpd.conf но сперва сделаем копию этого файла.
# cd /usr/local/etc/apache22/ # cp httpd.conf https.sample
Теперь откроем его
# ee httpd.conf
и найдем строку
#ServerName www.example.com:80
Приведем ее к такому виду (обратите внимание на убранный символ # в начале строки – обязательно снимите комментарий)
ServerName localhost
Сохраняем файл. Добавляем Apache в «автозапуск»
# echo 'apache22_enable="YES"' >> /etc/rc.conf
И рестарт!
# reboot
Если все успешно, мы можем с любой локальной машины в браузере набрать адрес сервера и увидеть веб-страницу с текстом “It works!”.
Если этого не произошло то попробуйте найти ошибку при запуске в ручную воспользовавшись командами:
# apachectl start # apachectl restart # apachectl stop
Так же попробуйте выполнить команду
# kldload accf_http
и перезапустить Apache, хотя у меня он не требовал загрузки этого фильтра.
5. Установка PHP
Вот мы и добрались до установки последнего из основных элементов нашего сервера. PHP как все остальное мы будем ставить из портов. Для этого делаем
# cd /usr/ports/lang # ls |grep php
Последняя версия php52 и расширения для него php52-extensions
# cd php52 # make install clean
В опциях пакета php 5.2.17 отмечаю APACHE и продолжаю установку остальные пакеты не трогаю как обычно =).
Ждем.
Теперь установим расширение для PHP. Заходим
# cd /usr/ports/lang/php52-extensions
Делаем
# make install clean
И в опциях пакета отмечаем то что нам нужно. Я начал листать с конца списка и отметил: SOCKET, PDF ,MYSQL, MSSQL, FTP, FILEINFO
В опциях пакета png 1.4.5 отмечаю APNG
В опциях пакета php52-aqlite 5.2.17 отмечаю UTF8 остальные пакеты оставляю «как есть».
Ну вот, с PHP разобрались – идем дальше.
6. Установка phpMyAdmin
phpMyAdmin является удобным инструментом для управления базами MySQL. Это последнее что мы будем устанавливать и далее нас ждет настройка и проверка того что мы слепили.
Для установки phpMyAdmin заходим
# cd /usr/ports/databases
делаем
# ls | grep phpmyadmin
У меня доступна phpmyadmin211 – поставим ее
# cd phpmyadmin211 # make install clean
Опции пакетов не меняем, везде жмем OK.
Ждем окончания установки. Вот и все. Самая долгая часть подошла к концу. Нам осталось только настроить все это на «совместную деятельность» и можно начинать работу над нашим сайтом.
7. Окончательная настройка
Что нам осталось сделать и что уже сделано?
- MySQL установлен и настроен.
- Apache установлен и работает.
- PHP установлен но его нужно прикрутить к Apache.
- phpMyAdmin установлен но его тоже нужно прикрутить к Apache.
- Художник установлен и работает но и его тоже нужно прикрутить к нашему серверу по FTP как и меня.
Начнем с пункта 3. Нам необходимо сообщить Apache что файлы .php необходимо открывать через интерпретатор php. Откроем файл конфигурации Apache и добавим туда несколько строк.
# ee /usr/local/etc/apache22/httpd.conf
Находим строку <ifmodule mime_module> и в конце этого блока перед строкой </ifmodule> допишем две строки
AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
Теперь найдем строку
DirectoryIndex index.html
в блоке <ifmodule dir_module> </ifmodule> и допишем туда index.php чтоб Apache знал что index файл в директории может быть еще и php. Так же можно туда дописать index.htm. У меня получилось так:
DirectoryIndex index.html index.php index.htm
Теперь не выходя из файла, добавим туда связь с phpMyAdmin. Нам нужно чтобы Apache знал, где находится phpMyAdmin и разрешал доступ к ней пользователям. Так же нам необходимо создать Alias чтоб мы могли попадать в phpMyAdmin из адресной строки например так http://192.168.51.61/pma.
Найдем в файле секцию <ifmodule alias_module=»»> </ifmodule> и в нее добавим такую строку
Alias /pma &quot;/usr/local/www/phpMyAdmin211/&quot;
И последнее что мы добавим это:
<directory local="" phpmyadmin211="" usr="" www=""> AllowOverride None Options None Order allow,deny Allow from all </directory>
Сохраняем файл и выходим. Выполняем
# apachectl configtest
И если появилась строка “Syntax OK” значит файл мы заполнили правильно.
Теперь добавим доступ по FTP себе и художнику. Создаем файл где откроем доступ пользователям
# touch /etc/ftpchroot
Откроем доступ себе добавив туда строку
# echo &#39;sb /usr/local/www/apache22/data/&#39; &gt;&gt; /etc/ftpchroot
Откроем доступ художнику
# echo &#39;hd /usr/local/www/apache22/data/&#39; &gt;&gt; /etc/ftpchroot
Выставим права на директорию
# chmod 777 /usr/local/www/apache22/data
Теперь настроим phpMyAdmin и на этом наш крестовый поход окончен. Заходим
# cd /usr/local/www/phpMyAdmin211
Заменяем файл конфигурации предложенным шаблоном
# cp config.sample.inc.pnp config.inc.php
Открываем в редакторе
# ee config.inc.php
В строке
$cfg[&#39;blowfich_secret&#39;] = &#39;&#39;
вписываем пароль к базе вот так
$cfg[&#39;blowfich_secret&#39;] = &#39;123&#39;
Сохраняем файл и перезагружаем машину
# reboot
Чтобы проверить работу нашего сервера заходим из браузера 192.168.51.61/pma
Вы должны увидеть интерфейс phpMyAdmin. Вводим в поля логин и пароль root/123 и если попадаем в консоль управления базами данных, то все компоненты нашего сервера работают исправно.
Далее убедимся что доступ по FTP пользователям sb и hd открыт. Через любой FTP клиент установим подключение к серверу 192.168.51.61.
Ну вот и все!