开源短网址服务程序 YOURLS 试用

网上有人提到 YOURLS,根据对它的初步了解,我感觉它很不错,所以在本地试用了一下。

YOURLS 简介

YOURLS 是一个 PHP 编写的短网址服务程序,可以将一个较长的网址转换为一个较短的网址,我们在新浪微博经常看到的 http://t.cn/xxxxx 就使用了类似的服务。YOURLS 开源,具有统计功能,而且还支持很多插件。

YOURLS 的官网是 http://yourls.org/,英文简介如下:

YOURLS is a set of PHP scripts that will allow you to run Your Own URL Shortener. You'll have full control over your data, detailed stats, analytics, plugins, and more. It's free.

安装 YOURLS

  1. 假设你已经准备好了一个域名 my.site
  2. https://github.com/YOURLS/YOURLS/archive/master.zip 下载最新版本,当前版本为 1.7.3
  3. 解压后放到 /var/www 目录,改名为 yourls(不一定要改成这个名字)
  4. 建立好数据库并配置好用户,推荐使用 phpMyAdmin

    create database yourls_db;
    grant all on yourls_db.* to 'yourls_user'@'localhost' identified by 'yourls_pass';
  5. 复制 yourls/user/config-sample.php 到 yourls/user/config.php,修改数据库和 YOURLS 本身的一些配置

    /** 数据库用户名 */
    define( 'YOURLS_DB_USER', 'yourls_user' );
    /** 数据库密码 */
    define( 'YOURLS_DB_PASS', 'yourls_pass' );
    /** 数据库名称 */
    define( 'YOURLS_DB_NAME', 'yourls_db' );
    /** 数据库所在主机,如果不是 3306,则以 hostname:port 方式指明 */
    define( 'YOURLS_DB_HOST', 'localhost' );
    /** 数据库表前缀 */
    define( 'YOURLS_DB_PREFIX', 'yourls_' );
    /** 域名,一般用短小的域名,如 t.cn */
    define( 'YOURLS_SITE', 'http://my.site' );
    /** 对于同一个长网址,短地址唯一,多次调用不会生成多个不同的短地址 */
    define( 'YOURLS_UNIQUE_URLS', true );
    /** 是否私有,如果设置为 false,则不用登录也能做管理操作,一般用做测试等 */
    define( 'YOURLS_PRIVATE', true );
    /** 字段值用来加密 cookie,可以通过访问 http://yourls.org/cookie 来生成一个 */
    define( 'YOURLS_COOKIEKEY', 'xxxxxxxxxx' );
    /** 系统管理用户及密码,可以有多个 */
    $yourls_user_passwords = array(
        'admin' => 'admin',
        );
    /** 
    * 短网址标识格式
    * 36: 小写字母 + 数字
    * 62: 大写字母 + 小写字母 + 数字
    */
    define( 'YOURLS_URL_CONVERT', 36 );
    /** 保留的短地址标识,可自定义 */
    $yourls_reserved_URL = array(
        'my', 'reserved', 'short', 'url',
    );
  6. 在 Nginx 配置文件中添加一个 server 配置,示例如下:

    server {
        listen       80;
        server_name  my.site;
    
        root         /var/www/yourls; 
        access_log   /var/log/nginx/my.site.access.log;
        error_log    /var/log/nginx/my.site.error.log;
        index        index.php index.html index.htm;
        
        # Rewrites
        location / {
            try_files $uri $uri/ /yourls-loader.php$is_args$args;
        }
    
        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }

    官方参考 https://github.com/YOURLS/YOURLS/wiki/Nginx-configuration

  7. 访问 http://my.site/admin,点击"Install YOURLS"按钮,然后用 admin/admin 登录
  8. 在系统首页“Enter the URL”后面的输入框中,填写一个长网址,点击“Shorten The URL”按钮,系统会访问相应网址并生成一个短地址 1,可以看到,短地址是以递增整数为标识的
    2018-02-06_204043.png

安装语言包

以中文语言包为例

  1. 下载中文语言包

  2. 解压后,将里面的 zh_CN.mo 放到 yourls/user/languages 目录
  3. 修改 yourls/user/config.php

    /** 修改时区 */
    define( 'YOURLS_HOURS_OFFSET', 8 );
    /** 修改语言 */
    define( 'YOURLS_LANG', 'zh_CN' ); 
  4. 刷新页面或重新登录,可以看到页面已经是中文的了
    2018-02-06_204217.png

安装插件

以插件 random-keywords 为例,它会将短地址标识改为几位随机字母和数字的格式

  1. 下载 https://github.com/YOURLS/random-keywords/archive/master.zip
  2. 解压后放到 yourls/user/plugins 目录,改名为 random-keywords
  3. 在系统首页点击“管理插件”按钮,在插件列表中,点击插件“Random Keywords”后面的激活按钮,激活插件
    2018-02-06_204318.png
  4. 点击页面上方的“管理界面”按钮,然后删除刚才生成的短地址 1,在“输入链接地址”后面的输入框中,重新填入原来的长网址,点击“缩短地址”按钮,系统会访问相应网址并生成一个短地址 b3unu,可以看到,短地址标识已经不再是整数而是字母数字混合的格式了,我们平时见到的大多数短地址都是这样的
    2018-02-06_204924.png

API 调用

YOURLS允许使用老方法进行API调用,即使用username和password参数。 如果你担心这有潜在的风险,你也可以不使用你的用户名或密码进行API调用,而使用一个 secret signature token。

调用如下 url 可以生成 http://example/ 的短地址:
http://my.site/yourls-api.php?signature=xxxxx&action=shorturl&url=http://example/

更多 API 调用参考资料:

  • http://my.site/admin/tools.php
  • http://my.site/readme.html#API

参考资料

此处评论已关闭