最近工作中遇到一个需求,将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. centos下利用yum安装LAMP(Linux+Apache+MySQL+PHP)及配置

    先说下我的实践配置,centos6.5(64位),联网 安装前准备:关闭防火墙 service iptables stop 安装MySQL 打开终端,root用户 1 yum install mysq ...

  2. ES6展开运算符的3个用法

    展开运算符的用法1:传参 // 展开运算符的用法1 : 传参 function test(a,b) { return a + b ; } var arr = [1,2]; console.log(te ...

  3. FontAwesome 4.7.0 中完整的675个图标样式CSS参考

    FontAwesome 4.7.0 中完整的675个图标样式CSS参考 用法:首先引入CSS文件:<link href="https://maxcdn.bootstrapcdn.com ...

  4. Check the NativeLink log file

    今天用Quartus ii16.1仿真Cyclone IV的IP核DDR2,总是报上面的错误 .网上都说是modelsim路径的问题, 但我确定不是.最后用QaurtusII 12.1可以通道仿真. ...

  5. 理解-const

    c++ 中const和c中define的区别 (1) 编译器处理方式不同 define宏是在预处理阶段展开. const常量是编译运行阶段使用. (2) 类型和安全检查不同 define宏没有类型,不 ...

  6. .net 根据网址生成静态页

    生成HTML页面代码 public int Htmls(int id) { ; string strHtmlContent = ""; HttpWebRequest request ...

  7. 归并排序 JavaScript 实现

    前文我们了解了快速排序算法的实现,本文我们来了解下另一种流行的排序算法-归并排序算法. 我们先来回顾下快排.快排的核心是找出一个基准元素,把数组中比该元素小的放到左边数组,比该元素大的放到右边数组,如 ...

  8. 项目管理系统Redmine(v1.1.2)安装手记

    一.环境   1.硬件 普通PC.   2.软件 Windows 2003操作系统.   二.下载必要的软件   1.Ruby 1.8.x Redmine是基于Ruby On Rails的软件,所以首 ...

  9. Swagger UI教程 API 文档神器 搭配Node使用

    ASP.NET Web API 使用Swagger生成在线帮助测试文档 Swagger 生成 ASP.NET Web API 前言 swagger ui是一个API在线文档生成和测试的利器,目前发现最 ...

  10. 100度享乐电商网 html

    <!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title> ...