Настройка https в nginx

Для начала надо сгенерить CSR файл (требуется для получения сертификата)
openssl genrsa -out server.key 2048
openssl req -new -sha256 -key server.key -out server.csr
При генерации будут спрашивать данные, вводим (смотрим подсказки, некоторые поля можно пустыми оставить) Country Name State or Province Name (full name) Locality Name (eg, city) Organization Name (eg, company) Organizational Unit Name (eg, section) Common Name (e.g. server FQDN or YOUR name) Email Address A challenge password An optional company name Затем со сгенеренным CSR идем покупать сертификат. Писать где не буду (чтобы не рекламить). Когда купите сертификат вам дадут CRT файл. Если у вас цепочка сертификатов, то нужно склеить их в один
cat server.crt intermediate.crt > server.crt
Затем добавить в nginx.conf следующее
http {
    #......всякое.......
    ssl_certificate server.crt;
    ssl_certificate_key server.key;
    ssl_session_cache   shared:SSL:10m;
    ssl_session_timeout 10m;

    server {
            listen       443;
            server_name  example.com;

            ssl on;
	    keepalive_timeout 70;
	    #......всякое.......
	}
}
6 января 2015, 21:07

Запрет входа по паролю в ssh

редачим конфиг /etc/ssh/sshd_conf
PasswordAuthentication no
ChallengeResponseAuthentication no
6 января 2015, 17:55

Качаем 1080p с youtube через youtube-dl со звуком

Как известно, через свои форматы ютуб отдает только 1280х720 Чтобы скачать лучшее качество нужно немного поизголяться. Для начала смотрим какие форматы есть вообще
$ youtube-dl 'http://www.youtube.com/watch?v=c9JoHd7xoPA' -F
[youtube] c9JoHd7xoPA: Downloading webpage
[youtube] c9JoHd7xoPA: Extracting video information
[youtube] c9JoHd7xoPA: Downloading DASH manifest
[info] Available formats for c9JoHd7xoPA:
format code extension resolution  note 
139         m4a       audio only  DASH audio   49k , audio@ 48k (22050Hz), 1.28MiB (worst)
140         m4a       audio only  DASH audio  129k , audio@128k (44100Hz), 3.39MiB
171         webm      audio only  DASH audio  131k , audio@128k (44100Hz), 3.17MiB
172         webm      audio only  DASH audio  195k , audio@256k (44100Hz), 4.59MiB
141         m4a       audio only  DASH audio  255k , audio@256k (44100Hz), 6.74MiB
278         webm      256x144     DASH video   91k , webm container, VP9, 15fps, video only, 1.54MiB
160         mp4       256x144     DASH video  111k , 15fps, video only, 2.79MiB
242         webm      426x240     DASH video  127k , 30fps, video only, 1.73MiB
133         mp4       426x240     DASH video  248k , 30fps, video only, 6.28MiB
243         webm      640x360     DASH video  233k , 30fps, video only, 3.10MiB
134         mp4       640x360     DASH video  603k , 30fps, video only, 8.29MiB
244         webm      854x480     DASH video  390k , 30fps, video only, 5.19MiB
135         mp4       854x480     DASH video  928k , 30fps, video only, 16.02MiB
247         webm      1280x720    DASH video  829k , 30fps, video only, 11.34MiB
136         mp4       1280x720    DASH video 1532k , 30fps, video only, 31.34MiB
248         webm      1920x1080   DASH video 1594k , 30fps, video only, 24.76MiB
137         mp4       1920x1080   DASH video 2785k , 30fps, video only, 55.71MiB
17          3gp       176x144     
36          3gp       320x240     
5           flv       400x240     
43          webm      640x360     
18          mp4       640x360     
22          mp4       1280x720    (best)
Видим что под номером 137 находится 1080p видосик, под номером 141 звуковая дорожка 256 кбит/с Ну чтоже, давайте их и скачаем, для мерджа необходим ffmpeg
$ youtube-dl 'http://www.youtube.com/watch?v=c9JoHd7xoPA' -f 137+141
[youtube] c9JoHd7xoPA: Downloading webpage
[youtube] c9JoHd7xoPA: Extracting video information
[youtube] c9JoHd7xoPA: Downloading DASH manifest
[download] Destination: Flash - Life in the Sky-c9JoHd7xoPA.f137.mp4
[download] 100% of 55.71MiB in 00:10
[download] Destination: Flash - Life in the Sky-c9JoHd7xoPA.f141.m4a
[download] 100% of 6.74MiB in 00:01
[ffmpeg] Merging formats into "Flash - Life in the Sky-c9JoHd7xoPA.mp4"
6 января 2015, 13:02

Блокируем доступ с опеределенного ip в iptables

Блочим
iptables -I INPUT -s 111.111.111.111  -j DROP
Смотрим
iptables -L INPUT --line-numbers
------------
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DROP       all  --  111.111.111.111      anywhere
Отменяем брокировку (1 - это номер правила из предыдущей команды)
iptables -D INPUT 1
4 января 2015, 12:31

Установка MongoDb на Centos

Создаем файл /etc/yum.repos.d/mongodb.repo с таким содержимым
[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1
Инсталлим
yum install -y mongodb-org
chkconfig mongod on
service mongod start
4 января 2015, 12:27

Как отключить selinux в Centos 6

Отключение из консоли
setenforce 0
А чтобы опять не включилось после ребута vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 
3 января 2015, 07:33

Brew - Another version is already linked

Если пакет не хочет обновляться, то можно принудительно переключить версию
brew switch php55 5.5.20
28 декабря 2014, 03:53

Все актуальные доменные зоны

Взято отсюда
28 декабря 2014, 03:11

PDO mysql, как закрыть коннект

Заметил интересную особенность: чтобы закрыть коннект недостаточно занулить pdo объект
<?php
$db = new PDO(
    'mysql:host=localhost;dbname=test',
    'root',
    'root',
    array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
);

$q = $db->prepare('select now()');
$q->execute();
$now = $q->fetch();
//без этой строчки соединение с базой не закроется! (смотреть ниже)
//кто не верит может закомментить эту строчку и посмотреть process list
unset($q);
var_dump($now);
//допустим, нам нужно закрыть соединение с базой, чтобы произвести какие-то действия
$db = null;
//собственно действия
sleep(100);
?>
27 декабря 2014, 06:09

Установка ssh на Centos

yum -y install openssh-server openssh-clients
26 декабря 2014, 11:23

Циклы на bash

for i in `seq 1 100`;
do
  echo $i
done 
#!/bin/bash
for i in {1..100}
do
   echo "starting $i"
done
26 декабря 2014, 04:42

Конвертация числа из десятичной системы в любую

<?php
class BaseConvert {
    private static $base = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

    public static function encode($num, $b = 62) {
        $r = $num % $b;
        $res = self::$base[$r];
        $q = floor($num / $b);
        while ($q) {
            $r = $q % $b;
            $q = floor($q / $b);
            $res = self::$base[$r] . $res;
        }
        return $res;
    }

    public static function decode($num, $b = 62) {
        $limit = strlen($num);
        $res = strpos(self::$base, $num[0]);
        for ($i = 1; $i < $limit; $i++) {
            $res = $b * $res + strpos(self::$base, $num[$i]);
        }
        return $res;
    }
}
var_dump(BaseConvert::encode(124, 36), BaseConvert::decode('3g', 36));
Тоже самое стандартными средствами
<?php
var_dump(
base_convert(124, 10, 36),
base_convert('3g', 36, 10)
);
24 декабря 2014, 15:13

mysql - InnoDB: Unable to lock ./ibdata1, error: 11

service mysql-server stop
mv /var/db/mysql/ibdata1 /var/db/mysql/ibdata1.bak
cp -a /var/db/mysql/ibdata1.bak /var/db/mysql/ibdata1
chown -R mysql:mysql .
service mysql-server start
18 декабря 2014, 02:18

Git pull из определенной директории (без cd)

git >= 1.8.5
git -C /home/project pull
12 декабря 2014, 10:04

Решение проблемы с keglim в nginx

Если у вас зависает nginx и в топе вы видите следующее
21106 www           1  20  -10 49668K 24392K keglim 13   4:33   8.50% nginx
То не обходимо увеличить kern.ipc.nmbjumbop
sysctl -w kern.ipc.nmbjumbop=400000
Также стоит записать в /etc/sysctl.conf
kern.ipc.nmbjumbop=4000000
11 декабря 2014, 08:24

Проверка и восстановления дисков при помощи fsck

Это нужно делать в single mode
fsck -y -f
28 ноября 2014, 13:46

Получение серийного номера HDD в Centos

hdparm -I /dev/sda | grep Serial
28 ноября 2014, 12:45

Получение серийного номера HDD во FreeBSD

camcontrol identify ada1 | grep serial
28 ноября 2014, 12:41

Задание max open files на Centos

Значение по умолчанию очень маленькое 1024, для многочисленных коннектов надо его увеличить. Изменить это значение можно так, но это действует только до перезагрузки.
ulimit -n 200000
Чтобы значение не сбрасывалось пишем в /etc/sysctl.conf
fs.file-max = 200000
Также пишем в /etc/security/limits.conf
* hard nofile 200000
* soft nofile 200000
И еще устанавливаем значение тут (в необходимости этого пункта не уверен)
echo 200000 > /proc/sys/fs/file-max
22 ноября 2014, 23:03

Крутилка баннеров на JavaScript

По мотивам article#55
<div id="banner"></div>
<script>
    function showBanner(elem) {
        var banners = [
            {
                'src': 'http://url1.jpg',
                'url': 'http://url1.page',
                'alt': 'title1'
            },
            {
                'src': 'http://url2.jpg',
                'url': 'http://url2.page',
                'alt': 'title2'
            },
            {
                'src': 'http://url3.jpg',
                'url': 'http://url3.page',
                'alt': 'title3'
            }
        ];
        var banner = banners[Math.floor(Math.random() * banners.length)];
        elem.innerHTML = '<a href="' + banner.url + '"><img src="' + banner.src + '" alt="' + banner.alt + '" />';
    }
    
    showBanner(document.getElementById('banner'));
</script>
17 ноября 2014, 23:50