[Решение] Let’s Encrypt, Nginx и 403 ошибка

При ручном получении / продлении сертификата для домена на сервере с Ngnix может возникнуть ошибка 403 Forbidden при обращении к проверочному файлу:

Make sure your web server displays the following content at
http://site.com/.well-known/acme-challenge/xOtn064NspTWyHkbp6EOM140COWK82PW3v7sOf87kM8 before continuing:

xOtn064NspTWyHkbp6EOM140COWK82PW3v7sOf87kM8.wDLw7SyOVXqZ6Ky635Vc9rgUXobw2uLFgM5S9AukTrk

If you don't have HTTP server configured, you can run the following
command on the target server (as root):

mkdir -p /tmp/certbot/public_html/.well-known/acme-challenge
cd /tmp/certbot/public_html
printf "%s"xOtn064NspTWyHkbp6EOM140COWK82PW3v7sOf87kM8.wDLw7SyOVXqZ6Ky635Vc9rgUXobw2uLFgM5S9AukTrk > .well-known/acme-challenge/xOtn064NspTWyHkbp6EOM140COWK82PW3v7sOf87kM8
# run only once per server:
$(command -v python2 || command -v python2.7 || command -v python2.6) -c \
"import BaseHTTPServer, SimpleHTTPServer; \
s = BaseHTTPServer.HTTPServer(('', 80), SimpleHTTPServer.SimpleHTTPRequestHandler); \
s.serve_forever()"
-------------------------------------------------------------------------------
Press Enter to Continue

Waiting for verification...
Cleaning up challenges
Failed authorization procedure. bulkin.me (http-01): urn:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://site.com/.well-known/acme-challenge/xOtn064NspTWyHkbp6EOM140COWK82PW3v7sOf87kM8: "<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>"

В этом случае в конфиге Nginx необходимо прописать следующий location:

location ^~ /.well-known/acme-challenge/ {
allow all;
default_type "text/plain";
}

После перезапуска Nginx (/etc/init.d/nginx restart) ошибки доступа к проверочному файлу уже не будет.

[macOS] Отключаем Spotlight

Spotlight удобная штука, но только для тех, кто ею пользуется. Я, к примеру, за все годы использования Мак’а так и не проникся философией Spotlight в виду того, что ничего такого искать и не приходится. Либо у меня данные структурированы по директориям, либо, если что-то часто используемое, лежит на рабочем столе.

И даже если мы не используем Spotlight, он все равно время от времени проводит индексацию данных, чтобы увеличить скорость поиска. В процессе индексации компьютер начинает весьма сильно подтормаживать, особенно если используется HDD.

Если Spotlight не используется в работе, то фоновую индексацию лучше отключить:

sudo mdutil -a -i off

Команда выдаст:

Password:
/:
2016-11-19 19:20:55.792 mdutil[52944:33144066] mdutil disabling Spotlight: / -> kMDConfigSearchLevelFSSearchOnly
Indexing disabled.
/Volumes/oly_updater_mac:
2016-11-19 19:21:01.944 mdutil[52944:33144066] mdutil disabling Spotlight: /Volumes/oly_updater_mac -> kMDConfigSearchLevelFSSearchOnly
Indexing disabled.

[macOS] Настройка режима гибернации

Окончательно поборол проблемы, связанные с переход компьютера в режим сна / гибернации.

Проблема заключалось в том, что находясь в режиме сна, компьютер через 4 часа самопроизвольно включался. 4 часа – непростая цифра. Оказалось, что по истечении этого времени происходит выгрузка содержимого из памяти на жесткий диск и выключение питания компьютера (таковы настройки по умолчанию для энергосбережения). Т.е. если в период 4 часов «разбудить» компьютер, то он включится мгновенно, отобразив рабочий стол. Через 4 часа сначала будет отображен индикатор выхода компьютера из гибернации, а этот процесс, естественно, дольше, т.к. сохраненные данные необходимо заново загрузить в память.

Так а почему же в моем случае компьютер самопроизвольно включался через 4 часа? Дело в том, что опция hibernatemode была 0 (все данные сохраняются в оперативной памяти), что блокировало сохранение данных на жесткий диск. Из-за этого конфликта iMac и просыпался.

В качестве решения проблемы установил режим 25, когда все данные сохраняются на диске:

sudo pmset -a hibernatemode 25

Также подкорректировал значения, чтобы электропитание выключалось не через 4 часа, а через 10 минут:

sudo pmset -a autopoweroffdelay 600
sudo pmset -a standbydelay 300

[macOS] Определяем, что блокирует переход в гибернацию

В последнее время мой iMac отказывается переходить в гибернацию – экран потухает, однако жесткий диск продолжает «шуршать», а если нажать на кнопку Power, то экран моментально включается, и компьютер готов в работе, как ни в чем не бывало.

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

pmset -g assertions

Команда выведет:

Assertion status system-wide:
   BackgroundTask                 0
   ApplePushServiceTask           0
   UserIsActive                   1
   PreventUserIdleDisplaySleep    0
   PreventSystemSleep             0
   ExternalMedia                  0
   PreventUserIdleSystemSleep     1
   NetworkClientActive            0
Listed by owning process:
   pid 368(ForkLift): [0x000068d400018e23] 02:41:27 PreventUserIdleSystemSleep named: "File Transfer"
   pid 124(hidd): [0x000087d300099104] 00:29:12 UserIsActive named: "com.apple.iohideventsystem.queue.tickle"
	Timeout will fire in 178 secs Action=TimeoutActionRelease
   pid 17513(AddressBookSourceSync): [0x00008ea80001923b] 00:00:03 PreventUserIdleSystemSleep named: "Address Book Source Sync"
   pid 27(configd): [0x000133e700071257] 02:41:28 DenySystemSleep named: "InternetSharingPreferencePlugin"
	Timeout will fire in 1797 secs Action=TimeoutActionTurnOff
Kernel Assertions: 0x8=BT-HID
   id=502  level=255 0x8=BT-HID mod=01/01/1970, 03:00 description=com.apple.driver.IOBluetoothHIDDriver owner=AppleBluetoothHIDKeyboard
   id=507  level=255 0x8=BT-HID mod=01/01/1970, 03:00 description=com.apple.driver.IOBluetoothHIDDriver owner=BNBMouseDevice
Idle sleep preventers: IODisplayWrangler

Из лога видно, что причиной запрета перехода в гибернацию (DenySystemSleep) в моем случае является включенная настройка Internet Sharing в панели System Preferences -> Sharing. Данную настройку я включал для создания внутренней сети по Wi-Fi, и потом забыл выключить. Снимаем галочку с Internet Sharing, после чего уже ни что не мешает компьютеру переходить в режим гибернации.

[macOS] Cочетания клавиш для ввода популярных символов

  • — (длинное тире) — Shift + Alt +
  • … (многоточие) — Alt + ;
  • « (открывающаяся елочка) — Alt + \
  • » (закрывающаяся елочка) — Shift + Alt + \
  • ® (зарегистрированная торговая марка) — Alt + R
  • © (копирайт) — Alt + G
  • ∞ (бесконечность) — Alt + 5
  • ƒ (функция) — Alt + F
  • ≈ (приблизительно равно) — Alt + X
  • ≠ (не равно) — Alt + =
  • √ (квадратный корень) — Alt + V
  • ± (плюс/минус) — Shift + Alt + =
  • ° (градус) — Shift + Alt + 8
  • € — Shift + Alt + 2
  •  (логотип Apple) — Shift + Alt + K

[macOS] Обновление драйвера для геймпада Xbox 360

Ранее я писал, что для работы геймпада Xbox 360 на компьютерах Mac нужен специальный драйвер. С выходом OS X 10.11 этот драйвер перестал работать, а сам автор уже не обновлял свой проект более трех лет.

Однако у того проекта есть форк, который сейчас очень активно развивается. Так что скачать работающий драйвер геймпада Xbox 360 можно теперь здесь.

Миграция с MySQL на MariaDB

Перевел сервер БД с MySQL (был 5.5) на MariaDB (текущая версия – 10.1).

MariaDB – это форк MySQL, при чем форкнул ни кто иной, как Майкл Видениус, создатель MySQL. Причиной ответвления стала неопределенность лицензирования MySQL, после того, как она перешла под брозды сначала Sun Microsystems, а потом Oracle.

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

Берем источники репозиториев с MariaDB от сюда и выполяем команду установки:

apt-get install mariadb-server

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following package was automatically installed and is no longer required:
  shtool
Use 'apt-get autoremove' to remove it.
The following extra packages will be installed:
  galera-3 libjemalloc1 libmariadbclient18 libmysqlclient18 mariadb-client-10.1 mariadb-client-core-10.1 mariadb-common mariadb-server-10.1 mariadb-server-core-10.1
Suggested packages:
  mariadb-test netcat-openbsd socat tinyca
The following packages will be REMOVED:
  mysql-client-5.5 mysql-server mysql-server-5.5 mysql-server-core-5.5
The following NEW packages will be installed:
  galera-3 libjemalloc1 libmariadbclient18 mariadb-client-10.1 mariadb-client-core-10.1 mariadb-common mariadb-server mariadb-server-10.1 mariadb-server-core-10.1
The following packages will be upgraded:
  libmysqlclient18
1 upgraded, 9 newly installed, 4 to remove and 1 not upgraded.
Need to get 48.5 MB of archives.
After this operation, 74.6 MB of additional disk space will be used.
Do you want to continue [Y/n]?

Отвечаем yes, после чего будет автоматически удалены зависивости MySQL и установлена MariaDB.

[OS X] MenuMeters и El Capitan

С выходом OS X El Capitan замечательная утилита MenuMeters, выводящая индикаторы мониторинга системы в системный трей, перестала работать. На официальном сайте утилиты сказано, что текущая версия MenuMeters (1.8.1) не поддерживает El Capitan.

Но не повод печалиться! Здесь можно скачать форк MenuMeters с исправлениями под OS X 10.11, а также подробное описание проблемы, почему оригинальная версия MenuMeters не запускается в El Capitan.

Перезапуск ihttpd для ISPManager

Если панель управления ISPManager перестала открываться, то можно попробовать перезапустить встроенный веб-сервер:

killall ihttpd – остановка процесса

/usr/local/ispmgr/sbin/ihttpd <IP-адрес> <порт> – запуск процесса (по умолчанию порт 1500)

После чего панель должна открыться по адресу http://<IP-адрес>:<порт>

Переход сервера на Debian Wheezy

Было:

# lsb_release -a
Distributor ID: Debian
Description:    Debian GNU/Linux 6.0.10 (squeeze)
Release:    6.0.10
Codename:   squeeze

Стало:

# lsb_release -a
Distributor ID: Debian
Description:    Debian GNU/Linux 7.9 (wheezy)
Release:    7.9
Codename:   wheezy