Archive

Posts Tagged ‘FreeBSD’

Перенос базы пользователей FreeBSD

March 11th, 2010

Чтобы перенести всех системных пользователей на другой сервер надо просто скопировать поверх файлы /etc/master.passwd и /etc/group, и затем на новом сервере выполнить команду

pwd_mkdb master.passwd

FreeBSD

Даунгрейд порта во FreeBSD

October 12th, 2009

Иногда возникает необходимость откатить приложение установленное через порты на более раннюю версию. Сначала откатим данные в нашей базе портов на нужную версию. К примеру будем откатывать php:

cd /usr/ports/ports-mgmt/portdowngrade && make install clean
/usr/local/sbin/portdowngrade -s "anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs" lang/php5
Выбираем 1, выбираем номер версии на которую нужно откатиться, пишем yes

Теперь мы получили нужную версию в дереве портов. Теперь, чтобы переустановить приложение в систему:

portupgrade -f php5

Если надо даунгрейдить другие приложения, то шаги нужно повторить.

FreeBSD ,

Установка jail во FreeBSD

July 20th, 2009

Сначала скачиваем исходники системы.
Внимание на тэг обновления! Он обязательно должен совпадать с веткой установленной системы. Например, для системы FreeBSD 7.2-RELEASE-p2 тэг должен быть tag=RELENG_7_2.

cd /usr/share/examples/cvsup

Правим хост в standard-supfile на *default host=cvsup5.FreeBSD.org и запускаем:

csup ./standard-supfile

Затем:

mkdir /home/jail_sample
setenv D /home/jail_sample
mkdir -p $D
cd /usr/src
make buildworld
make installworld DESTDIR=$D
cd etc/ [1]
make distribution DESTDIR=$D
mount -t devfs devfs $D/dev

В rc.conf :

ifconfig_bge0="inet 1.2.3.1  netmask 255.255.255.0"
ifconfig_bge0_alias0="inet 1.2.3.2 netmask 255.255.255.255"

jail_enable="YES"
jail_list="sample"

jail_sample_rootdir="/home/jail_sample"
jail_sample_hostname="www.sample.com"
jail_sample_ip="1.2.3.2"
jail_sample_devfs_enable="YES"
jail_sample_sysvips_allow="YES"

Убедиться, что демоны на хост-машине и в jail не пересекаются по используемым IP-адресам.

Команды для управления jail-ом:

/etc/rc.d/jail start/stop/restart sample
jls # список запущенных jail
jexec 2 tcsh # запустить шелл внутри jail с ID=2

Возможно, потребуется поправить некоторые sysctl на хост-машине:

  • security.jail.set_hostname_allowed – если 1, то внутри jail можно поменять имя хоста;
  • security.jail.socket_unixiproute_only – если 1 , то сокет в jail можно создать только для доменов PF_LOCAL, PF_INET или PF_ROUTE, иначе, возвращается ошибка;
  • security.jail.sysvipc_allowed – если 1, то то в jail можно получить доступ к глобальному System V IPC;
  • security.jail.getfsstatroot_only – если 1, то в jail можно получить информацию (df)только о той файловой системе на которой создан jail;
  • security.jail.allow_raw_sockets – если 1, то в jail можно создавать raw sockets;
  • security.jail.chflags_allow – если 1, то процессы в jail могут модифицировать флаги ФС.

FreeBSD ,

Наблюдение за загрузкой канала клиентами в реальном времени

July 15th, 2009

Часто возникает задача в реальном времени наблюдать за загрузкой интернет-канала по пользователям сидящими за nat-ом. С этим отлично справляется iftop. Он выдает вот такую картинку:
iftop

Ставим:

cd /usr/ports/net-mgmt/iftop && make install

Можно использовать такой конфиг (.iftoprc) где 2М это ширина входящего интернет-канала:

port-resolution: no
show-bars: yes
promiscuous: no
port-display: off
line-display: one-line-sent
max-bandwidth: 2M
hide-source: yes

Запускаем:

iftop -c ./.iftoprc

FreeBSD ,

Скрипт автоматической установки типового веб-сервера на FreeBSD

July 5th, 2009

Задача: в автоматическом режиме установить основное ПО необходимое для работы веб-сервера: nginx/Apache/PHP/MySQL/vsftpd.
Скачать скрипт целиком

#!/bin/sh

### ver. 0.92 from 7.07.2009

### No need change in this script ###

os=`uname -a |grep -c FreeBSD`
if [ $os = "0" ]; then
    echo "This script work only on FreeBSD. Exit."
    exit
fi

echo "Enter username to create (default, admin):"
read USER
echo "This host is VPS? (yes/no. Default, no):"
read thisvps

if [ -z $USER ]; then
    USER=admin
fi
if [ -z $thisvps ]; then
    thisvps=no
fi

confighost=unix-notes.ru
USERPASS=`< /dev/urandom tr -dc A-Za-z0-9 | head -c15`
SQLPASS=`< /dev/urandom tr -dc A-Za-z0-9 | head -c15`
thiswebazilla=`uname -a | grep -c "webazilla"`

echo "WITHOUT_X11=yes" >> /etc/make.conf
echo "WITHOUT_IPV6=yes" >> /etc/make.conf
echo "WITHOUT_SAMBA=yes" >> /etc/make.conf

echo 'fsck_y_enable="YES"' >> /etc/rc.conf
echo 'icmp_drop_redirect="YES"' >> /etc/rc.conf
echo 'accounting_enable="YES"' >> /etc/rc.conf
echo 'syslogd_flags="-ss"' >> /etc/rc.conf
echo 'tcp_drop_synfin="YES"' >> /etc/rc.conf
echo 'tcp_restrict_rst="YES"' >> /etc/rc.conf
echo 'apache2_enable="YES"' >> /etc/rc.conf
echo 'mysql_enable="YES"' >> /etc/rc.conf
echo 'mysql_dbdir="/home/mysql"' >> /etc/rc.conf
echo 'nginx_enable="YES"' >> /etc/rc.conf
echo 'vsftpd_enable="YES"' >> /etc/rc.conf

# check to exist homedir
if [ ! -d /home ];  then
   echo "/home is no exist! setup canceled."
   exit
fi

# add additional dns servers, OpenDNS
echo "nameserver 208.67.222.222" >> /etc/resolv.conf

mkdir /root/.ssh
cd /root/.ssh
fetch http://$confighost/config/ssh/egor-pentarh/authorized_keys
chown -R root /root
chmod -R 400 /root

if [ $thisvps = "no" ]; then
    cd /etc
    rm -f /etc/sysctl.conf
    fetch http://$confighost/config/freebsd/sysctl.conf
    /etc/rc.d/sysctl restart

    ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
    ntpdate pool.ntp.org
    echo "1 1 * * * root ntpdate pool.ntp.org" >> /etc/crontab
fi

if [ $thisvps = "yes" ]; then
    ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
fi

freebsd-update fetch
freebsd-update install

portsnap fetch
portsnap extract
portsnap update

make WITHOUT_SAMBA=yes -DBATCH -C /usr/ports/misc/mc install clean
make WITH_RC_NG=yes -DBATCH -C /usr/ports/ftp/vsftpd install clean
make WITHOUT_IPV6=yes -DBATCH -C /usr/ports/www/apache20 install clean
make WITH_CHARSET=utf8 WITH_COLLATION=utf8_unicode_ci -DBATCH -C /usr/ports/databases/mysql51-server install clean
make WITH_APACHE=yes WITHOUT_IPV6=yes -DBATCH -C /usr/ports/lang/php5 install clean
make WITH_BUNDLED_PCRE=yes -DBATCH -C /usr/ports/devel/php5-pcre install clean
make WITH_MBSTRING=yes WITH_CURL=yes WITH_FTP=yes WITH_GD=yes WITH_MCRYPT=yes WITH_MYSQL=yes WITH_MYSQLI=yes WITH_OPENSSL=yes WITH_SOCKETS=yes WITH_ZLIB=yes -DBATCH -C /usr/ports/lang/php5-extensions install clean
make -DBATCH -C /usr/ports/www/mod_geoip2 install clean
make WITH_HTTP_FLV_MODULE=yes -DBATCH -C /usr/ports/www/nginx install clean
make -DBATCH -C /usr/ports/www/mod_rpaf2 install clean
make -DBATCH -C /usr/ports/devel/ZendOptimizer install clean

cd /usr/local/etc
rm -f /usr/local/etc/vsftpd.conf
fetch http://$confighost/config/linux/vsftpd.conf
chmod 400 /usr/local/etc/vsftpd.conf

cd /usr/local/etc/apache2/Includes
fetch http://$confighost/config/freebsd/mod_rpaf.conf
iplist=`ifconfig | grep inet | grep -v inet6 | awk '{print $2}' | grep -v '^$' | tr "\n" " "`
sed -I "" "s/127.0.0.1/$iplist/g" /usr/local/etc/apache2/Includes/mod_rpaf.conf
mkdir /var/log/httpd
chmod 777 /var/log/httpd

# Create user and setup user folders
pw user add $USER -d /home/$USER -m -s /sbin/nologin
echo "$USERPASS" |pw usermod $USER -h0
mkdir /home/$USER/domains
chmod -R 755 /home/$USER
chown -R $USER:www /home/$USER/domains

cd /home/$USER
fetch http://$confighost/config/freebsd/create_domain.sh
sed -I "" "s/testuser/$USER/g" /home/$USER/create_domain.sh
chmod +x /home/$USER/create_domain.sh
mkdir /usr/local/etc/apache2/vhosts
cd /usr/local/etc/apache2/vhosts
fetch http://$confighost/config/freebsd/sample

cd /home/$USER
fetch http://$confighost/config/freebsd/create_base.sh
sed -I "" "s/INSERTPASSHERE/$SQLPASS/g" /home/$USER/create_base.sh
chmod +x /home/$USER/create_base.sh

cd /home/$USER
fetch http://$confighost/config/freebsd/create_multi_bases.sh
sed -I "" "s/INSERTPASSHERE/$SQLPASS/g" /home/$USER/create_multi_bases.sh
sed -I "" "s/username/$USER/g" /home/$USER/create_multi_bases.sh
chmod +x /home/$USER/create_multi_bases.sh


cd /usr/local/etc/apache2
rm -f /usr/local/etc/apache2/httpd.conf
fetch http://$confighost/config/freebsd/httpd.conf

cd /usr/local/etc/
fetch http://$confighost/config/freebsd/php.ini

cd /usr/local/etc/nginx
rm -f /usr/local/etc/nginx/nginx.conf
fetch http://$confighost/config/freebsd/nginx.conf
iplist2=`ifconfig | grep inet | grep -v inet6 | awk '{print $2}' | grep -v '^$'|grep -v 127.0.0.1 | sed 's/\(.*\)/listen \1;/'`
sed -I "" "s/user_name/$USER/g" /usr/local/etc/nginx/nginx.conf
sed -I "" "s/IPADDR/$iplist2/g" /usr/local/etc/nginx/nginx.conf
mkdir /var/log/nginx/
chmod 777 /var/log/nginx/

mkdir /home/mysql
mkdir /home/mysql/tmp
chown -R mysql /home/mysql/
chmod -R 755 /home/mysql/
cd /etc
rm -f /etc/my.cnf
if [ $thisvps = "no" ]; then
    fetch http://$confighost/config/freebsd/my.cnf
fi
if [ $thisvps = "yes" ]; then
    fetch http://$confighost/config/freebsd/vps/my.cnf
fi
touch /var/log/mysqld.log
chmod 777 /var/log/mysqld.log
/usr/local/etc/rc.d/mysql-server start
/usr/local/bin/mysqladmin password $SQLPASS
echo "DELETE FROM mysql.user WHERE Password=''" | /usr/local/bin/mysql --password=$SQLPASS

/usr/local/etc/rc.d/apache2 start
/usr/local/etc/rc.d/nginx start
/usr/local/etc/rc.d/vsftpd start

echo "##############################"
echo "Setup ready!"
echo "FTP username: $USER"
echo "FTP password: $USERPASS"
echo "MySQL root password: $SQLPASS"
echo "##############################"

FreeBSD ,

Базовая настройка ipfilter

June 3rd, 2009

К пакету применяется последнее подходящее правило.
Параметры в rc.conf:

ipfilter_enable="YES"             # Запуск межсетевого экрана ipf
ipfilter_rules="/etc/ipf.rules"   # Загрузка файла с правилами
gateway_enable="YES"              # Включение шлюза для локальной сети
ipnat_enable="YES"                # Если надо задействовать nat
ipnat_rules="/etc/ipnat.rules"    # Определение файла правил для ipnat

Примеры правил в ipf.rules:

pass out quick on lo0 proto ip from any to any
pass in quick on lo0 proto ip from any to any
pass in quick on fxp1 proto tcp from any to 1.2.3.1/32 port = 80 flags S keep state
pass out log quick on fxp1 from 1.2.3.1/32 to any
pass in quick on fxp1 proto icmp from any to any icmp-type 0
pass in quick on fxp1 proto icmp from any to any icmp-type 11
block in log quick on fxp1 proto icmp from any to any
block return-icmp(port-unr) in log quick on tun0 proto udp from any to 20.20.20.0/24 port = 111

quick означает, что если анализируемый пакет подпадает под данное правило, то дальнейший просмотр правил прекращается.
keep state означает, что так же будут разрешены все пакеты, которые пойдут по этому же соединению в том числе в обратную сторону.

Примеры редиректов в ipnat.rules:

map tun0 192.168.1.0/24 -> 20.20.20.1/32
map tun0 192.168.1.0/24 -> 0/32 portmap tcp/udp 20000:30000

Запускаем:

/etc/rc.d/ipfilter start
/etc/rc.d/ipnat start

Команды:

ipf -Fa -f /etc/ipf.rules # сбросить все правила и загрузить новые из файла                              
ipfstat -in # вывод правил для входящего трафика
ipfstat -on # вывод правил для исходящего трафика
ipfstat -t # просмотр текущей статистики в виде TOP-а
ipnat -l # смотрим текущие редиректы для ipnat
/etc/rc.d/ipnat reload #для перезагрузки правил ната

FreeBSD , ,

Создать диск в памяти (FreeBSD)

April 22nd, 2009

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

#!/bin/sh
DISKSIZE="256m"
case "$1" in
        start)
                /bin/echo -n "Starting memdisk "
                /sbin/mdconfig -a -t swap -s $DISKSIZE
                /bin/mkdir -p /mnt/md0
                /bin/chmod 777 /mnt/md0
                /sbin/newfs /dev/md0
                /sbin/mount /dev/md0 /mnt/md0
        ;;

        stop)
                /bin/echo -n "Shutting memdisk "
                /sbin/umount -f /mnt/md0
                /sbin/mdconfig -d -u md0
                /bin/rm -R /mnt/md0
        ;;

        restart)
                $0 stop
                $0 start
        ;;

        *)
                echo "Usage: $0 {start|stop}"
                exit 1
        ;;

esac

Естественно, надо убедиться, что диска md0 еще нет в системе.

FreeBSD ,

Использование ipfw table

March 19th, 2009

Использование таблиц файрвола IPFW в некоторых случаях может быть очень удобным. Например, если нужно заблокировать много ip при dos-атаке. Суть в том, что все ip-адреса помещаются в таблицу и в правилах файрвола оперируем уже таблицей целиком.

ipfw table 3 add 10.10.11.1 #добавление в таблицу
ipfw table 3 add 10.11.11.2/24 #добавление в таблицу
ipfw table 3 list #посмотреть что в таблице
ipfw add deny ip from table\(3\) to me #пример исп-я. Слэши нужны!
ipfw table 3 delete 10.10.11.1 #удаляем
ipfw table 3 flush #чистим всю таблицу

Оперативно обновлять таблицу можно, к примеру, так:

#!/bin/sh
ipfw table 3 flush
cat /etc/ip.txt | while read ip; do
  ipfw table 3 add $ip
done

FreeBSD ,

Памятка по работе с портами FreeBSD

February 16th, 2009
portsnap fetch  #получить свежую базу портов
portsnap extract  #распаковать базу
portsnap update  #обновить локальную базу после получения и распаковки
make extract # извлечь исходники для сборки
make config  #указать праметры для сборки, они запомнятся для обновления порта
make showconfig #показать варианты конфигурирования
make rmconfig #удалить пользовательские настройки для сборки
make fetch-list #показать какие файлы будут загружены
make fetch-recursive-list #показать какие файлы будут загружены включая все зависимые
make  #собрать приложение
make install  #собрать и установить приложение
make deinstall  #удалить приложение
make reinstall  #переустановить приложение
make clean  #удалить рабочие файлы
pkg_delete mc  #удалить приложение
pkg_info  #Список установленных приложений
pkg_version -v  #Проверка на необходимость обновления
portupgrade mc  #Обновления какого-либо порта (требуется установка)
portaudit -Fda  #Проверка приложений на уязвимости (требуется установка)
portupgrade "php5-*" #Обновить все PHP5 пакеты
portmaster /usr/ports/misc/mc - установить mc с помощью Portmaster (тоже есть в портах)
portmaster expat-1.95.8 - обновляем expat
portmaster --clean-distfiles-all - удалить все старые скаченные дистрибутивы пакетов из distfiles

Дополнения и комментарии приветствуются!

FreeBSD , ,

Собрать программу со статически слинкованными библиотеками (FreeBSD)

February 5th, 2009

Данная манипуляция может понадобиться, например, если необходимо переносить и запускать программу на различных серверах, возможно не имеющих необходимых библиотек. Сделаем это на примере порта ncftp3:

cd /usr/ports/ftp/ncftp3
make configure
cd ./work/ncftp-3.2.2
./configure

Правим Makefile, дописываем в строчку CFLAGS= параметр “-static”.

cd ../..
make

Все. Из папки /usr/ports/ftp/ncftp3/work/ncftp-3.2.2/bin можно забирать готовые бинарники.

FreeBSD ,

Конфигурация nginx, не универсальная, freebsd

January 31st, 2009

nginx.conf:

user nobody;
worker_processes 2;
worker_rlimit_nofile 8192;

error_log /var/log/nginx/nginx-error.log crit;

pid /var/run/nginx.pid;

events {
    worker_connections 8192;
    use kqueue;
}

http {
    include mime.types;
    default_type application/octet-stream;

    #access_log /var/log/nginx/nginx-access.log;
    access_log  off;

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;

    keepalive_timeout 65;
    client_max_body_size 20m;

    server {
        listen 1.2.3.1 default accept_filter=httpready;
        server_name foobar;
        location / {
            root /var/empty;
        }
    }

    include /usr/local/etc/nginx/vhosts/*.conf;
}

Файл-пример конфига для виртхоста:

server {
    listen 1.2.3.2;

    server_name sample.com www.sample.com;
    location ~ /\.ht {
        deny  all;
    }

    location ~* \.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ {
        root /usr/home/domains/sample.com;
expires max;
    }

location / {
        proxy_pass         http://127.0.0.1:80;
        proxy_redirect     off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        client_body_buffer_size    128k;
        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;
        proxy_temp_file_write_size 64k;
    }
}

nginx ,

установка OpenVPN на FreeBSD

January 20th, 2009

Установим OpenVPN в самой простой конфигурации, когда есть один статический ключ и мы хотим чтобы пользователь ходил по инету через впн:

cd /usr/ports/security/openvpn && make install
cd /etc
openvpn --genkey --secret static.key

Конфиг положим сюда /etc/openvpn.conf:

dev tun
ifconfig 10.8.0.1 10.8.0.2
secret static.key
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
comp-lzo
user nobody
group nobody
daemon
log /var/log/openvpn.log
status /var/log/openvpn-status.log
verb 4
mute 10

В rc.conf:

openvpn_enable="YES"
openvpn_configfile="/etc/openvpn.conf"
ipnat_enable="YES"
ipnat_rules="/etc/ipnat.rules"
gateway_enable="YES"

В /etc/ipnat.rules:

map bge0 10.8.0.0/16 -&gt; 0/32

где bge0 внешний интерфейс сервера.

Включаем openvpn, роутинг и нат:

/etc/rc.d/ipnat start
/usr/local/etc/rc.d/openvpn start
sysctl net.inet.ip.forwarding=1

Теперь на клиента надо скопировать static.key. Поставить виндовый клиент и сделать такой конфиг-файл:

proto udp
remote ип-сервера
dev tun
ifconfig 10.8.0.2 10.8.0.1
secret static.key
comp-lzo
keepalive 10 60
ping-timer-rem
redirect-gateway

Надо отметить, что эта конфигурация пригодна для эксплуатации одновременно только с одним клиентом.

FreeBSD, vpn , ,

настройка ssmtp (FreeBSD)

December 9th, 2008

Установим и автоматически заменим системный почтовик:

cd /usr/ports/mail/ssmtp && make install replace clean

В /usr/local/etc/ssmtp/ssmtp.conf

root=admin@domain.ru
mailhub=mail.domain.ru
hostname=this-host.domain.ru
rewritedomain=domain.ru

Таким образом вся почта отправленная на локального root-а уйдет на admin@domain.ru

FreeBSD, почта , ,

sysctl.conf (для i386 & amd64)

December 9th, 2008
security.bsd.see_other_uids=0
security.bsd.see_other_gids=0
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
net.link.ether.inet.log_arp_movements=1
net.inet.icmp.drop_redirect=1
net.inet.icmp.bmcastecho=0
net.inet.tcp.icmp_may_rst=0
kern.sync_on_panic=1
kern.coredump=0
net.inet.ip.random_id=1
net.inet.icmp.maskrepl=1
kern.ipc.somaxconn=8096
kern.threads.max_threads_per_proc=8096
kern.maxfiles=204800
net.inet.tcp.sendspace=65535
net.inet.udp.recvspace=65535
net.inet.ip.intr_queue_maxlen=100
net.inet.tcp.rfc1323=1
kern.maxvnodes=150000
net.inet.ip.portrange.randomized=0
net.inet.ip.portrange.first=1024
net.inet.ip.portrange.last=65536
net.inet.tcp.nolocaltimewait=1
kern.ipc.maxsockets=204800
kern.ipc.nmbclusters=32768
# 65536 - если кол-во подключений будет очень большое. потребует 144 мб от памяти ядра

Применить:

/etc/rc.d/sysctl restart

FreeBSD ,

rc.conf

December 9th, 2008
fsck_y_enable="YES"
icmp_drop_redirect="YES"
accounting_enable="YES"
syslogd_flags="-ss"
tcp_drop_synfin="YES"
tcp_restrict_rst="YES"

sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"

FreeBSD

установка snmpd

December 9th, 2008

если на фре надо поддержку 64-bit счетчиков то компилим так:

make WITHOUT_PERL_EMBEDDED=yes WITH_MFD_REWRITES=yes -DBATCH -C /usr/ports/net-mgmt/net-snmp install clean

snmpd_enable="YES"
snmpd_conffile="/usr/local/etc/snmp/snmpd.conf"
snmpd_pidfile="/var/run/snmpd.pid"

mkdir /usr/local/etc/snmp
/usr/local/etc/rc.d/snmpd start

FreeBSD , ,

tcsh

December 9th, 2008

поменять шелл:

pw usermod egor -s tcsh

в .cshrc

alias ll        /bin/ls -AlFG
alias ls        /bin/ls -FG
alias df    df -h
alias du    du -hс
   
setenv  EDITOR  ee
setenv  PAGER   less
set prompt = '[%n@%B%m%b] %~%# '
set ignoreeof
set nobeep
set autolist

FreeBSD ,

FreeBSD, мониторинг, производительность

December 9th, 2008

top -mio -o total – показать I/O по процессам
top -S – показать системные процессы в топе (по дефолту они не показываются)
gstat – нагрузка на диски
iostat -d -w1 -c7 – нагрузка на диски
systat -io start 1
diskinfo -t da0 – тест на дисковую производительность
tunefs -p /var/ – информация о настройках файловой системы
vmstat -z чего не хватает
vmstat -i прерывания по устройствам
netstat -i ошибки на интерфейсах
systat -ifstat – интенсивность передачи трафика
netstat -inb – передано через интерфейс в байтах
netstat -w1 – количество пакетов/ошибок/байт на интерфейсе
sysctl kern.ipc.numopensockets – количество открытых сокетов
df -H – количество свободного места
df -i – количество свободных инодов

Для детальной информации по расходу памяти:

fetch -o /usr/local/bin/free http://people.freebsd.org/~rse/dist/freebsd-memory
chmod +x /usr/local/bin/free
free

Смотреть top: mem Inact, если меньше RAM/2 то мало памяти под дисковый кеш.

“помеченные как Inact, Cache и Buf – это всё кэшированные данные разных степеней устаревания”

При большой дисковой нагрузке, особенно с большим количеством мелких файлов смотреть на vfs.ufs.dirhash_maxmem. Можно увеличить до 8-16-32 мегов и более. sysctl -a | egrep “kmem|dirhash|shpg” смотреть чтобы vfs.ufs.dirhash_lowmemcount не росло.

+ неплохой обобщающий топик про тюнинг nginx

Выжимка из доклада Сысоева про тюнинг фряхи

Хороший топик про Тюнинг отдачи мелких картинок через nginx на FreeBSD

FreeBSD ,

чтобы собрать порт с параметрами (например вкомпилить модули в апач)

December 9th, 2008
cd /usr/ports/www/apache20
make configure
cd ./work/программа

сказать configure с нужными опциями
вернуться ../../ и сказать

make
make install

FreeBSD

как бить разделы

December 9th, 2008

/ – 1Г
swap – 2*размер оперативы
/tmp – 2Г
/usr/ – 10-20Г
/usr/home – остальное
/var – 5-10Г

На /tmp в fstab рекомендуется поставить параметр noexec

FreeBSD ,

недорогой септик для дачи .