用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+

shorturl


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM