如何创建自己的本地高级URL缩短服务
您将在互联网上遇到一些非常长的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
。
如果进行了配置,则应该看到此页面。 此页面显示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 thenprint short["short"]
elseprint "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/rubyrequire 'net/http'
require 'json'Encoding.default_internal = Encoding::UTF_8
Encoding.default_external = Encoding::UTF_8input = 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 thenprint short["short"]
elseprint "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
如何创建自己的本地高级URL缩短服务相关推荐
- 谷歌为URL缩短服务goo.gl开放API
谷歌API的新消息:谷歌公司刚刚宣布为其URL缩短服务goo.gl开放API.现在,开发人员可以使用这些API将goo.gl的URL集成到自己的项目中.它是RESTful JSON API,可以在这里 ...
- redis高并发原理_Java中的42行代码中的URL缩短服务— Java(?!)Spring Boot + Redis...
redis高并发原理 显然,编写URL缩短服务是新的"世界,您好! "在物联网/微服务/时代的世界中. 一切始于在45行Scala中的URL缩短服务-整洁的Scala,以Spray ...
- 使用Apache来构建URL缩短服务
用 Apache HTTP 服务器的 mod_rewrite 功能创建你自己的短链接. 很久以前,人们开始在 Twitter 上分享链接.140 个字符的限制意味着 URL 可能消耗一条推文的大部分( ...
- Java中的42行代码中的URL缩短服务— Java(?!)Spring Boot + Redis
显然,编写URL缩短服务是新的" Hello,world! "在IoT /微服务/时代的世界中. 一切始于在45行Scala中的URL缩短服务 -整洁的Scala,以Spray和R ...
- java spr_Java中的42行代码中的URL缩短器服务(Java(?!)Spring Boot + Redis
java spr 显然,编写URL缩短服务是新的" Hello,world! "在IoT /微服务/时代的世界中. 一切始于在45行Scala中的URL缩短服务 -整洁的Scala ...
- 安卓应用安全指南 4.2.3 创建/使用广播接收器 高级话题
4.2.3 创建/使用广播接收器 高级话题 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC ...
- 怎么查看本地服务器信息,查看本地服务器url地址
查看本地服务器url地址 内容精选 换一换 OBS Browser+是一款用于访问和管理对象存储服务的图形化工具,支持通过配置内网DNS服务器地址的方式,使在华为云上的Windows ECS通过内网直 ...
- Git 创建两个“本地分支”协同工作
一 代码拉下来后,首先创建两个本地分之 $repo start master . //仅仅用于同步服务器的修改(此处master名字可以随意定,但是建议定成这样,好记忆) $repo start wo ...
- 在计算机上创建一个本地用户账户,在工作组中,默认时每台Windows计算机的( )能够在本地计算机的SAM数据库中创建并管理本地用户账户。...
在工作组中,默认时每台Windows计算机的( )能够在本地计算机的SAM数据库中创建并管理本地用户账户. 更多相关问题 Working with the foreigners ____ me ___ ...
- 模板会有多层镜像_创建镜像的方法有三种:基于已有镜像的容器创建、基于本地模板导入、基于Dockerfile创建,本博文讲解前两种。基于已有镜像的容器创建该方法是使用docke...
创建镜像的方法有三种:基于已有镜像的容器创建.基于本地模板导入.基于Dockerfile创建,本博文讲解前两种. 基于已有镜像的容器创建 该方法是使用docker commit命令,其命令格式为: d ...
最新文章
- 迪杰斯特拉算法。简单理解。内含示例
- linux 内存泄露工具,linux下检查内存泄露的工具--mtrace
- java 静态对象赋值_基于Java class对象说明、Java 静态变量声明和赋值说明(详解)...
- linux加载内核后如何运行app,Android app启动过程
- jbehave_使用JBehave,Gradle和Jenkins的行为驱动开发(BDD)
- composer windows安装
- jquery hover事件中 fadeIn和fadeOut 效果不能及时停止
- python字典有什么用_什么是python字典??
- 图解PCIE原理(从软件角度)
- 利用Power Design 进行数据库设计(超详细)
- 冶金物理化学复习 --- 熔渣的基础理论
- ziheng -接小球游戏
- 字符串的倒叙输出(直接倒叙和单词倒叙)
- MQL5: 通过反向持仓来平仓
- 使用itext创建PDF模板
- freemarker模板生成word文档踩坑记录
- Windows 7系统和Windows 10系统的镜像下载地址集(含专业版)
- 增值类短信业务图文简介
- 致张勇先生一封信:海底捞的“七宗罪”!
- 分析《大话数据结构》