共计 4616 个字符,预计需要花费 12 分钟才能阅读完成。
简单云服务器部署开源短链工具 -YOURLS
YOURLS 是一款使用 PHP+Mysql 开发的短链接程序,相比公共短网址好处是数据掌握在自己手中,可控性更高。开源地址:https://github.com/YOURLS/YOURLS
前期准备
window 系统推荐 phpStudy 等集成 PHP 环境
linux 系统:LNMP(Linux+Nginx+Mysql+PHP)环境
域名,如果服务器在国内,则需要备案,笔者使用二级域名,http://y.xgss.net
部署
YOURLS 的安装流程类似于 PHP 站点。
将安装包解压并上传至服务器;将 user/config-sample.php 重命名为 user/config.php;编辑 user/config.php 文件,填入数据库信息和配置站点选项;访问 http://yoursite.com/admin/ 开始使用吧!
下载 YOURLS
YOURLS 免费开源,可以在 Github 下载最新版本(https://github.com/YOURLS/YOURLS/releases),解压后放到站点根目录,并将 config-sample.php 更名为 config.php。
wget https://github.com/YOURLS/YOURLS/archive/refs/tags/1.8.2.tar.gz
配置 MySQL 数据库
需要先新建一个 MySQL 数据库,并设置好账号、密码,然后修改 user/config.php 配置文件,填写正确的 MySQL 信息,配置信息如下。
修改数据库配置
修改 user/config.php
// 配置数据库
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://y.xgss.net');
// 设置用户名和密码
$yourls_user_passwords = [
'admin' => '123456', // 设置好密码
];
输入管理员账号密码登录后如果出现“Could not auto-encrypt passwords. Error was:“cannot write file”.”报错,请将 user/config.php 文件的权限改为 666,然后刷新网页,再把权限改回 644,因为你刚才填写密码时用的是明文,这样很危险,所以程序需要对其加密。
配置 nginx 反向代理
server {
listen 80;
server_name y.xgss.net;
root /data/wwwroot/web/y.xgss.net/;
access_log /data/wwwroot/log/y.xgss.net-access.log main_aliyun;
error_log /dev/null;
location / {
index index.php
try_files $uri $uri/ /yourls-loader.php
}
location ~ ^/.+\.php {
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
}
}
重启 nginx
安装:http://y.xgss.net/admin/install.php
添加短链接
yourls 汉化
汉化包的 git 地址为https://github.com/guox/yourls-zh_CN,下载中文包然后解压后放在放在 user/languages/ 目录下
YOURLS 默认是中文界面,不方便操作,看到有网友提供了汉化,访问 yourls-zh_CN 下载汉化包,并解压至 user/languages
目录,然后修改user/config.php
# 语言包放到 languages
[root@aliyun-hz languages]# ll
total 68
-rw-r--r-- 1 www www 210 Apr 23 2017 index.html
-rw-r--r-- 1 www www 51 Mar 24 2013 README.md
-rw-r--r-- 1 www www 22123 Mar 24 2013 zh_CN.mo
-rw-r--r-- 1 www www 32783 Mar 24 2013 zh_CN.po
# 修改配置文件启用中文
vi user/config.php
# 启用中文
define('YOURLS_LANG', 'zh_CN');
YOURLS- API
请求地址:http:// 域名 //yourls-api.php 参数:username(用户名)、password(密码)、format(格式 json)、url(长地址)、action(功能,shorturl)
1、GET 请求,构建下 get 请求,可以直接访问也可以用 python 构建请求
http://y.xgss.net/yourls-api.php?username=user&password=password&url=http://www.baidu.com&format=json&action=shorturl
python 构建 get 请求
import requests, json
url = "http://10.0.0.101/yourls-api.php?"
data = {"username":"wangxiaoyu","password":"123456","url":"http://www.baidu.com","format":"json","action":"shorturl"}
response = requests.get(url, data)
print(json.loads(response.text))
访问返回的 http://10.0.0.101/q94n1k 这个短链接可以跳转到百度 返回信息为
{
'url': {
'keyword': 'q94o0a',
'url': 'http://www.baidu.com',
'title': '百度一下,你就知道',
'date': '2020-04-21 07:40:58',
'ip': '10.0.0.1'
},
'status': 'success',
'message': 'http://www.baidu.com 已保存为',
'title': '百度一下,你就知道',
'shorturl': 'http://10.0.0.101/q94o0a',
'statusCode': 200
}
如果不指定 format 为 json 的话,默认是 XML 格式
2、POST 请求 用 python 来发送 POST 请求测试 这里以 form 表单形式提交数据,所以不需要将 POST 的 data 转为 json 格式 POST 请求的几种编码方式可以参考:https://www.cnblogs.com/android-it/p/9558751.html
import requests, json
url = "http://10.0.0.101/yourls-api.php?"
data = {"username":"wangxiaoyu","password":"123456","url":"http://www.baidu.com","format":"json","action":"shorturl"}
response = requests.post(url, data)
print(json.loads(response.text))
返回的信息为
{
'url': {
'keyword': 'q94nkx',
'url': 'http://www.baidu.com',
'title': '百度一下,你就知道',
'date': '2020-04-21 07:31:45',
'ip': '10.0.0.1'
},
'status': 'success',
'message': 'http://www.baidu.com 已保存为',
'title': '百度一下,你就知道',
'shorturl': 'http://10.0.0.101/q94nkx',
'statusCode': 200
}
3、使用 token 而不使用账号密码
YOURLS 允许使用 username 和 password 参数(如果您的设置是私有的话)以老式的方式调用 API。如果您担心将自己的凭证发送出去,还可以使用秘密签名令牌进行 API 调用。signature 在 API 请求中使用参数。例:
http://yoursite/yourls-api.php?signature=1002a612b4&action=...
python 示例
import requests, json
url = "http://10.0.0.101/yourls-api.php?"
data = {"signature":"6962355501","url":"http://www.baidu.com","format":"json","action":"shorturl"}
response = requests.post(url, data)
print(json.loads(response.text))
安装 Sleeky 主题,美化 YOURLS
YOURLS 界面显得非常古老,风格挺老的,前几天在 Github 上看到一款 YOURLS 主题 Sleeky,这篇文章分享下 Sleeky 主题的安装,希望对你有所帮助。
安装 Sleeky 主题
最新版 Sleeky 主题可前往 Github 下载:https://github.com/Flynntes/Sleeky/releases
Sleeky 主题主题包括两部分,一部分是 YOURLS 前端,另一部分是 YOURLS 后台管理。下载 Sleeky 主题主题后可看到有 2 个文件夹:
sleeky-frontend: 前端主题
sleeky-backend:后端主题
将 sleeky-frontend 文件夹下的内容放到 YOURLS 站点根目录下即可,不需要额外的设置,直接访问 YOURLS 主界面即可看到效果。
将后端文件夹 sleeky-backend 放到 YOURLS 下的 /user/plugins 目录,并在 YOURLS 后台启用 Sleeky 主题插件,如下图。
旧的后台地址:
新的后台界面: