当前位置: 首页 > news >正文

【服务器能干什么】搭建一个短网址平台,可以查看数据详情!

昨天在 YouTube 上看到又一个搭建自己短网址的视频教程,用的是开源的 polr,但是按照步骤一步步搭建下来,最后一步都会出现

顺哥轻创

PLAINTEXT

Whoops, looks like something went wrong

百度、谷歌查了一圈也没找到有效的解决方法。(顺带说一下,查出来很多的文章都是出自同一个作者,国内有的人就是瞎转载,自己根本没有尝试过,一个人错了,转载的人也跟着一起错,完全在浪费搜索者的时间,这个现象在百度、CSDN 现尤为严重,谷歌相对好一点)

折腾了一晚上,换了两台服务器,查看官方文档,尝试了几种方法也没解决问题,心里非常不舒服。

考虑到 polr 也很久没有更新了,自己的能力也不足以解决遇到的 bug,而工作原因,确实对点击链接的统计有需求,我开始寻找别的解决方案。

然后找到了这个 ——YOURLS

官方文档:https://yourls.org

简单介绍

什么是 YOURLS?

YOURLS stands for Your Own URL Shortener. It is a small set of PHP scripts that will allow you to run your own URL shortening service (a la TinyURL or Bitly).

Running your own URL shortener is fun, geeky and useful: you own your data and don’t depend on third-party services. It’s also a great way to add branding to your short URLs, instead of using the same public URL shortener everyone uses.

大概意思就是说 YOURLS,这个基于 PHP 开发的短链接服务,适用于私有,且不依赖第三方公共短链接生成。你只需要有一定的耐心和一个短域名,就可以感受到短链接生成的乐趣。

特点

  • 免费而且开源
  • 使用具有两面性:私有的(仅自己使用)或者生成公共的(每个人都可以创建短链接,适用于 Intranet)
  • 顺序排列 (从 1 到 n) 或自定义 URL 关键字
  • 十分方便的类书签模式记录,可轻松缩短和共享链接
  • 出色的统计信息:历史点击报告,引荐来源跟踪,访问者地理位置
  • 整洁的 Ajaxed 界面
  • 出色的插件架构,可轻松实现新功能
  • 支持开发人员 API
  • 全面的 jsonp 支持
  • 安装十分友好
  • 示例文件可创建您自己的公共界面等

跟着官方文档和 Pluto Tz 提供的文章,结合自己的生产环境,我终于成功搭建好了自己的短链接服务。

展示链接

下面是一步一步的安装记录。

安装环境

  • 系统 Centos7

  • 宝塔面板(LNMP)

    • Nginx 1.16.1
    • MySQL 5.5.62
    • PHP 7.0

新建站点

首先,打开宝塔面板,我们来添加一个已经解析好的网站。

安装数据库,php。

然后给域名申请一个 SSL 证书:

20200805135625

开启强制 https:

设置伪静态:

PLAINTEXT

location / {try_files $uri $uri/ /yourls-loader.php$is_args$args;
}

下载源码

到 github 上下载最新版本:

https://github.com/YOURLS/YOURLS/releases

目前最新的是 1.7.9

选择下载(国内速度比较慢,不过好在文件不大,只有 2.7M)

当然如果我们的服务器不在大陆的话,还可以用服务器来下载,速度会快很多。

方法如下:

打开网站根目录:

下载好了之后,直接点解压:

打开 YOURLS-1.7.9 文件夹,全选里面的内容,粘贴到网站根目录:

接下来打开目录 /user/, 把里面的 config-sample.php 改成 config.php

然后我们来编辑里面的内容:

打开之后是这样的:

PLAINTEXT

<?php
/* This is a sample config file.* Edit this file with your own settings and save it as "config.php"** IMPORTANT: edit and save this file as plain ASCII text, using a text editor, for instance TextEdit on Mac OS or* Notepad on Windows. Make sure there is no character before the opening <?php at the beginning of this file.*//*** MySQL settings - You can get this info from your web host*//** MySQL database username */
define( 'YOURLS_DB_USER', 'your db user name' );/** MySQL database password */
define( 'YOURLS_DB_PASS', 'your db password' );/** The name of the database for YOURLS */
define( 'YOURLS_DB_NAME', 'yourls' );/** MySQL hostname.** If using a non standard port, specify it like 'hostname:port', eg. 'localhost:9999' or '127.0.0.1:666' */
define( 'YOURLS_DB_HOST', 'localhost' );/** MySQL tables prefix */
define( 'YOURLS_DB_PREFIX', 'yourls_' );/*** Site options*//** YOURLS installation URL -- all lowercase, no trailing slash at the end.** If you define it to "http://sho.rt", don't use "http://www.sho.rt" in your browser (and vice-versa) */
define( 'YOURLS_SITE', 'http://your-own-domain-here.com' );/** Server timezone GMT offset */
define( 'YOURLS_HOURS_OFFSET', 0 ); /** YOURLS language** Change this setting to use a translation file for your language, instead of the default English.** That translation file (a .mo file) must be installed in the user/language directory.** See http://yourls.org/translations for more information */
define( 'YOURLS_LANG', '' ); /** Allow multiple short URLs for a same long URL** Set to true to have only one pair of shortURL/longURL (default YOURLS behavior)** Set to false to allow multiple short URLs pointing to the same long URL (bit.ly behavior) */
define( 'YOURLS_UNIQUE_URLS', true );/** Private means the Admin area will be protected with login/pass as defined below.** Set to false for public usage (eg on a restricted intranet or for test setups)** Read http://yourls.org/privatepublic for more details if you're unsure */
define( 'YOURLS_PRIVATE', true );/** A random secret hash used to encrypt cookies. You don't have to remember it, make it long and complicated. Hint: copy from http://yourls.org/cookie **/
define( 'YOURLS_COOKIEKEY', 'modify this text with something random' );/** Username(s) and password(s) allowed to access the site. Passwords either in plain text or as encrypted hashes** YOURLS will auto encrypt plain text passwords in this file** Read http://yourls.org/userpassword for more information */
$yourls_user_passwords = array('username' => 'password',// 'username2' => 'password2',// You can have one or more 'login'=>'password' lines);/** Debug mode to output some internal information** Default is false for live site. Enable when coding or before submitting a new issue */
define( 'YOURLS_DEBUG', false );/*** URL Shortening settings*//** URL shortening method: 36 or 62 */
define( 'YOURLS_URL_CONVERT', 36 );
/** 36: generates all lowercase keywords (ie: 13jkm)* 62: generates mixed case keywords (ie: 13jKm or 13JKm)* Stick to one setting. It's best not to change after you've started creating links.*//** 
* Reserved keywords (so that generated URLs won't match them)
* Define here negative, unwanted or potentially misleading keywords.
*/
$yourls_reserved_URL = array('porn', 'faggot', 'sex', 'nigger', 'fuck', 'cunt', 'dick',
);/*** Personal settings would go after here.*/

下面一条一条来说明:

PLAINTEXT

define( 'YOURLS_DB_USER', 'your db user name' );  # 数据库用户名
define( 'YOURLS_DB_PASS', 'your db password' );   # 数据库密码
define( 'YOURLS_DB_NAME', 'yourls' );   # 数据库名称
define( 'YOURLS_DB_HOST', 'localhost' );   # 不用改define( 'YOURLS_DB_PREFIX', 'yourls_' ); # 不用改define( 'YOURLS_SITE', 'http://your-own-domain-here.com' ); # 你自己的域名 越短越好,比如我的loll.cc(再短的申请不到了。。。)短地址基于这个生成。
define( 'YOURLS_HOURS_OFFSET', 0 );   # 时区偏移 改成 8 
define( 'YOURLS_LANG', '' );  # 语言设置,默认是英文,后面我们改成中文版本,填'zh_CN'
define( 'YOURLS_UNIQUE_URLS', true );   # 不用改,短地址是否唯一 
define( 'YOURLS_PRIVATE', true );        # 不用改,是否私有,如果私有的,则进行api调用生成短地址时需要传递用户名和密码
define( 'YOURLS_COOKIEKEY', 'modify this text with something random' );    # 点击http://yourls.org/cookie 复制里面的密钥,这个不用记住的。
'username' => 'password',  # 用户名=>密码  可填多个  登录成功后这里的明文密码会被加密,这里默认是没有的,我们为了安全加上一个,比如用户名是'admin',密码是'123456'
define( 'YOURLS_DEBUG', false );  # 不用改,是否开启调试  
define( 'YOURLS_URL_CONVERT', 36 );     # 自己设置使用36进制 还是62进制  这个最好一开始设好不要修改,避免地址冲突,建议62进制
$yourls_reserved_URL = array(                                              'porn', 'faggot', 'sex', 'nigger', 'fuck', 'cunt', 'dick',
);  # 排除这些敏感词汇,这些地址是不会生成的

首先是数据库的相关信息,由于我们创建网站的时候已经创建好了数据库,所以,可以在这边找到数据库的情况:

‘YOURLS_COOKIEKEY’的信息:

填完之后,保存。

下面我们来安装语言包(如果没改成’zh_CN’的话,自己想要用英文,这一步可以跳过)

语音包地址:

https://github.com/ZvonimirSun/YOURLS-zh_CN

作者已经停止更新了貌似,不过还可以用,有能力的同学也可以帮忙翻译。

语音包下载方法同上面讲过的,两种方法,自行选择。

我这里还是用服务器下载:

同样,解压,然后把 /user/languages/YOURLS-zh_CN-1.7.3 的文件剪切出来:

到这里应该基本上已经完成了,访问一下

浏览器 输入 https:// 域名 /admin。

报错了!!

观察网站,可能是域名路径的问题,我之前在

define( 'YOURLS_SITE', 'http://your-own-domain-here.com' );

没有加 https://, 修改一下再看看:

ok!

直接点击安装!

由于我们之前已经配置好的数据库等文件,所以这里直接显示完成了。

点击进入管理员页面,

输入账号密码就可以访问啦!

这边我提供一个测试账号给大家测试一下,账号 admin, 密码 loll.cc, 后续会关掉,仅仅供测试用噢。

添加一个网址:

压缩网址。

之后可以通过在短网址之后加上一个 + 号来查看数据情况。

可以愉快地玩起来了!

补充

这里是来自 PlutoTz 博客的补充内容。

你可能遇到一些问题:

1、如果安装报错,或者不跳转,那有可能是你的 php 或者 mysql 版本过低

2、短链接后面从 1 开始,很不爽,可以推荐用时间戳来生成

只需要修改 includes/functions.php 272 行左右

将 $id = yourls_get_next_decimal(); 改为 $id = time();

这样的话,后面链接会变长,而且不知道是 bug 还是什么原因,我想改回来改不回来,有需要的同学可以尝试一下。

YOURLS 还有很多插件,大家有兴趣可以再研究研究。

你可以使用官方自带的插件库:

https://github.com/YOURLS/awesome-yourls#plugins

完结撒花。

感谢 PlutoTz 写的非常详细的文档、感谢 YOURLS 提供了这么棒的项目,当然还有后面的众多的开发人员。

开源,让世界更美好。

相关文章:

【服务器能干什么】搭建一个短网址平台,可以查看数据详情!

昨天在 YouTube 上看到又一个搭建自己短网址的视频教程&#xff0c;用的是开源的 polr&#xff0c;但是按照步骤一步步搭建下来&#xff0c;最后一步都会出现 顺哥轻创 PLAINTEXT Whoops, looks like something went wrong百度、谷歌查了一圈也没找到有效的解决方法。&#x…...

MySQL备份与恢复(重点)

MySQL备份与恢复&#xff08;重点&#xff09; 一、用户管理与权限管理 ☆ 用户管理 1、创建MySQL用户 注意&#xff1a;MySQL中不能单纯通过用户名来说明用户&#xff0c;必须要加上主机。如jack10.1.1.1 基本语法&#xff1a; mysql> create user 用户名被允许连接的主…...

机器学习中的特征选择:方法和 Python 示例

布拉加德什桑达拉拉詹 一、说明 特征选择是机器学习流程中至关重要且经常被低估的步骤。它涉及从数据集中的原始特征集中选择最相关的特征&#xff08;输入变量或属性&#xff09;的子集。特征选择的重要性怎么强调都不为过&#xff0c;因为它直接影响机器学习模型的质量、效率…...

有哪些不错的golang开源项目?

前言 下面是github上的golang项目&#xff0c;适合练手&#xff0c;可以自己选择一些项目去练习&#xff0c;整理不易&#xff0c;希望能多多点赞收藏一下&#xff01;废话少说&#xff0c;我们直接进入正题>>> 先推荐几个教程性质的项目&#xff08;用于新手学习、…...

解决ssh使用public key远程登录服务器拒绝问题

目录 使用场景windows安装ssh客户端使用powershell ssh登录服务器生成密钥文件ubuntu ssh服务器配置使用vscode远程登录使用Xshell远程登录使用MobaXtem远程登录Server refused our key问题解决方案 使用场景 使用vscode远程ssh登录使用public key不需要输入密码,比较方便. w…...

js数组中,相同id的item数据合并

原数据&#xff1a; const list [ {id:1, key: a}, {id:1, key: b}, {id:2, key: c}, {id:2, key: d}, ]期望数据格式 const newList [ {id:1, keyList: [a,b]}, {id:2, keyList: [c,d]}, ]// 相同id的数据合并let newList_(list ).flatten().groupBy(id).map(_.spread((..…...

LeetCode(33)最小覆盖子串【滑动窗口】【困难】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 76. 最小覆盖子串 1.题目 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串&#xff0c;则返回空字符串 "" 。 注意&#xff1a; 对于 t 中重复字…...

设计模式 创建者模式

设计模式 创建者模式 前言原来代码使用设计模式总结Builder模式在源码中的应用&#xff1a;其他代码 前言 “对象创建”模式——绕开new 工厂模式 抽象工厂 原型模式 构建器 动机与背景 目前需要建造一个房子&#xff0c;建造房子需要一系列特定的步骤&#xff0c;但是房子的类…...

排序算法--插入排序

实现逻辑 ① 从第一个元素开始&#xff0c;该元素可以认为已经被排序 ② 取出下一个元素&#xff0c;在已经排序的元素序列中从后向前扫描 ③如果该元素&#xff08;已排序&#xff09;大于新元素&#xff0c;将该元素移到下一位置 ④ 重复步骤③&#xff0c;直到找到已排序的元…...

【操作宝典】SQL巨擘:掌握SQL Server Management的终极秘籍!

目录 ⛳️【SQL Server Management】 ⛳️1. 启动登录 ⛳️2. 忘记密码 ⛳️3. 操作数据库和表 3.1 新建数据库text 3.2 新建表 3.3 编辑表 3.4 编写脚本 ⛳️【SQL Server Management】 ⛳️1. 启动登录 需要开启服务 ⛳️2. 忘记密码 登录windows--> 安全性 -->…...

Airtest遇到模拟器无法输入中文的情况该如何处理?

1. 前言 最近有收到同学们的一些提问&#xff0c;使用Airtest的 text 接口&#xff0c;发现在部分模拟器上&#xff0c; text 无法输入中文&#xff0c;不知道该怎么处理。 今天我们就输入这个小问题&#xff0c;来详细聊一下。 2. Airtest的输入法简介 对于Android设备来说…...

从农夫山泉家族任命,看“食企二代”的接班与传承

本文转载自产业科技 农夫山泉再次引发舆论关注&#xff0c;起因是一则人事任命消息。 市场消息称&#xff0c;农夫山泉对区域及人员进行了调整&#xff0c;其总部所在地浙江省被划分为四个区域&#xff0c;在以往浙南、浙北基础上多了浙西大区以及杭州大区&#xff0c;其中农…...

JavaScript启动本地应用程序

JavaScript调起本地应用程序 以下内容&#xff0c;自定义部分我也还未经过实际验证&#xff0c;酌情查看。 文章目录 JavaScript调起本地应用程序确定协议调用协议传参自定义写入协议获取参数 在浏览器中通过 JavaScript调起本地应用程序的一个可行方法就是 通过协议调起。 …...

软件工程理论与实践 (吕云翔)第十四章 软件维护与软件工程管理课后习题与解析

第十四章 软件维护与软件工程管理 1.判断题 &#xff08;1&#xff09;代码行技术是比较简单的定量估算软件规模的方法。(√) &#xff08;2&#xff09;功能点技术依据对软件信息域特性和软件复杂性的评估结果&#xff0c;估算软件规模。&#xff08;√&#xff09; &#…...

Flutter 桌面应用开发之读写Windows注册表

文章目录 需求来源Windows查询Windows版本号方法1. 如何查看Windows版本号2. Windows开发如何通过代码查询Windows版本号(1) 使用C#代码&#xff1a;(2) 使用VB.NET代码 3.通过注册表查看Windows版本信息 Flutter查询Windows版本号方法依赖库支持平台实现步骤1. 在pubspec.yaml…...

【Java Spring】SpringBoot 日志系统

文章目录 一、Spring Boot 日志系统1.1 Spring Boot 日志框架1.2 自定义日志打印1.3 日志级别设置1.4 日志持久化1.5 lombok 简化日志输出 一、Spring Boot 日志系统 1.1 Spring Boot 日志框架 SLF4J 和 logback都是spring boot内置的日志框架&#xff0c;开发者只负责调用对…...

Rust UI开发(四):iced中如何添加菜单栏(串口调试助手)

注&#xff1a;此文适合于对rust有一些了解的朋友 iced是一个跨平台的GUI库&#xff0c;用于为rust语言程序构建UI界面。 这是一个系列博文&#xff0c;本文是第四篇&#xff0c;前三篇链接&#xff1a; 1、Rust UI开发&#xff08;一&#xff09;&#xff1a;使用iced构建UI时…...

P19 C++ 构造函数的成员初始化列表

目录 前言 01 如果不用成员列表如何初始化变量 02 成员列表初始化 03 为什么要使用成员列表初始化呢&#xff1f; 04 案例代码 前言 本期我们聊聊构造函数初始化列表。 你应该经常使用成员初始化列表&#xff0c;如果你不喜欢这种代码风格&#xff0c;建议你还是慢慢习惯吧…...

acwing算法基础之数学知识--Nim游戏和集合Nim游戏

目录 1 基础知识2 模板3 工程化 1 基础知识 &#xff08;一&#xff09; Nim游戏&#xff1a; n n n堆物品&#xff0c;每堆有 a i a_i ai​个&#xff0c;两个玩家轮流取走任意一堆的任意个物品&#xff0c;但不能不取。取走最后一个物品的人获胜。 结论&#xff1a;如果这n…...

大数据Doris(二十八):Routine Load查看和修改作业

文章目录 Routine Load查看和修改作业 一、查看导入作业状态...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...