RSS
 

LAMP Сборка из исходников.

06 Янв

Многие люди, занимающиеся программированием для web и/или настройкой серверов, в разное время свой жизни обнаруживали, что необходимо подготовить web-сервер к работе. То есть поставить MySQL, Apache и PHP (причем собрать их с нужными ключами и поддержкой различных часто используемых функций), настроить все это и запустить. Те, кто успешно решали все эти проблемы, обычно ленились записать все ключи, использованные при сборке, список библиотек и т.д. Данная заметка поможет все это вспомнить — сборка и установка всего необходимого описана пошагово.0. Общая подготовка

Создаем папку, в которую мы будем складывать все скачанные архивы и почти все (кроме MySQL) разжатые папки, и переходим в нее:

cd ~
mkdir distr
cd distr

В конце практически каждого шага не забываем возвращаться в созданную нами папку чтобы получить правильную структуру каталогов и собрать все без проблем.
Кстати, для тех, кто ленится читать простые инструкции. Архивы .tgz и .tar.gz разжимаются с помощью tar xzvf имя_архива.tar.gz.
И еще одно примечание. Ключи, с которыми собираются программы, могут подойти не всем. В данной статье указаны параметры, которые я обычно использую для себя. В случае, если Вы хорошо понимаете, что делаете, можете почитать инструкции и поменять параметры сборки. Само собой, что пути также указаны мои (преимущество в том, что я использую стандартные).

1. Устанавливаем MySQL
Скачиваем бинарный дистрибутив с официального сайта (на момент написания статьи — MySQL 5.0.37) и следуем стандартным для практически любой версии MySQL инструкциям:

groupadd mysql
useradd -g mysql mysql
cd /usr/local
gunzip < /PATH/TO/MYSQL-VERSION-OS.tar.gz | tar xvf -
ln -s FULL-PATH-TO-MYSQL-VERSION-OS mysql
cd mysql
scripts/mysql_install_db --user=mysql
chown -R root .
chown -R mysql data
chgrp -R mysql .

Выбираем в папке support-files/ подходящий нам файл конфигурации (в общем-то исходить надо из объема RAM) и копируем его в /etc/my.cnf.

Возвращаемся в нашу папку:

cd ~/distr

2. Готовим Apache
Почему готовим? Да потому, что сначала нужно скачать Apache, потом собрать PHP, и только потом собрать Apache.
Итак, забираем дистрибутив с официального сайта (на момент написания статьи — Apache 1.3.37) и разжимаем.
Затем скачиваем mod_limitipconn.c и кладем его в apache_1.3.37/src/modules/extra/. Этот модуль совсем не обязателен, но очень удобен — он позволяет ограничивать количество соединений к файлам в определенных папках.
Теперь настраиваем Apache:

./configure --add-module=src/modules/extra/mod_limitipconn.c --activate-module=src/modules/php4/libphp4.a --enable-module=rewrite --disable-module=actions --disable-module=asis --disable-module=autoindex --disable-module=userdir --disable-module=cgi --disable-module=env

Не удивляйтесь наличию php4 — этого модуля еще нет, но на момент сборки он будет.

3. Собираем PHP
Для того, чтобы собрать подходящий нам PHP, необходимо скачать и установить несколько библиотек.

3.1. JPEG library
Скачиваем jpegsrc.v6b.tar.gz, распаковываем и собираем:

./configure
make
make install

3.2. zlib (на момент написания статьи — zlib 1.2.3)
Опять же, все просто. Качаем, распаковываем, ставим:

./configure
make
make install

3.3. GNU Multiple Precision Arithmetic Library (GMP) (на момент написания статьи — GMP 4.2.1)
Забираем с официального сайта, разжимаем, собираем:

./configure
make
make check
make install

3.4. cURL (на момент написания статьи — cURL 7.16.1)
Все так же, как и в прошлых шагах — качаем, распаковываем, ставим:

./configure
make
make install

3.5. PHP
Вот мы и добрались до PHP (на момент написания статьи — PHP 4.4.6). Качаем дистрибутив с известного всем сайта, разжимаем. Затем настраиваем PHP и устанавливаем:

./configure --with-apache=../apache_1.3.37 --enable-track-vars --enable-mod_charset --with-mysql=/usr/local/mysql --with-gd --with-jpeg-dir=/usr/local --with-zlib --with-zlib-dir=../zlib-1.2.3 --enable-calendar --enable-ctype --enable-ftp --enable-sockets --with-regex=php --enable-shared --with-ttf --enable-mbstring=ru --enable-mbstr-enc-trans --enable-mbregex --with-iconv --with-gmp --with-curl
make
make install

Не забываем про настройки. Копируем файл php.ini-recommended из дистрибутива в /usr/local/lib/php.ini.

4. Ставим Apache
Пришло время скомпилировать и установить Apache. Для этого переходим в его папку, где мы на шаге (2) вызывали configure с определенными параметрами и делаем стандартные действия:

make
make install

5. Заставляем Apache использовать PHP
Немного редактируем /usr/local/apache/conf/httpd.conf:
В блок <IfModule mod_dir.c> вместо имеющегося содержимого вписываем DirectoryIndex index.php index.html index.htm.
В блок <IfModule mod_mime.c> вписываем:

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

Ну и, конечно, не забываем настроить нужные виртуальные хосты.

6. eAccelerator (на момент написания статьи — eAccelerator 0.9.5)
eAccelerator кеширует скрипты, написанные на PHP, тем самым существенно повышая производительность и снижая нагрузку на сервер. Установить его просто, а пользы от него масса.

6.1. Устанавливаем eAccelerator
Итак, скачиваем, распаковываем и ставим:

export PHP_PREFIX="/usr/local"
$PHP_PREFIX/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config
make
make install

6.2. Подключаем eAccelerator к PHP
Редактируем php.ini (место его мы определили в пункте (3.5)). В самом низу дописываем:

[Zend]
zend_extension="/usr/local/lib/php/extensions/no-debug-non-zts-20020429/eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

Примечание: во второй строке (zend_extension) путь мы берем из того, что выведет установщик eAccelerator в пункте (6.1). В принципе, можно попробовать не указывать путь — PHP сам может найти extension, если в php.ini указан правильный extension_dir.

Еще надо не забыть создать папку, куда eAccelerator будет складывать данные:

mkdir /tmp/eaccelerator
chmod a+rw /tmp/eaccelerator

7. Запуск сервера
Теперь мы со спокойной душой можем запустить собранное и проверить, работает ли оно:

/usr/local/mysql/bin/mysqld --user=mysql &
/usr/local/apache/bin/apachectl start

В папку, видимую на web, положите .php-файл со следующим содержимым:

PHP:

  1. <?php
  2. ?>

Укажите браузеру адрес этого файла и проверьте, правильно ли собрался и запустился PHP.

 
Комментарии к записи LAMP Сборка из исходников. отключены

Рубрика: Apache, Centos, Debian, Fedora, Fedora Core, Good-to-know, Linux, MySQL, PHP

 

Comments are closed.