Самые низкие цены на регистрацию доменов

Наверняка вы не любите переплачивать, а тем более если речь идет о регистрации доменов. Представляю вам сервис Domcomp, который поможет найти самые низких цены на регистрацию доменов среди более чем 30 наиболее известных регистраторов. Что касается доменных зон, то тут их просто огромное количество.

Еще Domcomp поможет обезопасить себя от таких подводных камней, как завышенные цены на продление домена. Во время промо-акций сервис отобразить информацию о скидках и купонах. Отдельно промаркированы регистраторы, которые предоставляют бесплатный сертификат и WHOIS privacy к домену.

Проксирование в Nginx

Дата: 20.05.2017Метки:

Простой пример конфига Nginx для проксирования HTTP трафика. Смысл заключается в том, что бы перенаправить запросы с frontend сервера, который у меня обозначен как 1.1.1.1 на back-end сервер 2.2.2.2. Дополнительно мы включаем кэширование, что позволяет существенно снизить нагрузку на сервер.

Для начала кратко напишу про настройки кэширования Nginx. В proxy_cache_path мы указываем расположение кэша. Для максимальной производительности я буду хранить его в оперативной памяти. Параметр levels задаёт уровни иерархии кэша. В нашем случае файлы будут сохранятся в каталог по аналогии примеру ниже:

/var/run/proxy_cache/c/29/b7f54b2df7773722d382f4809d65029c

Далее мы указываем имя зоны, время хранения файлов и размер кэша. Если к данным не обращаться более 8 минут, то закэшированные элементы будут удалены. Директива proxy_cache_key используется для создания схемы идентификации — оставляем без изменений. В proxy_cache_valid задаем время кэширования кодов ответа.

В директивах listen 1.1.1.1:80 и server_name proxy.com мы указываем ip-адрес и доменное имя сервера на котором запущен Nginx. После чего proxy_pass указываем адрес сервера на который будут передаваться запросы.

proxy_cache_path /var/run/proxy_cache levels=1:2 keys_zone=backcache:8m max_size=100m;
proxy_cache_key "$scheme$request_method$host$request_uri$is_args$args";
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;

server {
    listen 1.1.1.1:80;
    server_name proxy.com;

    location / {
        proxy_pass http://2.2.2.2;

        proxy_set_header HOST $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_cache backcache;
        proxy_cache_bypass $http_cache_control;
        add_header X-Proxy-Cache $upstream_cache_status;
    }
}

Ограничить количество одновременных подключений в iptables

Дата: 26.04.2017Метки:

Допустим у вас есть обычный VPS, где крутится популярный среди группы людей сайт и вы хотите защитить его от примитивных атак недоброжелателей. Основная задача которых состоит в том, что бы вызвать исчерпание вычислительных ресурсов VPS с помощью искусственно спровоцированной нагрузки на сервер. В следствие которой, память уйдет в swap и подключится к серверу станет проблематично.

В таком случае для ограничения потребления ресурсов сервера наиболее эффективно использовать cgroups — механизм ядра, который ограничивает вычислительные ресурсы для групп процессов. Используя cgroups мы можем предотвратить полную утилизацию вычислительных ресурсов процессора и памяти сервера, которые могут вызваны нагрузкой на веб-сервер и PHP. Таким образом мы всегда можем сохранить контроль над сервером и обеспечить доступ к серверу по SSH.

О использовании cgroups я постараюсь рассказать позже. Но даже если правильно настроить cgroups, в случае всплеска нагрузки, работа сайта будет нарушена. Как вариант решения проблемы предлагаю с помощью iptables ограничить количество одновременных подключений к серверу. Таким образом можно попытаться отсечь основной источник нагрузки, сохранив доступность ресурса для других посетителей.

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

iptables -t filter -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -I INPUT -p tcp --dport 80 -m state --state RELATED,ESTABLISHED -j ACCEPT

Здесь мы разрешаем все входящие соединения на порт 80 нашего сервера. Чтобы ограничить количество одновременных подключений к серверу с одного ip-адреса, необходимо добавить следующие правила:

iptables -t filter -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 30 --connlimit-mask 32 -j DROP

Это правило устанавливает ограничение на 30 одновременных подключений с одного ip-адреса.

Если вам необходимо ограничить количество одновременных подключений со всех ip, тогда необходимо использовать следующую команду:

iptables -t filter -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 500 -j DROP

Пример готового скрипта для ограничения подключений к серверу:

iptables -F INPUT 
iptables -P INPUT DROP 
iptables -P FORWARD ACCEPT 
iptables -P OUTPUT ACCEPT 
iptables -A INPUT -i lo -j ACCEPT 
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP 
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 2 -j DROP

VirtualBox: cannot register the hard disk

Случается, что необходимо перенести файл образа виртуального диска в другое расположение в пределах одного локального компьютера. Если переместить файл образа VirtualBox и попытаться снова подключить его к виртуальной машине, вы получите следующую ошибку:

Не удалось открыть файл виртуального жёсткого диска /home/disck.vdi
Cannot register the hard disk '/home/disck.vdi' with UUID {UUID} because a hard disk '/home/old.vdi' with UUID {UUID} already exists.

В отличии от VMware в VirtualBox процесс переноса образа диска немного отличается. Для решения проблемы открываем VirtuaBox — меню File — Virtual Media Manager и удаляем перемещенный образ из реестра. Затем переходим в настройки виртуальном машины, в меню Storage снова подключаем образ виртуального диска.

Установка Deluge в Ubuntu Gnome

Из множества BitTorrent-клиентов мне больше всего приглянулся Deluge. Программа состоит из двух независимых компонентов: демона и клиента. Их можно установит сразу на один компьютер, в таком случае Deluge будет работать как большинство обычных BitTorrent-клиентов. Или если у вас NAS, можно установить демон отдельно на сервер, а клиент Deluge на домашний компьютер. После чего удаленно управлять загрузками.

В плане оформления Deluge имеет простой и лаконичный GUI, который использует библиотеку GTK+, а значит не будет выделятся на фоне общего оформления Gnome. За обмен данными по протоколу BitTorrent отвечает библиотека libtorrent, которая поддерживает большинство функций протокола.

По сути нет ничего сложного в установке Deluge в Ubuntu Gnome, но есть некоторые нюансы, которые можно забыть со временем.

Для начала устанавливаем демон и клиент Deluge:

sudo apt-get install deluged
sudo apt-get install deluge

Далее настроим автозапуск Deluge, для этого идем в Gnome Tweak Tool — Startup Applications — жмем ‘+’ и выбираем из списка Deluge. Теперь каждый раз при входе в систему Deluge будет запускаться автоматически.

Было бы удобно, если бы при автозапуске и закрытии программа сворачивалась в трей: открываем Deluge — Edit — Preferences — Interface — и ставим галочки напротив Enable system icon tray, Minimize to tray on close, Start in tray.

И напоследок хочу отметить, что лично мне не нравится расположение и вид трея в Gnome. Я предпочитаю перенести его в верхнюю часть экрана. Установим дополнение TopIcons из каталога дополнений Gnome. Переходим в Gnome Tweak Tool — Extension и включаем дополнение TopIcons. На этом установка и настройка Deluge в Ubuntu Gnome закончена.

Переключение раскладки GNOME

В отличии от Fedora в процессе установки Ubuntu GNOME нельзя выбрать сочетания клавиш для переключения раскладки клавиатуры. Установил я систему, но Alt-Shift ни Ctrl-Shift тут не работают. По умолчанию для переключения раскладки используются Super + Space. Стандартным способом изменить раскладку можно через Settings — Keyboard — Typing — Switch to next input source.

Вот только назначить Ctrl-Shift тут нельзя, возможность выбора сочетаний ограничена до невозможности. Что подтолкнуло разработчиков к такому решению остается только догадываться. Я уж думал плюнуть на это дело и забыть. Но как оказалось, я не тот человек, который быстро меняет свои привычки. Как не пытался, а рука сама нажимает привычные мне клавиши.

Случайно в процессе работы наткнулся на необходимые мне настройки. Изменить переключения раскладки клавиатуры на привычные сочетания можно через Gnome Tweak Tool переходим в Typing — Switch to another layout. Выбираем привычные Alt-Shift или Ctrl-Shift и продолжаем радоваться жизни.

Установка Chrome и Chromium в Ubuntu

Многие уже слышали про прекращение дальнейшей разработки Unity в Ubuntu. Это решение было настолько неожиданно, что многие приняли эту новость за очередную утку. Теперь по умолчанию место Unity в Ubuntu будет занимать Gnome 3. Лично для меня это отличный повод перейти на Ubuntu, а вместе с тем я начинаю цикл записей о том как довести ее до рабочего состояния.

И так сегодня я установил на свой домашний компьютер последнюю версию Ubuntu GNOME 17.04 (Zesty Zapus). Первые впечатления сложились положительные. Система ведет себя достаточно стабильно. И первое, что я сделаю на новой системе выполню установку Chrome. Дополнительно в этой записи я расскажу об установке Chromium. Какой из браузеров устанавливать зависит от ваших личных предпочтений.

Установить Google Chromium в Ubuntu

Начну я пожалуй с установки Chromium в Ubuntu. Если я не ошибаюсь, Chromium полностью соответствует версии браузера после установки пакета google-chrome-unstable. Для установки Chromium в Ubuntu достаточно просто выполнить команду:

sudo apt-get install chromium-browser

В Gnome после установки Chromium по аналогии с Firefox отображается заголовок окна. Не смотря на то, что он добавлен для соответствия концепции интерфейса Gnome, я предпочитаю его отключить. Для этого в настройках Chromium нужно убрать галочку возле опции Use system title bar and borders.

Установить Flash для Chromium в Ubuntu

Если на этапе установки Ubuntu вы выбрали установку программного обеспечения от сторонних производителей, то дополнительно устанавливать Flash не потребуется. В противном случае необходимо включить дополнительный репозиторий. Я использую английскую локализацию поэтому описание приложений и элементов меню будет на английском.

Что бы установить Flash для Chromium в Ubuntu включаем репозиторий Canonical partners. Для этого переходим в Software and Updates — Other Software — установить галочку напротив Canonical partners.

Далее в терминале выполнить:

sudo apt update
sudo apt install adobe-flashplugin

Проверить поддержку HTML5, H.264 и Flash можно на странице youtube.com.

Установить Chrome в Ubuntu

Чтобы установить браузер Chrome из репозитория, откройте терминал и выполните следующие команды:

wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -

Если у вас установлена Ubuntu 64-Bit:

sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'

Или для Ubuntu 32-Bit:

sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'

Обновляем локальный кэш пакетов и запускаем установку:

sudo apt-get update
sudo apt-get install google-chrome-stable

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

sudo apt-get install google-chrome-beta
sudo apt-get install google-chrome-unstable

Не удалось запустить службу Microsoft Office Software Protection Platform

Было выполнено некорректное прерывание установки Microsoft Office 2010, после чего повторная установка заканчивалась следующей ошибкой:

Ошибка 1920. Не удалось запустить службу Office Software Protection Platform (oppsvc)

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

C:\Program Files\Common Files\Microsoft Shared\OfficeSoftwareProtectionPlatform

Запускаем редактор реестра, и переходим в раздел:

HKEY_CLASSES_ROOT\AppID

Необходимо дать полные права на раздел AppID для пользователя NETWORK SERVICE.

Запускаем повторно установку Microsoft Office 2010, ждем когда появится ошибка:

Ошибка 1920. Не удалось запустить службу Office Software Protection Platform

На этот раз не предпринимаем никаких действий. Дальше снова переходим в папку:

C:\Program Files\Common Files\Microsoft Shared\

И устанавливаем для пользователя NETWORK SERVICE полные права на каталог OfficeSoftwareProtectionPlatform.

Для этого в меню Свойства — переходим во вкладку Безопасность — Дополнительно — Добавить — необходимо указать им пользователя NETWORK SERVICE и нажать кнопку ОК — затем поставить галочку Заменить разрешения для дочерних всех объектов заданными здесь разрешениями, применимыми к дочерним объектам.

Теперь заходим переходим в панель управления, службы. Необходимо в ручную запустить службу Office Software Protection Platform. Если в процессе не было ошибок, значит вы все сделали правильно. Далее переходим к установке Microsoft Office 2010 и жмем кнопку Повторить.

Оптимизация Windows в виртуальной среде

Дата: 12.04.2017Метки:

В этой заметке речь пойдет о вопросе оптимизации Windows под условия работы в виртуальной среде. Начнем с того, что многие работающие по умолчанию функции и компоненты Windows в условиях виртуализации абсолютно бесполезны и несут только дополнительную нагрузку. Сами по себе они достаточно скромно используют ресурсы. Если отключить их на одном физическом сервере, то кроме незначительной экономии оперативной памяти вы не почувствуете существенных изменений.

Есть такая поговорка: «Курочка по зернышку клюет». Теперь давайте представим ситуацию, когда под нашим гипервизором одновременно крутится несколько десятков, в идеале больше сотни виртуальных машин. После оптимизации каждой виртуальной машины с Windows, в глобальном масштабе мы получим существенную экономию вычеслительных ресурсов гипервизора.

Следует отметить, что такая оптимизация будет полезна и для отдельно взятой виртуальной машины. Естественно после оптимизации Windows производительность так и останется в рамках выделенных ей ресурсов. Но зато система становится более отзывчивая за счет за счет уменьшения количества фоновых операций, которые могли приводить к снижению скорости работы.

Для оптимизации Windows в виртуальной среде я предлагаю использовать специально предназначенную для этого утилиту — VMware OS Optimization Tool. Бесплатно скачать программу можно по следующей ссылке. Изначально утилита разрабатывалась для оптимизации настольных ОС под работу в среде VMware Horizon View. Но ее можно использовать для виртуальных машин с Windows, которые работают на любом другом гипервизоре.

На данный момент VMware OS Optimization Tool поддерживает операционные системы Windows 7-10 и Windows Server 2008-2016. По умолчанию программа автоматически выполнит оптимизацию на основе встроенного шаблона. Я использовал настройки по умолчанию, но вы можете самостоятельно выбрать необходимые для вас опции. Для оптимизации виртуальной машины с Windows рекомендую использовать стандартный шаблон VMware.

Для создания собственного шаблона откройте раздел My Templates, выберите шаблон, который вы желаете взять за основу и нажмите Copy and Edit.

Пользовательские шаблоны автоматически сохраняются в директорию:

%ProgramData%\VMware\OSOT\My Templates

Если возникнут нежелательные последствия, все изменения можно быстро откатить до предыдущего состояния. Для этого перейдите на вкладку History и нажмите кнопку Rollback.

Если хотите, можно поэкспериментировать с публичными шаблонами, при этом нужно соблюдать осторожность. Следует отметит, что публичные шаблоны могут выполнять радикальные действия. Например, удалять встроенные в систему приложений.

И напоследок хочу сказать про результаты оптимизации. На виртуальной машине с Windows 10 снизилось потребление оперативно памяти примерно на 200mb. После загрузки Windows уменьшилось количество фоновых процессов с высоким потреблением ресурсов процессора, значительно снизилась дисковая активность.

Зомби процессы в Linux

Дата: 10.04.2017Метки:

Если в вашей системе завелись зомби процессы, не расстраивайтесь. Не смотря на страшное название зомби процесс не может нанести серьезный вред вашей системе. Для начала давайте разберемся как обычный процесс превращается в зомби.

Когда дочерний процесс получает команду на завершение, он освобождает все используемые ресурсы и продолжает как зомби существовать в системе с ранее присвоенным ему PID. Далее с помощью сигнала SIGCHLD система уведомляет родительский процесс о завершении зомби процесса. Если по какой-либо причине родительский процесс игнорирует этот сигнал, то зомби процесс так и продолжает отображаться в системе.

Как вы уже поняли, зомби процессы не используют системные ресурсы, поэтому их можно просто игнорировать. Убить зомби процесс на прямую командой kill у вас не получиться. В данном случае единственный вариант полностью убрать зомби процесс — убить или перезапустить его родительский процесс.

Что бы убить зомби процесс, для начала нужно получить его PID:

# ps aux | grep -w Z
root      2037  0.0  0.0      0     0 ?        Z    09:44   0:00 [httpd] 
root      8470  0.0  0.0 112652   984 pts/10   S+   10:43   0:00 grep --color=auto -w Z

В моем примере PID зомби процесса 2037. Теперь получим PID родительского процесса:

# ps o ppid 2037
 PPID
 2033

Когда мы знаем PID, правильнее всего определить что это за процесс командой top, а затем перезапустить его.

В крайнем случае можно убить родительский процесс:

# kill -9 2033