用yourls 搭建短链接地址服务短网址
用yourls 搭建短链接地址服务
最近工作中遇到一个需求,将app下载地址变成短链接进行推广,索性就研究了下yourls 。
发现这个玩意功能挺强大的,不但可以批量生成自己的短地址,还可以管理,统计每个短地址点击数量,还可以提供api接口。
最重要的是,这个开源免费,自己拿来做二次开发再适合不过了。

下面介绍怎么一步步搭建yourls
服务器要求:
至少PHP 5.6 如果要使用api 还需要有curl拓展
至少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 YOURLSnginx
server {
# HTTP over IPv4 & IPv6
listen 80;
listen [::]:80;
# HTTPS over IPv4 & IPv6
listen 443 ssl;
listen [::]:443 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.1-fpm.sock;
}
}5、重启web服务器,浏览器 输入 http://域名/admin,然后选择安装即可安装成功
(1) 如果安装报错,或者不跳转,那有可能是你的php 或者 mysql 版本过低;
(2) 还有可能创建数据库失败,可以选择手动创建:
`keyword` () utf8 COLLATE utf8_bin `url` utf8 COLLATE utf8_bin `title` `` `ip` () `clicks` () unsigned `` (` ) ENGINEInnoDB CHARSET `option_id` () unsigned `option_name` () `option_value` longtext ) ENGINEInnoDB AUTO_INCREMENT CHARSET `click_id` () `click_time` `shorturl` () utf8 COLLATE utf8_bin `referrer` () `user_agent` () `ip_address` () `country_code` () ) ENGINEInnoDB CHARSET `yourls`.`yourls_options`(`option_id`, `option_name`, `option_value`) (, , `yourls`.`yourls_options`(`option_id`, `option_name`, `option_value`) (, , `yourls`.`yourls_options`(`option_id`, `option_name`, `option_value`) (, , `yourls`.`yourls_options`(`option_id`, `option_name`, `option_value`) (, , `yourls`.`yourls_options`(`option_id`, `option_name`, `option_value`) (, , );
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
