最近工作中遇到一个需求,将app下载地址变成短链接进行推广,索性就研究了下yourls 。

发现这个玩意功能挺强大的,不但可以批量生成自己的短地址,还可以管理,统计每个短地址点击数量,还可以提供api接口。

最重要的是,这个开源免费,自己拿来做二次开发再适合不过了。

下面介绍怎么一步步搭建yourls

服务器要求:

  1. 至少PHP 5.6  如果要使用api  还需要有curl拓展
  2. 至少MYSQL 5

1、直接本地克隆或者下载yourls代码

git https://github.com/YOURLS/YOURLS.git

2、将user目录下的config-sample.php 重命名 为 config.php

3、修改config.php里面的配置参数 (linux上注意:config.php这个文件权限最好跟启动Web服务器用户一致,不然可能加密密码保存不了

define( 'YOURLS_DB_USER', 'root' );
define( 'YOURLS_DB_PASS', '123456' );
define( 'YOURLS_DB_NAME', 'yourls' );
define( 'YOURLS_DB_HOST', 'localhost' );
define( 'YOURLS_DB_PREFIX', 'yourls_' );
//上面是数据信息不用多说
define( 'YOURLS_SITE', 'http://test.com' ); //你自己服务器的域名 用最短的,短地址也是基于这个生成。
define( 'YOURLS_HOURS_OFFSET', '+8');    //时区偏移 
define( 'YOURLS_LANG', 'zh_CN' );      //这个语言默认是英文,没有中文包,需要自己去 https://github.com/guox/yourls-zh_CN/下载,放到 user/languages 里面 
define( 'YOURLS_UNIQUE_URLS', true );   //短地址是否唯一 
define( 'YOURLS_PRIVATE', true ); //是否私有,如果私有的,则进行api调用生成短地址时需要传递用户名和密码
define( 'YOURLS_COOKIEKEY', 'A2C7&H~r80pTps{nIfI8VFpTxnfF3c)j@J#{nDUh' );//加密cookie 去 http://yourls.org/cookie 获取
$yourls_user_passwords = array(
'admin' => '123456' /* Password encrypted by YOURLS */ , //用户名=>密码 可填多个 登录成功后这里的明文密码会被加密
);
define( 'YOURLS_DEBUG', false );      //是否开启调试  
define( 'YOURLS_URL_CONVERT', 62 );    //使用36进制 还是62进制 这个最好一开始设好不要修改,避免地址冲突,建议62进制
$yourls_reserved_URL = array(
'porn', 'faggot', 'sex', 'nigger', 'fuck', 'cunt', 'dick', //排除一下短地址,这些地址是不会生成的
);

4、服务器配置

上传到服务器

 apache

  (1)配置里开启  mod_rewrite 模块

  (2)创建 .htaccess  文件

#.htaccess 文件内容,如果是根目录下  http://yoursite/
# BEGIN YOURLS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /yourls-loader.php [L]
</IfModule>
# END YOURLS #如果是二级目录下 http://yoursite/somedir/
# BEGIN YOURLS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /somedir/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /somedir/yourls-loader.php [L]
</IfModule>
# END YOURLS

nginx

server {

  # HTTP over IPv4 & IPv6
listen ;
listen [::]:; # HTTPS over IPv4 & IPv6
listen ssl;
listen [::]: ssl;
ssl_certificate example.com.crt;
ssl_certificate_key example.com.key; server_name example.com www.example.com; # Root directory
root /path/to/yourls/files; # Rewrites 主要看这一项配置就够了,路由重写
location / {
try_files $uri $uri/ /yourls-loader.php$is_args$args;
} # PHP engine
location ~ \.php$ {
include fastcgi.conf;
# include fastcgi_params;
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php/php7.-fpm.sock;
} }

5、重启web服务器,浏览器 输入 http://域名/admin,然后选择安装即可安装成功

  (1) 如果安装报错,或者不跳转,那有可能是你的php 或者 mysql 版本过低;

  (2) 还有可能创建数据库失败,可以选择手动创建:

 create databases yourls;
CREATE TABLE `yourls_url` (
`keyword` varchar(200) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`url` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`title` text,
`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`ip` varchar(41) NOT NULL,
`clicks` int(10) unsigned NOT NULL,
PRIMARY KEY (`keyword`),
KEY `timestamp` (`timestamp`),
KEY `ip` (`ip`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `yourls_options` (
`option_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`option_name` varchar(64) NOT NULL DEFAULT '',
`option_value` longtext NOT NULL,
PRIMARY KEY (`option_id`,`option_name`),
KEY `option_name` (`option_name`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
CREATE TABLE `yourls_log` (
`click_id` int(11) NOT NULL AUTO_INCREMENT,
`click_time` datetime NOT NULL,
`shorturl` varchar(200) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`referrer` varchar(200) NOT NULL,
`user_agent` varchar(255) NOT NULL,
`ip_address` varchar(41) NOT NULL,
`country_code` char(2) NOT NULL,
PRIMARY KEY (`click_id`),
KEY `shorturl` (`shorturl`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `yourls`.`yourls_options`(`option_id`, `option_name`, `option_value`) VALUES (1, 'version', '1.7.4');
INSERT INTO `yourls`.`yourls_options`(`option_id`, `option_name`, `option_value`) VALUES (2, 'db_version', '');
INSERT INTO `yourls`.`yourls_options`(`option_id`, `option_name`, `option_value`) VALUES (3, 'next_id', '');
INSERT INTO `yourls`.`yourls_options`(`option_id`, `option_name`, `option_value`) VALUES (4, 'active_plugins', 'a:1:{i:0;s:20:\"random-bg/plugin.php\";}');
INSERT INTO `yourls`.`yourls_options`(`option_id`, `option_name`, `option_value`) VALUES (5, 'core_version_checks', 'O:8:\"stdClass\":4:{s:15:\"failed_attempts\";i:0;s:12:\"last_attempt\";i:1553161787;s:11:\"last_result\";O:8:\"stdClass\":2:{s:6:\"latest\";s:5:\"1.7.3\";s:6:\"zipurl\";s:56:\"https://api.github.com/repos/YOURLS/YOURLS/zipball/1.7.3\";}s:15:\"version_checked\";s:5:\"1.7.4\";}');

6、短地址默认是是按照顺序生成,从1开始,有可能我们想不按照这样顺序,可以推荐用时间戳来生成

  只需要修改 includes/functions.php  272行左右

  将 $id = yourls_get_next_decimal(); 改为 $id = time();

7、api接口生成   

  请求地址:http://域名//yourls-api.php

  参数:username(用户名)、password(密码)、format(格式 json)、url(长地址)、action(功能,shorturl)

  返回:

{
"url": {
"keyword": "1H7fa7",
"url": "http://www.baidu.com/download/index.html?player_id=2",
"title": "下载页面",
"date": "2019-03-22 08:04:23",
"ip": "127.0.0.1"
},
"status": "success",
"message": "http://www.baidu.com/download/index.html?player_id=2 已保存为",
"title": "下载页面",
"shorturl": "http://test.com/1H7fa7",
"statusCode": 200
}

上面的  shorturl 就是生成的短链接,也可以在后台直接生成指定的短链接。

每个短链接后面拼接一个 + ,就可以查看这个链接的点击情况,例如:http://test.com/1H7fa7+

shorturl

用yourls 搭建短链接地址服务的更多相关文章

  1. 使用基于 PHP 的开源软件 YOURLS 搭建短链接地址服务

    使用基于 PHP 的开源软件 YOURLS搭建 系统配置 php7.1+mysql5.7+nginx 下载源代码 git clone https://github.com/YOURLS/YOURLS. ...

  2. 世界上最好的语言搭建短链接及统计功能(附API代码)

    前言 在这个营销的时代,短链接和二维码是企业进行营销中非常重要的工具,不仅仅是缩短了链接,而且还可以通过扩展获得更多的数据,诸如点击数.下载量.来源以及时间等等. 网上搜寻了一下比较有名有U.NU和0 ...

  3. 使用plv8+hashids生成短链接服务

    有写过一个集成npm plv8 以及shortid生成短链接id服务,实际上我们可以集成触发器自动生成url对应的短链接地址,hashids也是一个不错的选择. 以下是一个别人写的一个博客实现可以参考 ...

  4. 微博短链接的生成算法(Java版本)

    最近看到微博的短链接真是很火啊,新浪.腾讯.搜狐等微博网站都加入了短链接的功能.之所以要是使用短链接,主要是因为微博只允许发140 字,如果链接地址太长的话,那么发送的字数将大大减少.短链接的主要职责 ...

  5. 用PHP和Python生成短链接服务的字符串ID

    假设你想做一个像微博短链接那样的短链接服务,短链接服务生成的URL都非常短例如: http://t.cn/E70Piib, 我们应该都能想到链接中的E70Piib对应的就是存储长链接地址的数据记录的I ...

  6. 百度 谷歌 Twitter,这么多短链接服务(Short Url)究竟哪家强?

    一.短链接是什么 url=HPqdQ5VR3vA39x7ZWoWyNzwWnsDhTbh66BTpdzsJLroBDzFRm4JV-G818Zc027uZrwe7zxtxnD4H2FUahftpUK& ...

  7. Java 网址短链接服务原理及解决方案

    一.背景 现在在各种圈的产品各种推广地址,由于URL地址过长,不美观.不方便收藏.发布.传播以及各种发文字数限制等问题,微信.微博都在使用短链接技术.最近由于使用的三方的生成.解析短链接服务开始限制使 ...

  8. 短链接服务Octopus的实现与源码开放

    前提 半年前(2020-06)左右,疫情触底反弹,公司的业务量不断提升,运营部门为了方便短信.模板消息推送等渠道的投放,提出了一个把长链接压缩为短链接的功能需求.当时为了快速推广,使用了一些比较知名的 ...

  9. PHP伪静态与短链接

    如今,Web服务高速发展的时代,各式各类的门户网站,如新浪http://www.sina.com.腾讯http://www.qq.com,这些网站大家都很容易记住,因为这种名称都是有规则和含义的.如果 ...

随机推荐

  1. openstack查看命令的restful调用形式

    [root@cc10 fast-pulsar2]# [root@cc10 fast-pulsar2]# cinder --debug type-create hzb DEBUG:keystonecli ...

  2. 第14章:MongoDB-聚合操作--聚合管道

    ① 聚合管道是MongoDB2.2版本引入的新功能.它由阶段(Stage)组成,文档在一个阶段处理完毕后,聚合管道会把处理结果传到下一个阶段. 每个阶段用阶段操作符(Stage Operators)定 ...

  3. javascript 连等赋值问题

    var a = {n:1}; var b = a; // 持有a,以回查 a.x = a = {n:2}; alert(a.x);// --> undefined alert(b.x);// - ...

  4. (转载)Fiddler实战深入研究(二)

    原文来源于:http://www.cnblogs.com/tugenhua0707/p/4637771.html,作者:涂根华 !个人觉得文章写的特别好,故收藏于此,感谢原作者的分享 Fiddler实 ...

  5. mysql高级

    视图: 视图是一条select语句执行后返回的结果集 试图是对若干张基础表的引用 定义视图: 建议以v_开头 create view 试图名称 as select 语句 查看视图 show table ...

  6. 关于Lambda

    1. 查询时,包含关联子对象.如: 数据库中包含表Father和Son,映射实体如下: public class Father { public string Name{get;set;} publi ...

  7. Eclipse配置maven web项目问题总结

    clipse创建Maven结构的web项目的时候选择Artifact Id为maven-artchetype-webapp,点击finish之后,一般会遇到如下问题 1. The superclass ...

  8. set_magic_quotes_runtime set_magic_quotes_gpc

    set_magic_quotes_runtime(0); 可以修改php.ini中 magic_quotes_runtime boolean的设置 当你的数据中有一些\"'这样的字符要写入到 ...

  9. PB常用函数

    弹出窗口:messagebox() 基本写法:Messagebox('标题','内容') 完整写法: MessageBox ( '标题','内容',图标,按键,默认值) (1)其中标题与内容为要显示的 ...

  10. [FMX]获取控件样式中的指定项目以便进行调节

    [FMX]获取控件样式中的指定项目以便进行调节 2017-03-26 • C++ Builder.Delphi.教程 • 暂无评论 • swish •浏览 650 次 FMX 的样式丰富了我们的设计, ...