Метка: ubuntu
Отладка заголовков в Nginx
Сервер Nginx позволяет передавать заголовки при проксировании через директивы:
Синтаксис: proxy_set_header поле значение;
Умолчание:
proxy_set_header Host $proxy_host;
proxy_set_header Connection close;
Контекст: http, server, location
Выглядит в конфиге это примерно так:
location / {
proxy_pass http://headers;
proxy_set_header X-FORWARDED-FOR $remote_addr;
}
Я столкнулся с тем, что не всегда и не все заголовки передаются, но об этом позже. Отсюда возник вопрос: каким образом определить на проксирующем nginx, какие переданы заголовки.
Настройка мониторинга php-fpm через Datadog
Для настройки мониторинга необходимо внести некоторые изменеия в pool, который собираемся мониторить, настройку хоста в nginx и подключить конфиг агенту datadog.
Для начала откроем файл пула и раскоментируем следующие строки:
pm.status_path = /status
ping.path = /ping
ping.response = pong
Используем в Ubuntu sudo без пароля
Если вам нужно часто управлять вашим домашним компьютером или сервером, может надоедать постоянно вводить пароль с командой sudo
. Решение этого вопроса нашлось на http://askubuntu.com/a/147265.
Достаточно открыть терминал и ввести команду:
sudo visudo
после чего в последний раз ввести пароль.
Эта команда откроет конфигурацию sudo, в которую внизу нужно прописать:
username ALL=(ALL) NOPASSWD: ALL
где username
- это имя вашего пользователя.
Запуск тестов в selenium на сервере без монитора
Перед каждым разработчиком рано или поздно встает вопрос тестирования его кода. При чем unit-тестирование покрывает не всегда и не все нужды. Для более полного обеспечения качества создаваемого проекта приходится прибегать и к приемочному тестированию.
На сегодняшний день дела обстоят более менее не плохо. Есть набивший многим оскомину селениум. Есть Mink Константина Кудряшова, который позволяет писать функциональные/приемочные тесты в достаточно дружелюбном стиле. И при чем в качестве драйвера использовать не только селениум, среди перечня доступных есть вполне достойный безголовый zombie. Но, после моих тестов наиболее точным тестирование оказалось только через селениум. Зомби по каким-то причинам выкидывал ошибки при парсинге jquery.
Но, минус селениума в том, что ему для работы нужен браузер (по традиции firefox). А firefox требует для запуска дисплей. А на моем сервере, который используется для Continuous Integration монитора нет (это же сервер). Решение было найдено в лице утилиты Xvfb, представляющей из себя виртуальный дисплей.
Переименовать файлы в нижний регистр
Переименовать все файлы в текущей и во всех вложенных директориях в нижний регистр:
find ./ -type f | awk '{ print $1 " " tolower($1) }' | xargs -L 1 mv
Харитон Мизгирь пишет: Чтобы обрабатывались пути с пробелами и проч. непечатностями надо использовать конструкцию типа:
find -print0 | xargs -0
Объяснение по поводу параметра -print0
(find'а) и -0
(xargs'а)
В имени файла может попасться символ, который требует экранирования при обработке (single or double quotes, spaces or newlines). print0
заставляет выводить список найденных файлов разделяя их через нуль-символ (\0
, в духе языка C, где он используется для декларации конца строки). xargs
тоже должен быть готов к такому разделителю, для этого служит -0
.
find
и xargs
по разному себя ведет когда ищут из текущей директории или когда ищут из родительской (в родительской прекрасно обрабатывал директории с пробелами и любыми кавычками, которые находились в дочерней директории). newlines не обрабатывается нигде.
Обновление Nginx 1.1 на 1.6 в Ubuntu 12.04
Решил обновить Nginx на последнюю стабильную версию, т.к. по умолчанию в Ubuntu 12.04 все еще лежит старьё Nginx 1.1, а на официальном сайте предлагают уже 1.6 и 1.7
Казалось бы, всё просто, как рекомендует официальный сайт:
Скачиваем сертификат и устанавливаем в систему:
wget http://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
Потом открываем /etc/apt/sources.list
sudo nano /etc/apt/sources.list
и вставляем в конец файла
deb http://nginx.org/packages/ubuntu/ precise nginx
deb-src http://nginx.org/packages/ubuntu/ precise nginx
Далее выполняем обновление и получаем готовый свеженький Nginx:
sudo apt-get update
sudo apt-get dist-upgrade
Но, не тут-то было. Вместо профита получаем ошибку
Перегрев процессора из-за 100% загрузки gvfsd-metadata
На улице наконец установились теплые деньки... так же, как и у моего ноутбука vaio. При чем до такой степени, что печатать что-либо стало не возможно, т.к. руки постоянно потели.
Запустив в консоли команду top
, увидел, что почти все ресурсы процессора съедает программа gvfsd-metadata
:
~$ top
top - 19:10:37 up 1:22, 2 users, load average: 1,83, 1,89, 1,91
Tasks: 234 total, 2 running, 232 sleeping, 0 stopped, 0 zombie
%Cpu(s): 29,6 us, 4,0 sy, 0,0 ni, 61,6 id, 4,3 wa, 0,0 hi, 0,5 si, 0,0 st
КиБ Mem: 8157760 total, 5089708 used, 3068052 free, 328028 buffers
КиБ Swap: 8368124 total, 0 used, 8368124 free, 1725240 cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3299 username 20 0 120m 5032 2856 R 77,1 0,1 32:44.84 gvfsd-metadata
3681 username 20 0 1858m 734m 54m S 17,0 9,2 14:10.69 firefox
1715 root 20 0 207m 74m 40m S 7,0 0,9 4:04.32 Xorg
3310 username 20 0 738m 21m 13m S 6,3 0,3 3:53.82 unity-panel-ser
3312 username 20 0 342m 5448 3588 S 4,7 0,1 2:59.51 hud-service
3107 username 20 0 1607m 128m 56m S 4,3 1,6 1:46.43 compiz
Загуглив этот процесс, увидел, что проблема достаточно распространенная. Нашел решение на ubuntu-форумах. Предлагается всего лишь почистить директорию с данными этого процесса:
~$ rm -rf ~/.local/share/gvfs-metadata
После выполнения команды становится значительно легче работать, а кулер уже шумит не так громко. Не знаю, на сколько это решение окончательное, буду мониторить в ближайшие дни, и если проблема всплывет вновь, придется искать другое решение.
Снимаем блокировку с /var/lib/dpkg/
Если во время установки или обновления программ через apt-get
процесс был прерван нажатием Ctrl+Z, то при следующей попытке запуска apt-get
получим ошибку:
E: Не удалось получить доступ к файлу блокировки /var/lib/dpkg/lock - open (11: Ресурс временно недоступен)
E: Не удалось выполнить блокировку управляющего каталога (/var/lib/dpkg/); он уже используется другим процессом?
Хорошо, что можно разблокировать каталог всего одной командой. А избавиться от этой проблемы просто, достаточно выполнить команду:
sudo fuser -vki /var/lib/dpkg/lock
Должно получиться примерно так:
ПОЛЬЗ-ЛЬ PID ДОСТУП КОМАНДА
/var/lib/dpkg/lock: root 4581 F.... dpkg
Завершить процесс 4581? (y/N) Y
Нажимаем «Y» и наслаждаемся нормальной работой apt-get
. Я думаю многие пользователи знали об этой команде, но некоторые новички единственным выходом считали — sudo reboot
.
Конвертация сертификата cer в pem
Бывает, что предоставляют разработчику ssl-сертификат в виде *.cer файла, а использовать его надо в виде *.pem файла.
Сконвертировать файл в ubuntu поможет команда:
openssl x509 -in certnewb.cer -inform DER -out certnewb.pem -outform PEM
Настройка VDS на Hetzner с дистрибутивом Ubuntu 12.04. Памятка.
В этой памятке собраны основные этапы настройки VDS от провайдера Hetzner. Не смотря на то, что о нем принято отзываться не очень лестно, меня вполне устраивают его тарифы на VDS и качество предоставляемых услуг.
Сразу после установки получаем работающего пользователя root, из под которого управляем системой без использования su. И получаем к нему доступ сразу по ssh после ввода пароля.
Любой админ знает, что это очень опасно. Т.к. если злоумышленнику удастся скомпрометировать ваш пароль, он получит доступ ко всей системе.