| 
 Наверное, нет смысла ставить Apache без PHP. Поэтому мы этого делать не будем. Поставим все и сразу и грамотно :)
 
 
Скачать последнюю версию Apache всегда можно на http://httpd.apache.org/ , а PHP на http://www.php.net/
 
 
Помимо самих Apache + PHP нам еще нужна GD2. Это такая дурацкая графическая библиотека, которая много где используется, в том числе и в PHP.
 
 
Ставить ее на FreeBSD при наличии портов очень просто:
 
cd /usr/ports/graphics/gd2
 
make install
 
 
В новых версиях FreeBSD порт gd2 куда-то пропал. Теперь он называется просто gd
 
Так что если у вас нет директории /usr/ports/graphics/gd2 , то можете идти в /usr/ports/graphics/gd
 
 
Любители пингвинов узнают о том, как точно это делать под редхатом в следующем обновлении. Но если вы продвинутый джедай, то можно попробывать поставить самому вот отсюда http://www.boutell.com/gd/ Или вот отсюда http://www.rime.com.au/gd/ с поддержкой GIF.
 
 
Помимо GD очень желателен MySQL.
 
 
Начать установку стоит с этого:
 
mkdir /usr/local/distr
 
mkdir /usr/local/src
 
 
cd /usr/local/distr
 
wget ftp://ftp.aha.ru/pub/FreeBSD/ports/distfiles/apache_1.3.29.tar.gz
 
wget http://ru.php.net/distributions/php-4.3.4.tar.gz
 
 
tar -zxvf apache_1.3.29.tar.gz -C /usr/local/src
 
tar -zxvf php-4.3.4.tar.gz -C /usr/local/src
 
 
Добавляем пользователя и группу apache, под которой будет работать сервер. Это всегда полезно.
 
 
Для RedHat:
 
groupadd apache
 
useradd -M -s /dev/null -g apache -d /usr/local/apache apache
 
 
Для FreeBSD:
 
pw groupadd apache
 
pw useradd apache -g apache -d /usr/local/apache -s /dev/null
 
 
Конфигурируем.
 
cd /usr/local/src/apache_1.3.29/
 
./configure --prefix=/usr/local/apache --enable-shared=max --enable-module=rewrite --enable-shared=rewrite
 
 
Этим мы сказали, что хотим скомпилировать все модули динамическими. Это значит, что в любой момент можно отключить любой из них. Разницы по скорости между встроеными и динамичкскими модулями практически нет, особенно учитывая современные мощьности. И еще попросили Apache подключить модуль mor_rewrite. Почему-то по дефолту его не ставят.
 
 
Компилируем.
 
make
 
make install
 
 
Делаем полезные ссылки:
 
ln -s /usr/local/apache/bin/apachectl /usr/local/bin
 
 
Эта ссылка заставить Apache запускаться во время загрузки.
 
 
Для FreeBSD:
 
ln -s /usr/local/apache/bin/apachectl /usr/local/etc/rc.d/apache.sh
 
 
Для Linux:
 
ln -s /usr/local/apache/bin/apachectl /etc/rc.d/rc3.d/S95apache
 
(В какой именно rd?.d нужно класть ссылку можно узнать из файла /etc/inittab , из строки inittab)
 
 
Настраиваем Apache.
 
Этот конфиг с некоторыми изменеинями, которые значительно облегчат вам жизнь. Он name-based. Это значит, что вам не нужно будет беспокоится о том, какие IP адреса назначены вашим доменам. Apache будет ориентироваться только по названию домена.
 
cd /usr/local/apache/conf/
 
mv httpd.conf old.httpd.conf
 
wget http://tutorial.ru/files/apache/httpd.conf
 
 
mkdir /usr/local/apache/conf/srm/
 
cd /usr/local/apache/conf/srm/
 
wget http://tutorial.ru/files/apache/tutorial.ru.conf
 
 
В конфиге /usr/local/apache/conf/httpd.conf вам нужно исправить всего два параметра:
 
1. ServerAdmin - здесь нужно написать свой email
 
2. Заменить все yourhost.com на ваш домен.
 
 
А вот что было изменено в конфиге в отличии от того, который пишет Apache по дефолту:
 
ResourceConfig /usr/local/apache/conf/srm/ - Apache будет читать все конфиги в этой директории.
 
KeepAlive Off - При большой загрузке это поможет избежать мертвых коннектов.
 
BindAddress * - Слушать все IP адреса.
 
User apache - Пользователь
 
Group apache - Группа
 
ServerAdmin admin@yourhost.com - Почта администратора.
 
ServerName default.yourhost.com - Просто название вашего сервера.
 
AllowOverride All - .htaccess файлы будут работать рекурсивно.
 
LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined - Этот формат логов нужен для Webalizer-а.
 
CustomLog /usr/local/apache/logs/access_log combined - Включаем наш формат логов.
 
AddHandler cgi-script .cgi - Включаем .cgi (совсем не обязательно, чтобы это был Perl)
 
AddHandler cgi-script .pl - Включаем .pl
 
AddType text/html .shtml - Включаем SSI
 
AddHandler server-parsed .shtml
 
DirectoryIndex index.html index.htm index.php index.php3 index.phtml index.cgi index.pl index.shtml default.htm default.html - Индексные файлы в порядке приоритета.
 
NameVirtualHost *:80 - Этим мы говорим, что Apache наш будет name-based
 
< VirtualHost *:80> - Сампый первый виртуальный хост. В нем будет редирект.
 
    DocumentRoot /usr/local/apache/htdocs
 
    ServerName default.yourhost.com
 
< /VirtualHost>
 
 
А скачаный файл tutorial.ru.conf это просто пример конфига. Таким образом вы можете хранить отдельный конфиг для каждого нового домена в отдельном файле. И если при этом они будут находится в директории /usr/local/apache/conf/srm , то Apache включит их в свою конфигурацию.
 
 
Если вы заметили, в httpd.conf у нас есть один виртуальный хост из двух строчек. Он там не просто так. Поскольку сервер у нас name-based, а этот виртуальный хост находится прямо в httpd.conf, то все запросы, пришедшие на IP сервера, но не относящееся ни к одному из остальных виртуальных хостов будут попадать туда. Поэтому в директорию этого виртуального хоста по дефолту ставим редирект.
 
 
cd /usr/local/apache/htdocs/
 
wget http://tutorial.ru/files/apache/dot.htaccess
 
mv dot.htaccess .htaccess
 
И не забудьте поменять http://www.yourhost.com/ на то, что вам нужно.
 
 
Говорим, что отныне каталог /usr/local/apache пренадлежит пользователю apache
 
chown -R apache /usr/local/apache
 
chgrp -R apache /usr/local/apache
 
 
Тестовый старт.
 
/usr/local/apache/bin/apachectl start
 
 
Теоретически, Apache уже должен работать...
 
 
Теперь попробуем поставить PHP.
 
 
cd /usr/local/src/php-4.3.4/
 
./configure --prefix=/usr/local --with-apxs=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-gd=/usr/local --with-config-file-path=/usr/local/etc
 
Этой длинной телегой мы пытаемся донести до PHP то что он будет модулем динамическим, будет использывать MySQL, а так же GD и конфиг у него будет лежать в директории /usr/local/etc .
 
Если вдруг у вас GD поставить не получилось или он вам не нужен, можно просто убрать соответствующие параметры из строки. То же касается и MySQL.
 
 
Компилируем.
 
make
 
make install
 
 
Операция прошла без потерь? Тогда можно продолжать...
 
В файл /usr/local/apache/conf/httpd.conf нужно раскомментировать вот эти строки:
 
AddType application/x-httpd-php .php
 
AddType application/x-httpd-php .php3
 
AddType application/x-httpd-php .php4
 
AddType application/x-httpd-php .phtml
 
 
Продолжаем хулиганить.
 
 
cd /usr/local/etc/
 
wget http://tutorial.ru/files/apache/php.ini
 
 
Это дефолтный php.ini . Единственное, что было в нем исправлено, так это register_globals = On
 
Можете заменить на Off. А можете переписать совсем дефолтный файл из дистрибутива PHP (cp /usr/local/src/php-4.3.4/php.ini-dist /usr/local/etc/php.ini) . А можете вообще ничего не переписывать. Дело ваше.
 
 
Собственно, все.
 
Говорим
 
/usr/local/apache/bin/apachectl restart
 
 
Теперь можно настроить свой виртуальный хост по примеру файла /usr/local/apache/conf/srm/tutorial.ru.conf и положить туда вот это: http://tutorial.ru/files/apache/phpinfo.phpz . Только переименуйте файл phpinfo.phpz в phpinfo.php . Этот маленький скрипт расскажет вам все о настройках вашего PHP.
 
 |