Содержание

Трекер Yourls ваш собственный сокращатель ссылок (URL)

YOURLS (Аббревиатура You Own URL Shortener) - это бесплатная альтернатива сокращению ссылок (URL) с открытым исходным кодом и самостоятельно размещаемым URL-адресом аналогично ТОП 3 сервисов: Как сократить URL ссылку: bit.ly, U.to или To.click.

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

В этой стать представляю вам бесплатный инструмент YOURLS, который может закрыть потребности в отслеживании переходов по вашим ссылкам. YOURLS - это ваш персональный аналог Bitly или u.to. Этот скрипт предназначен для сокращения ссылок, а так же отображает количество кликов, источники переходов и ГЕО пользователей. Это лишь не большая часть функционала обычного трекера, но преимущество YOURLS, как минимум, в том, что за него не нужно платить.

Возможности Yourls: за и против

Yourls инструмент для редиректов будет полезен для тех, кто добывает трафик из мессенджеров (Телеграм, Viber), социальных сетей (Вконтакте, Фейсбук) и других источников.

Плюсы Yourls:

  1. Плагины, которые позволяют выбирать из ряда типов перенаправления (например, 301, 302, мета-перенаправление)
  2. Плагин, который устанавливает запасной URL
  3. Плагин, который делает URL-адреса нечувствительными к регистру
  4. Плагин, который добавляет теги ссылок Google Analytics
  5. Плагин, который скрывает реферала или доставит вас на сервис анонимайзера

Минусы:

Как безопасно обновить Yourls

В этом разделе описан процесс обновления скрипта Yourls до последней версии. Если вы только решили установить Yourls читайте пошаговую инструкцию ниже по инсталляции Yourls с нуля.

  1. Обязательно сделайте резервную копию файлов и базы данных Yourls и сохраните его на какой-то время. Например из консоли Linux
    cp -r /var/www/yourlsite/ /var/www/yourlsite.bak.20221029
    mysqldump yourlbd > /var/www/yourlsite.bak.20221029/yourlbd.sql
  2. Скачиваем архив с последней версии по Yourls ссылке https://github.com/YOURLS/YOURLS/releases
    wget -c https://github.com/YOURLS/YOURLS/archive/refs/tags/1.9.1.tar.gz
  3. Распаковываем архив
    tar -xzvf 1.9.1.tar.gz
  4. При помощи клиента FileZilla подключаемся к нашему хостингу и перезаписываем файлы на сайте фалами из распакованного архива. Или в консоли воспользуемся командой
    cp -r YOURLS-1.9.1/* /var/www/yourlsite
  5. Для продолжения обновления переходим по ссылке
    https://<имя вашего домена>/admin

При обновлении на версию YOURLS v 1.9.1, после перехода по ссылке - уже все обновлено. Не нужно ничего делать в админке.

И видим ободряющий:-D текст от разработчиков, особенно впечатлило:-D "If everything goes too fast and you cannot read, good for you, let it go :)", что в вольном переводе означает "Если вы не умеете читать - жмите кнопку Обновить"!!! :-D

  1. Нажимаем кнопку Upgrade, практически сразу должен появиться следующий экран с надписью: Upgrade YOURLS Your installation is now up to date! Go back to the admin interface
  2. Всё! Обновление закончено, переходим в веб-интерфейс и продолжаем спокойно работать.

Введение: Установка Yourls с нуля

Yourls с нуля на виртуальном хостинге

Устанавливать Yourls будем на виртуальном хостинге с Apache и PHP 7.4, инструкция будет работать с любым тарифным планом из списка проверенных хостингов для сайта.

Установка YOURLS осуществляется на ваш сайт и занимает не больше 10-и минут. Файлы скрипта загружаются на хостинг и админка сокращалки устанавливается на сайт/admin.

Требования к серверу Yourls:

ШАГ 1. Настройка домена

Покупаем домен или создаем домен третьего уровня, я создал https://to.dieg.info/. Обязательно устанавливаем бесплатный SSL сертификат. Выбираем PHP 7.4 Все настройки на скриншоте:

ШАГ 2. Создание базы данных

Создаем БД, копируем обе строки в блокнот для дальнейшего использования.

ШАГ 3. Где скачать Yourls

Скачиваем архив последней версии с GitHub. Распаковываем архив и записываем в корень вашего сайта.

ШАГ 4. Настройка конфигурационного файла Yourls

Переименовываем файл user/config-sample.php в user/config.php или делаем копию.

Изменяем параметры в полученном файле config.php: подключение к базе MySQL (из ШАГ 2); указываем свой домен; параметр YOURLS_COOKIEKEY генерируем что-то типо gBaXCvIxLXU9qluEq7c0; меняем часовой пояс на нужный вам в параметреYOURLS_HOURS_OFFSET (я выставил +2).

Логин и пароль для доступа в админку задаются в массиве, замените yourlsadminusername на имя своего пользователя и задайте пароль вместо слова password. Здесь же вы можете добавить одного или более пользователей - раскомментируйте строку ниже и впишите нужные логин и пароль второго пользователя Yourls.

define( 'YOURLS_DB_USER', 'пользователь БД' );
define( 'YOURLS_DB_PASS', 'пароль пользователя БД' );
define( 'YOURLS_DB_NAME', 'имя базы данных' );
define( 'YOURLS_SITE', 'https://твой домен' );
define( 'YOURLS_COOKIEKEY', 'gBaXCvIxLXU9qluEq7c0' );
define( 'YOURLS_HOURS_OFFSET', +2 ); 
$yourls_user_passwords = array(
    'yourlsadminusername' => 'password',
    	// 'username2' => 'password2',
	// You can have one or more 'login'=>'password' lines
    );

Ко мне дважды обращались с проблемой подключения Yourls к базе данных, поэтому написал скрипт для независимой проверки подключения к MySQL из PHP mysqli.

ШАГ 5. Инсталляция Yourls + видео

Переходим по адресу

https://<имя вашего домена>/admin

Если все ок, увидим страницу конфигуратор. Нажимаем кнопку "Install YOURLS" и должен получиться такой результат. Если все Ок - поздравляю! Если нет можете написать мне -я подскажу.

Административная панель доступна по адресу

https://<имя вашего домена>/admin

Ниже хорошее видео по инсталляции Yourls, если что-то не понятно из руководства посмотрите его

ШАГ 6. Русификация Yourls

Скачиваем русский перевод для YOURLS.

Установка:

  1. Загрузите архив и распакуйте его.
  2. Поместите файлы ru_RU.mo и ru_RU.po в папку user/languages.
  3. Добавьте define( 'YOURLS_LANG', 'ru_RU' ) в config.php.
  4. Готово!

ШАГ 7. Дополнительная настройка

User-agent: *
Disallow: /admin
Disallow: /css
Disallow: /images
Disallow: /includes
Disallow: /js
Disallow: /user

ШАГ 7.1. Разрешить несколько коротких URL

Если вы занимаетесь партнерским маркетингом, то частенько сталкиваетесь с тем что часть ПП закрывается или становятся не интересными. И казалось, бы достаточно в YOURLS заменить старые ссылки на новые. Но по умолчанию, в YOURLS вы не можете создать две и более коротких ссылок на один длинный URL из партнерской сети.

Но это легко решается установкой параметра YOURLS_UNIQUE_URLS в false в конфигурационном файле config.php, расположенном в директории user.

define( 'YOURLS_UNIQUE_URLS', false );

Разрешить несколько коротких URL-адресов для одного и того же длинного URL-адреса. Установите значение true, чтобы иметь только одну пару коротких и длинных URL-адресов (поведение YOURLS по умолчанию). Установите значение false, чтобы несколько коротких URL-адресов указывали на один и тот же длинный URL-адрес (поведение bit ly)

ШАГ 8. Настройка безопасности Yourls в Apache и Nginx

Вы не хотите облегчать взломщику задачу? Например он взломает и поставить свои ссылки вместо ваших - будет весело.

Apache:

Поэтому в директории /admin создаем файл .htaccess с таким содержимым:

Order Deny,Allow
Deny from all
#Allow from xxx.xxx.xxx.xxx
Allow from xxx.xxx.xxx.xxx

Где вместо xxx.xxx.xxx.xxx подставляем свой личный ip или несколько ip (для этого добавьте строчки Allow from).

Nginx:

location /admin/ {
    allow xxx.xxx.xxx.xxx;
    deny  all;
    }

В реальности код выше для Nginx будет запрещать только доступ к директории, но разрешит выполнение php файлов. Если вы хотите возиться с безопасностью nginx для Yourls, то вам следует использовать код ниже (без понимания что он делает не копируйте его себе):

location /admin/ {
    allow xxx.xxx.xxx.xxx;
    deny  all;
}
 
location ~* ^/admin/(index|install|admin-ajax|plugins|tools|upgrade)\.php {
    allow xxx.xxx.xxx.xxx;
    deny all;
 
    fastcgi_pass  127.0.0.1:9074;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi.conf;
}

ШАГ 9. Дополнительные плагины Yourls (опционально)

Действительно плагинов расширяющих возможности Yourls очень много, весь список смотрите на официальном гитхабе проекта. Ниже я привожу список интересных плагинов расширяющих функционал скрипта Yourls.

ШАГ 10. Установка Yourls на несколько доменов

Проблема: По разным причинам, требуется сокращение ссылок для разных доменов или поддоменов с использованием одной установки Yourls. То есть вы хотите чтобы работали ссылки для двух доменов https://your.domain и https://second.your.domain.

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

Решение 1. (Я не тестировал этот способ). Использовать запись CNAME в настройке DNS для другого домена или поддомена. То есть достаточно в DNS создать запись second.your.domain CNAME your.domain. Плюсы - это простое решение. Минусы вы не сможете разделить статистку по доменам.

Решение 2. (Я не тестировал этот способ). Это решение известно с 2014 года. И заключается в создании двух виртуальных доменов https://github.com/YOURLS/YOURLS/issues/560#issuecomment-46617669

ШАГ 11. Установка Yourls на VPS/VDS NGINX и PHP-fpm

Предварительные условия:

Это то, что вам нужно, чтобы следовать этому руководству и настроить YOURLS:

По итогу, у нас в наличии VPS Ubuntu 22.04 LTS Jammy, купленный у абузоустойчивого хостинг провайдера Alexhost, Nginx версии 1.18.0, MariaDB 10 (вы можете установить MySQL - для Yourls все равно), две версии PHP FPM 8.1 и 7.4 (слушает на порту 127.0.0.1:9074). Также VPS поддерживает IPv6.

Для создания SSL сертификатов установим certbot из репозиториев по умолчанию Ubuntu и git:

apt install certbot git

Установим зависимости PHP 7.4 для Yourls:

apt install php7.4-xml php7.4-cli php7.4-zip php7.4-json php7.4-mysql  php7.4-gd php7.4-mbstring php7.4-curl php7.4-bcmath

Перезапустим Nginx и php-fpm:

systemctl restart nginx.service php7.4-fpm.service

Создаем базу данных и пользователя:

mysql -u root -p
 
CREATE DATABASE exampledb;
GRANT ALL privileges ON exampledb.* TO 'exampledb-user'@'localhost' IDENTIFIED BY 'p@ssw0rd' WITH GRANT OPTION;
FLUSH privileges;
exit;

Скачиваем дистрибутив, при желании полученную директорию YOURLS можете переименовать, командой mv:

cd /var/www/
git clone https://github.com/YOURLS/YOURLS.git
cd YOURLS/

Делаем бэкапа конфигурационного файла и добавляем данные для доступа к базе данных, как в ШАГе 4.

cp user/config-sample.php user/config.php
nano user/config.php

Обновляем права доступа к каталогу.

chown -R www-data:www-data /var/www/html

Теперь самое интересное, это настройка виртуального домена в Nginx. Нам нужно настроить Nginx и настроить серверный блок для YOURLS. Создайте файл .conf для YOURLS:

nano /etc/nginx/sites-available/yourls.conf

Рабочий конфигурационный файл, достаточно заменить YOURLS на ваши значения

yourls.conf
server {
        listen 80;
        listen [::]:80;
 
        server_name YOURLS;
        root /var/www/YOURLS;
        index index.php index.html;
        access_log  /var/log/nginx/YOURLS.access.log;
        error_log  /var/log/nginx/YOURLS.error.log;
 
location / {
        try_files $uri $uri/ /yourls-loader.php$is_args$args;
}
 
location ~ \.php$ {
        fastcgi_pass  127.0.0.1:9074;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi.conf;
}
 
##### Стандартные настройки для любого хоста
  location = /robots.txt  { access_log off; log_not_found off; }
  location = /favicon.ico { access_log off; log_not_found off; }
# Запрет доступа к скрытым файлам, файлы названия которых начинаются с точки)
  location ~ /\.          { access_log off; log_not_found off; deny all; }
#####

Разрешим запуск конфига нашего сайта в Nginx:

ln -s /etc/nginx/sites-available/yourls.conf /etc/nginx/sites-enabled/

Проверяем синтаксис, если все ОК перезапускаем Nginx

nginx -t
nginx -s reload

Установим сертификат SSL, запустив команду certbot.

certbot --nginx

Поздравляю! Yourls установлен на чиcтый VPS, без использования панели управления.

Административная панель доступна по адресу

https://<имя вашего домена>/admin

Это супер крутая возможность для скрытия ссылок на вашем сайте Wordpress.

Связка Yourl и плагина Mihdan: No External Links как сделать внешние ссылки внутренними:

Сигнатуру берем из админки вашего Yourl по ссылке:

https://<твой домен>/admin/tools.php

Как очистить статистку по кликам

Найти все записи для партнерской программы с именем example:

SELECT * FROM `yourls_log` WHERE `shorturl` = "example";
SELECT * FROM `yourls_log` WHERE `shorturl` LIKE "example%";

Удалить все записи для партнерской программы с именем example:

DELETE FROM `yourls_log` WHERE `shorturl` LIKE "example%";

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

UPDATE `yourls_url` SET `clicks` = '0' WHERE `yourls_url`.`keyword` = 'example';