[WordPress] 502 ошибка при открытии админки

Столкнулся с проблемой, что при попытке открыть админку WordPress, отображалась ошибка 502 Bad Gateway.

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

В итоге помог перезапуск FastCGI:

php5-fpm restart

Unit nginx.service entered failed state

При попытке перезапустить nginx получаем ошибку:

nginx restart

[....] Restarting nginx (via systemctl): nginx.serviceJob for nginx.service failed. See 'systemctl status nginx.service' and 'journalctl -xn' for details.
failed!

Проверяем статус:

systemctl status nginx.service

nginx.service - nginx - high performance web server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled)
   Active: failed (Result: exit-code) since Sun 2019-12-15 16:42:45 MSK; 1min 48s ago
     Docs: http://nginx.org/en/docs/
  Process: 12694 ExecStop=/bin/kill -s TERM $MAINPID (code=exited, status=0/SUCCESS)
  Process: 16448 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=1/FAILURE)
 Main PID: 5865 (code=exited, status=0/SUCCESS)

Проверяем файл конфигурации:

nginx -t -c /etc/nginx/nginx.conf

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Пробуем вылечить:

fuser -k 80/tcp
fuser -k 443/tcp
/etc/init.d/nginx restart

Проверяем:

[ ok ] Restarting nginx (via systemctl): nginx.service.

[Linux] Удаление очереди писем в Postfix

• Для удаления очереди писем в Postfix:

$ postfix flush (или postfix -f)

• Посмотреть очередь писем:

$ mailq

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

postqueue: warning: Mail system is down -- accessing queue directly
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
CC83910135C      539 Sun Jul  1 18:31:21  root
                                          root

EC2B61013DE      370 Sun Jul  1 18:38:21  root@bulkin.me

• Удалить все письма из очереди:

$ postsuper -d ALL

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

postsuper: Deleted: 38 messages

• Удалить все письма в отложенной очереди:

$ postsuper -d ALL deferred

Исправление проблем с Windows Update

Иногда служба обновлений Windows ведет себя не так, как от нее ожидается – то одна ошибка выскочит, то другая. Информацию по коду ошибку можно найти в Google, но не всегда советы помогают в исправлении ситуации.

Microsoft также не осталась в стороне, и подготовила набор скриптов для «лечения» Windows Update, которые можно скачать здесь.

Исправление проблем с Windows Update

Еще один совет для удаления кеша файлов Windows Update в виде срипта:

net stop wuauserv
CD %Windir%
CD SoftwareDistribution
DEL /F /S /Q Download
net start wuauserv

[MongoDB] Удаление поля из коллекции

Допустим, в какой-то коллекции есть документы, содержащие поле, которое стало уже не нужным, и вы хотите удалить это поле из всех документов данной коллекции.

Для этого достаточно выполнить следующий запрос:

db.<collection>.update({}, {$unset: {<field_name>:1}} , {multi: true});

[MongoDB] Удаление поля из массива

В коллекции ‘payments’ имеется следующая структура данных:

"log" : [
        {
            "item_id" : "1478", 
            "method" : "card", 
            "cost" : 199.0, 
            "cr_time" : ISODate("2018-06-10T10:38:49.868+0000"), 
            "pay_time" : NumberLong(1528627129), 
            "rent_end_date" : ISODate("2018-07-10T10:38:49.000+0000")
        }
        ...
]

Необходимо удалить поле «rent_end_date» для «item_id» : «1478».

Решение:

db.payments.find({'log.item_id': '1478' }).forEach(function(doc) {
    var rentEndDate = doc.log;
    for(var i = 0; i &lt; rentEndDate.length; ++i) { 
        var x = rentEndDate[i];
        delete (x["rent_end_date"]);
 
    }
    db.payments.save(doc);
});

[Linux] Удаление содержимого файла

Есть несколько возможных команд, которые позволяют удалить содержимое файла:

  1. > filename
  2. cp /dev/null filename
  3. filename < /dev/null
  4. echo -n > filename
  5. truncate -s 0 filename

[Git] Warning: Unprotected Private Key File!

Если при попытке выполнить команду (к примеру, git fetch) будет выведена ошибка «Unprotected Private Key File!», то значит у вас выставлены некорректные права доступа:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/path/.ssh/id_rsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
key_load_private_type: bad permissions
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
error: Could not fetch origin

Решение:

find /path/.ssh/id_rsa -type f -exec chmod 600 {} \;
find /path/.ssh/ -type d -exec chmod 700 {} \;

[MongoDB] Полезные запросы к БД

Изменение типа данных у поля:

db.collection_name.find().forEach( function (x) {
x.field_name = NumberLong(x.field_name);
db.collection_name.save(x);
});

Изменение содержимого поля у вложенного документа:

db.collection_name.update({"obj_name.1.field_name": "Содержимое"}, { $set: { "obj_name.1.field_name": "Тест для замены" } }, multi: true)

Удаление поля из коллекции:

db.collection_name.update({},{$unset: {field_name:1}}, {multi: true})

Изменение имени поля у вложенного документа:

db.collection_name.update({}, {$rename:{"obj_name.field_name_old":"obj_name.field_name_new"}}, false, true);

Fail2ban – блокировка IP с занесением в черный список

По умолчанию Fail2ban блокирует IP-адреса, которые попадают под условия бана, на время, заданное в файле jail.conf. По истечение данного времени IP-адрес разблокируется, и с него вновь могут начать поступать запросы.

Однако можно добиться того, чтобы блокируемый адрес заносился в «черный список», и всегда блокировался.

Для этого создадим файл «черного списка», куда впоследствии будут заносится IP-адреса:

touch /etc/fail2ban/ip.blacklist

Затем в файле /etc/fail2ban/action.d/iptables-multiport.conf обновим директивы actionban и actionstart:

actionban = iptables -I fail2ban-<name> 1 -s <ip> -j DROP
            echo <ip> >> /etc/fail2ban/ip.blacklist
actionstart = iptables -N fail2ban-<name>
              iptables -A fail2ban-<name> -j RETURN
              iptables -I INPUT -p <protocol> -m multiport --dports <port> -j fail2ban-<name>
              cat /etc/fail2ban/ip.blacklist | while read IP; do iptables -I fail2ban-<name> 1 -s $IP -j DROP; done

Перезапустим сервис:

service fail2ban restart

Материал по теме: ссылка