среда, 27 июня 2007 г.

Инсталяция Lighttpd и PHP-5.2

Инсталяция PHP-5.2
  1. Скачать с www.php.net последнюю версию php, разархиваровать пакет и перенести его к каталог /usr/local/src для последующего использования:
    wget http://lv.php.net/get/php-5.2.2.tar.gz/from/this/mirror
    tar -xvzf php-5.2.2.tar.gz
    sudo mv php-5.2.2 /usr/local/src/
    cd /usr/local/src/php-5.2.2/
  2. Инсталировать пакеты необходимые для компиляции:
    apt-get install build-essential, flex, m4 \
    libxml2-dev, libssl-dev, libbz2-dev, libjpeg62-dev, libpng12-dev \
    libmysqlclient15-dev, libcurl3-openssl-dev, libqdbm-dev \
    libgdbm-dev
  3. Задать список рабочих библиотек для php для компиляции. Для дальнейших эксперементов можно даже сохранить его как скрипт /usr/local/src/php-5.2.2/go
    #! /bin/sh
    #
    # Created by configure

    CFLAGS='-march=i686' \
    CXX='gcc' \
    './configure' \
    './configure' \
    '--prefix=/usr/local/php5-fcgi' \
    '--sysconfdir=/etc/php5-fcgi' \
    '--with-layout=PHP' \
    '--with-ttf' \
    '--with-expat-dir=/usr' \
    '--enable-mbstring' \
    '--enable-mailparse' \
    '--with-config-file-scan-dir=/etc/php5-fcgi' \
    '--enable-bcmath' \
    '--enable-calendar' \
    '--enable-ftp' \
    '--enable-gd-native-ttf' \
    '--enable-magic-quotes' \
    '--enable-posix' \
    '--enable-session' \
    '--enable-shmop' \
    '--enable-sysvsem' \
    '--enable-sysvshm' \
    '--enable-track-vars' \
    '--enable-trans-sid' \
    '--enable-sockets' \
    '--enable-xml' \
    '--with-bz2' \
    '--with-curl' \
    '--with-mime-magic' \
    '--with-mysqli=/usr/bin/mysql_config' \
    '--enable-dba' \
    '--with-inifile' \
    '--with-flatfile' \
    '--with-gdbm' \
    '--with-freetype-dir=/usr' \
    '--with-gd' \
    '--enable-exif' \
    '--with-jpeg-dir=/usr' \
    '--with-mysql=/usr/local/mysql' \
    '--enable-memcache' \
    '--with-mysql-sock=var/run/mysqld/mysqld.sock' \
    '--with-openssl' \
    '--with-gettext' \
    '--with-dom' \
    '--with-dom-xslt' \
    '--with-png-dir=/usr' \
    '--with-regex=php' \
    '--with-zlib' \
    '--enable-fastcgi' \
    '--enable-memory-limit' \
    '--enable-discard-path' \
    '--enable-force-cgi-redirect' \
    "$@"
  4. Все, можно компилировать. Ввести в консоли следущее:
    chmod a+x go
    ./go
    make
    make install
    make test
    sudo make install
  5. Если компиляция закончилась нормально, следующий шаг создание php.ini
    sudo cp /usr/local/src/php-5.2.2/php.ini-recommended /etc/php5-fcgi/php.ini
    sudo gedit /etc/php5-fcgi/php.ini

    В окне редактора находим и правим следующие строки:
    - - - - - -
    [Date]
    ; Defines the default timezone used by the date functions
    date.timezone = Europe/Riga
    - - - - - -
    short_open_tag = On
    error_reporting = E_ALL | E_STRICT
    display_errors = On
    register_argc_argv = On
    - - - - - -
    ; Magic quotes for incoming GET/POST/Cookie data.
    magic_quotes_gpc = Off
    - - - - - -
  6. Сделать символьный линк, чтобы система могла наити команду php на привычном месте
    sudo ln -s /usr/local/php5-fcgi/bin/php /usr/local/bin/php

  7. Тест работы; перейти в домашний каталог, открытить консоль и вызвать php. Результат должен быть вроде следующего
    noe@noe$ php -v
    PHP 5.2.2 (cgi-fcgi) (built: June 26 2007 23:14:22)
    Copyright (c) 1997-2007 The PHP Group
    Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies

Инсталяция Lighttpd
  1. Тут все много проще. Поставить стандартный пакет через синаптик или с консоли. Затем активизировать модуль fastcgi, если необходими, подправить путь к php
    cd /etc/lighttpd/conf-enabled/
    sudo ln -s /etc/lighttpd/conf-available/10-fastcgi.conf
    sudo gedit /etc/lighttpd/conf-enabled/10-fastcgi.conf

  2. Теперь внести изменения и прописать все хосты в конфигурационный файл.
    sudo gedit /etc/lighttpd/lighttpd.conf

  3. Кроме того, переписать владельцем сервера пользозователя nobody из nogroup
    ## change uid to  (default: don't care)
    #server.username = "www-data"
    server.username = "nobody"

    ## change uid to (default: don't care)
    #server.groupname = "www-data"
    server.groupname = "nogroup"

  4. Аналогично для логов сервера
    sudo chown nobody:nogroup -R /var/log/lighttpd

4 comments:

Анонимный комментирует...

Объясните плиз: зачем собирать из сорцов php, и зачем менять юзераи группу ве-сервера?

Noe комментирует...

1. Если мне не изменяет память, мне нужен был PHP собранный для использования в режиме FastCGI, чего нельзя было получить на тот момент из репозитория.
Кроме того, разработчику иногда необходимо держать на одном компьютере несколько версий PHP/Apache/Lighttpd и так далее, которые могут отличаться версиями, количеством прилинкованных модулей или библиотек.

2. В принципе, менять user/group было не обязательно. В том проекте использовались консольные скрипты и я сделал максимальное приближение к тому что стояло на рабочем сервере.

Анонимный комментирует...

Сборка из сорцов под таким шикарным пакетным дистрибутивом - признак употребления наркотиков.

Noe комментирует...

Проект проще сопровождать, если версии ПО на девелоперском компьютере максимально приближены к тому что стоит на сервере клиента.