Monthly Archive for March, 2009

FreeBSD: В какую папку ставится Apache по умолчанию

При инсталляции порта или пакета apache* он создает папку с путем /usr/local/www, под которыми и располагаются все его файлы данных.  Сайт, который отображатся при запросе, находится в папке /usr/local/www/data. В принципе это символический линк и вы можете поменять его, чтоб он указывал на любую другую директорию.

Лог файлы apache по умолчанию - это файлы httpd-access.log и  httpd-error.log в директории /var/log/ .

Подробнее об установке и настройке apache сервера на FreeBSD можно прочесть в моей книжке.

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

FreeBSD: Как посмотреть версию mysql

Тут тоже очень все просто.

Версия клиента

Можно запустить команду mysql и она при запуске печатает свою версию.

@all ~> mysql -V
mysql Ver 14.12 Distrib 5.0.17, for portbld-freebsd7.0 (i386) using 5.0
@all ~>

Версия сервера

Continue reading ‘FreeBSD: Как посмотреть версию mysql’

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

FreeBSD: Как сменить группу пользователя

Ничего более легкого :)

Заходите суперпользователем root

Набираете

chsh имя_пользователя

Откроется вот такой экран:

#Changing user information for maxftp.
Login: maxftp
Password: $1$AqlXKJWr$IpheG42fnWLuqyGAqTLwU1
Uid [#]: 1001
Gid [# or name]: 80
Change [month day year]:
Expire [month day year]:
Class:
Home directory: /data/www-root/domain.info/htdocs
Shell: /sbin/ftpnologin
Full Name: User &
Office Location:
Office Phone:
Home Phone:
Other information:

Вместо 80 - это номер группы, которая присвоена пользователю сейчас. В это поле впишите текст - название или ID уже существующей группы, которую нужно присвоить пользователю.

Выходите из редактора - и все, изменения сохранятся в /etc/passwd файл.

Если это вторичная группа - то еще легче - отредактируйте файл /etc/group

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

FreeBSD сервер и USB носители

Буквально вчера нужно было перекинуть с рабочей машины на FreeBSD сервер около  4Гб файлов.

А машина и сервер соеденены DSL модемом.

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

Правда предумострительно взял свой Eee PC 701. На всякий пожарный случай.

Доежжаю до сервера , ставлю копироваться файлы и смотрю, что-то медленно они копируются.

Приглядываюсь. Тьфу. Так и есть.

> dmesg | grep -i usb
ohci0: <OHCI (generic) USB controller> mem ........
usb0: OHCI version 1.0, legacy support
usb0: SMM does not respond, resetting
usb0: <OHCI (generic) USB controller> on ohci0
usb0: USB revision 1.0
umass0: USBest Technology USB Mass Storage Device, rev 2.00/1.00, addr 2
da2: <Ut165 USB2FlashStorage 0.00> Removable Direct Access SCSI-2 device
>

Естественно по USB 1.0 файлы будут копироваться чуть более быстрее, чем через модем.

Вобщем как сердце чуяло.

Достаю Eee PC, нахожу рядом где-то кросс кабель, подключаюсь и быстренько скидываю файлы.

На сервере

ifconfig bge1 192.168.0.2

На eee pc быстро поднимаю какой-то другой адрес из тойже подсетки и вперед :)

По FTP это все залилось минут за 10 наверно, не больше.

Мораль - не всегда физическое подсоединение напрямик к серверу дает большую скорость передачи данных :)

В следующих постах расскажу, как я эти данные (а это текстовые файлы) в MySQL импортировал :).

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

FreeBSD: Статистика ошибок сети

Иногда в FreeBSD нужно бывает посмотреть статистику ошибок сети - есть ли ошибки при передаче и приеме данных на канальном уровне.

Эти данные покажет команда netstat -i

Запускаем netstat -i и видим

Name    Mtu Network       Address              Ipkts Ierrs    Opkts Oerrs  Coll
rl0    1500 <Link#1>      00:e0:7d:e2:92:90    52122     0    64704     0     0
rl0    1500 217.113.255.2 2.255.113.217.in-    51742     -    64678     -     -
plip0  1500 <Link#2>                               0     0        0     0     0
lo0   16384 <Link#3>                            2490     0     2490     0     0
lo0   16384 your-net      localhost             2490     -     2490     -     -

Столбец Ierrs показывает сколько ошибок произошло при приеме пакетов, столбец Oerrs - сколько ошибок произошло при передаче, а Coll - сколько коллизий было при передаче ethernet пакетов.

Если запустить nestat -i -w 1, то можно смотреть статистику в режиме реального времени (суммарно по всем интерфейсам). Чтоб посмотреть статистику по интерфейсам по отдельности нужно запускать netstat -i -w 1 -I имя_интерфейса.

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Бедненькие пиратеги по 10 рублей!

На одном варезном форуме люди просят поделиться книжкой ‘Установка и настройка FreeBSD+apache+mysql+php‘.

Ну ладно бы, если бы они просили халявную версию.

Нет, все существенно лучше - они предлагают скинтуься деньгами и купить ее вскладчину.

Всем кто хочет получить эту книгу (и даже БОЛЬШЕ) не потратив денег - даю наводку.

У меня есть тексты, которые нужно перевести из аудио в текстовый файл и привести в порядок разметку (разметить в формате LaTeX).  Взамен можно получить книжку о FreeBSD сервере :). В качестве бонуса - получите следующую книгу тоже ;)

Таким образом — тратите пару часов времени и книжка ваша :).

Адрес для связи: gasparch@gmail.com

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Как отладить apache при помощи strace

Стоял у меня один apache сервер на Linux/CentOS сервере, и вдруг он стал ни с того ни с сего падать :)

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

Пришлось доставать из загажника тяжелые инструменты. В частности, утилиту strace. Для не-программиста ее вывод страшен и может испугать до смерти. В действительности, ничего страшного там нет.

Давайте посмотрим как это было.

Я мониторил все лог файлы на своем сервере:

tail -f /data/sites/*/logs/error_log /var/log/*

Ошибка, с которой слетает команда tail -
Too many open files

Отлично, увеличиваем лимит количества открытых файлов
limit descriptors 250
и tail запускается.

Apache вылетает и при этом полная тишина в файлах. Вообще. Ти-ши-на.

Значит будем смотреть, что еще делает apache, перед тем как вылететь.

fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
pipe([25, 26]) = 0
fcntl(25, F_GETFL) = 0 (flags O_RDONLY)
fcntl(25, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
open(”/etc/httpd/logs/error_log”, O_WRONLY|O_CREAT|O_APPEND, 0666) = 27
dup2(27, 2) = 2
open(”/data/sites/nevazhno.ru/logs/error_log”, O_WRONLY|O_CREAT|O_APPEND, 0666) = 28
open(”/data/sites/nevazhno.ru/logs/error_log”, O_WRONLY|O_CREAT|O_APPEND, 0666) = 29
open(”/data/sites/nevazhno.ru/logs/error_log”, O_WRONLY|O_CREAT|O_APPEND, 0666) = 30
open(”/data/sites/nevazhno.ru/logs/error_log”, O_WRONLY|O_CREAT|O_APPEND, 0666) = 31
open(”/data/sites/nevazhno.ru/logs/error_log”, O_WRONLY|O_CREAT|O_APPEND, 0666) = 32
open(”/data/sites/nevazhno.ru/logs/error_log”, O_WRONLY|O_CREAT|O_APPEND, 0666) = 33
open(”/data/sites/nevazhno.ru/logs/error_log”, O_WRONLY|O_CREAT|O_APPEND, 0666) = 34
open(”/data/sites/nevazhno.ru/logs/error_log”, O_WRONLY|O_CREAT|O_APPEND, 0666) = 35
open(”/data/sites/nevazhno.ru/logs/error_log”, O_WRONLY|O_CREAT|O_APPEND, 0666) = 36
open(”/data/sites/nevazhno.ru/logs/error_log”, O_WRONLY|O_CREAT|O_APPEND, 0666) = 37
open(”/data/sites/nevazhno.ru/logs/error_log”, O_WRONLY|O_CREAT|O_APPEND, 0666) = 38
open(”/data/sites/nevazhno.ru/logs/error_log”, O_WRONLY|O_CREAT|O_APPEN
open(”/data/sites/nevazhno.ru/logs/access_log”, O_WRONLY|O_CREAT|O_APPEND, 0666) = 69
open(”/data/sites/nevazhno.ru/logs/access_log”, O_WRONLY|O_CREAT|O_APPEND, 0666) = 70
open(”/etc/mime.types”, O_RDONLY) = 71
fstat(71, {st_mode=S_IFREG|0644, st_size=13099, …}) = 0
read(71, “# This is a comment. I love comm”…, 4096) = 4096
read(71, “ion/vnd.groove-tool-message\nappl”…, 4096) = 4096
read(71, “-wbxml\napplication/vnd.uplanet.s”…, 4096) = 4096
read(71, “\ntext/sgml\t\t\tsgml sgm\ntext/tab-s”…, 4096) = 811
read(71, “”, 4096) = 0
close(71) = 0
semget(IPC_PRIVATE, 1, IPC_CREAT|0600) = -1 ENOSPC (No space left on device)
open(”/etc/localtime”, O_RDONLY) = 71
fstat(71, {st_mode=S_IFREG|0644, st_size=1267, …}) = 0
fstat(71, {st_mode=S_IFREG|0644, st_size=1267, …}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0×2a98c29000
read(71, “TZif\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0\4\0″…, 1024) = 1024
read(71, “\0\1\0\1\0\1\0\1\2\3\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1″…, 1024) = 243
close(71) = 0
munmap(0×2a98c29000, 4096) = 0
write(27, “[Fri Feb 20 17:39:14 2009] [crit"..., 110) = 110
write(2, "Configuration Failed\n", 21) = 21
close(70) = 0
close(69) = 0
close(68) = 0
close(67) = 0
close(66) = 0
close(65) = 0
close(64) = 0
close(63) = 0
close(62) = 0
close(61) = 0
close(60) = 0
close(59) = 0
close(58) = 0
close(57) = 0

Ого, я заметил лог файл, который я не мониторил (/etc/httpd/logs/error_log), ну и видна ошибка (Configuration Failed).

Начинаем мониторить еще один файл
tail -f /etc/httpd/logs/error_log

Читаем сообщение:

[Fri Feb 20 17:40:01 2009] [crit] (28)No space left on device: mod_rewrite: could not create rewrite_log_lock
Configuration Failed

Проверяем место на диске:

@gasparch ~> df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vzfs xxxxx xxxxx 1150814 xx% /
@gasparch ~>

Есть как минимум один гигабайт свободно места - и тем не менее No space left.

Попутно я проверил количество свободный inodes - они тоже были свободны. А места нет :)

@gasparch ~> strace -o log httpd
@gasparch ~> grep rewrite log
open("/etc/httpd/modules/mod_rewrite.so", O_RDONLY) = 4

Записываем лог выполнения httpd в файл log и проверяем, что же там вытворяет rewrite модуль и какой файл он пытается отрыть. В результате - пустота. Странно. Проверяем по конфигу.

@gasparch ~> grep -i rewrite /etc/httpd/conf/httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so

Значит rewrite модуль активируется где-то в .htaccess файлах.

Я помню, что запуск Rewrite модуля был в корневой директории какого-то сайта, поэтому можно искать просто patter-ом, а не командой find.

Просто командой
grep -i rewrite /data/sites/*/htdocs/.htaccess

Никах упоминаний RewriteLog или чего-то подобного.

А вот как я это лечил и заставил всю эту фигню работать - это читайте в книжке.  Плюс там я подробнее разберу, как именно разбирать и понимать лог файл strace. На FreeBSD аналог этой команды - ktrace/kdump.

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).