Наверное, нет смысла ставить 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.
|