您将在互联网上遇到一些非常长的URL(统一资源定位符)。 许多站点都将有关您访问的信息放到URL中:诸如语言,位置,标识,特价商品的参考代码之类的项目以及许多其他项目。 这使得URL变得很长。

CodeCanyon上的Premium URL Shortener

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缩短程序首页

恭喜,服务已正常运行! 您应该看到上面的屏幕。 如果您在名为“ 粘贴长网址”的输入字段中输入一个长网址 ,然后按蓝色的“ 缩短”按钮,您将获得一个缩短的网址。 该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

选择链接后,PopClip将打开并显示选项列表。 然后,选择“ 缩短剂”选项。 它将考虑一会儿,然后粘贴适当的缩短的URL。 完整的扩展名在本教程的下载中。 现在,您准备做更多的事情!

结论

现在,您不仅拥有专用的URL缩短器,而且还知道如何利用Docker运行本地容器,轻松跟踪所使用的URL以及创建缩短的链接的方法。

您也可以将Ruby脚本与Alfred 3Keyboard Maestro一起使用。 享受使用新服务并尝试其其他功能的乐趣。

翻译自: https://code.tutsplus.com/tutorials/how-to-create-your-own-local-premium-url-shortener-service--cms-29626

如何创建自己的本地高级URL缩短服务相关推荐

  1. 谷歌为URL缩短服务goo.gl开放API

    谷歌API的新消息:谷歌公司刚刚宣布为其URL缩短服务goo.gl开放API.现在,开发人员可以使用这些API将goo.gl的URL集成到自己的项目中.它是RESTful JSON API,可以在这里 ...

  2. redis高并发原理_Java中的42行代码中的URL缩短服务— Java(?!)Spring Boot + Redis...

    redis高并发原理 显然,编写URL缩短服务是新的"世界,您好! "在物联网/微服务/时代的世界中. 一切始于在45行Scala中的URL缩短服务-整洁的Scala,以Spray ...

  3. 使用Apache来构建URL缩短服务

    用 Apache HTTP 服务器的 mod_rewrite 功能创建你自己的短链接. 很久以前,人们开始在 Twitter 上分享链接.140 个字符的限制意味着 URL 可能消耗一条推文的大部分( ...

  4. Java中的42行代码中的URL缩短服务— Java(?!)Spring Boot + Redis

    显然,编写URL缩短服务是新的" Hello,world! "在IoT /微服务/时代的世界中. 一切始于在45行Scala中的URL缩短服务 -整洁的Scala,以Spray和R ...

  5. java spr_Java中的42行代码中的URL缩短器服务(Java(?!)Spring Boot + Redis

    java spr 显然,编写URL缩短服务是新的" Hello,world! "在IoT /微服务/时代的世界中. 一切始于在45行Scala中的URL缩短服务 -整洁的Scala ...

  6. 安卓应用安全指南 4.2.3 创建/使用广播接收器 高级话题

    4.2.3 创建/使用广播接收器 高级话题 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC ...

  7. 怎么查看本地服务器信息,查看本地服务器url地址

    查看本地服务器url地址 内容精选 换一换 OBS Browser+是一款用于访问和管理对象存储服务的图形化工具,支持通过配置内网DNS服务器地址的方式,使在华为云上的Windows ECS通过内网直 ...

  8. Git 创建两个“本地分支”协同工作

    一 代码拉下来后,首先创建两个本地分之 $repo start master . //仅仅用于同步服务器的修改(此处master名字可以随意定,但是建议定成这样,好记忆) $repo start wo ...

  9. 在计算机上创建一个本地用户账户,在工作组中,默认时每台Windows计算机的( )能够在本地计算机的SAM数据库中创建并管理本地用户账户。...

    在工作组中,默认时每台Windows计算机的( )能够在本地计算机的SAM数据库中创建并管理本地用户账户. 更多相关问题 Working with the foreigners ____ me ___ ...

  10. 模板会有多层镜像_创建镜像的方法有三种:基于已有镜像的容器创建、基于本地模板导入、基于Dockerfile创建,本博文讲解前两种。基于已有镜像的容器创建该方法是使用docke...

    创建镜像的方法有三种:基于已有镜像的容器创建.基于本地模板导入.基于Dockerfile创建,本博文讲解前两种. 基于已有镜像的容器创建 该方法是使用docker commit命令,其命令格式为: d ...

最新文章

  1. 迪杰斯特拉算法。简单理解。内含示例
  2. linux 内存泄露工具,linux下检查内存泄露的工具--mtrace
  3. java 静态对象赋值_基于Java class对象说明、Java 静态变量声明和赋值说明(详解)...
  4. linux加载内核后如何运行app,Android app启动过程
  5. jbehave_使用JBehave,Gradle和Jenkins的行为驱动开发(BDD)
  6. composer windows安装
  7. jquery hover事件中 fadeIn和fadeOut 效果不能及时停止
  8. python字典有什么用_什么是python字典??
  9. 图解PCIE原理(从软件角度)
  10. 利用Power Design 进行数据库设计(超详细)
  11. 冶金物理化学复习 --- 熔渣的基础理论
  12. ziheng -接小球游戏
  13. 字符串的倒叙输出(直接倒叙和单词倒叙)
  14. MQL5: 通过反向持仓来平仓
  15. 使用itext创建PDF模板
  16. freemarker模板生成word文档踩坑记录
  17. Windows 7系统和Windows 10系统的镜像下载地址集(含专业版)
  18. 增值类短信业务图文简介
  19. 致张勇先生一封信:海底捞的“七宗罪”!
  20. 分析《大话数据结构》

热门文章

  1. Linux内核编译 —— 配置文件
  2. c语言源程序的基础单位,c源程序的基本单位是什么
  3. InfoPath基础应用教程-1 设计一个简单的表单模板
  4. java子窗口获取父窗口句柄_java获得窗口句柄
  5. 再聊一聊测试职业发展
  6. weblogic部署项目后内存溢出
  7. 十二款常用摄影软件,大部分人只用过十种!
  8. 企业应用快速跨向容器时代的正确姿势
  9. Android编码规范
  10. 软件测试体系学习及构建(20)测试专项丨易用性测试