[开源工具] [短连接服务]
前言
在应用的开发过程中,尽管做了较好地设计,但是随着业务的发展,会发现页面路由的长度和参数数量依然会变得很长。在应用内,即使路由的长度很长,开发框架也会帮我们准确的处理。但是如果这个页面需要共享给其他用户,或者需要让用户点击(比如短信中的链接),用户体验就没有那么好了,谁愿意自己的聊天记录里面有3-4行的奇怪文字呢?这个时候就需要短链接服务出场了。
短链接服务为长链接生成一个较短的token(一般为5-7个字母),通过这个较短token生成短链接,通过这个短链接能够重定向到原始的长链接,从而实现缩短链接的目的。目前在博客、短信通知等场景应用广泛。
目前市面上已经有很多成熟的短链接服务可以拿来即用,如bitly,有些甚至还提供免费的服务。如果不想多花钱或者担心免费服务的风险(钓鱼、广告),你可以自己搭建一个自己的短链接服务。
YOURLS就是一个不错的开源短链接服务。
YOURLS
YOURLS,是Your Own URL Shortener的缩写。该项目使用PHP进行开发,在github上有8.1k star(截止2022年5月2日)。功能齐全,有完整的服务API,可以用来集成到业务代码中;自带管理页面,除了管理短链接,还能看到链接访问的统计情况;如果需要更多的功能,社区有很多插件可选,还可以自己实现插件满足更为定制化的需求。
短链接管理页面 短链接访问统计(以上图片均来自于YOURLS官网)
下面我们就用YOURL来部署一个自己的短链接服务吧。
资源
- 官方网址:http://yourls.org/
- github:https://github.com/YOURLS/YOURLS
- docker镜像:https://hub.docker.com/_/yourls
- 插件列表:http://yourls.org/awesome
安装与部署
【推荐】使用docker运行、部署服务。这样无论熟不熟悉PHP,不用关心具体的技术栈,能够更快速的部署与使用。本文将使用docker镜像进行安装。
如果你对PHP相关的技术感兴趣,希望更近一步了解,可以下载源码安装与部署,查看官方的安装文档,本文不对此深入。
1. 配置YURLS
1)下载文件:https://github.com/YOURLS/YOURLS/blob/master/user/config-sample.php
2)将 config-sample.php
更名为 config.php
3)编辑主要配置:
数据库配置:
- YOURLS_DB_USER
:MySQL用户名
- YOURLS_DB_PASS
:MySQL密码
- YOURLS_DB_NAME
:数据库名称
- YOURLS_DB_HOST
:数据库地址
- YOURLS_DB_PREFIX
:数据库表命名前缀
服务配置:
- YOURLS_SITE
:服务的域名;
- YOURLS_PRIVATE
:是否私有化,即使用的话是否需要用户名和密码
- yourls_user_passwords
:用户及密码配置
目前了解这些配置就足够了。还有一些其他的配置,具体可以查看配置说明
2. 准备docker-compose文件
docker-compose.yml
services:
mysql:
image: mysql
container_name: mysql-yourls
restart: always
ports:
- "3306"
environment:
- MYSQL_ROOT_PASSWORD={{your_mysql_conf}}
- MYSQL_DATABASE={{your_mysql_conf}}
- MYSQL_USER={{your_mysql_conf}}
- MYSQL_PASSWORD={{your_mysql_conf}}
volumes:
- {{your_file_path}}/data:/var/lib/mysql
yourls:
image: yourls
container_name: short_url_server
restart: always
ports:
- 80:80
volumes:
- {{your_file_path}}/config.php:/var/www/html/user/config.php
depends_on:
- mysql
注意:
- 需要将
{{}}
标记的变量,替换成你自己的; - myslq 的容器配置中,使用
volumes
将数据文件存储到容器外,防止数据丢失; - yourls 的容器配置中,使用
volumes
将自定义配置文件替换容器内配置文件,实现配置服务。
3. 启动容器
docker compose -p yourls up -d
4. 访问服务
容器启动成功后,访问:http://{{your_host}}/admin
(本文使用的为localhost),可以进入管理平台。
API使用
使用API可以将短链接服务接入到其他服务中,常用的有:
- 缩短链接
GET /yourls-api.php?username={{your_user}}&password={{your_pwd}}&action=shorturl&format=json&url=http://www.baidu.com/ HTTP/1.1
Host: {{your_server_domain}}
- 查看原始长链接
GET /yourls-api.php?username=aminer&password=aminer&action=expand&format=json&shorturl=https://u.top3-talent.com/0jieG HTTP/1.1
Host: {{your_server_domain}}
结语
根据上面的介绍,你可以运行一个YOURLS短连接服务了,不过YOURLS的功能远不止于此,你可以在官网发现更多强大的功能。
Awesome YOURLS 中整理了很多topic,包括插件、工具、指导文档,大家可以去探索一下。
网友评论