Статьи Установка ПО в системе FreeBSD

Discussion in 'Статьи' started by PandoraBox, 26 Aug 2008.

  1. PandoraBox

    PandoraBox Elder - Старейшина

    Joined:
    6 May 2007
    Messages:
    262
    Likes Received:
    176
    Reputations:
    7
    Установка ПО в операциононй системе FreeBSD или Почему надо ставить программы из портов, а не руками


    Q: Почему вы советуете все ставить из портов?
    A: Потому, что порты - это стандартный способ установки ПО в системе. Это значит, что программы, справочная документация, разделяемые библиотеки и файлы заголовков ставятся именно туда, куда надо, и потому нет необходимости в дальнейшем заниматься долгими поисками.

    Более того, система аудита FreeBSD работает только с ПО, установленным из портов, а значит, что устанавливая из исходников, Вы будете сами отвечаьт за безопасность системы и сами искать сообщения о критических уязвимостях программ и их новых версиях.

    Q: Ведь действительно проще ставить из исходников где все включено и компилируется с необходимыми опциями?
    A: На самом деле - не проще, а сложнее. Потому, что система портов сама находит зависимости и автоматически ставит необходимое ПО. В случае установки вручную, придется самостоятельно ставить необходимые библиотеки, которые, в свою очередь, зависят от других библиотек, которые тоже зависят от библиотек, которые.....

    И это - полбеды. Беда приходит тогда, когда надо обновить какой-либо пакет; например, при обнаружении какой-либо уязвимости или при смене версии.

    Представьте себе, что возникла необходимость обновить libfreetype. Если у нас установлен PHP5 с поддержкой gd, нам (возможно) придется пересобрать libfreetype, libgd и php-gd. И все это вручную, с вспоминанием опций, с которыми собирали все это в прошлый раз, с предварительной чисткой системы от старой версии и т.д. Но если мы собирали из портов, все решается ровно одной командой: portupgrade freetype-1.2.3. Все остальное система сделает сама.

    Q: Но я сам ставил из исходников - все работало и не надо было заморачиваться.
    A: Да, работало. Но сколько времени потребовалось, чтобы все это поставить, разобраться в зависимостях и заставить работать так, как надо?

    Для установки того же Apache + PHP5 + MySQL + Gd вручную, надо:

    - собрать библотеки gd, jpeg, png, freetype

    - собрать и установить mysql

    - собрать и установить apache

    - собрать PHP5.

    При этом надо помнить про пути установки, флаги оптимизации, дополнительные зависимости, писать вручную скрипты автозапуска....

    А при установке из портов все делается ровно в две команды:

    Code:
    cd /usr/ports/databases/php5-extensions 
    make install clean 
    Q: Где читать про то, что нужно поставить из портов для нормальной работы какого-либо пакета чтобы потом не тыкаться в ошибки?
    A: Система портов сделана так, что она автоматически находит все зависимости. Поэтому не надо беспокоиться, что система что-то "забудет" поставить. Будет установлено только то, что нужно для работы.

    Например, надо поставиь поддержку mysql для PHP5, но мы не знаем, в каком порте искать. Делаем:

    Code:
    cd /usr/ports 
    make search name=php5 | grep mysql 
    Получаем ответ: 
    Port:   php5-mysql-5.1.2_1 
    Path:   /usr/ports/databases/php5-mysql 
    Info:   The mysql shared extension for php 
    Можно воспользоваться утилитой portsearch

    Code:
    /usr/ports/Tools/scripts/portsearch -n mysql -d php5 
    Q: А вот при использовании исходников и чтении документации в них проблем - минимум.
    A: Неправда. Проблем больше. Потому, что надо помнить, что и куда было установлено, какой версии и для чего именно. При этом, через полгода вы все равно забудете про то, что и куда ставили.


    Q: А как на счет оптимизации?
    A: Если вам действительно нужна скорость, ставьте ТОЛЬКО из портов. Как правило, порты имеют дополнительные флаги для сборки оптимизированного кода в зависимости от конкретной архитектуры. Так, mysql и openssl на x86 / amd64 собираются с широким использованием кода, написанного на ассемблере.


    Q: Где искать порты?
    A: На http://www.freshports.org/, и.... (о чудо!) на http://www.freebsd.org/

    Q: Как обновлять дерево портов?
    A: На FreeBSD версии 5.5 и 6.X - при помощи программы portsnap, которая является частью базовой системы. В первый раз она скачает достаточно много, порядка 45 мегабайт, но потом будет обновлять только измененные порты, а это совсем небольшой трафик. Первый запуск:

    Code:
    portsnap fetch 
    portsnap extract 
    portsnap update
    Последующие запуски:

    Code:
    portsnap fetch 
    portsnap update 
    На старых версиях (FreeBSD 4.X и FreeBSD 5.X до версии 5.5) можно воспользоваться cvsup (или csup - аналог cvsup, который полностью переписан с Modula-3 на C) или поставить из портов portsnap

    cvsup:
    Code:
    /usr/ports/net/cvsup-without-gui
    csup:
    /usr/ports/net/csup
    Обновление выглядит так:

    Code:
    cvsup -g -L 2 /usr/share/examples/cvsup/ports-supfile 
    csup -g -L 2 /usr/share/examples/cvsup/ports-supfile
    предварительно указав в файле ports-supfile хост, с которого будет скачиваться обновленно дерево портов.

    portsnap:
    Code:
    /usr/ports/sysutils/portsnap

    Q: Как обновлять установленные порты?
    A: Порты следует обновлять программой portupgrade

    Поставить ее можно из портов:

    Code:
    cd /usr/ports/ports-mgmt/portupgrade
    make install clean 
    Q: Как проверить установленное ПО на уязвимость?
    A: Очень просто: установив и запустив программу portaudit.

    Code:
    cd /usr/ports/security/portaudit 
    make install clean 
    или:

    Code:
    cd /usr/ports/ports-mgmt/portaudit
    make install clean 
    Вся процедура аудита очень проста:

    Code:
    portaudit -Fda 
    
    auditfile.tbz                                 100% of   33 kB   40 kBps 
    New database installed. 
    Database created: вторник, 28 февраля 2006 г. 17:10:12 (MSK) 
    0 problem(s) in your installed packages found.
    Q: Не всегда ведь в портах используются по умолчанию те опции, которые нужны. Как правильно их изменять? Если по умолчанию не установлены необходимые опции, их можно указать при сборке, например

    Code:
    make -DWITHOUT_IPV6=YES WITH_STATIC_SUPPORT
    или установив переменные окружения

    Code:
    tcsh: setenv WITHOUT_IPV6 YES 
    bash: export WITHOUT_IPV6=YES 
    или - прописав в файле /etc/make.conf

    Code:
    .if ${.CURDIR:N*/ports/<категория>/<название>} == "" 
    WITHOUT_IPV6=YES 
    <...> 
    <другие опции> 
    .endif
    Q: Как изменить опции сборки (те что выбираются в синем окне)?
    A: В директории порта выполните:

    Code:
    make rmconfig
    make config

    Q: Как правильно накладывать патчи?
    A: Для грамотного наложения патча нужно выполнить следующие действия:

    Code:
    cd /usr/ports/some/prog 
    fetch http://host.org/patch 
    mv patch files/patch-some.patch 
    make build
    При таком подходе больше не придется каждый раз руками накладывать данный патч, система сделает все сама.

    Q: Можно ли заставить portsnap работать через proxy?
    A: Можно. portsnap это скрипт, который использует fetch. Достаточно установить в шелле переменные окружения HTTP_PROXY и FTP_PROXY (man 3 fetch).

    Для tcsh:
    Code:
              setenv HTTP_PROXY http://user:[email protected]:3128
              setenv FTP_PROXY ftp://user:[email protected]:3128
    Для bash:
    Code:
              export HTTP_PROXY=http://user:[email protected]:3128
              export FTP_PROXY=ftp://user:[email protected]:3128
    Кроме того, в специфических случаях скрипт portsnap можно отредактировать под свои нужды.

    Q: Где прописать в системе откуда ей стоит брать порты?
    A: Всё в том же /etc/make.conf

    Code:
    MASTER_SITE_OVERRIDE=http://ftp7.ua.freebsd.org/pub/FreeBSD/ports/distfiles/ \ 
    http://ftp2.ua.freebsd.org/pub/FreeBSD/ports/distfiles/

    Q: Свежая версия порта не работает/работает не так как я хочу. как мне откатится назад?
    A: воспользуйтесь утилитой /usr/ports/ports-mgmt/portdowngrade При запуске - требуется указать путь к репозиторию и имя порта с категорией, например:

    Code:
    # portdowngrade -s:pserver:[email protected]:/home/ncvs net-mgmt/zabbix-agent$
    утилита выведет вам историю ревизий порта, где вы сможете выбрать нужную вам версию:

    Code:
    =================================================================================================================
    number         date         portversion  comment
        1  2007/12/17 18:27:53  1.4.4        - Update to 1.4.4 (bugfix-only)
        2  2007/12/13 08:36:15  1.4.3_1      - Add support for IPv6
        3  2007/12/12 23:02:06  1.4.3        Update to 1.4.3
        4  2007/08/27 18:35:50  1.4.2        - Update to 1.4.2
        5  2007/06/30 06:49:18  1.4.1        - Update to 1.4.1
        6  2007/06/22 15:10:34  1.4          - Move zabbix from UID 112 to 122 to avoid conflict with dcc
        <...>
    после чего, необходимо сделать для данного порта portupgrade:

    Code:
    portupgrade -f zabbix-agent
    Вот и все. Подробности в man portdowngrade

    Q: Как мне "заморозить" порт (или категорию портов) чтобы он не обновлялся при обновлении всего дерева портов?

    A: Перейдите с использования portsnap (если используется portsnap) на csup и используйте refuse файлы. refuse файл содержит шаблон, описывающий файлы, не требущие обновления. например:

    Code:
    ports/java/jboss4
    объяснит csup, что не нужно обновлять jboss4

    refuse файлы модно класть в каталог /foo/sup, где foo - каталог описанный директивой base supfile (опция -b при запуске csup), например для base=/usr:

    Code:
    /usr/sup/refuse
    /usr/sup/ports-all/refuse
    /usr/sup/src-all/refuse


    (c) .sysfaq.ru​
     
    1 person likes this.
  2. zythar

    zythar Elder - Старейшина

    Joined:
    16 Feb 2008
    Messages:
    517
    Likes Received:
    109
    Reputations:
    5
    док хороший. про то что нуно ставить тока из портов - бред. порты не всегда пополняются так оперативно как хотелось бы. в портах не всегда есть то что тебе нужно на данный момент и иногда действительно легче ставить из сорсов.
     
  3. PandoraBox

    PandoraBox Elder - Старейшина

    Joined:
    6 May 2007
    Messages:
    262
    Likes Received:
    176
    Reputations:
    7
    Установка Apache+MySQL+PHP (сборка с тутариала)

    Code:
    аналог wget на FreeBSD должен быть fetch
    Линки на свежие дистрибутивы:
    Code:
    Apache 2.2.9 (New) - http://apache.infocom.ua/httpd/httpd-2.2.9.tar.gz
    Apache 1.3.41 (Stable) - http://apache.infocom.ua/httpd/apache_1.3.41.tar.gz
    GD-2.0.35 - http://www.libgd.org/releases/gd-2.0.35.tar.gz
    MySQL-5.0.67 (New) - http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.67.tar.gz/from/pick#mirrors
    phpMyAdmin-2.11.8.1 (all-languages, NEW) - http://sourceforge.net/project/showfiles.php?group_id=23067&package_id=287971&release_id=620064
    
    PHP 5.2.6 Release (NEW Stable) - http://www.php.net/get/php-5.2.6.tar.gz/from/a/mirror
    PHP 6.0 Beta New Tech (NEW Beta) - http://snaps.php.net/php6.0-200808261830.tar.gz
    Скачать последнюю версию Apache всегда можно на http://httpd.apache.org/ , а PHP на http://www.php.net/.Качаем исходники MySQL с http://mysql.com и дополнительные файлам по ссылкам выше
    Установка с портов:
    Ставить ее на FreeBSD при наличии портов очень просто:
    MySQL:
    Code:
    cd /usr/ports/databases/mysql51-server/
    make install clean
    После установки:
    скрипт для запуска
    Code:
    /usr/local/etc/rc.d/mysql-server
    Стартуем и устанавливаем пароль рута:
    /etc/rc.conf
    Code:
    mysql_enable="YES"
    Code:
    /usr/local/etc/rc.d/mysql-server start
    /usr/local/bin/mysqladmin -u root password 'new-password'
    new-password - это пароль от root юзера мускула.

    Apache:
    Code:
    cd /usr/ports/www/apache22/
    make install clean
    для автозапуска:
    в
    /etc/rc.conf
    Code:
    apache22_enable="YES"
    запускаем
    Code:
    apachectl start
    ВСЁ.

    PHP:
    Code:
    cd /usr/ports/lang/php5
    make install clean
    cd /usr/ports/lang/php5-extensions/
    make install clean
    phpMyAdmin:
    Code:
    make install clean
    Потом
    Редактируем файл конфигурации апача, например с помощью ее:
    ee /usr/local/etc/apache22/httpd.conf
    или если есть Миднайт, то
    Code:
    mcedit /usr/local/etc/apache22/httpd.conf
    ищем строчки с надписями AddType и дописываем туда:

    Code:
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
    Так мы обьясняем апачу что делать с файлами с расширениями php и phps

    Ищем опять похожи строчки, и добавляем ниже:

    Alias /phpmyadmin/ "/usr/local/www/phpMyAdmin/"
    так мы делаем алиас на папку в которой стоит PHPMYADMIN , имя любое можно так, писать короче:
    Alias /pma/ "/usr/local/www/phpMyAdmin/" (если параноик, имя можно не стандартное)
    Насчёт слешей в конце путей не уверен, вроде не нужны, хз и так и так работает
    и ещё добавляем:
    Code:
        <Directory "/usr/local/www/phpMyAdmin/">
            Options none
            AllowOverride Limit
    
            Order Deny,Allow
            Deny from all
            Allow from 127.0.0.1 .example.com
        </Directory>
    Этим мы типа как выставляем права на папку с пма.
    .example.com заменяем на ай-пи откуда будем заходить в ПМА.

    И ЕЩЁ.
    Ищем строки
    Code:
    <IfModule dir_module>
        DirectoryIndex index.html 
    </IfModule>
    И меняем их на:
    <IfModule dir_module>
        DirectoryIndex index.html index.shtml index.htm index.php
    </IfModule>
    Так мы объясняем апаче, что файлы index.shtml index.htm index.php тоже нада открывать первыми, так же как индекс.хтмль
    Сохраняем.
    Рестартуем апач.
    apachectl restart
    Заиплось, почти. :)
    уже сейчас, зайдя по адрессу http://moyservak/pma
    Мы кое-что увидим, но не то что нам нада.
    Потому что нада ещё отконфигурить pma.
    Можно сделать это самому скопировав и отредактировав пример.
    Можно запустить скрипт http://moyservak/pma/scripts/setup.php ( только не вьехал как с него сохранять, но во всяком случае полученный конфиг можно увидеть и скопипастить)
    ......Скопипастить в:


    /usr/local/www/phpMyAdmin/config.inc.php

    Получиться ,что то типа такого:
    Code:
    <?php
    /* $FreeBSD: ports/databases/phpmyadmin/files/config.inc.php.sample,v 1.3 2006/05/16 06:43:23 clsung Exp $
     *
     * Skeleton configuration file -- this file is empty on a fresh
     * installaton of phpmyadmin.
     *
     * Copy any settings you want to override from
     * libraries/config.default.php or use scripts/setup.php to generate a
    
     * basic configuration file
     *
     */
    
    /* Servers configuration */
    $i = 0;
    
    /* Server localhost (http) [1] */
    $i++;
    $cfg['Servers'][$i]['host'] = 'localhost';
    $cfg['Servers'][$i]['extension'] = 'mysql';
    $cfg['Servers'][$i]['connect_type'] = 'tcp';
    $cfg['Servers'][$i]['compress'] = false;
    $cfg['Servers'][$i]['auth_type'] = 'http';
    
    /* End of servers configuration */
    
    ?>
    ВСЁ. Теперь Должно Заевестись!!!

    На всякий, проверить работоспособность , верисю, модули и тд в пхп, - нада создать файл index.php
    c текстом:

    Code:
    <?phpinfo()?>
    
    Нарушишь порядок, или спутаешь версии - иди покупай бубен, будешь шаманить.

    Установка из исходников (оффтоп):

    Code:
    cd /usr/ports/graphics/gd
    make install
    создания папок для дистибутивов и распакованых исходников:
    Code:
    mkdir /usr/local/distr
    mkdir /usr/local/src
    Разпаковка TAR:

    Code:
    tar -zxvf <ФАЙЛ> -C <Путь_куда_распаковывать>
    пример:
    Code:
    tar -zxvf apache_1.3.41.tar.gz -C /usr/local/src
    Помощь (параметры настройки):
    Code:
    ./configure --help
    конфигурирование (с параметрами настройки)
    Code:
    ./configure (параметры.. ... )
    Установка из исходников:

    Code:
    make
    make install
    Удаление из исходников:
    Code:
    cd <путь к исходным текстам>
    make uninstall / make distclean
    make clean
     
    #3 PandoraBox, 26 Aug 2008
    Last edited: 20 Sep 2008
  4. procedure

    procedure Elder - Старейшина

    Joined:
    22 Dec 2007
    Messages:
    527
    Likes Received:
    257
    Reputations:
    46
    ТС сам писал?

    А если мне не нужно устанавливать какую либо или несколько зависимых библиотек?
     
  5. Alexsize

    Alexsize Fail

    Joined:
    17 Sep 2005
    Messages:
    1,771
    Likes Received:
    1,221
    Reputations:
    704
    При установке из портов,все что надо само выкачаеться и все зависимости будут удовлетворены.
    Сразу оговорюсь - иксы и кеды ставить с портов не советую :D Хотя можно.
     
  6. NuR

    NuR Elder - Старейшина

    Joined:
    11 Dec 2005
    Messages:
    85
    Likes Received:
    58
    Reputations:
    -2
    копипастер, оригинал тут http://wiki.sysfaq.ru/w/index.php/Установка_ПО_в_системе_FreeBSD
     
    1 person likes this.
  7. Dober'man

    Dober'man Banned

    Joined:
    16 Jul 2007
    Messages:
    70
    Likes Received:
    94
    Reputations:
    -8
    Ох ё, уже википедию копирайтить начали...
    ps/ может хэндбук под себя заточить?! :D
    Причем жёсткий!!!
     
  8. SpangeBoB

    SpangeBoB Elder - Старейшина

    Joined:
    12 Jul 2008
    Messages:
    1,680
    Likes Received:
    393
    Reputations:
    102
    Что не нравится он же указал sysfaq.ru,там закрепили за wiki,чтобы была всегда на виду.В первые она появилась на http://sysadmins.ru/topic107676.html .
     
  9. PandoraBox

    PandoraBox Elder - Старейшина

    Joined:
    6 May 2007
    Messages:
    262
    Likes Received:
    176
    Reputations:
    7
    Настраиваем PHP+MemCached

    1. Устанавливаем сервер memcached
    PHP:
    cd /usr/ports/databases/memcached
    make 
    && make install && make clean
    Настраиваем.
    По умолчанию memcached слушает на всех адресах, чего нам не нужно (достаточно localhost).

    PHP:
    #./memcached -d -m 2048 -p 11211 -u nobody -l 127.0.0.1
    # в rc.conf
    memcached_enable="YES"
    memcached_flags="-l 127.0.0.1"
    2. Устанавливаем расширение для php
    PHP:
    pecl install memcache
    Прошло нормально? Значит повезло.
    У меня FreeBSD пятерка, возникли некоторые проблемы:

    PHP:
    /usr/local/bin/phpize: /tmp/download/memcache-2.2.3/build/shtoolPermission denied
    Cannot find autoconf
    Please check your autoconf installation and the $PHP_AUTOCONF
    environment variable is set correctly 
    and then rerun this script.
    которые решались следующим образом.
    PHP:
    export PHP_AUTOCONF=autoconf
    export PHP_AUTOHEADER
    =autoheader
     
    phpize
    ./configure
    make
    make install
     
    Installing shared extensions
    :     /usr/local/lib/php/20060613/
    То есть установка ручками.
    Настраиваем php для работы с новоиспеченным модулем.

    PHP:
    [root@host /usr/local/etc/php]# tail ./extensions.ini
    extension=memcache.so
    3. Перезагрузка сервисов
    PHP:
    /usr/local/etc/rc.d/memcached.sh start
    apachectl restart
    4. Проверяем работу
    PHP:
    #!/usr/local/bin/php
    <?php
    $memcache 
    = new Memcache;
    $memcache->connect('localhost'11211) or die ("Could not connect");
     
    $version $memcache->getVersion();
    echo 
    "Server's version: ".$version."<br/>\n";
     
    $tmp_object = new stdClass;
    $tmp_object->str_attr 'test';
    $tmp_object->int_attr 123;
     
    $memcache->set('key'$tmp_objectfalse10) or die ("Failed to save data at the server");
    echo 
    "Store data in the cache (data will expire in 10 seconds)<br/>\n";
     
    $get_result $memcache->get('key');
    echo 
    "Data from the cache:<br/>\n";
     
    var_dump($get_result);
    Tip's:
    Для фряхи модуль для php лучше собрать из портов, чтобы удобнее обновлять
    PHP:
    /usr/ports/databases/pecl-memcache
    Класс для работы с memcached из php можно найти на phpclasses.org, например:
    http://www.phpclasses.org/browse/file/17230.html

     
  10. PandoraBox

    PandoraBox Elder - Старейшина

    Joined:
    6 May 2007
    Messages:
    262
    Likes Received:
    176
    Reputations:
    7
    Установка eAccelerator на FreeBSD

    Устанавливаем сервер eAccelerator из портов
    PHP:
    cd /usr/ports/www/eaccelerator
    make
    make install
    изменяем файл php.ini
    Code:
    vi /usr/local/Zend/etc/php.ini
    по умолчанию где он находится иначе введите свой путь :p
    добавляем строчки
    PHP:
    zend_extension="/usr/local/lib/php/20020429/eaccelerator.so"
    eaccelerator.shm_size="32"
    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"
    Комментируем следующие строчки в конфиге:
    PHP:
    zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-2.5.7
    zend_extension_manager
    .optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-2.5.7
    Если вы не используете Zend optimiser добавить следующее к php.ini:
    PHP:
    extension="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"
    Создать каталог для кеша eAccelerator:
    PHP:
    mkdir /tmp/eaccelerator
    chmod 0777 
    /tmp/eaccelerator
    Вы можете проверить, работает ли eAccelerator скопировав в вашу папку htdocs:
    Code:
    /usr/ports/www/eaccelerator/work/eaccelerator/eaccelerator.php
     
  11. PandoraBox

    PandoraBox Elder - Старейшина

    Joined:
    6 May 2007
    Messages:
    262
    Likes Received:
    176
    Reputations:
    7
    LightHTTPd Install for FreeBSD

    FreeBSD

    FreeBSD has the ports and lighttpd is in this tree for a long time now.

    Code:
    # cd /usr/ports/www/lighttpd
    # make install clean
    Code:
    # cd /usr/ports/lang/php5/
    # make install clean
    Make sure you enable FastCGI support in the configuration dialog. If you don't get the configuration dialog, do "make config" first. The additional CONFIG_ARGS for the PHP5 installation force cgi-fcgi support in /usr/local/bin/php. The option '--with-pcre-regex' is needed to support several functions that use regular expressions like 'preg_match'.

    php -v should give you something like this:

    PHP 5.2.5 with Suhosin-Patch 0.9.6.2 (cli) (built: Dec 8 2007 05:47:06)
    Copyright (c) 1997-2007 The PHP Group
    Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies

    PHP extensions are in /usr/ports/lang/php5-extensions/. If you need mySQL support, that is where you can find it, select only extensions that you actually need. During compiling when it asks you to install UTF8 support, I suggest you install it.

    Code:
    # cd /usr/ports/lang/php5-extensions
    # make config
    # make install clean
    Now that everything is installed, enable Lighttpd in rc.conf and edit it's configuration:

    Code:
    # echo lighttpd_enable=\"YES\" >> /etc/rc.conf
    # cd /usr/local/etc/
    # cp lighttpd.conf.sample lighttpd.conf
    # cp php.ini-recommended php.ini
    You will probably need to create some directories and files, since the port neglects to do them for you (as of 2008 February 24):

    Code:
    # mkdir /var/log/lighttpd
    # touch /var/log/lighttpd/lighttpd.error.log
    # touch /var/log/lighttpd/lighttpd.access.log
    Make your new directories and files accessible by the user and group "www" that Lighttpd operates as:

    Code:
    # chown www:www /var/log/lighttpd
    # chown www:www /var/log/lighttpd/lighttpd.error.log
    # chown www:www /var/log/lighttpd/lighttpd.access.log
    Edit lighttpd.conf to use the new directories and files as follows:

    Code:
    * server.errorlog = "/var/log/lighttpd/lighttpd.error.log"
    * accesslog.filename = "/var/log/lighttpd/lighttpd.access.log"
    Edit lighttpd.conf docroot:

    Code:
    * server.document-root = "/usr/local/www/"
    Test to make sure Lighttpd starts up properly:

    Code:
    # /usr/local/etc/rc.d/lighttpd start
    If you need to, you may shutdown lighttpd this way:

    Code:
    # /usr/local/etc/rc.d/lighttpd stop
    And then restart it with this:

    Code:
    # /usr/local/etc/rc.d/lighttpd restart
    If you get an error that says "permission denied", check to make sure that the files and directories mentioned exist AND that user www has permission to operate on them. Also be sure that lighttpd.conf has been corrected from the non-working default version. If you get no errors, put an HTML file in /usr/local/www/ and try to load it up in your browser. If everything works, now enable PHP:

    * In section "server.modules" uncomment the line "mod_fastcgi"
    * uncomment the entire section "fastcgi.server"
    * add the following lines under "socket" in the "fastcgi.server" section:

    Code:
    "bin-path" => "/usr/local/bin/php-cgi",
    "broken-scriptfilename" => "enable"


    Now make some more files and directories that are missing from the port (as of 2008 Feb 29):

    Code:
    # mkdir /var/run/lighttpd
    # touch /var/run/lighttpd/php-fastcgi.socket


    Make your new directories and files accessible by the user and group "www" that Lighttpd operates as:

    Code:
    # chown www:www /var/run/lighttpd
    # chown www:www /var/run/lighttpd/php-fastcgi.socket