Установка и настройка сервера на PC-BSD для разработчика сайтов

Установка сервера заключается в установке трёх основных компонентов: Apache2, PHP5, MySQL5. Статья будет содержать в себе установку при помощи PBI-пакетов, коллекции портов и исходных кодов программ. Сразу хочу отметить, что настройка программ независимо от метода установки везде одинакова. Настройку я опишу после обозрения всех видов установки.

Итак, сначала я рассмотрю саму установку, потом настройку конфигурационных файлов, а потом и методы исправления распространённых ошибок.
Содержание:

  1. Установка из PBI-пакетов
  2. Установка из портов
    • Apache 1.x
    • Apache 2.x
    • MySQL 5
    • PHP 5
  3. Установка из пакетов
    • Apache 1.x
    • Apache 2.x
    • MySQL 5
    • PHP 5
  4. Установка из исходников
    • Apache 1.x
    • Apache 2.x
    • MySQL 5
    • PHP 5
    • Установка связки Apache 1.x + PHP 5 + MySQL 5
    • Установка связки Apache 2.x + PHP 5 + MySQL 5
  5. Настройка
    • Apache 1.x
    • Apache 2.x
    • MySQL 5
    • PHP 5
  6. Основные ошибки установки

1. Установка из PBI-пакетов
Рассмотрим самый простой вариант установки — установки при использовании PBI-пакетов. Простой он лишь потому, что пользователю, особенно только перешедшему на PC-BSD с других операционных систем(далее ОС), предоставляется система установки приложений, сходная с инсталяторами Windows-систем. Для наглядного примера приведу установку программу KFTPGrabber 0.8.0. После двойного клика на PBI-пакете следует ввести пароль на суперпользователя(root), он указывался приустановке системы. Далее увидим окошко:

Заметны сходства. Нажимаем «Next» и видим тоже самое сходство:

«Next»:

…и установка закончена! Создаются ярлыки на исполняемые файлы, при помощи которых точно так же, как в ОС Windows можно запускать установленные программы. Все необходимые программы в виде PBI-пакетов всегда можно скачать с адресов http://mirror.pcbsd.ru/PBI и http://pbidir.com. На момент написания статьи были Apache2, Apache2+PHP5, MySQL5. (Apache2.2.4-PV.pbi; Apache2_PHP5-PV1.0a.pbi). Аналогичным образом устанавливают нужные нам компоненты(Apache, PHP, MySQL).

2. Установка из портов
Установка из коллекции портов. Сразу оговорюсь, что порты должны быть установлены, а установка их может быть выполнена двумя способами:

  1. Либо при установке самого дистрибутива PC-BSD.
  2. Либо уже после установки вставить второй диск с дистрибутивом, перейти в каталог components нажать F4, набрать команду: «% su» (без кавычек, и без символа «%») – switch user(сменить пользователя), можно набрать $ su root, что переведёт нас в режим суперпользователя, или как это принято говорить в Windows-системах — Администратор. После этого необходимо ввести пароль суперпользователя. Смена символа $ на # говорит о том, что теперь в консоли можно выполнять операции, доступные лишь суперпользователю. Выполняем далее следущую команду:
    # pkg_add -f ports.tbz — она в течении некоторого времени(зависит от производительности компьютера) установит ту самую, нужную нам коллекцию портов в /usr/ports/. Если такие действия покажутся слишком сложными, то можно сделать иначе. А именно: Пуск->Настройка->Software & Updates->Add/Remove Software. Опять же, вводим пароль пользователя root, переходим на вкладку «Системные компоненты», выбираем «Ports Tree», нажимаем на «Install», подтверждаем, что мы точно вставили диск PC-BSD DISK2, и ждём окончания установки. Независимо от метода установки, коллекция портов будет находиться по адресу /usr/ports/.

Apache 1.x
Выполним # whereis apache13. Получаем примерно такие строки:

a1ewka-gal4onok(PC-BSD)# whereis apache13
apache13: /usr/ports/www/apache13

они говорят нам о том, что порт apache13 находится в /usr/ports/www/apache13. Чтобы начать установку, нам необходимо перейти в этот каталог. Далаем это командой: # cd /usr/ports/www/apache13. Кто усомнился в нахождении теперь в этом каталоге, может проверить нахождение в каталоге командой # pwd:

a1ewka-gal4onok(PC-BSD)# pwd
/usr/ports/www/apache13

Установка из портов всегда будет происходить в /usr/local/. Причём возможен такой случай, что исполняемые файлы могут находиться и в /usr/local/bin и /usr/local/sbin, в зависимости от версии Apache-сервера. Одним словом, нам это не помешает. Собственно, пришли к самой установке. Тут необходимо выполнить три команды. 1 — make; 2 — make install; 3 — make clean; но можно выполнить: # make install clean и все три команды выполнятся автоматически, без остановок в ожидании ввода следущей команды. Поясним команды. make — сначала скачивает нужный файл, распаковывает архив, конфигурирует согласно параметрам. install — устанавливает ПО согласно конфигурации. clean — удаляет файлы, которые были созданы в процессе установки. Они никаким образом не повлияют на работу установленного ПО. Можно не удалять, но тем, у кого место на жёстком диске ограничено, советую выполнить все три команды(или разом одну). После выполнения команд видим строку: a1ewka-gal4onok(PC-BSD)# – это говорит о том, что система перешла в ожидании следущей команды, и Apache-сервер был успешно установлен. В ходе выполнения вышеописанных команд могут возникнуть ошибки. Я опишу методы их устранения в самом конце статьи, а пока будем условно считать, что установка прошла успешно.

Apache 2.x
Установка сервера Apache 2.x аналогична установке Apache 1.x. Выполним # whereis apache22. Получаем примерно такие строки:

a1ewka-gal4onok(PC-BSD)# whereis apache22
apache22: /usr/ports/www/apache22

Перейдём в каталог и установим порт

# cd /usr/ports/www/apache22
# make install clean

MySQL5
Повторяем поиск в портах данного приложения. Набираем и выполняем: # whereis mysql51-server. Получаю следущий ответ:

a1ewka-gal4onok(PC-BSD)# whereis mysql51-server
mysql51-server: /usr/ports/databases/mysql51-server

перехожу в эту директорию: # cd /usr/ports/databases/mysql51-server. Выполняю # make install clean. Дожидаемся окончания установки. Она немного длительная. На моей конфигурации ноутбука инсталляция этих трёх компонентов обходится за 30-40 минут.

PHP5.
Аналогично выполняем: # whereis php5 и получаем:

a1ewka-gal4onok(PC-BSD)# whereis php5
php5: /usr/ports/lang/php5

переходим теперь в эту директорию: # cd /usr/ports/lang/php5. Теперь маленькая особенность. Нам необходимо поставить PHP5 совместно с Apache. Чтобы Apache «понимал», что у нас есть PHP, и что мы хотим их совместно использовать, необходимо собрать модуль libphp5.so, о котором я подробно распишу при рассмотрении установки из исходников. Пока нам требуется знать данное. Что мы сейчас и сделаем. Выполняем команду: # make config. Появится что-то вроде таблички, где необходимо поставить крестики. Пользуясь клавишами, ставим пробелом крестик напротив Build Apache module и Enable zend multibyte support. Остальное оставляем по умолчанию. Клавишей TAB переходим на кнопку «Ok», нажимаем Enter. Далее выполняем: # make install clean, либо же все три команды по отдельности.

3. Установка из пакетов
Установка из пакетов немного проще установки из коллекции портов, поэтому получила хорошую популярность среди начинающих пользователей. Для установки требуется открыть окно консоли, получить права суперпользователя командой: % su. После вводим пароль. Для установки пакетов достаточно одной команды: # pkg_add имя_пакета. Если пакета не имеется локально, то просто добавляем опцию -r. Итак, получаем: # pkg_add -r имя_пакета. Переходим от теории к практике. Перед этим мой совет всё же скачать пакеты с ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.3-release/Latest/ и ставить их локально. На момент написания третьей редакции на FTP-сервере были доступны: Apache 1.3 -ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/6.3-RELEASE/packages/www/apache-1.3.39_2.tbz; Apache 2.2 – ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/6.3-RELEASE/packages/www/apache-2.2.6_2.tbz; PHP 5 – ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/6.3-RELEASE/packages/www/php5-5.2.5.tbz; MySQL – ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/6.3-RELEASE/packages/databases/mysql-server-5.1.22.tbz

Apache 1.x
Установим Apache13. # pkg_add -f apache-1.3.39_2.tbz

Apache 2.x
Установим Apache 22. # pkg_add -f apache-2.2.6_2.tbz

PHP 5
Установим PHP 5. # pkg_add -f php5-5.2.5.tbz

MySQL 5
Установим MySQL 5. # pkg_add -f mysql-server-5.1.22.tbz

Посмотреть установленные пакеты можно командой # pkg_info. Увидим весь список пакетов. Если же интересует, например, только Apache, то пишем так: # pkg_info | grep apache. Удаляются пакеты тоже просто – командой: # pkg_delete -f имя_пакета. Ключ -f говорит о полной установке\удалению пакета, “не обращая” внимания на зависимости. Для просмотра дополнительных опций можно почитать: % man pkg_add. Мною перечисленных, считаю, вполне хватит.

4. Установка из исходных кодов
Данный вид установки считается самым сложным, и требует некоторых навыков и умений. Здесь, чтобы не путать людей, а также для демонстрирования гибких возможностей установки из исходных кодов, я буду рассматривать установку в /server.

Основы установки из исходных кодов
В большинстве случаев требуется выполнить лишь три команды:

# ./configure
# make
# make install

Этого достаточно, но тут можно познать все прелести UNIX-систем — очень гибкая установка приложений. Если дополнять команду # ./configure дополнительными параметрами, то можно очень оптимально сконфигурировать, а в дальнейшем установить то, или иное приложение. Параметр: –prefix=PREFIX указывает путь, куда необходимо устанавливать приложение. О дополнительных параметрах можно узнать, набрав: # ./configure –help. Если после установки программы скомпилированные фалы, модули, библиотеки не нужны, то выполняется команда: # make clean. Если же Вы ошиблись каким-либо параметром при установке, и программа уже установлена, то можно деинсталлировать её командой: # make uninstall.

Начну я с установки Apache версии 1.3. сразу стоит заметить, что установка Apache 1.x и Apache 2.x различается. По ходу статьи это различие будет наглядно представлено.

Apache 1.3
Скачал я русскую версию Apache13 по ссылке http://apache.lexa.ru/click?_URL=ftp://ftp.lexa.ru/pub/apache-rus/apache_1.3.41rusPL30.24.tar.gz. Выполняем следущие команды:

# tar -zxvf apache_1.3.41rusPL30.24.tar.gz
# cd apache_1.3.41rusPL30.24
# ./configure –prefix=/server –enable-module=so
# make
# make install
# make clean

Как я уже неоднократно описывал, можно для удобства записать все команды в одну:

# tar -zxvf apache_1.3.41rusPL30.24.tar.gz && cd apache_1.3.41rusPL30.24 && ./configure –prefix=/server –enable-module=so && make && make install && make clean

Apache 1.3 установлен. Разберёмся в его двух опциях конфигурации. –prefix=/server определяет директорию установки Apache. Если не указать её, то Apache мы бы нашли в /usr/bin. Но так как я обусловился устанавливать все программы в отдельную директорию, то применил данную опцию.

–enable-module=so — эта опция нужна для того, чтобы Apache имел возможность работы с модулями. Как уже было описано в установке из портов, эта опция пригодится нам для того, чтобы подтянуть PHP, чтобы Apache и PHP могли работать в связке. Я использовал основные параметры установки Apache, которых будет вполне достаточно для нормальной баботы http-сервера. О дополнительных можно узнать набрав: # ./configure –help.

–bindir=DIR — директория с исполняемыми файлами
–sbindir=DIR — директория для администратора с исполняемыми файлами
–libexecdir=DIR — директория с исполняемыми файлами установленых программ. Иначе говоря, там будет находиться модули, и, как позже увидим, там будет находиться модуль PHP
–datadir=DIR — директория для данных(только чтение —по умолчанию стоит такой атрибут на директорию)
–iconsdir=DIR — директория установленных иконок
–htdocsdir=DIR — директория страницы приветствия(проверки работы сервера)
–manualdir=DIR — директория с установленными «манами»
–logfiledir=DIR — директория с логами Apache
–add-module=FILE — служит для добавления при конфигурации какого-либо модуля
–enable-module=NAME — включает модуль
–disable-module=NAME — соответственно выключает модуль

Вот ещё основные опции. Но, указав –prefix=/server, вышеперечисленные нет смысла указывать, хотя было бы наиболее грамотно.. запустим наш сервер. В документации сказано запустить некоторый скрипт. Сделаем это:

# cd /server/bin
# ./apachectl start

У меня ответ выглядел следущим образом:

a1ewka-gal4onok(PC-BSD)# ./apachectl start [Sun Jul 13 02:46:22 2008] [alert] httpd: Could not determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName ./apachectl start: httpd started

Cлишком много нам пока непонятного, не так ли? Мы уберём лишние строки, когда я буду описывать настройку конфигурации сервера, а пока немного потерпим.. по последней строке можно судить о том, что сервер запустился. Ну, а кто не верит, выполняет команду: # ps -ax | grep httpd. Что я увидел у себя в ответ на эту команду:

a1ewka-gal4onok(PC-BSD)# ps -ax | grep httpd
53534 ?? Ss 0:00,01 /server/bin/httpd
53535 ?? I 0:00,00 /server/bin/httpd
53536 ?? I 0:00,00 /server/bin/httpd
53537 ?? I 0:00,00 /server/bin/httpd
53538 ?? I 0:00,00 /server/bin/httpd
53539 ?? I 0:00,00 /server/bin/httpd
60177 p2 S+ 0:00,00 grep httpd

Всё работает! Останавливается сервер командой: # ./apachectl stop.
a1ewka-gal4onok(PC-BSD)# ./apachectl stop
./apachectl stop: httpd stopped

Существует и команда перезапуска сервера: # ./apachectl restart
a1ewka-gal4onok(PC-BSD)# ./apachectl restart
./apachectl restart: httpd restarted

И для более «мягкого» перезапуска: # ./apachectl graceful

a1ewka-gal4onok(PC-BSD)# ./apachectl graceful
./apachectl graceful: httpd gracefully restarted

Apache 2.x
Ставится несколько иначе, но сильных различий нет. Скачиваем: http://apache.rinet.ru/dist/httpd/httpd-2.2.9.tar.gz. Выполняем:

# tar -zxvf httpd-2.2.9.tar.gz && cd httpd-2.2.9 && ./configure –prefix=/server –enable-so && make && make install

Как видим, отличие составляет лишь подключение модулей. Дополнительные опции одинаковы. Запуск и останов сервера Apache 2.2 точно такой же как и сервера Apache 1.3.

MySQL 5
Скачиваем архив программы http://www.mysql.ru/cgi-bin/download/mysql-5.0.18.tar.gz, сохраняем где-нибудь. Для работы MySQL нам потребуется новая группа и новый пользователь MySQL. Обращаю внимание на то, что если до установки MySQL из исходников MySQL ставился из PBI/портов/пакетов следуется пропустить добавление группы и пользователя MySQL. Мысленно принимаю, что до этого момента MySQL не ставился на систему. Создаём группу и пользователя MySQL:

# pw group add mysql
# pw user add mysql -s /usr/sbin/nologin -d /server/bin/mysql -g mysql

Всё, группу и пользователя добавили. Теперь ставим сам MySQL:

# tar -zxvf mysql-5.0.18.tar.gz
# cd mysql-5.0.18
# ./configure –prefix=/server –with-charset=cp1251 –with-extra-charset=all –with-mysqld=mysql –with-unix-socket-path=/tmp/mysql.sock
# make
# make install
# cp support-files/my-medium.cnf /server/mysql.cnf
# /server/mysql_install_db –user=mysql
# chown -R mysql:mysql /server/var
# make clean

Или же запишу снова всё в одной строке:

# pw group add mysql && pw user add mysql -s /usr/sbin/nologin -d /server/bin/mysql -g mysql && cd ../mysql-5.0.18 && ./configure –prefix=/server –with-charset=cp1251 –with-extra-charset=all –with-mysqld=mysql –with-unix-socket-path=/tmp/mysql.sock && make && make install && cp support-files/my-medium.cnf /server/mysql.cnf && make clean && cd /server/bin && /server/mysql_install_db –user=mysql && chown -R mysql:mysql /server/var && make clean

MySQL установлен. Дополнительные опции конфигурации.

–bindir=DIR; –sbindir=DIR; –libexecdir=DIR; –datadir=DIR; –mandir=DIR; эти команды выполняют те же самые действия, что и при установке Apache.
–with-low-memory — при установке использовать минимизированное количество оперативной памяти
–without-server — установить лишь MySQL-клиент(MySQL-сервер не устанавливается!)
–with-openssl=DIR — установить поддержку SSL
–without-man — не устанавливать мануал по MySQL
–without-docs — не устанавливать документацию
–with-big-tables — позволяет использовать большие таблицы(до 4.000.000.000 рядов на 32-битной платформе)

И это далеко не все параметры. Тех, что я указал в своей установке, вполне достаточно для работы сервера.

Опишу что делал. Ну, само собой, распаковка архива командой: # tar -zxvf mysql-5.0.18.tar.gz. Переходим в распакованную директорию, и начинаем конфигурировать. –prefix=/server – это уже понятно.. :) –with-charset=cp1251 — для того, чтобы MySQL понимал кодировку СР1251. При желании меняется на другие кодировки, например на –with-charset=koi8-r. –with-extra-charset=all — определение остальных кодировок на тот случай, когда кодировка по умолчанию в базе данных не присутствуется, применяется другая. –with-mysqld=mysql — для запуска «демона» с правами пользователя mysql, которого мы добавляли в систему перед установкой MySQL. ./mysql_install_db –user=mysql — запуск скрипта, который создаст рабочие базы данных. После выполнения скрипта, появится папка var в /server. –with-unix-socket-path=/tmp/mysql.sock — пусть сокет лежит вместе со всеми сокетами системы. В результате множества экспериментов я понял, что лучше сделать это именно так, иначе появляются проблемы с запуском MySQL. После этого можно копировать базу(ы) в server/var.
Дальше необходимо установить права на этот каталог для пользователя mysql:

# chown -R mysql:mysql /server/var

В процессе конфигурации был создан файл support-files/my-medium.cnf. Собственно, это и есть конфигурационный файл MySQL, содержимое которого я рассморю несколько позже. Теперь внимание, сначала дочитайте до конца об этом файле, а потом действуйте. В процессе множества установок, я заметил, что этот файл вызывает ошибку, и сервер MySQL не запускается. Не будет бедой, если вы не скопируете этот файл. Если в параметрах конфигурации указать где будет находиться сам MySQL-сервер, его сокет, то вполне файл может даже и отсутствовать..

Для удобства запуска\остановки MySQL-сервера, мною был несколько доработан один скрипт. Вот что получилось в итоге:

#!/bin/sh
NAME=”/server/bin/mysqld_safe”
case “$1″ in
start)
${NAME} &
echo “MySQL started…”
;;
stop)
killall `basename mysqld`
echo “MySQL stopped”
;;
*)
echo “”
echo “Usage: mysql.sh { start | stop }”
echo “”
;;
esac

сохраняю данный листинг в, например, my.sh. Этот файл тоже лучше будет перенести к серверу(на мой взгляд):

cp /home/a1ewka-gal4onok/Desktop/my.sh /server/bin/mysql.sh

теперь из /server/bin будет наиболее удобно запускать либо всё вместе, либо же по отдельности. Из той же директории и Apache заускается. Хотя, дело вкуса, можно и написать один скрипт, который и будет выполнять старт и Apache, и MySQL.

PHP 5
Для начала скачиваем архив с исходными кодами с php.net: http://ru.php.net/get/php-5.2.6.tar.gz/from/this/mirror
Выполняем:

# tar -zxvf php-5.2.6.tar.gz
# cd php-5.2.6
# ./configure –prefix=/server –with-apxs=/server/bin/apxs –with-mysql=/server
# make
# make install
# make clean

Хочется сразу отметить отличие установки РНР5 в связке с Apach1x и Apache2x. –with-apxs=/server/bin/apxs установки с Apache 1.x, а –with-apxs2=/server/bin/apxs — для Apache 2.x.

Опять же запишу всю команду в одну строку для удобства установки:

./configure –prefix=/server –with-apxs=/server/bin/apxs –with-mysql=/server –with-mysql-sock=/server/mysql.sock && make && make install && make clean
Дополнительные параметры конфигурации:

–bindir=DIR; –sbindir=DIR; –libexecdir=DIR; –datadir=DIR; –libdir=DIR; –mandir=DIR; –srcdir=DIR; – это мы уже разбирали.
–host=HOST — установка для HOST(например, 127.0.0.1 или localhost)
–with-apxs[=FILE] — связать с Apache1x
–with-apxs2[=FILE] — связать с Apache2x
–disable-cgi — отключить сборку CGI для РН?
–enable-safe-mode — использовать безопасный режим по умолчанию
–disable-ipv6 — отключить поддержку протокола Ipv6
–with-EXTENSION=[shared[,PATH]] — установить с дополнением
–with-openssl[=DIR] — установить с поддержкой SSL
–with-bz2[=DIR] — включить поддержку Bzip2
–enable-ftp — включить поддержку протокола FTP
–with-gd[=DIR] — собрать с GD-библиотекой
–with-jpeg-dir[=DIR]; –with-png-dir[=DIR]; –with-ttf[=DIR] — указываем путь jpeg-, png-, ttf- файлов для GD-библиотеки
–with-msql[=DIR] — поддержка баз данных mSQL
–with-mssql[=DIR] — поддержка баз данных MSSQL
–with-mysql[=DIR] — поддержка баз данных MySQL
–with-mysql-sock[=DIR] — учитывать сокет MySQL

Опять же, это не все параметры конфигурации.

Пришло время для оптимизации нашей установки связки. Ставить всё по отдельности крайне не хочется, а хочется, чтобы установка шла непрерывно. Поэтому все три архива, скрипт для запуска MySQL сохраняем в одной директории.

Установка связки Apache 1.x + PHP 5 + MySQL 5
Выполняем следующую длинную команду:

tar -zxvf apache_1.3.41rusPL30.24.tar.gz && tar -zxvf php-5.2.6.tar.gz && tar -zxvf mysql-5.0.18.tar.gz && cd apache_1.3.41rusPL30.24 && ./configure –prefix=/server –enable-module=so && make && make install && make clean && pw group add mysql && pw user add mysql -s /usr/sbin/nologin – d /server/bin/mysql -g mysql && cd ../ mysql-5.0.18 && ./configure –prefix=/server –with-mysqld-user=mysql –with-charset=cp1251 –with-extra-charset=all –with-unix-socket-path=/tmp/mysql.sock && make && make install && cp support-files/my-medium.cnf /server/mysql.cnf && make clean && cd ../php-5.2.6 && ./configure –prefix=/server –with-apxs=/server/bin/apxs –with-mysql=/server –with-mysql-sock=/tmp && make && make install && make clean && cd .. && cp my.sh /server/bin/mysql.sh && chown -R mysql:mysql /server/var && rm -rf apache_1.3.41rusPL30.24 && rm -rf mysql-5.0.18 && rm -rf php-5.2.6 && shutdown -r now

Установка связки Apache 2.x + PHP 5 + MySQL 5
Выполняем аналогичную(почти) команду:

tar -zxvf httpd-2.2.9.tar.gz && tar -zxvf php-5.2.6.tar.gz && tar -zxvf mysql-5.0.18.tar.gz && cd httpd-2.2.9 && ./configure –prefix=/server –enable-so && make && make install && make clean && pw group add mysql && pw user add mysql -s /usr/sbin/nologin -d /server/bin/mysql -g mysql && cd ../mysql-5.0.18 && ./configure –prefix=/server –with-mysqld-user=mysql –with-charset=cp1251 –with-extra-charset=all –with-unix-socket-path=/tmp/mysql.sock && make && make install && cp support-files/my-medium.cnf /server/mysql.cnf && make clean && cd ../php-5.2.6 && ./configure –prefix=/server –with-apxs2=/server/bin/apxs –with-mysql=/server –with-mysql-sock=/tmp make && make install && make clean && cd .. && cp my.sh /server/bin/mysql.sh && chown -R mysql:mysql /server/var && rm -rf httpd-2.2.9 && rm -rf mysql-5.0.18 && rm -rf php-5.2.6 && shutdown -r now

5. Настройка

Apache 1.x
Если устанавливалось всё, как я описывал, то файл конфигурации Apache будет находиться в /server/conf/httpd.conf. Именно он единственный нам и понадобится. Править можно открыв файл в редакторе ee, или в Пуск-Система-Менеджер файлов(с root-привилегиями). Одним словом, правится файл от root-пользователя.

ServerRoot “/server” — наглядно нам показывается, что Apache-сервер поставлен туда, куда мы хотели, и куда ставили :)
PidFile /server/logs/httpd.pid — место, где будет храниться PID-файл при работе сервера

Timeout 300; KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
MinSpareServers 5
MaxSpareServers 10
StartServers 5
MaxClients 150
MaxRequestsPerChild 0
— всё оставляем как есть.

#Listen 3000
#Listen 12.34.56.78:80
— и это тоже. Используется для указания особого IP и номера порта, на котором будет работать Apache. Нам она не нужна. Всё держим в комментариях.

LoadModule php5_module libexec/libphp5.so — говорит о том, что PHP5 установился и прописал свой модуль в Apache.

Port 80 — порт, использующий Apache.

User a1ewka-gal4onok
Group a1ewka-gal4onok — поменял на себя, т.к. документы(мой локальный сайт находится в /home/a1ewka-gal4onok/localhost => права нужны пользователя a1ewka-gal4onok)

ServerAdmin a1ewka-gal4onok@a1ewka-gal4onok(pc-bsd) — вообще, тут пишется e-mail администратора :) но можно и так оставить хост у меня — a1ewka-gal4onok(pc-bsd).

DocumentRoot “/home/a1ewka-gal4onok/localhost” — делаю таким. Указываю директорию, где находится локальный сайт. В принципе, можно оставить и значение по умолчанию которое, но придётся в /server/htdocs копировать файлы локального сайта.

Разберёмся с:

Options Indexes Includes
AllowOverride All

Возможные значения:
Includes – разрешить SSI (Server Side Includes);
Indexes – разрешить выдачу листинга каталога, если в нем нет файла index.html (или файла индекса, заданного директивой DirectoryIndex);
AllExecCGI – разрешить выполнение CGI-сценариев в данном каталоге и его поддереве;
FollowSymLinks – разрешить переходы по символическим ссылкам (создаваемым командой ln); – установить сразу все перечисленные режимы кроме MultiViews
MultiViews – разрешить поддержку многих языков; по умолчанию она отключена, и включать ее, как правило, не нужно;
Настройки по умолчанию вполне нормальны и подходят для работы сервера.
Находим блок с кучей комментариев, которые я опустил в статье:

Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all

Как видно, и тут я поменял рабочую директорию с моим локальным сайтом.

DirectoryIndex index.php

этот блок управляет приоритетом загружаемых индексных файлов. Например, вместо DirectoryIndex index.php я мог написать DirectoryIndex index.html index.php index.shtml. Что произойдёт в этом случае. Apache будет искать сначала в рабочей директории index.html, потом — index.php,и так далее. Если ничего найдено не будет, то выведется список файлов в рабочей директории, так как мы указывали Options Indexes Includes. Отмечу, что index.* можно переименовать в start.*. Кстати, это есть один из методов безопасности, о которой я буду вести речь в следущей статье.

AccessFileName .htaccess — так и оставляем.

Дальше всё оставляем по умолчанию, и добираемся до языков. Тут я оставил лишь Русский Язык, всё остальное закомментировал:

#AddLanguage cs .cz .cs
AddLanguage ru .ru
#AddLanguage zh-TW .zh-tw

и поменял кодировку(мой локальный сайт написан в кодировке cp1251):

AddCharset WINDOWS-1251 .cp-1251

LanguagePriority ru en da nl et fr de el it ja kr no pl pt pt-br ltz ca es sv tw

точно такой же приоритет языков, что и приоритет индексных файлов. Изменил на

LanguagePriority ru en de

Находим строчку: AddType application/x-tar .tgz, и после неё добавляем следующую строчку: AddType application/x-httpd-php .php. Она необходима для того, чтобы Apache смог запускать PHP-файлы.
Дальше я менял кодировки на мне нужную.

CharsetDefault cp1251
CharsetSourceEnc cp1251
CharsetDefault cp1251

На этом настройка Apache1x заканчивается, httpd.conf сохраняется.

Apache 2.x Настраивается абсолютно аналогичным образом, только кодировки не придётся править.

PHP 5
PHP настроен. Тут нам нечего править.

MySQL 5
Файл настройки my.cnf MySQL5 должен находиться в /server. При необходимости можно поправить, например, порт, или PID-файл и его размещение.

6. Основные ошибки установки

Установка из PBI-пакетов
Проблем не было. Если что-то не работает, то либо неправильно сконфигурирована та или иная программа, либо же PBI-пакет криво собран.

Установка из пакетов и коллекции портов
Очень часто замечал, что после деинсталляции, например, Apache заново он не особо хотел устанавливаться. Ссылался на мешающий ему пакет — apr_dbd_mysql.rev-57(в зависимости от того, что икак ставилось). Для начала удаляется этот файл, на который ругается, например, Apache из /usr/var/db/pkg; /usr/var/db/ports; /usr/ports/distfiles. Потом выполняется:
# make clean
# make distclean
— для портов
и: # pkg_delete -f apache — для пакетов

Установка из исходных кодов
Все проблемы из-за неправильности написания опций при конфигурации. К статье также прилагаю файлы — архивы исходных кодов программ, которые я ставил, ошибок в конфигурации, компиляции и установки не возникало.