Статьи

Как создать свой собственный локальный сервис Премиум URL Shortener

В Интернете вы встретите очень длинные URL-адреса (унифицированные указатели ресурсов). Многие сайты помещают информацию о вашем посещении в URL: такие элементы, как язык, местоположение, идентификация, коды ссылок для специальных предложений и многие другие элементы. Это делает для очень длинных URL.

Премиум URL Shortener на CodeCanyon
Премиум URL Shortener на CodeCanyon

Премиум URL Shortener на Code Canyon — это способ сократить длинные URL. В этом уроке я покажу вам, как настроить собственное сокращение URL в вашей системе и как его использовать.

Вы используете URL всякий раз, когда вы просматриваете Интернет. Он идентифицирует конкретную веб-страницу и контент. Поскольку они часто могут содержать параметры для формы или поисковой системы, эти URL могут быть довольно большими.

1
https://tutsplus.com/tutorials/search/How%20to%20Draw%20Animals:%20Horses,%20Their%20Anatomy%20and%20Poses

Этот URL предназначен для поиска на сайте Tuts + строки «Как рисовать животных: лошадей, их анатомию и позы». Эта строка длиной 74 символа. Я видел URL длиной более 200 символов.

1
https://bit.ly/2oO8BqO

Когда вы используете службу сокращения URL-адресов, например bit.ly , вы получаете намного более короткий URL-адрес. Этот же URL теперь имеет длину 15 символов. Когда кто-то просматривает эту ссылку, сервер bit.ly перенаправляет браузер на полный URL-адрес. Дополнительный поиск по другому URL задерживает время загрузки сайта, но не сильно.

Самый простой способ создать локальный сервер — это использовать виртуальную среду. Но запуск полного виртуализатора системы очень ресурсоемкий. Docker — это минимальный виртуализатор для терминальных систем. Вы можете запустить Docker-контейнер (небольшой сервер Unix), используя меньше системных ресурсов.

Чтобы запустить контейнеры в вашей системе, вам нужно установить Docker . Выберите правильную загрузку для вашей операционной системы на веб-сайте Docker .

С установленным Docker вам необходимо подготовить свою систему к поиску веб-службы, которую вы будете создавать. Для этого вам нужно будет изменить системный файл. В /etc/hosts для систем Linux или macOS и в файле c:\windows\System32\drivers\etc\lmhosts для системы Windows поместите этот оператор:

1
127.0.0.1 s.dev

Это изменение сделает все ссылки на http://s.dev доступными к локальной системе. Это делается для того, чтобы дать службе правильное имя хоста, прежде чем пытаться его настроить.

Чтобы создать свою область разработки, создайте каталог, поместите в него zip-файл Premium URL Shortener и разверните его. Вы должны иметь такую ​​структуру каталогов:

Структура каталогов
Структура каталогов

Это документация с файлом main.zip . Разверните этот файл также. Как только вы развернете его, вы должны иметь следующую структуру каталогов:

Структура каталогов с кодом
Структура каталогов с кодом

Файл main.zip содержит все файлы исходного кода и ресурсы для сервиса. Это будет каталог, который вы добавите в экземпляр Docker.

Теперь вам нужно получить стек Docker LAMP от fauria . Запустив Docker, введите в терминал следующее:

1
docker pull fauria/lamp

Это загрузит стек Fauria LAMP (Linux, Apache, MySQL и PHP) в вашу установку Docker. После загрузки вы можете создать контейнер с:

1
docker run —rm —name linkshort -p 80:80 -e LOG\_STDOUT=true -e LOG\_STDERR=true -e LOG\_LEVEL=debug -v {{service source directory}}:/var/www/html fauria/lamp

Замените {{service source directory}} на полный путь к каталогу, который содержит все исходные файлы и ресурсы. Эта команда создает контейнер с именем linkshort который работает на порте 80 и выдает все сообщения об ошибках и сообщения журнала в стандартный вывод.

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

1
2
3
4
docker exec -i -t linkshort bash
mkdir /var/www/html/data
cp -R /var/lib/MySQL/* /var/www/html/data
exit

Первая команда открывает оболочку bash для контейнера. Вторая команда создает data каталога в вашем каталоге исходного кода. Контейнер видит каталог с исходным кодом как каталог /var/www/html . Третья команда копирует информацию базы данных в этот каталог. Команда exit выводит вас из контейнера.

Теперь остановите контейнер, используя:

1
docker stop linkshort

Вы будете использовать эту команду каждый раз, когда хотите остановить контейнер.

Теперь, чтобы перезапустить контейнер, используя правильный каталог данных, используйте эту команду:

1
docker run —rm —name linkshort -p 80:80 -e LOG\_STDOUT=true -e LOG\_STDERR=true -e LOG\_LEVEL=debug -v {{service source directory}}:/var/www/html -v {{service source directory}}/data:/var/lib/mysql fauria/lamp

На этот раз вы создали контейнер с сервером MarianDB, используя данные базы данных, которые теперь хранятся на вашем компьютере. Это команда, которую вы будете использовать для запуска сервиса. Я использую расширитель клавиатуры Typinator, чтобы напечатать это для меня.

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

1
docker exec -i -t linkshort bash

Эта команда создает оболочку bash в контейнере. Если вам нужно что-то настроить в контейнере, эту команду вы будете использовать. Затем откройте командную оболочку в программе MarianDB:

1
mysql -u root

Теперь вы можете создавать базы данных в MarianDB и предоставлять разрешения веб-серверу для доступа к нему:

1
2
3
4
create database urlshort;
create user ‘www-data’@’localhost’ identified by ‘{{password}}’;
grant all on urlshort.\* to ‘www-data’@’localhost’;
quit;

{{password}} должен быть установлен на пароль, который вы хотите дать пользователю базы данных. Помните об этом, так как вы будете использовать его для настройки сервиса.

Когда служба работает в контейнере, откройте веб-браузер по http://s.dev .

Страница проверки требований
Страница проверки требований

Если вы выполнили настройку, вы должны увидеть эту страницу. На этой странице показаны требования к службе URL Shortener и состояние вашей настройки. Используя контейнер fauria в Docker, вы уже встретили все зависимости. Нажмите синюю кнопку внизу страницы.

Страница конфигурации базы данных
Страница конфигурации базы данных

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

Детали страницы конфигурации базы данных
Детали страницы конфигурации базы данных

Вам необходимо заполнить эти поля, как показано выше. Узел базы данных является локальным узлом для контейнера. Имя базы данных — это urlshort , который вы создали в настройке. Пользователь базы данных — это www-data , а пароль — тот, который вы указали при первоначальной настройке базы данных. Префикс базы данных — это начальное имя для каждой базы данных, созданной для службы. Я использовал short_ . Программа установки устанавливает ключ безопасности . Сохраните копию ключа для дальнейшего использования.

Если бы вы устанавливали его на виртуальном частном сервере (VPS), эти значения соответствовали бы этой услуге. Некоторые будут такими же, а некоторые изменится.

С правильной информацией, нажмите синюю кнопку в нижней части страницы, чтобы перейти к шагу 3.

Страница базовой конфигурации
Страница базовой конфигурации

На экране « Базовая конфигурация» можно указать имя пользователя, адрес электронной почты и пароль администратора. Установите эти значения, которые относятся к вам. URL-адрес сайта должен быть установлен на http://s.dev как вы установили ранее в файле hosts . После настройки нажмите синюю кнопку в нижней части экрана.

Страница завершения установки
Страница завершения установки

На следующем экране сообщается, что служба настроена. Нажмите синюю кнопку с надписью Delete install.php . Это функция безопасности для использования на реальном веб-сервере, но она не требуется для локальной установки. Однако установка не будет завершена, пока вы не сделаете это.

Главная страница Премиум URL Shortener
Главная страница Премиум URL Shortener

Поздравляем — сервис работает! Вы должны увидеть экран выше. Если вы введете длинный URL-адрес в поле ввода с именем Вставить длинный URL-адрес, а затем нажмете синюю кнопку Сократить , вы получите сокращенный URL-адрес для использования. URL также будет в базе данных для дальнейшего использования. Эта функция делает отличный закладок.

Теперь, когда у вас запущена служба сокращения URL-адресов, вы захотите эффективно ее использовать. Но постоянное открытие веб-страницы, даже локальной, замедлит вас. Вы должны сделать это быстрее. Вот где полезно использовать API (интерфейс программирования приложений). Вы можете обратиться к полной документации по API .

Когда служба запущена, откройте страницу http://s.dev/user/settings .

Страница настроек аккаунта
Страница настроек аккаунта

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

Чтобы использовать API, вы можете создать Ruby- программу для доступа к нему. На macOS и Linux Ruby обычно предустановлен. В Windows вам придется установить его.

Минимальная программа на Ruby для создания короткой ссылки:

01
02
03
04
05
06
07
08
09
10
11
12
13
require ‘net/http’
require ‘json’
 
API = ‘{YourAPIKey}’
 
short = JSON.parse(Net::HTTP.get(‘s.dev’, ‘/api?api=’ + API + ‘&url=’ + ARGV[0]))
if short[«error»] == 0 then
  print short[«short»]
else
  print «An error happened: «
  print short[«error»]
  print «\n»
end

Сохраните сценарий в файл с именем {YourAPIKey} , замените {YourAPIKey} на ключ API, который вы скопировали ранее, и выполните следующую команду в командной строке:

1
ruby shortener.rb ‘google.com’

Вы должны получить сокращенную ссылку для этого URL. Это создает укороченные URL-адреса, но все еще не удобно.

На Mac PopClip — отличная небольшая программа для обработки выделенного текста. Чтобы упростить создание сокращенных ссылок, вы создадите расширение PopClip. Я не собираюсь объяснять все о создании расширения, но вы можете прочитать о механике его выполнения в моем уроке PopClip: Расширения сценариев .

Создайте расширение PremiumURLShortener.popclipext именем PremiumURLShortener.popclipext . Используйте следующее для файла Config.plist внутри каталога расширений:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?xml version=»1.0″ encoding=»UTF-8″?>
<!DOCTYPE plist PUBLIC «-//Apple//DTD PLIST 1.0//EN» «http://www.apple.com/DTDs/PropertyList-1.0.dtd»>
<plist version=»1.0″>
<dict>
    <key>Actions</key>
    <array>
        <dict>
            <key>After</key>
            <string>paste-result</string>
            <key>Image File</key>
            <string>PremiumURLShortener.png</string>
            <key>Script Interpreter</key>
            <string>/usr/bin/ruby</string>
            <key>Shell Script File</key>
            <string>PremiumURLShortener.rb</string>
            <key>Title</key>
            <string>Shortener</string>
        </dict>
    </array>
    <key>Options</key>
    <array>
        <dict>
            <key>Option Identifier</key>
            <string>apikey</string>
            <key>Option Type</key>
            <string>string</string>
            <key>Option Label</key>
            <string>API Key: </string>
        </dict>
    </array>
    <key>Credits</key>
    <array>
        <dict>
            <key>Name</key>
            <string>Richard Guay</string>
            <key>Link</key>
            <string>http://customct.com</string>
        </dict>
    </array>
    <key>Extension Description</key>
    <string>Create shortened URLs with PremiumURLShortener locally</string>
    <key>Extension Identifier</key>
    <string>com.customct.popclip.extension.premiumurlshortener</string>
    <key>Extension Name</key>
    <string>Shortener</string>
    <key>Required Software Version</key>
    <integer>701</integer>
</dict>
</plist>

Затем создайте файл сценария для расширения с именем PremiumURLShortener.rb и поместите в него этот код:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/ruby
 
require ‘net/http’
require ‘json’
 
Encoding.default_internal = Encoding::UTF_8
Encoding.default_external = Encoding::UTF_8
 
input = ENV[‘POPCLIP_TEXT’].to_s.strip()
API = ENV[‘POPCLIP_OPTION_APIKEY’].to_s.strip()
 
short = JSON.parse(Net::HTTP.get(‘s.dev’, ‘/api?api=’ + API + ‘&url=’ + input))
if short[«error»] == 0 then
  print short[«short»]
else
  print «An error happened: «
  print short[«error»]
  print «\n»
end

Когда вы загружаете новое расширение, оно запрашивает ключ API. Как только вы дадите ему ключ API и нажмете «ОК», его можно будет использовать в PopClip.

Сокращение URL с помощью PopClip
Сокращение URL с помощью PopClip

Когда вы выбираете ссылку, PopClip откроется со списком параметров. Затем вы выбираете опцию Shortener . Он немного подумает, а затем вставит правильный сокращенный URL. Полное расширение находится в загрузке для этого урока. Теперь вы готовы сделать гораздо больше!

Теперь у вас есть не только средство для сокращения частных URL-адресов, вы также знаете, как использовать Docker для запуска локальных контейнеров, простой способ отслеживать используемые вами URL-адреса и способ создания сокращенных ссылок.

Вы также можете использовать скрипт Ruby с Alfred 3 или Keyboard Maestro . Наслаждайтесь использованием нового сервиса и экспериментируйте с другими его функциями.