用yourls搭建短链接地址服务

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

⽤yourls搭建短链接地址服务
最近⼯作中遇到⼀个需求,将app下载地址变成短链接进⾏推⼴,索性就研究了下yourls 。

发现这个玩意功能挺强⼤的,不但可以批量⽣成⾃⼰的短地址,还可以管理,统计每个短地址点击数量,还可以提供api接⼝。

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

下⾯介绍怎么⼀步步搭建yourls
服务器要求:
1. ⾄少PHP 5.6 如果要使⽤api 还需要有curl拓展
2. ⾄少MYSQL 5
1、直接本地克隆或者下载yourls代码
git https:///YOURLS/YOURLS.git
2、将user⽬录下的重命名为 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', '' ); //你⾃⼰服务器的域名⽤最短的,短地址也是基于这个⽣成。

define( 'YOURLS_HOURS_OFFSET', '+8'); //时区偏移 
define( 'YOURLS_LANG', 'zh_CN' ); //这个语⾔默认是英⽂,没有中⽂包,需要⾃⼰去 https:///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 去 /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 80;
listen [::]:80;
# HTTPS over IPv4 & IPv6
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate .crt;
ssl_certificate_key .key;
server_name ;
# 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;
}
}
(1) 如果安装报错,或者不跳转,那有可能是你的php 或者 mysql 版本过低;
(2) 还有可能创建数据库失败,可以选择⼿动创建:
1 create databases yourls;
2 CREATE TABLE `yourls_url` (
3 `keyword` varchar(200) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
4 `url` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
5 `title` text,
6 `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
7 `ip` varchar(41) NOT NULL,
8 `clicks` int(10) unsigned NOT NULL,
9 PRIMARY KEY (`keyword`),
10 KEY `timestamp` (`timestamp`),
11 KEY `ip` (`ip`)
12 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
13
14 CREATE TABLE `yourls_options` (
15 `option_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
16 `option_name` varchar(64) NOT NULL DEFAULT '',
17 `option_value` longtext NOT NULL,
18 PRIMARY KEY (`option_id`,`option_name`),
19 KEY `option_name` (`option_name`)
20 ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
21 CREATE TABLE `yourls_log` (
22 `click_id` int(11) NOT NULL AUTO_INCREMENT,
23 `click_time` datetime NOT NULL,
24 `shorturl` varchar(200) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
25 `referrer` varchar(200) NOT NULL,
26 `user_agent` varchar(255) NOT NULL,
27 `ip_address` varchar(41) NOT NULL,
28 `country_code` char(2) NOT NULL,
29 PRIMARY KEY (`click_id`),
30 KEY `shorturl` (`shorturl`)
31 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
32
33 INSERT INTO `yourls`.`yourls_options`(`option_id`, `option_name`, `option_value`) VALUES (1, 'version', '1.7.4');
34 INSERT INTO `yourls`.`yourls_options`(`option_id`, `option_name`, `option_value`) VALUES (2, 'db_version', '482');
35 INSERT INTO `yourls`.`yourls_options`(`option_id`, `option_name`, `option_value`) VALUES (3, 'next_id', '1553242197');
36 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\";}');
37 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、短地址默认是是按照顺序⽣成,从1开始,有可能我们想不按照这样顺序,可以推荐⽤时间戳来⽣成
只需要修改 includes/functions.php 272⾏左右
将 $id = yourls_get_next_decimal(); 改为 $id = time();
7、api接⼝⽣成
参数:username(⽤户名)、password(密码)、format(格式 json)、url(长地址)、action(功能,shorturl)
返回:
{
"url": {
"keyword": "1H7fa7",
"url": "/download/index.html?player_id=2",
"title": "下载页⾯",
"date": "2019-03-22 08:04:23",
"ip": "127.0.0.1"
},
"status": "success",
"message": "/download/index.html?player_id=2 已保存为",
"title": "下载页⾯",
"shorturl": "/1H7fa7",
"statusCode": 200
}
上⾯的 shorturl 就是⽣成的短链接,也可以在后台直接⽣成指定的短链接。

很多⽹友在⽹上通过短⽹址发布信息时,⽆法统计是通过哪个渠道点击。

今天分享⼀个程序,这款程序不仅可以⽣⾃定义的短⽹址,还可以统计点击信息。

PS:
其实,⽤⾃⼰的域名不仅可以显得出逼格,其实更重要的是为了更好的统计转化。

短⽹址,重要的是短,所以建议注册个短的域名
简介
YOURLS是⼀款使⽤PHP+Mysql开发的短链接程序,相⽐公共短⽹址好处是数据掌握在⾃⼰⼿中,可控性更⾼。

截图
安装
1、下载
YOURLS免费开源,可以在Github下载最新版本(https:///YOURLS/YOURLS/releases)
,解压后放到站点根⽬录,并将config-sample.php更名为config.php。

YOURLS的安装就是个普通建站的过程,我⽤的是阿⾥云服务器,安装宝塔控制⾯板建站。

如果不会安装宝塔,可参考:
⽤宝塔建站,可参考:
2、配置MySQL数据库
需要先新建⼀个MySQL数据库,并设置好账号、密码(略过),然后修改user/config.php配置⽂件,填写正确的MySQL信息,配置信息如下。

#数据库⽤户名
define( 'YOURLS_DB_USER', 'xxxxxx' );
#数据库密码
define( 'YOURLS_DB_PASS', 'xxxxxx' );
#数据库名
define( 'YOURLS_DB_NAME', 'xxxxxx' );
#数据库连接地址
define( 'YOURLS_DB_HOST', 'localhost' );
#数据库表前缀,⼀般保持默认
define( 'YOURLS_DB_PREFIX', 'yourls_' );
3、设置⽤户名密码
修改config.php⾥的⽤户名和密码
#设置⽤户名和密码,可设置多个⽤户
$yourls_user_passwords = array(
'username' => 'password',
// 'username2' => 'password2',
// You can have one or more 'login'=>'password' lines
);
4、其它设置
#设置站点域名
define( 'YOURLS_SITE', '' );
#GMT时间偏移
define( 'YOURLS_HOURS_OFFSET', '-5' );
#是否私有
define( 'YOURLS_PRIVATE', 'true' );
#设置cookie,可访问https:///services/cookiekey/1.0/ ⽣成
define( 'YOURLS_COOKIEKEY', 'qQ4KhL_pu|s@Zm7n#%:b^{A[vhm' ); 
5、设置伪静态
YOURLS默认已经内置Apache .htaccess规则,如果是Apache服务器且开启了伪静态⽀持⼀般不⽤在设置,如果您使⽤的Nginx,请添加下⾯的规则,并重载Nginx。

location / {
try_files $uri $uri/ /yourls-loader.php?$args;
}
6、设置中⽂
YOURLS默认是英⽂界⾯,不⽅便操作,看到有⽹友提供了汉化,访问yourls-zh_CN下载汉化包:https:///guox/yourls-zh_CN/archive/master.zip,并解压到user/languages⽬录,然后修改user/config.php,将下⾯的代码添加到config.php⾥,并保存。

#启⽤中⽂
define( 'YOURLS_LANG', 'zh_CN' );
7、访问测试
完成以上配置后访问/admin完成初安装,然后输⼊步骤3中设置的账号、密码就可以登录了。

相关文档
最新文档