Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|
Установка ПО в системе FreeBSD |

26.08.2008, 18:33
|
|
Постоянный
Регистрация: 06.05.2007
Сообщений: 393
Провел на форуме: 1510937
Репутация:
398
|
|
Установка ПО в системе FreeBSD
Установка ПО в операциононй системе 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.
При этом надо помнить про пути установки, флаги оптимизации, дополнительные зависимости, писать вручную скрипты автозапуска....
А при установке из портов все делается ровно в две команды:
Код:
cd /usr/ports/databases/php5-extensions
make install clean
Q: Где читать про то, что нужно поставить из портов для нормальной работы какого-либо пакета чтобы потом не тыкаться в ошибки?
A: Система портов сделана так, что она автоматически находит все зависимости. Поэтому не надо беспокоиться, что система что-то "забудет" поставить. Будет установлено только то, что нужно для работы.
Например, надо поставиь поддержку mysql для PHP5, но мы не знаем, в каком порте искать. Делаем:
Код:
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
Код:
/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 мегабайт, но потом будет обновлять только измененные порты, а это совсем небольшой трафик. Первый запуск:
Код:
portsnap fetch
portsnap extract
portsnap update
Последующие запуски:
Код:
portsnap fetch
portsnap update
На старых версиях (FreeBSD 4.X и FreeBSD 5.X до версии 5.5) можно воспользоваться cvsup (или csup - аналог cvsup, который полностью переписан с Modula-3 на C) или поставить из портов portsnap
cvsup:
Код:
/usr/ports/net/cvsup-without-gui
csup:
/usr/ports/net/csup
Обновление выглядит так:
Код:
cvsup -g -L 2 /usr/share/examples/cvsup/ports-supfile
csup -g -L 2 /usr/share/examples/cvsup/ports-supfile
предварительно указав в файле ports-supfile хост, с которого будет скачиваться обновленно дерево портов.
portsnap:
Код:
/usr/ports/sysutils/portsnap
Q: Как обновлять установленные порты?
A: Порты следует обновлять программой portupgrade
Поставить ее можно из портов:
Код:
cd /usr/ports/ports-mgmt/portupgrade
make install clean
Q: Как проверить установленное ПО на уязвимость?
A: Очень просто: установив и запустив программу portaudit.
Код:
cd /usr/ports/security/portaudit
make install clean
или:
Код:
cd /usr/ports/ports-mgmt/portaudit
make install clean
Вся процедура аудита очень проста:
Код:
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: Не всегда ведь в портах используются по умолчанию те опции, которые нужны. Как правильно их изменять? Если по умолчанию не установлены необходимые опции, их можно указать при сборке, например
Код:
make -DWITHOUT_IPV6=YES WITH_STATIC_SUPPORT
или установив переменные окружения
Код:
tcsh: setenv WITHOUT_IPV6 YES
bash: export WITHOUT_IPV6=YES
или - прописав в файле /etc/make.conf
Код:
.if ${.CURDIR:N*/ports/<категория>/<название>} == ""
WITHOUT_IPV6=YES
<...>
<другие опции>
.endif
Q: Как изменить опции сборки (те что выбираются в синем окне)?
A: В директории порта выполните:
Код:
make rmconfig
make config
Q: Как правильно накладывать патчи?
A: Для грамотного наложения патча нужно выполнить следующие действия:
Код:
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:
Код:
setenv HTTP_PROXY http://user:pass@192.168.0.1:3128
setenv FTP_PROXY ftp://user:pass@192.168.0.1:3128
Для bash:
Код:
export HTTP_PROXY=http://user:pass@192.168.0.1:3128
export FTP_PROXY=ftp://user:pass@192.168.0.1:3128
Кроме того, в специфических случаях скрипт portsnap можно отредактировать под свои нужды.
Q: Где прописать в системе откуда ей стоит брать порты?
A: Всё в том же /etc/make.conf
Код:
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 При запуске - требуется указать путь к репозиторию и имя порта с категорией, например:
Код:
# portdowngrade -s:pserver:anoncvs@anoncvs.at.FreeBSD.org:/home/ncvs net-mgmt/zabbix-agent$
утилита выведет вам историю ревизий порта, где вы сможете выбрать нужную вам версию:
Код:
=================================================================================================================
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:
Код:
portupgrade -f zabbix-agent
Вот и все. Подробности в man portdowngrade
Q: Как мне "заморозить" порт (или категорию портов) чтобы он не обновлялся при обновлении всего дерева портов?
A: Перейдите с использования portsnap (если используется portsnap) на csup и используйте refuse файлы. refuse файл содержит шаблон, описывающий файлы, не требущие обновления. например:
объяснит csup, что не нужно обновлять jboss4
refuse файлы модно класть в каталог /foo/sup, где foo - каталог описанный директивой base supfile (опция -b при запуске csup), например для base=/usr:
Код:
/usr/sup/refuse
/usr/sup/ports-all/refuse
/usr/sup/src-all/refuse
(c) .sysfaq.ru
|
|
|

26.08.2008, 22:08
|
|
Moderator - Level 7
Регистрация: 16.02.2008
Сообщений: 580
Провел на форуме: 1595333
Репутация:
291
|
|
док хороший. про то что нуно ставить тока из портов - бред. порты не всегда пополняются так оперативно как хотелось бы. в портах не всегда есть то что тебе нужно на данный момент и иногда действительно легче ставить из сорсов.
|
|
|
Установка Apache+MySQL+PHP (сборка с тутариала) |

26.08.2008, 23:19
|
|
Постоянный
Регистрация: 06.05.2007
Сообщений: 393
Провел на форуме: 1510937
Репутация:
398
|
|
Установка Apache+MySQL+PHP (сборка с тутариала)
Код:
аналог wget на FreeBSD должен быть fetch
Линки на свежие дистрибутивы:
Код:
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:
Код:
cd /usr/ports/databases/mysql51-server/
make install clean
После установки:
скрипт для запуска
Код:
/usr/local/etc/rc.d/mysql-server
Стартуем и устанавливаем пароль рута:
/etc/rc.conf
Код:
/usr/local/etc/rc.d/mysql-server start
/usr/local/bin/mysqladmin -u root password 'new-password'
new-password - это пароль от root юзера мускула.
Apache:
Код:
cd /usr/ports/www/apache22/
make install clean
для автозапуска:
в
/etc/rc.conf
Код:
apache22_enable="YES"
запускаем
ВСЁ.
PHP:
Код:
cd /usr/ports/lang/php5
make install clean
cd /usr/ports/lang/php5-extensions/
make install clean
phpMyAdmin:
Потом
Редактируем файл конфигурации апача, например с помощью ее:
ee /usr/local/etc/apache22/httpd.conf
или если есть Миднайт, то
Код:
mcedit /usr/local/etc/apache22/httpd.conf
ищем строчки с надписями AddType и дописываем туда:
Код:
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/" (если параноик, имя можно не стандартное)
Насчёт слешей в конце путей не уверен, вроде не нужны, хз и так и так работает
и ещё добавляем:
Код:
<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 заменяем на ай-пи откуда будем заходить в ПМА.
И ЕЩЁ.
Ищем строки
Код:
<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
Получиться ,что то типа такого:
Код:
<?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 текстом:
Нарушишь порядок, или спутаешь версии - иди покупай бубен, будешь шаманить.
Установка из исходников (оффтоп):
Код:
cd /usr/ports/graphics/gd
make install
создания папок для дистибутивов и распакованых исходников:
Код:
mkdir /usr/local/distr
mkdir /usr/local/src
Разпаковка TAR:
Код:
tar -zxvf <ФАЙЛ> -C <Путь_куда_распаковывать>
пример:
Код:
tar -zxvf apache_1.3.41.tar.gz -C /usr/local/src
Помощь (параметры настройки): конфигурирование (с параметрами настройки)
Код:
./configure (параметры.. ... )
Установка из исходников:
Удаление из исходников:
Код:
cd <путь к исходным текстам>
make uninstall / make distclean
make clean
Последний раз редактировалось PandoraBox; 20.09.2008 в 13:47..
|
|
|

09.09.2008, 14:05
|
|
Banned
Регистрация: 22.12.2007
Сообщений: 660
Провел на форуме: 3885269
Репутация:
1158
|
|
ТС сам писал?
А если мне не нужно устанавливать какую либо или несколько зависимых библиотек?
|
|
|

09.09.2008, 14:36
|
|
Fail
Регистрация: 17.09.2005
Сообщений: 2,242
Провел на форуме: 9089375
Репутация:
4268
|
|
Сообщение от procedure
ТС сам писал?
А если мне не нужно устанавливать какую либо или несколько зависимых библиотек?
При установке из портов,все что надо само выкачаеться и все зависимости будут удовлетворены.
Сразу оговорюсь - иксы и кеды ставить с портов не советую  Хотя можно.
__________________
...
|
|
|

09.09.2008, 15:04
|
|
Участник форума
Регистрация: 11.12.2005
Сообщений: 160
Провел на форуме: 745130
Репутация:
159
|
|
копипастер, оригинал тут http://wiki.sysfaq.ru/w/index.php/Установка_ПО_в_системе_FreeBSD
|
|
|

09.09.2008, 15:53
|
|
Banned
Регистрация: 16.07.2007
Сообщений: 79
Провел на форуме: 801879
Репутация:
337
|
|
Ох ё, уже википедию копирайтить начали...
ps/ может хэндбук под себя заточить?!
Сообщение от NuR
копипастер, оригинал тут http://wiki.sysfaq.ru/w/index.php/Установка_ПО_в_системе_FreeBSD
Причем жёсткий!!!
|
|
|

09.09.2008, 16:15
|
|
Moderator - Level 7
Регистрация: 12.07.2008
Сообщений: 1,705
Провел на форуме: 5914048
Репутация:
1350
|
|
Что не нравится он же указал sysfaq.ru,там закрепили за wiki,чтобы была всегда на виду.В первые она появилась на http://sysadmins.ru/topic107676.html .
|
|
|
Настраиваем PHP+MemCached |

04.01.2009, 03:12
|
|
Постоянный
Регистрация: 06.05.2007
Сообщений: 393
Провел на форуме: 1510937
Репутация:
398
|
|
Настраиваем 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
Прошло нормально? Значит повезло.
У меня FreeBSD пятерка, возникли некоторые проблемы:
PHP код:
/usr/local/bin/phpize: /tmp/download/memcache-2.2.3/build/shtool: Permission 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_object, false, 10) 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
|
|
|
Установка eAccelerator на FreeBSD |

07.02.2009, 13:51
|
|
Постоянный
Регистрация: 06.05.2007
Сообщений: 393
Провел на форуме: 1510937
Репутация:
398
|
|
Установка eAccelerator на FreeBSD
Устанавливаем сервер eAccelerator из портов
PHP код:
cd /usr/ports/www/eaccelerator
make
make install
изменяем файл php.ini
Код:
vi /usr/local/Zend/etc/php.ini
по умолчанию где он находится иначе введите свой путь
добавляем строчки
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:
Код:
/usr/ports/www/eaccelerator/work/eaccelerator/eaccelerator.php
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|