Development

Установка и настройка https

Внимание!
Начиная с октября 2016 г. Mozilla Firefox и с марта 2017 г. Google Chrome не поддерживают сертификаты от StartCom.
Вместо них можно воспользоваться бесплатным сертификатом Let’s Encrypt.

Как получить бесплатный сертификат для сайта

Чтобы получить бесплатный сертификат для https идем на startssl.com и регистрируемся там. После регистрации вы получите файл сертификата для авторизации на сайте (*.p12), который необходимо импортировать. В Windows 10 для этого достаточно два раза кликнуть по файлу, после чего запуститься Certificate Import Wizard и сделает почти всю работу за вас. Раньше выдавали сертификат всего на один год, но последний раз (октябрь 2016 г.) сразу выдали на 4 года. В любом случае по истечении срока действия сертификата или его потери достаточно вновь ввести email, ввести код подтверждения (который придет на email) и создать новый сертификат.

После прохождения валидации вам предоставят возможность создавать сертификаты. Бесплатный тарифный план включает в себя неограниченное (наверное) число сертификатов Class 1 - это сертификаты Domain Validation (DV), которые требуют лишь подтверждения владения доменом. Самый простой способ подтвердить - запросить код подтверждения на почту webmaster@, после чего в один сертификат вы можете включить до 10 разных доменов. Wildcard не поддерживается, поэтому как минимум нужно будет указать домен с www и без, ну и остальные по вашему желанию. Эти сертификаты выдаются на год, но через год вы можете бесплатно сгенерировать новый и заменить старые файлы.

Как установить сертификат на сервер

Для установки сертификата вам потребуется файлик с приватным ключем *.key и файлик с сертификатом *.pem. Первый вы получаете в процессе генерации сертификата, второй можно скачать со страницы списка сертификатов. Далее вам понадобится рутовый сертификат, его скачиваем с этой страницы - startssl.com/root - Root 1 - StartCom Certification Authority - ca.crt(pem). После чего объединяем рутовый сертификат с нашим в один файлик:

cat alhames.ru.pem ca.crt > cert.pem

Далее устаналиваем приватный ключ:

openssl rsa -in alhames.ru.key -out priv.key
chmod 600 priv.key

Все готово, теперь остается лишь вписать необходимые настройки в nginx. Просто копипастим все оттуда, вкачестве ssl_certificate используем файлик cert.pem, а в качетсве ssl_certificate_key используем priv.key.

Настройка cron

Для запуска скриптов по расписанию необходимо отредактировать файл /etc/crontab. Параметры задачи разделяются пробелом и имеют следующую последовательность:

  • Минута (0 - 59)
  • Час (0 - 23)
  • День месяца (1 - 31)
  • Месяц (1 - 12 или jan,feb,mar,apr...)
  • День недели (0 - 6, где воскрксенье = 0, или sun,mon,tue,wed,thu,fri,sat)
  • Имя пользователя
  • Команда

Задачи из крона запускаются не чаще раза в минуту. Указание времени по сути имеет вид фильтра - как только текущее время под него попадает, то задача запускается.

  • Если указать *, то это будет соответствовать любому значению.
  • Если указать конкретное число/название - то задача будет запускаться когда это число будет совпадать с текущим. Например 10 20 * * * будет запускаться раз в день в 20:10.
  • Также можно указать диапазон через дефис. Например, 0-10 * * * * будет запускаться каждую минуту в началае часа 10 раз.
  • Также можно перечислить время, разделив его запятой: 0,1,2,3,4,5 * * * *.
  • Также можно указать интервал, разделив * на число. Если текущее время будет делиться без остатка, то задача запустится. Например */10 * * * * будет запускаться каждые 10 минут (в 00, 10, 20, 30...).

Для записи логов выполнения в файл дописываем в конце команды следующее: > /tmp/cron.log 2>&1, что значит что поток ошибок (stderr) будет перенаправлен в поток вывода (stdout), который в свою очередь запишется в файл /tmp/cron.log. Для дозаписи ">" заменяем на ">>".

Итак, чтобы запускать команду Symfony раз в сутки в 23:00 и логировать ее выполнение, пишем следующее:

0 23 * * * nginx /var/www/project/bin/console cache:clear >> /var/www/project/var/logs/cron.log 2>&1

Как изменить ssh-порт

Открываем на редактирование файл /etc/ssh/sshd_config:

nano /etc/ssh/sshd_config

Находим строку #port 22, убираем "#" и заменяем 22 на любой свободный порт. Лучше всего использовать диапазон от 2000 до 7000. Список свободных портов можно посмотреть на wikipedia.org. А еще 2222 тоже лучше не использовать :)

Также список открытых портов можно посмотреть следующей командой:

netstat -tupln | grep LISTEN

После чего перезапускаем ssh и конектимся по новому порту:

systemctl restart sshd

Особо это не защитит, но зато избавит от сообщения аля

There were 181693 failed login attempts since the last successful login.

Установка CentOS 7 на VirtualBox

Скачиваем и устаналиваем VirtualBox отсюда - download.virtualbox.org/virtualbox. Лучше всего версию 4.3.12, т.к. у последующих имеются проблемы с запуском на Windows 7 (SP1, x64).

Создаем вирутальную машину. Тип жесткого желательно выбрать VMDK фиксированного размера. Операционную систему - Red Hat (64 bit).

Скачиваем образ CentOS 7 отсюда - www.centos.org/download (выбираем Minimal ISO). Либо сразу идем на mirror.yandex.ru/centos и скачиваем последнюю версию 7.x.

В настройках вирутальной машины в разделе Носители выбираем образ CentOS. В разделе Сеть тип подключения должен стоять NAT, переходим в проброс портов и добавляем следующие записи:

Имя Протокол IP хоста Порт хоста IP гостя Порт гостя
ssh tcp 192.168.56.1 22 10.0.2.15 22
http tcp 192.168.56.1 80 10.0.2.15 80
https tcp 192.168.56.1 443 10.0.2.15 443

Запускаем машину, начнется установка. Русский язык нигде не выбираем - везде оставляем English (US). Должны быть выбраны следующие настройки:

  • Date&Time: Europe/Moscow
  • Keyboard: English (US)
  • Language Support: English (United States)
  • Software selection: Minimal install
  • Installation destination: Automatic partitioning selected
  • Kdump: Kdump is enabled
  • Network & Host name: Wired (enp0s3) connected

В настройки сети придется обязательно зайти, указать название хоста и включить автозагрузку.

После завершения установки отключаем и удаляем firewalld (будем использовать iptables).

systemctl stop firewalld
systemctl disable firewalld
yum remove firewalld

Теперь можно перейти в Putty. В качестве хоста используем 192.168.56.1, порт 22 (стандартный). Обновляем систему и ставим все необходимое (по желанию).

yum update
yum install wget nano net-tools

Отключаем Selinux, заменив в /etc/sysconfig/selinux строку на SELINUX=disabled.

Далее ставим весь необходимый софт для установки гостевых аддонов:

rpm -Uvh https://download.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
yum install gcc make bzip2 kernel-devel kernel-headers dkms perl

Идем на download.virtualbox.org/virtualbox и скачиваем образ диска с гостевыми дополнениями от самой последней версии VirtualBox (VBoxGuestAdditions_4.x.xx.iso). В новых версиях kernel поменялась структура папок, поэтому гостевые аддоны от 4.3.12 не установятся. Можно скачать, к примеру, версию 4.3.26. После чего вставляем образ в дисковод.

Далее запускаем установлку аддонов:

mkdir /media/VBoxAdd
mount -r /dev/cdrom /media/VBoxAdd
cd /media/VBoxAdd
./VBoxLinuxAdditions.run

После такого как аддоны установились мы сможем, к примеру, монтировать папку WINDOWS, созданную под Windows, в папку /tmp/windows, следующей командой:

mount -t vboxsf WINDOWS /tmp/windows

Либо сразу добавить в автозагрузку файловой системы. Для этого необходимо отредактировать файл /etc/fstab, дописав следующую строчку:

WINDOWS /tmp/windows vboxsf defaults,comment=systemd.automount 0 0