zoukankan      html  css  js  c++  java
  • 用yourls 搭建短链接地址服务

    最近工作中遇到一个需求,将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 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) 还有可能创建数据库失败,可以选择手动创建:

    复制代码
     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:"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+

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

    今天分享一个程序,这款程序不仅可以生自定义的短网址,还可以统计点击信息。

    PS:

    其实,用自己的域名不仅可以显得出逼格,其实更重要的是为了更好的统计转化。短网址,重要的是短,所以建议注册个短的域名

    简介

    YOURLS是一款使用PHP+Mysql开发的短链接程序,相比公共短网址好处是数据掌握在自己手中,可控性更高。

    截图

     
     
    安装

    1、下载

    YOURLS免费开源,可以在Github下载最新版本(https://github.com/YOURLS/YOURLS/releases)

    ,解压后放到站点根目录,并将config-sample.php更名为config.php。


    YOURLS的安装就是个普通建站的过程,我用的是阿里云服务器,安装宝塔控制面板建站。
    如果不会安装宝塔,可参考:https://yq.aliyun.com/articles/685978
    用宝塔建站,可参考:https://aliyun.gaomeluo.com/409.html
     
    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', 'http://demo.com' );
    #GMT时间偏移
    define( 'YOURLS_HOURS_OFFSET', '-5' );
    #是否私有
    define( 'YOURLS_PRIVATE', 'true' );
    #设置cookie,可访问https://api.yourls.org/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://github.com/guox/yourls-zh_CN/archive/master.zip,并解压到user/languages目录,然后修改user/config.php,将下面的代码添加到config.php里,并保存。
    #启用中文
    define( 'YOURLS_LANG', 'zh_CN' );
    7、访问测试
    完成以上配置后访问http://domain.com/admin完成初安装,然后输入步骤3中设置的账号、密码就可以登录了。
  • 相关阅读:
    Java Volatile keyword
    解决 The &#39;InnoDB&#39; feature is disabled; you need MySQL built with &#39;InnoDB&#39; to have it working
    【玩转cocos2d-x之三十九】Cocos2d-x 3.0截屏功能集成
    【DP】UVA 624 CD 记录路径
    ns3加入模块之vanet-highway
    awk向脚本传递參数(二)
    【传递正能量】献给默默追梦的人
    算法(第四版)学习笔记之java实现可以动态调整数组大小的栈
    Webstorm/IntelliJ Idea 过期破解方法
    CenterOS下安装NodeJS
  • 原文地址:https://www.cnblogs.com/zbl3033/p/12803633.html
Copyright © 2011-2022 走看看