# Общие вопросы

# Как запретить доступ с определенных IP на уровне сервера?

В локальных фалах конфигурации nginx /etc/nginx/conf.d/local можно настроить сервер под свои нужды. Для изменений на уровне всего сервера удобно использовать /etc/nginx/conf.d/local/keitaro/server.inc

Для блокировки IP на уровне сервера вносится следующая запись:

deny x.x.x.x;
allow all;

При подключении к серверу через терминал, используйте команду
echo 'allow 1.2.3.4; deny all;' > /etc/nginx/conf.d/local/keitaro/admin.inc

для запрета админки или

echo 'allow 1.2.3.4; deny all;' > /etc/nginx/conf.d/local/keitaro/server.inc

Для запрета на уровне сервера. Где "1.2.3.4" - ip, с которого можно будет зайти в админку.

# Какие изменения можно вносить в конфигурацию сервера

Если Вы обладаете навыками программирования, то для локальной настройки конфигурации nginx можно пользовать файлы в /etc/nginx/conf.d/local

После установки трекера в этой директории будет создана поддиректория keitaro с файлами:

  • server.inc - здесь можно вносить изменения на уровне всего сервера
  • admin.inc - можно использовать для внесения блокировок или дополнительный настроек админки (например, можно ограничить вход только с определённых ip)
  • tracker.inc - здесь можно настроить дополнительное поведение для файлов/скриптов, относящихся к трекеру (например настроить кеширование для статических сайтов)
  • nontracker.inc - здесь можно настроить дополнительное поведение для файлов/скриптов, не относящихся к трекеру (например настроить кеширование для статических сайтов)
  • realip.inc - в случае, если сервер находится за прокси (типа CloudFlare) и нужно, чтобы ip посетителей определялись и писались в логи nginx корректно, в этот файл стоит добавить директивы вида ''set_real_ip_from a.b.c.d/x;'', где ''a.b.c.d/x'' - IP сеть прокси
  • для каждого отдельного домена, создаётся также /etc/nginx/conf.d/local/domain.com.inc, где можно настроить поведение на уровне домена

Т. о. если например нужно ограничить доступ ботам на уровне всех сайтов и трекера, проще всего это сделать в файле /etc/nginx/conf.d/local/keitaro/server.inc, в конфигах доменов этого делать не нужно.

Важно! После каждого внесенного изменения нужно проверять конфиг командой: nginx -t

и только потом делать перезагрузку nginx: systemctl reload nginx

Подробный список всех директорий можно найти по ссылке (opens new window)

# Когда не следует производить перезагрузку VPS/VDS сервера?

Иногда бывают ситуации (например в следствии большой нагрузки, ошибки сервера, DDoS)когда быстродействие VPS сервера падает, наблюдаются сильные задержки в работе трекера, и тогда кажется что перезагрузить сервер в таком случае - это хорошее решение. Однако если сервер или трекер занят определенной операцией которая работает со статистикой кликов в Вашей БД, то перезагружать VPS/VDS сервер не рекомендуется, так как Вы рискуете проведить базу данных трекера, что приведет к потери данных. Что бы избежать этого - рассмотрим простой список случаев когда не стоит перезагружать сервер:

  • RedisException: OOM command not allowed when used memory > maxmemory - если служба хранения статистики в БД трекер была остановлена ОС сервера, однако необходимо проверить или ключи и данные все еще не висят в службе redis. Перезагрузка сервера может привести к тому, что статистика которая зависла в redis - может так и не попасть в Ваш трекер. В таком случае нужно проверить что бы очередь команд отрабатывала (Обслуживание - Состояние). Если у Вас постоянно растет очередь команд, и не уменьшается - следует незамедлительно написать в нашу тех.поддержку.
  • Выполнение очистки статистики - желательно дать запросу на удаление статистики полноценно отработать, в противном случае выполнение запроса будет прервано и удаление статистики придется запустить заного.
  • Оптимизация базы данных трекера - ни в коем случае мы не рекомендуем Вам выполнять перезагрузку сервера при оптимизации БД - есть большая вероятность уронить таблицу с данными, в которой выполнялась оптимизация на момент перезагрузки. Так же сама БД будет заблокирована на время выполнения оптимизации, а в случае перезагрузки - отката изменений.
  • Неисправность SSD - в данном случае лучше сразу же написать в техническую поддержку Вашего VPS/VDS хостинга, после чего Вам проведут замену.
  • Критические ошибки ядра ОС сервера - необходимо произвести резервное копирование всех Важных файлов (дампов БД, архива с лендингами напр.) Перезагрузка при неисправной ОС может привести к тому что дальнейшее создание дампа БД или архива с лендингами будет невозможно, в ввиду недоступности некоторых служб.
  • Закончилось свободное место на сервере - если на сервере, на SSD где расположен трекер - закончилось свободное место (проверить можно командой df -h), то после перезагрузки сервера, VPS не сможет производить никакие записи в файлы трекера или сервера (из-за недостатка места), что в свою очередь приведет к тому что сервер вообще не включиться. В таком случае лучше написать нам, в техническую поддержку или же в техническую поддержку VPS/VDS после чего мы постараемся найти, что именно у Вас занимает больше всего места на сервере.

# Как открыть порт на сервере?

Чтобы открыть порт нужно воспользовать командой:

firewall-cmd --permanent --add-port=номер_порта/tcp

Например, для того чтобы открыть 80 порт:

firewall-cmd --permanent --add-port=80/tcp

Добавить диапазон портов:

firewall-cmd --permanent --add-port=6500-6700/udp

Добавить несколько портов:

firewall-cmd --permanent --add-port=80/tcp --add-port=443/tcp

# Как очистить статистику и освободить место на сервере?

  1. Самый простой и доступный способ очистить статистику - запустить процесс очистки из админ панели Keitaro. В разделе Обслуживание - Очистка статистики вы можете выбрать временной интервал и временную зону для очистки всех кликов.

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

Если база начала перегружаться и место на диске стремительно заканчиваться, можно попробовать следущие экстренные пути решения проблемы:

  1. Выполнить в терминале чистку дампов Redis'а (это удалит все необработанную статистику!):

rm -r /var/lib/redis/*

  1. Попробовать запустить очистку статистики до определенной даты. Однако, при большом количестве кликов в базе, процесс может занять длительное время.
export DB_NAME='keitaro'
export DB_USER='root'
mysql -u $DB_USER  -e 'DELETE FROM keitaro_clicks WHERE datetime < "2018-01-01" ' $DB_NAME
  1. Эта команды поможет оптимизировать таблицу с кликами, после чего размер базы данных трекера уменьшиться.
    Внимание! Этот запрос заблокируют базу на время выполнения и требуют наличие дополнительного свободного места.

cd /var/www/keitaro && sudo -u keitaro php bin/cli.php system:optimize_db

Если вы не можете остановить сервер, используйте Percona-toolkit для выполнения оптимизации таблиц.

Установка Percona-toolkit:

yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm

yum install percona-toolkit

При использовании данного метода оптимизации необходимо удостовериться, что на сервере есть свободное место на SSD, равноценное объёму таблицы, в которой необходимо выполнить оптимизацию (так как при этом будет создана копия оптимизируемой таблицы).

Запуск оптимизации с использованием Percona-toolkit:

pt-online-schema-change --alter='ENGINE=TokuDB' D=keitaro,t=keitaro_clicks --execute

  1. С помощью следующей команды можно удалить всю имеющуюся статистику и освободить место на диске:

cd /var/www/keitaro && sudo -u keitaro php bin/cli.php system:delete_all_stats

После запуска команды вы получите предупреждение о том, что произойдет и какая информация очистится:

[WARNING] Important! The following will happen:
           - old versions tables removal,
           - clicks stats to the exact date removal (if specified in parameters),
           - optimization of the clicks in the stats,
           - cleaning all the current stats completely (if specified in parameters).

           These inquiries will block the database
           during the implementation and require additional free space on a disk.

Далее подтвердите выполнение команды yes/no.

Будет произведена очистка всей статистики.

  1. Если вы делали апгрейд с 7й версии, можно удалить старые таблицы через терминал:
export DB_NAME='keitaro'
export DB_USER='root'
mysql -u $DB_USER  -e 'show tables' $DB_NAME | grep -e 'keitaro_archive\|keitaro_index' | xargs -I "@@" mysql -u $DB_USER -e "TRUNCATE table \`@@\`" $DB_NAME

# Как очистить инноды на сервере?

Если Ваш трекер стал не корректно работать или появилось сообщение о том, что заканчивается свободное место на SSD (при этом проверка свободного места на сервере через df -h показывает что места достаточно для работы трекера) - в таком случае у Вас может заканчивается общее колличество иннод. Иноды (inodes) - это файловые дескрипторы в Linux, которые отвечают за метаинформацию о стандартных файлах, директориях или других объектах файловой системы, кроме непосредственно данных и имени. Иногда число файловых дескрипторов близиться к нулю - это значит что в ОС недостаточно описаний для определения местонахождения этих файлов. В таком случае - эти файлы должны быть удалены или очищенны. Для поиска, Вам необходимо выполнить:

df -i

В результате Вы получите структуру Вашей файловой системы со списком и колличеством иннодов которые занимает та или инная папка. Соответственно Вам нужно идти по пути этой папки, и при каждом вхождении проверять колличество иннодов командой df -i В конечном итоге Вы найдете папку с файлами которую нужно будет удалить командой

rm -rf deletedfolder/ 

Где deletedfolder/ имя папки которую необходимо будет удалить. ВНИМАНИЕ Обязательно сверьтесь с папкой которую собираетесь удалить - Ваша цель удалить папку на сервере с переполненным колличеством файловых дескрипторов, но не системные файлы сервера и её ОС. Если Вы не уверены в своих действиях - лучше напишите в нашу техническую поддержку и мы поможем Вам очистить innode. В противном случае, Вы рискуете привести ОС сервера в неработоспособное состояние, восстановление которого - не входит в нашу техническую поддержку. Пожалуйста будьте внимательны!

# Как посмотреть историю посещений админки?

Лог обращений к админке логируется в файле /var/log/nginx/admin.access.log. Через терминал можно смотреть так: less /var/log/nginx/admin.access.log

или запросить последние обращения tail -n 100 /var/log/nginx/admin.access.log

# Почему VPS стал работать очень медленно?

Это могло произойти по причине недостаточного выделения CPU ресурсов на ваш виртуальный сервер. Запустите на сервере команду vmstat 1 5

В результате вы увидите таблицу подобную этой

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
111  0      0 3438984  20280 603200    0    0    11    20   38   85 10  2 32  0 56
139  0      0 3435676  20280 603220    0    0     0     0  936  318 15  3  0  0 82
126  0      0 3434312  20280 603212    0    0     0     0  903  198 14  4  0  0 82
92  0      0 3450964  20280 603868    0    0     0     0  885  198 13  3  0  0 83
145  1      0 3452128  20280 604412    0    0   448     0  993  254 14  2  0  0 84

Обратите внимание на значения в последнем столбце st. Если у вас значения значительно больше 0 (как в примере), значит CPU ресурсов выделено недостаточно. В данном случае рекомендуем поменять дата центр или хостинг провайдера.

# Сколько хранится и где редактируется срок хранения лога полученных постбеков?

Лимит на размер лога прописан в файле application/config/config.ini.php

# Как подключиться к серверу по FTP?

Используйте любой удобный для вас файловый менеджер, например, Для Windows - это WinSCP (opens new window) и для Mac OS CyperDuck (opens new window). И подключайтесь через протокол SFTP, используя доступы для подключения по ssh.

# Как настроить отправку почты из скриптов?

На сервере не установлен почтовый сервис, поэтому почту нужно слать через внешний. Если писем не больше 100-150, можете использовать gmail (opens new window).

# Как удалить домен с сервера?

Чтобы удалить из веб-сервера и его сертификат:

curl https://raw.githubusercontent.com/apliteni/centos_provision/current/scripts/delete-ssl.sh > delete-ssl; bash delete-ssl domain.com

domain.com - имя домена

# Как перенастроить сервер после увеличения RAM или vCPU?

Запустите команду апгрейда

curl keitaro.io/install.sh > run && bash run -rt upgrade

WARNING

Внимание! Запуск апгрейда перезапишет все конфиги на сервере!!

# Как проверить диск HDD или SSD?

Посмотрите названия дисков

cat /proc/scsi/scsi