Зачем?
Это самый первый вопрос, который задаст большинство.
Отвечу:
1) Дефолтный php без зачастую нужных вещей вроде pcntl, и к тому же с вкомпиленным генератором неведомой совокупительной фигни Suhosin Patch.
2) Сборка модулей, которых нет в репозитории.
3) Нет руководств такого типа. Нет, действительно нету, лишь короткие руководства, которые с оговоркой можно назвать логом ./configure && make && make install, и по которым сложно что-то собрать из-за наличия требований дополнительных библиотек.
4) Я не буду писать про фан. Просто не буду, т.к. мы не балуемся, а собираем продукт для работы. Многие найдут это плюсом, но не я.
5) Внезапно возник вопрос сборки своего модуля. Навыки сборки под никс очень помогли в сборке под винду, где и был написан экстеншн.
Можно конечно было сразу писать под никсами… Но ставить инастраиватькастомизировать никсы только ради одного проекта(в консоли на удаленном сервере разрабатывать как-то не особо приятно) мне не хотелось.
Начинаем установку
Создаем каталог и переходим в него:
Сначала ситавим из репозитория компилер, набор утилит для сборки, wget, и набор библиотек, которые нам понадобятся для сборки PHP(ну и zlib для apache, если собираем с mod_deflate):
На девственной ubuntu-server apt-get потребует скачать около 85мб.
Устанавливать мы будем в /opt, чтобы не путать с файлами дистрибутива.
Приступим к сборке апача
Комментировать ничего не буду, т.к. тут все прозрачно и в комментариях не нуждается.
Устанавливаем PHP
Да, именно его модули требуют кучу зависимостей. Я конфигурировал для MySQL/SQLite СУБД, для других собирайте сами. Не нужно бояться добавить сюда лишнего — на производительность это не повлияет.
Правим конфиг апача
Я заменяю значение DocumentRoot на "/var/www", добавляю в DirectoryIndex index.php, добавляю AddType application/x-httpd-php .php
Создаем phpinfo.php с содержимым <? phpinfo() ?> и наслаждаемся видом ненастроенного php(запускаем апач через /opt/apache2/bin/apachectl start).
Настраиваем php
Копируем дефолтный php.ini, редактируем его:
Правим эти параметры(я даже не буду заикаться насчет того, что они значат):
error_reporting = E_ALL
display_errors включаем для дебага, на боевой раскладке же выключаем.
log_errors = On
post_max_size = 64M(для типичных задач это более чем)
magic_quotes_gpc = Off(и почему они по молчанию включены? Ума не приложу)
include_path = ".:/opt/php5.2/lib/php"(сюда я положил ZF и прочие интересные вещи)
upload_max_filesize = 64M(равен post_max_size)
Подскажу, что в виме поиском занимается "?"
Автоматический запуск
Для начала уберем дефолтный апач из запуска, нам поможет удобная утилитка rcconf(ее использовать нагляднее, чем update-rc.d, привык ее юзать):
Убираем галочку.
Ну и останавливаем апач, чтобы не перезагружаться:
Теперь в rc.local добавляем строку запуска нашего апача, что позволит запускаться ему при старте:
Строка запуска выглядит так: /opt/apache2/bin/apachectl start
Можно же все сделать и правильно, через добавление скрипта, но я ограничусь этим.
Устанавливаем XCache
Сборку комментировать не буду:
Копируем конфиг(был досадный глюк с sudo и правами, поэтому мне пришлось сделать через sudo su) и админку.
Снова правим php.ini:
Комментируем zend_extension_ts, выставляем xcache.admin.user в имя админа, xcache.admin.pass в md5 пароля, xcache.size в 64M, xcache.optimizer в On, путь zend_extension выставляем в "/opt/php5.2/lib/php/extensions/no-debug-non-zts-20060613/xcache.so".
Если путь выставлен правильно, то в phpinfo() мы увидим параметры xcache, а статистику сможем посмотреть в админке.
Если этого нету, то смотрим логи апача и ищем ошибку.
Ставим memcache
Добавляем в php.ini extension=memcache.so, путь прописывать не надо, она лежит по дефолтному. Ставить из pear на никсах легко, это вам не windows =)
nginx
Меняем порт у апача, вводим в гугле nginx reverse proxy, читаем, делаем. Много раз переписывать одно и то же нет не только желания, но и смысла. Автозагрузка аналогичная апачу.
Update: Использование Nginx Как Reverse-Proxy Сервера На Загруженных Сайтах, nginx как reverse proxy
В следующих сериях
1. Хоррор «Сборка минимального PHP под Windows при помощи VS 2008». Сборка экстеншенов: helloworld. Если хватит кармы, то будет завтра-послезавтра, т.к. уже написана.
2. Сборка экстеншенов на linux. Реализация TEA.
2009-09-01
Это самый первый вопрос, который задаст большинство.
Отвечу:
1) Дефолтный php без зачастую нужных вещей вроде pcntl, и к тому же с вкомпиленным генератором неведомой совокупительной фигни Suhosin Patch.
2) Сборка модулей, которых нет в репозитории.
3) Нет руководств такого типа. Нет, действительно нету, лишь короткие руководства, которые с оговоркой можно назвать логом ./configure && make && make install, и по которым сложно что-то собрать из-за наличия требований дополнительных библиотек.
4) Я не буду писать про фан. Просто не буду, т.к. мы не балуемся, а собираем продукт для работы. Многие найдут это плюсом, но не я.
5) Внезапно возник вопрос сборки своего модуля. Навыки сборки под никс очень помогли в сборке под винду, где и был написан экстеншн.
Можно конечно было сразу писать под никсами… Но ставить и
Начинаем установку
Создаем каталог и переходим в него:
mkdir build cd build
Сначала ситавим из репозитория компилер, набор утилит для сборки, wget, и набор библиотек, которые нам понадобятся для сборки PHP(ну и zlib для apache, если собираем с mod_deflate):
sudo apt-get install build-essential wget autoconf zlib1g-dev libxml2-dev libcurl4-openssl-dev libpng-dev libmcrypt-dev libmhash-dev libmysqlclient15-dev libtidy-dev libmemcache-dev
На девственной ubuntu-server apt-get потребует скачать около 85мб.
Устанавливать мы будем в /opt, чтобы не путать с файлами дистрибутива.
Приступим к сборке апача
Комментировать ничего не буду, т.к. тут все прозрачно и в комментариях не нуждается.
wget http://www.sai.msu.su/apache/httpd/httpd-2.2.12.tar.bz2 bunzip2 httpd-2.2.12.tar.bz2 tar -xf httpd-2.2.12.tar cd httpd-2.2.12/ ./configure --prefix=/opt/apache2 --exec-prefix=/opt/apache2 --enable-mods-shared=all --enable-suexec make sudo make install cd ..
Устанавливаем PHP
Да, именно его модули требуют кучу зависимостей. Я конфигурировал для MySQL/SQLite СУБД, для других собирайте сами. Не нужно бояться добавить сюда лишнего — на производительность это не повлияет.
Пара слов о опциях. PHP-разработчик обязан знать, что значат эти модули(опция начиная с --with-curl), а тот, кто не разработчик, но кому волею судьбы пришлось настраивать сервер, пусть просто поверит, что они более-менее оптимальны и ничего необходимого типа pdo или mysqli не вырезано, как иногда бывает. Это же касается и конфига php.ini.wget http://ru2.php.net/distributions/php-5.2.10.tar.bz2 bunzip2 php-5.2.10.tar.bz2 tar -xf php-5.2.10.tar cd php-5.2.10 ./configure --prefix=/opt/php5.2 --with-apxs2=/opt/apache2/bin/apxs --enable-fastcgi --with-curl --enable-ftp --with-gd --enable-mbstring --with-mcrypt --with-mhash --with-mysql --with-sqlite --with-mysqli --enable-pcntl --with-pdo-mysql --enable-shmop --enable-soap --enable-sockets --enable-sqlite-utf8 --with-tidy --enable-zip --enable-mbregex --enable-ctype make sudo make install cd ..
Правим конфиг апача
sudo vim /opt/apache2/conf/httpd.conf
Я заменяю значение DocumentRoot на "/var/www", добавляю в DirectoryIndex index.php, добавляю AddType application/x-httpd-php .php
Создаем phpinfo.php с содержимым <? phpinfo() ?> и наслаждаемся видом ненастроенного php(запускаем апач через /opt/apache2/bin/apachectl start).
Настраиваем php
Копируем дефолтный php.ini, редактируем его:
sudo cp php.ini-dist /opt/php5.2/lib/php.ini sudo vim /opt/php5.2/lib/php.ini
Правим эти параметры(я даже не буду заикаться насчет того, что они значат):
error_reporting = E_ALL
display_errors включаем для дебага, на боевой раскладке же выключаем.
log_errors = On
post_max_size = 64M(для типичных задач это более чем)
magic_quotes_gpc = Off(и почему они по молчанию включены? Ума не приложу)
include_path = ".:/opt/php5.2/lib/php"(сюда я положил ZF и прочие интересные вещи)
upload_max_filesize = 64M(равен post_max_size)
Подскажу, что в виме поиском занимается "?"
Автоматический запуск
Для начала уберем дефолтный апач из запуска, нам поможет удобная утилитка rcconf(ее использовать нагляднее, чем update-rc.d, привык ее юзать):
sudo apt-get install rcconf sudo rcconf
Убираем галочку.
Ну и останавливаем апач, чтобы не перезагружаться:
sudo /etc/init.d/apache2 stop
Теперь в rc.local добавляем строку запуска нашего апача, что позволит запускаться ему при старте:
sudo vim /etc/rc.local
Строка запуска выглядит так: /opt/apache2/bin/apachectl start
Можно же все сделать и правильно, через добавление скрипта, но я ограничусь этим.
Устанавливаем XCache
Сборку комментировать не буду:
wget http://xcache.lighttpd.net/pub/Releases/1.2.2/xcache-1.2.2.tar.bz2 bunzip2 xcache-1.2.2.tar.bz2 tar -xf xcache-1.2.2.tar cd xcache-1.2.2 /opt/php5.2/bin/phpize ./configure --enable-xcache --prefix=/opt/xcache --enable-xcache-optimizer --with-php-config=/opt/php5.2/bin/php-config make sudo make install
Копируем конфиг(был досадный глюк с sudo и правами, поэтому мне пришлось сделать через sudo su) и админку.
sudo su cat xcache.ini >> /opt/php5.2/lib/php.ini exit sudo cp -R admin/ /var/www/xcache
Снова правим php.ini:
sudo vim /opt/php5.2/lib/php.ini
Комментируем zend_extension_ts, выставляем xcache.admin.user в имя админа, xcache.admin.pass в md5 пароля, xcache.size в 64M, xcache.optimizer в On, путь zend_extension выставляем в "/opt/php5.2/lib/php/extensions/no-debug-non-zts-20060613/xcache.so".
Если путь выставлен правильно, то в phpinfo() мы увидим параметры xcache, а статистику сможем посмотреть в админке.
Если этого нету, то смотрим логи апача и ищем ошибку.
Ставим memcache
sudo /opt/php5.2/bin/pecl install memcache
Добавляем в php.ini extension=memcache.so, путь прописывать не надо, она лежит по дефолтному. Ставить из pear на никсах легко, это вам не windows =)
nginx
Меняем порт у апача, вводим в гугле nginx reverse proxy, читаем, делаем. Много раз переписывать одно и то же нет не только желания, но и смысла. Автозагрузка аналогичная апачу.
Update: Использование Nginx Как Reverse-Proxy Сервера На Загруженных Сайтах, nginx как reverse proxy
В следующих сериях
1. Хоррор «Сборка минимального PHP под Windows при помощи VS 2008». Сборка экстеншенов: helloworld. Если хватит кармы, то будет завтра-послезавтра, т.к. уже написана.
2. Сборка экстеншенов на linux. Реализация TEA.
2009-09-01