Архив автора: shilovk

uploads wp

Аналог php_value engine off для 

В Apache проблема решается просто: в каталог uploads помещается .htaccessследующего содержания:

[-]
View Code Apache configuration
php_value engine off

В nginx .htaccess не предусмотрен (что можно рассматривать и как достоинство, и как недостаток), поэтому там нужно применить несколько другой подход.

В описание виртуального хоста помещаем следующие строки:

[-]
View Code nginx configuration
location ^~ /wp-content/uploads/ {
if (!-e $request_filename) {
rewrite ^(.+)$ /index.php last;
}types {
text/plain php php3 php4 php5 phtml phps pl pm;
}
}

И заставить nginx перечитать конфигурацию:

[-]
View Code Bash
invoke-rc.d nginx reload

Для nginx 0.7.32 и выше есть другой вариант:

[-]
View Code nginx configuration
location ^~ /wp-content/uploads/ {
types {
text/plain php php3 php4 php5 phtml phps pl pm;
}try_files $uri $uri/ @wordpress;
}

Как выглядит location @wordpress, можно прочитать здесь.

Всё просто!™

hot keys

читшит: www.jetbrains.com/phpstorm/documentation/PhpStorm_ReferenceCard.pdf

Ctrl+Q на названии функции — выдает доку по функции
Ctrl+P на параметре фунциии — выдает описание параметра
Shift+F1 на названии функции — переходит по ссылке, если такая была привязана к функции (для нативных PHP-функций переходит на php.net/function.name)
Alt+стрелки вверх/вниз — перемещение между методами класса
Ctrl+Alt+стрелки влево/вправо — перемещает вперед/назад между местами кода, которые только что просматривались
Ctrl+E, Ctrl+Shift+E — недавно просмотренные/редактированные файлы
Ctrl+Shift+F — поиск по проекту
Ctrl+Shift+N, double Shift — быстрый и очень удобный поиск по файлам
Ctrl+/ — закомментить/раскомментить выделенный код/строку
Ctrl+D — дублировать выделенный код/строку
/** и Enter перед названием функции — автоматическое формирование PHPDoc
Ctrl+Shift+U — выделенный код к верхнему или нижнему регистру
Ctrl+Shift+V — последние 5 записей в буфере
Alt+F7 на функции — найти места вызова функции
F11 — добавить/убрать bookmark (появляется справа черная засечка)
Ctrl+Alt+L — авто-формат выделенного кода (правила форматирования очень гибко настраиваются в настройках)
Shift, Shift это поиск по всему, он лучше чем Ctrl+Shift+A (действия) или Ctrl+Shift+N (только файлы).
Ctrl+W, выделение, его нужно жать несколько раз подряд, пока не выделит все что нужно :)
Ctr+Alt куча полезного из рефакторинга

block/unlock ip

link

Как заблокировать IP адрес с помощью iptables на Linux

Я установил и запустил CentOS на моем сервере , и я часто нахожу , что мой сервер подвергается нападению другими компьютерами. Грубая сила SSH атаки, сканирование портов , сканирование вирусов и так далее. В этой теме я расскажу и покажу вам на готовом примере, как можно блокировать IP -адрес на сервере Linux с помощью IPTables .

Во-первых, я буду считать что вы уже используете IPTables . Если вам нужна помощь в настройке, топрочитайте эту статью.

Как заблокировать IP -адрес ?

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

Где ,
– I: Вставка цепи в верхней части правил .
– s: Матч IP -адрес источника .
– j : Перейти к указанным целевым цепям , если пакету соответствует текущее правило .

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

Как заблокировать подсеть ?

Используйте следующий синтаксис для блокирования 10.0.0.0 /8:

Как сохранить заблокированный IP -адрес ?

Чтобы сохранить заблокированный IP -адрес для Iptables в файл конфигурации , введите следующую команду:

или

Как разблокировать IP- адрес?

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

Пример вывода:

Чтобы разблокировать 192.168.244.134 необходимо удалить номер строки 1, для этого введите:

git in github

echo # custom_joomla >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin git@github.com:shilovk/custom_joomla.git
git push -u origin master

…or push an existing repository from the command line

git remote add origin git@github.com:shilovk/custom_joomla.git
git push -u origin master

ssh server refused our key

link

/etc/ssh/sshd_config

and set log level:

LogLevel DEBUG3

Then try to authenticate, and when it fails, look for log file:

/var/log/secure

LogLevel is defined in /etc/ssh/sshd_config. The default log is/var/log/auth.log unless defined otherwise in sshd_config

It sounds like you are attempting to add a users key into root’s authorized_keys file instead of the users authorized_keys file.

Just to clarify:

roots key should be in /root/.ssh/authorized_keys

users key should be in /home/USERNAME/.ssh/authorized_keys

It is possible to store the keys in /etc/ssh as you suggested, but not in the way that you are doing it. This is generally done when the users home directory is encrypted. In order for this to work, you need to make sure the following is done:

# mkdir /etc/ssh/USERNAME
# chmod 755 /etc/ssh/USERNAME
# chown USERNAME /etc/ssh/USERNAME
# touch /etc/ssh/USERNAME/authorized_keys
# chmod 644 /etc/ssh/USERNAME/authorized_keys
# chown USERNAME /etc/ssh/USERNAME/authorized_keys
# cat /home/USERNAME/.ssh/authorized_keys > /etc/ssh/USERNAME/authorized_keys
# echo "AuthorizedKeysFile /etc/ssh/%u/authorized_keys" >> /etc/ssh/sshd_config

Note: You might want to actually edit /etc/ssh/sshd_config instead of just appending to the end, as it is possible that you already have an AuthorizedKeysFile set.

 

sendmail mail

link

Многие сталкивались с проблемой отправки сообщений с сервера из bash/perl/python/php/etc…

На самом это достаточно просто.
Достаточно поставить sendmail.

yum install sendmail sendmail-cf mailx -y #centos
sudo apt-get install mailutils #ubuntu

chkconfig --level 345 sendmail on

/etc/init.d/sendmail start
Starting sendmail:                                         [  OK  ]
Starting sm-client:                                        [  OK  ]

В принципе вы уже можете отправлять почту, но по умолчанию в конфигурации указано что вы отправляете почту с хоста localhost.localdomain

Следующая секция составлена с учётом того что ваш hostname  в системе настроен верно.
Настроить эту системную переменой в CentOS вы можете в файле /etc/sysconfig/network
Проверить какой у вас сейчас hostname, как не странно можно командой hostname =))Итак вносим изменения в конфигурацию sendmail 

sed -i -e "s/^LOCAL_DOMAIN.*$/LOCAL_DOMAIN(\`${HOSTNAME}\')dnl/g" /etc/mail/sendmail.mc

make -C /etc/mail

/etc/init.d/sendmail restart

Shutting down sm-client:                                   [  OK  ]
Shutting down sendmail:                                    [  OK  ]
Starting sendmail:                                         [  OK  ]
Starting sm-client:                                        [  OK  ]


Ensure the sendmail-cf rpm is installed. Then

In in sendmail.mc file
change this line
dnl MASQUERADE_DOMAIN(localhost.localdomain)dnl

to 
MASQUERADE_DOMAIN(mydomain.com)dnl

Настало время протестировать что у нас получилось.

соответственно подставьте свой email вместо user@domain.com

echo "The test body" | mail -s "The test subject" user@domain.com

Всё можете идти в почту, и проверять свой спам, Поскольку это письмо скорее всего окажется  в нём. По скольку A запись и PTR запись DNS, должны совпадать с вашим внешним IP. Да кстати, эта конструкция может работать через NAT.

в Gmail.com это письмо скорее всего попадёт в спам, а до ящика Mail.ru вовсе не дойдёт потому, что Администрация Mail.ru пытается защитить своих хомячков от всевозможных спамов.

Подключаем DateTimePicker

link1    link2    link3    link3

Первый способ(простой DateTimePicker)

Необходимые гемы:

1
2
3
4
  gem 'rails-assets-moment'
  gem 'rails-assets-datetimepicker'
end

Подключаем css:

1
*= require datetimepicker

Подключаем js:

1
2
//= require moment
//= require datetimepicker

Инициализация(coffee):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# DateTimePicker ОПИСАНИЕ ВСЕХ ОПЦИЙ:
#
###############################################
# Дата и время
$('.datetimepicker').datetimepicker
  format: 'd.m.Y H:i'
  pick12HourFormat: false
  step: 60
  lang: 'ru'
  # inline: true #показать виджет сразу и не скрывать
# Дата
$('.datepicker').datetimepicker
  timepicker:false,
  format: 'Y-m-d'
  lang: 'ru'
###############################################

Поле для даты(haml):

1
%input.datetimepicker{ name:"date", value: DateTime.now.strftime('%d.%m.%Y %H:%M') }

Второй способ способ(Bootstrap)

Используем гем datetimepicker-rails

Необходимые гемы:

1
2
gem 'momentjs-rails'
gem 'datetimepicker-rails', github: 'zpaulovics/datetimepicker-rails', branch: 'master', submodules: true #Bootstrap 3+

Подключаем js:

1
2
3
//= require moment
//= require bootstrap-datetimepicker
//= require pickers

Подключаем css:

1
*= require bootstrap-datetimepicker

Выполняем в терминале:

1
rails generate datetimepicker_rails:install

Использование в SimpleForm (haml):

1
2
3
= f.input :start_date_time, :as => :datetime_picker
= f.input :closing_date, :as => :date_picker

 

mysqld php-fpm RAM

vi /etc/my.cnf

performance_schema = 0
table_cache = 100
table_definition_cache = 100
max-connect-errors = 10000
query_cache_size = 64M
query_cache_limit = 2M

vi /etc/php-fpm.d/www.conf

#listen = 127.0.0.1:9000
#user = daemon
#group = daemon

pm = dynamic
pm.max_children = 4
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 5
pm.max_requests = 50

 

view port 80

смотреть чем занять 80 порт можно так:

lsof -i -P | grep *:80

httpd      1705     root    4u  IPv6   10599      0t0  TCP *:80 (LISTEN)

или

netstat -nlp | grep :80
tcp        0      0 :::80                       :::*                        LISTEN      1705/httpd

Cron Daily server reboot

You need to run the following command:

/sbin/shutdown -r now

with root pirviliges. The way to do it is to use root’s crontab, not your user crontab. A sudo before the usual crontab command does that:

sudo crontab -e

Tip: You can switch the shell’s standard editor for things like crontab and visudo with sudo update-alternatives --config editor (and than selecting the editor of your choice.

Editing the crontab you should add the following line to you file:

# For more information see the manual pages of crontab(5) and cron(8)
# 
# m h  dom mon dow   command  

@daily root /sbin/shutdown -r now

The «@daily» here is a shortcut for every day at midnight (equivalent to «0 0 * * *»). By the way — why do you want a daily reboot?

EDIT — see https://help.ubuntu.com/community/CronHowto for the following: «Crontab commands are generally stored in the crontab file belonging to your user account (and executed with your user’s level of permissions). If you want to regularly run a command requiring administrative permissions, edit the root crontab file: sudo crontab -e»

EDIT — thanks to @charlesbridge for his comment — edited answer to include the full path