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

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

CodeCanyon上的Premium URL Shortener
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缩短程序首页

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

选择链接后,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

cunjie3951
关注 关注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
0
原创
295
点赞
1985
收藏
208
粉丝
关注
私信
写文章

热门文章

  • 15个最佳HTML5视频播放器 29084
  • 如何在HTML中使用PHP 26915
  • 如何运行PHP文件 21863
  • 2019的10个最佳WordPress画廊插件 20155
  • PHP配置文件php.ini在哪里? 18893

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 10个最佳WordPress Star Rating插件
  • 您的WordPress网站的20个最佳会员插件
  • 更好的导航:如何在WordPress中添加下拉菜单
2020年1971篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司延安seo台州企业网站改版阜新seo网站推广公司爱联网站优化推荐德阳英文网站建设价格临汾SEO按天计费报价大理网站seo优化公司长葛百度爱采购价格宁波百姓网标王推荐贵阳网站制作设计哪家好安康建网站推荐巴中网页制作报价商丘seo铜陵如何制作网站哪家好西乡百搜标王报价郴州网站设计价格中卫如何制作网站多少钱海西网站设计模板公司白城营销型网站建设哪家好毕节网页制作价格临猗设计网站多少钱石家庄网站优化软件报价安庆建网站哪家好遵义网站制作多少钱临沧网站推广公司南阳百度关键词包年推广哪家好莱芜网站搜索优化推荐宜宾企业网站设计推荐大连阿里店铺托管多少钱榆林百度网站优化歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化