您将在互联网上遇到一些非常长的URL(统一资源定位符)。 许多站点都将有关您访问的信息放到URL中:诸如语言,位置,标识,特价商品的参考代码之类的项目以及许多其他项目。 这使得URL变得很长。
Code Canyon上的 Premium URL Shortener是 缩短长URL的一种方法。 在本教程中,我将向您展示如何在系统上设置自己的URL缩短器以及如何使用它。
什么是URL缩短器?
每当您浏览互联网时,都使用URL。 它标识特定的网页和内容。 由于这些网址通常可以包含表单或搜索引擎的参数,因此这些网址可能会变得很大。
https://tutsplus.com/tutorials/search/How%20to%20Draw%20Animals:%20Horses,%20Their%20Anatomy%20and%20Poses
该URL用于在Tuts +网站上搜索字符串“如何绘制动物:马,它们的解剖结构和姿势”。 该字符串长度为74个字符。 我看到的网址超过200个字符。
https://bit.ly/2oO8BqO
使用 bit.ly之类的URL缩短服务时,URL会短得多。 现在,同一URL的长度为15个字符。 当有人浏览此链接时,bit.ly服务器会将浏览器重定向到完整URL。 在不同的URL上进行额外的查找确实会延迟网站加载时间,但是并没有太多。
安装Docker
创建本地服务器的最简单方法是使用虚拟化环境。 但是,运行完整的系统虚拟器非常耗费资源。 Docker是用于基于终端的系统的最小虚拟器。 您可以使用更少的系统资源来运行Docker容器(小型Unix服务器)。
要在系统上运行容器,您需要安装 Docker 。 从 Docker网站选择适合您的操作系统的下载。
安装了Docker后,您需要准备系统以查找要创建的Web服务。 为此,您将需要更改系统文件。 在Linux或macOS系统的/etc/hosts
文件中,在c:\windows\System32\drivers\etc\lmhosts
系统的c:\windows\System32\drivers\etc\lmhosts
文件中,输入以下语句:
127.0.0.1 s.dev
此更改将使对http://s.dev
所有引用都进入本地系统。 这样做是为了在尝试配置服务之前为服务提供正确的主机名。
要创建您的开发区域,请创建目录,然后在其中放置 Premium URL Shortener zip文件并将其展开。 然后,您应该具有以下目录结构:
这是带有文件main.zip
的文档。 也展开此文件。 展开后,您应该具有以下目录结构:
main.zip
文件包含该服务的所有源代码文件和资源。 这将是您将添加到Docker实例的目录。
现在您需要 从fauria获取 Docker LAMP堆栈 。 在Docker运行的情况下,在终端中输入以下内容:
docker pull fauria/lamp
这会将Fauria LAMP(Linux,Apache,MySQL和PHP)堆栈下载到您的Docker安装中。 下载后,您可以使用以下方法创建容器:
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上工作,并将所有错误和日志消息提供给标准输出。
现在,每次停止并重新启动容器时,您将丢失所有信息。 您需要将数据库信息移至源代码目录以在每次重新引导时保留它。 在终端窗口中,执行以下命令:
docker exec -i -t linkshort bash
mkdir /var/www/html/data
cp -R /var/lib/MySQL/* /var/www/html/data
exit
第一条命令向容器打开一个bash shell。 第二条命令在源代码目录中创建目录data
。 容器将源代码目录视为/var/www/html
目录。 第三个命令将数据库信息复制到该目录。 exit
命令使您脱离容器。
现在使用以下命令停止容器:
docker stop linkshort
每次要停止容器时,都将使用此命令。
现在,要使用正确的数据目录重新启动容器,请使用以下命令:
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缩短的数据库。 您还需要在容器中打开外壳。 在新的终端实例中,键入以下命令:
docker exec -i -t linkshort bash
此命令将bash shell创建到容器中。 如果您需要调整容器中的内容,则将使用此命令。 接下来,在MarianDB程序中打开命令外壳:
mysql -u root
现在,您可以在MarianDB中创建数据库,并向Web服务器授予访问它的权限:
create database urlshort;
create user 'www-data'@'localhost' identified by '{{password}}';
grant all on urlshort.\* to 'www-data'@'localhost';
quit;
需要将{{password}}
设置为您要提供给数据库用户的密码。 请记住这一点,因为您将使用它来配置服务。
在容器中运行该服务后,打开Web浏览器到http://s.dev
。
![需求检查页面](https://cms-assets.tutsplus.com/uploads/users/71/posts/29626/image/PremiumURLShortener-05.jpg)
如果进行了配置,则应该看到此页面。 此页面显示URL Shortener服务的要求和设置状态。 通过在Docker中使用fauria容器,您已经满足了所有依赖关系。 点击页面底部的蓝色按钮。
显示的下一页是该服务的配置文件创建者。 该页面使您可以为程序指定先前创建的数据库的名称和密码。
您需要如上所述填写这些字段。 数据库主机是容器的本地主机 。 数据库名称是urlshort
,您在安装程序中创建的。 数据库用户是www-data
,密码是您在初始数据库设置中分配的密码。 数据库前缀是为服务创建的每个数据库的起始名称。 我用short_
。 安装程序将设置安全密钥 。 保留给定密钥的副本,以备将来参考。
如果要将其安装在虚拟专用服务器(VPS)上,则这些值将取决于该服务。 有些是一样的,有些会改变。
有了适当的信息后,请按页面底部的蓝色按钮转到步骤3。
基本配置屏幕允许您设置管理员用户名,电子邮件和密码。 将这些设置为与您相关的值。 如先前在hosts
文件中设置的那样,需要将站点URL设置为http://s.dev
。 设置完成后,按屏幕底部的蓝色按钮。
下一个屏幕告诉您现在已设置服务。 按下蓝色的按钮,显示Delete install.php
。 这是在实际的Web服务器上使用的安全功能,但本地安装不需要此功能。 但是,安装完成后才能完成。
恭喜,服务已正常运行! 您应该看到上面的屏幕。 如果您在名为“ 粘贴长网址”的输入字段中输入一个长网址 ,然后按蓝色的“ 缩短”按钮,您将获得一个缩短的网址。 该URL也将在数据库中以供将来参考。 此功能使书签成为一个很好的书签。
使用API
现在您已经运行了URL缩短服务,您将需要充分利用它。 但是总是打开一个网页,即使是本地网页,也会使您减速。 您需要使其更快。 那就是使用API(应用程序编程接口)很有用的地方。 您可以参考 API的完整 文档 。
在服务运行的情况下,打开页面http://s.dev/user/settings
。
您必须登录到您的帐户才能看到此页面。 在侧边栏的右下角,您将看到您的API密钥:带有字母数字。 复制该号码并保存。 此数字可访问API。
要使用该API,您可以创建一个 Ruby程序来访问它。 在macOS和Linux上,通常会预先安装Ruby。 在Windows上,您将必须安装它。
Ruby中用于创建短链接的最小程序是:
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
保存脚本到一个文件名为shortener.rb
,更换{YourAPIKey}
用刚才复制的API密钥,并运行以下命令行:
ruby shortener.rb 'google.com'
您应该获得该URL的缩短链接。 这样会创建缩短的URL,但仍然不方便。
创建一个PopClip扩展
在Mac上, PopClip是一个很棒的小程序,用于处理突出显示的文本。 为了使创建缩短的链接更容易,您将创建一个PopClip扩展名。 我不会解释扩展的所有内容,但是您可以在我的教程 PopClip:Scripting Extensions中了解执行 扩展的机制 。
创建一个名为PremiumURLShortener.popclipext
的PopClip扩展。 对扩展目录中的Config.plist
文件使用以下命令:
<?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
的扩展创建脚本文件,并将此代码放入其中:
#!/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密钥并按Okay ,它将在PopClip中可用。
选择链接后,PopClip将打开并显示选项列表。 然后,选择“ 缩短剂”选项。 它将考虑一会儿,然后粘贴适当的缩短的URL。 完整的扩展名在本教程的下载中。 现在,您准备做更多的事情!
结论
现在,您不仅拥有专用的URL缩短器,而且还知道如何利用Docker运行本地容器,轻松跟踪所使用的URL以及创建缩短的链接的方法。
您也可以将Ruby脚本与 Alfred 3或 Keyboard Maestro一起使用。 享受使用新服务并尝试其其他功能的乐趣。
翻译自: https://code.tutsplus.com/tutorials/how-to-create-your-own-local-premium-url-shortener-service--cms-29626