Установка приоритетов для процессов в linux: nice

Команду nice можно также использовать для запуска процесса с другим приоритетом. Опция -n (или –adjustment) с положительным значением повышает приоритет, а эта же опция с отрицательным значением – понижает его. Помните, что процесс с наименьшим приоритетом имеет максимальное значение параметра niceness, поэтому увеличение этого значения означает, что процесс становится более дружелюбным по отношению к другим процессам. Заметьте, что, как правило, понижать значение приоритетов процессов может только суперпользователь (root). Другими словами, обычные пользователи могут делать процессы лишь более дружелюбными.

nice -n -5 top                     # Повысить приоритет процесса (/bin/nice)
nice -n 5 top                      # Понизить приоритет процесса (/bin/nice)
nice +5 top                        # Понизить приоритет процесса

PHP: Show current time based on user’s timezone

Example command (take time from files timezone /usr/share/zoneinfo/):

php -r 'printf("\ntimezone:\t%s\ndatetime:\t%s\n".PHP_EOL,date_default_timezone_get(),date("Y-m-d H:i:s T"));date_default_timezone_set("Europe/Moscow");printf("timezone:\t%s\ndatetime:\t%s\n".PHP_EOL,date_default_timezone_get(),date("Y-m-d H:i:s T"));date_default_timezone_set("Europe/Berlin");printf("timezone:\t%s\ndatetime:\t%s\n".PHP_EOL,date_default_timezone_get(),date("Y-m-d H:i:s T"));date_default_timezone_set("Asia/Dubai");printf("timezone:\t%s\ndatetime:\t%s\n".PHP_EOL,date_default_timezone_get(),date("Y-m-d H:i:s T"));'

Output:

timezone:	America/New_York
datetime:	2014-01-28 01:29:25 EST

timezone:	Europe/Moscow
datetime:	2014-01-28 10:29:25 MSK

timezone:	Europe/Berlin
datetime:	2014-01-28 07:29:25 CET

timezone:	Asia/Dubai
datetime:	2014-01-28 10:29:25 GST

Nginx защита от DDoS атак

При несложных атаках, можно защититься средствами сервера, в некоторых случаях это довольно эффективно.
Рассмотрим подробнее способы защиты от DDoS атак с помощью nginx.

Способ №1: Кривой referer

В данном случае прописываем одно условие:

server {
       server_name ….. 

            if ($http_referer !~* ^($|http://|https://) ){
                   return 403;
            }
       }

Сбособ №2: Блокируем атакующих с помощью модуля testcookies в nginx

Необходимо собрать nginx с поддержкой данного модуля, сам модуль с инструкцией по установке и документацией находится здесь: http://kyprizel.github.io/testcookie-nginx-module/
Либо скачать rpm nginx testcookies тут: http://rpms.southbridge.ru/rhel6/stable/x86_64/

How can I restore the MySQL root user’s full privileges?

Stop MySQL server.
Start MySQL server with –skip-grant-tables:

mysqld_safe --skip-grant-tables &

Login (your password not need):

mysql -uroot

Fix privileges:

UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;

Create root user, if need;

GRANT ALL ON *.* TO 'root'@'localhost';
GRANT ALL ON *.* TO 'root'@'%';

Update privileges:

FLUSH PRIVILEGES;

That’s all!

Nginx redirect wildcard subdomains to https

В данном примере мы перенаправляем весь трафик http на https. Для домена nagg.ru это работает и ошибок нет.

server {
listen      80;
server_name *.nagg.ru;

rewrite     ^ https://$server_name$request_uri? permanent;
}

Однако, если идет 301-й редирект вайлдкард домена, то мы видим проблему:


https://%A6S2.nagg.ru/

Решение простое, нужно использовать переменную $host вместо $server_name

server {
    listen      80;
    server_name *.nagg.ru;

     return 301 https://$host$request_uri$is_args$args;
}

Nginx redirect to url if image does not exist

Задача: только для статики сделать перенаправление (302 редирект), если файл не был найден.
Самый правильный способ – не использовать ifв данном случае, это может показаться странным, но на практике, с данной задачей лучше справится try_files. Будет выглядеть так:

Вариант №1:

location ~* \.(jpg|jpeg|gif)$ {
    root /home/www/;
    try_files $uri @imgproxy;
    }
<p>location @imgproxy {
        rewrite ^/img/(.*) http://nagg.ru/img/$1;
    }

Вариант №2:

location ~* \.(jpg|jpeg|gif)$ {
     if (!-f $request_filename) {
         rewrite ^/images/(.*) http://nagg.ru/images/$1 break;
     }
    root /home/www/;
    }

Оба варианта рабочие.
Удачи!

Не отправляются письма в 1С-Битрикс

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

Таблица в базе данных B_EVENT хранит очередь отправки почты с сайта. Там же регистрируется результат передачи писем. Если какие-то письма с сайта не были отправлены, возможно, проблема в адресе получателя, параметрах почтового шаблона или в работе почты на сервере в целом.

Как вариант решения проблемы, отключение в конфигурационном файле директивы:

bitrix/php_interface/dbconn.php
#define("BX_CRONTAB_SUPPORT", true);

Fixed: «warning: mail_queue_enter: create file maildrop Permission denied»

You mask stop postfix, check if it is still running, kill all postfix process:

service postfix stop
killall -9 postdrop
chgrp -R postdrop /var/spool/postfix/public
chgrp -R postdrop /var/spool/postfix/maildrop/
postfix check
service postfix start

Also, if that does not help, you can see next errors

fatal: scan_dir_push: open directory defer: Permission denied

You might also want to try:

service postfix stop
/etc/postfix/post-install upgrade-permissions
/usr/sbin/postfix set-permissions
service postfix start

S.M.A.R.T. error monitoring and reporting on drives

Configuring and using S.M.A.R.T

Self test:

smartctl -t short -d ata /dev/sda

Self test results:

smartctl -l selftest -d ata /dev/sda

Show errors (if any):

smartctl -l error -d ata /dev/sda

Old lock file: /var/lib/mongodb/mongod.lock. probably means unclean shutdown

On occasion mongoDB doesn’t start.

[root@serv1 /]# /etc/init.d/mongod status
mongod dead but subsys locked

To fix this problem:

rm -f /var/lock/subsys/mongod
rm -rf /var/lib/mongodb/mongod.lock