yourls短链接项目部署及API使用
一、短网址介绍
短网址(Short URL) ,顾名思义就是在形式上比较短的网址。通常用的是asp或者php转向,在Web 2.0的今天,不得不说,这是一个潮流。目前已经有许多类似服务,借助短网址您可以用简短的网址替代原来冗长的网址,让使用者可以更容易的分享链接。
短网址通常使用“比较少字符的网址”+“/”+“代码”,打开短网址网页通常会直接跳转到你要缩短的网址(常见),或者几秒广告后在跳转。比如向百度短网址可以自定义后缀,有些短网址还可以进行泛域名解析,十分方便大家使用。
YOURLS是一款使用PHP + Mysql开发的短链接程序,相比公共短网址好处是数据掌握在自己手中,可控性更高。
- 至少PHP 5.6 如果要使用api 还需要有curl拓展
- 至少MYSQL 5
二、搭建LNMP环境
这里直接yum装的mysql和php,如果要源码安装可以看之前装zabbix的博客php和mysql源码安装
1、安装mysql并创建数据库和密码
yum install mariadb-server #安装mysql
systemctl enable mariadb #开启启动
systemctl start mariadb #启动mysqlmysqladmin -u root password 123456 #设置root密码
mysql -u root -p #进入mysql查看
SHOW DATABASES;
create database yourls; #创建yourls数据库
quit;
2、安装php及其所需模块
因为centos7默认yum装的php版本是5.4的,而yourls最低要求5.6的,所以这里需要先设置yum源
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum list | list php
新的yum源中php最新为7.1的,yum安装php及相关模块,然后启动
yum install php71w php71w-mysql php71w-fpm php71w-cli php71w-common php71w-curl -y
systemctl start php-fpm
systemctl enable php-fpm
3、安装nginx
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel prce pcre-devel
wget http://nginx.org/download/nginx-1.18.2.tar.gz
tar -zvxf nginx-1.18.2.tar.gz
cd nginx-1.18.2
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre
make && make install
三、yourls安装
git地址为https://github.com/YOURLS/YOURLS/releases,可以直接用git命令获取文件夹,或者下载压缩包后再解压,我这里直接用git获取了。
1、安装git然后进入nginx的html文件夹中,用git clone获取yourls,并将config-sample.php更名为config.php
yum install git -y
cd /usr/local/nginx/html/
git clone https://github.com/YOURLS/YOURLS
mv YOURLS/user/config-sample.php YOURLS/user/config.php
2、前面已经新建了一个MySQL数据库,并设置好账号密码了,这里修改user/config.php配置文件,填写正确的MySQL信息,配置信息如下。
vim YOURLS/user/config.php#数据库用户名
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_' );
3、配置用户及密码
#修改配置文件
vi user/config.php
#设置用户名和密码,可设置多个用户 #web界面登录用户名和密码
$yourls_user_passwords = array('wangxiaoyu' => '123456',// 'username2' => 'password2',// You can have one or more 'login'=>'password' lines);
4、其他设置
#设置站点域名,这里需要设置成你的域名,访问admin时会自动跳转到这个域名,我这里还没使用域名所以用的是ip地址
define( 'YOURLS_SITE', 'http://10.0.0.101' );
#GMT时间偏移
define( 'YOURLS_HOURS_OFFSET', '+8' );
#是否私有
define( 'YOURLS_PRIVATE', 'true' );
#设置cookie,可访问https://api.yourls.org/services/cookiekey/1.0/生成
define( 'YOURLS_COOKIEKEY', 'qQ4KhL_pu|s@Zm7n#%:b^{A[vhm' );
#mysql连接方式
define('YOURLS_DB_DRIVER','mysqli');
5、安装之前,请一定要确认你的yourls所在的目录里有一个.htaccess的文件,没有的话,安装会报错,会让你手动创建一个
[root@localhost html]# vim /usr/local/nginx/html/YOURLS/.htacess
# 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
6、nginx配置
server {listen 80;server_name 10.1.1.101;root /usr/local/nginx/html/YOURLS/;index index.html index.htm index.php;location / {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;}}
/usr/local/nginx/sbin/nginx -s reload
7、yourls汉化
汉化包的git地址为https://github.com/guox/yourls-zh_CN,下载中文包然后解压后放在放在languages目录下
wget https://github.com/guox/yourls-zh_CN/archive/master.zip
unzip master.zip
或
git clone https://github.com/guox/yourls-zh_CN.git
8、访问10.0.0.101/admin,然后输入前面配置文件里设置的账号密码登陆
输入管理员账号密码登录后如果出现“Could not auto-encrypt passwords. Error was: “cannot write file”.”报错,请将user/config.php文件的权限改为666,然后刷新网页,再把权限改回644,因为你刚才填写密码时用的是明文,这样很危险,所以程序需要对其加密。
9、短地址默认是是按照顺序生成,从1开始,入下图
有可能我们想不按照这样顺序,可以推荐用时间戳来生成
只需要修改 includes/functions.php 272行左右,将 $id = yourls_get_next_decimal();注释,改为 $id = time();
vim /usr/local/nginx/html/YOURLS/includes/functions.php
然后再查看生成的短链接,已经不是按照顺序的了
四、yourls API
请求地址:http://域名//yourls-api.php
参数:username(用户名)、password(密码)、format(格式 json)、url(长地址)、action(功能,shorturl)
1、GET请求,构建下get请求,可以直接访问也可以用python构建请求
http://10.0.0.101/yourls-api.php?username=wangxiaoyu&password=123456&url=http://www.baidu.com&format=json&action=shorturl
python构建get请求
import requests, jsonurl = "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, jsonurl = "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, jsonurl = "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))
如果提示504 url过长的话,则在nginx增加
client_max_body_size 5m;client_header_buffer_size 512k;large_client_header_buffers 4 512k;
如果遇到 Faithfully yours, nginx.错误,可能是cookies过长,可以看https://blog.csdn.net/wang_quan_li/article/details/41802643
http字段中添加
proxy_buffer_size 128k;proxy_buffers 32 32k;proxy_busy_buffers_size 128k;
php配置中添加
fastcgi_buffer_size 128k;fastcgi_buffers 4 256k;fastcgi_busy_buffers_size 256k;
如果还是不行就在location转发中也添加
proxy_buffer_size 128k;proxy_buffers 32 32k;proxy_busy_buffers_size 128k;
参考
运维搞定短网址–YOURLS
https://www.shileiye.com/615
yourls短链接项目部署及API使用相关推荐
- 国外短链接项目。一万次点击220美刀
大家好,我是四点 一个混迹在互联网上赚钱的人 未来十年一路同行 "国外短链接项目" 今天四点给大家分享一个国外短网址赚钱项目,这是一个点击短链接就可以挣美刀的网站,宣称万次播放最高 ...
- java 生成短链接_java调用百度API生成短链接(一)
短链接,顾名思义,用一个短的链接代替长而繁琐的真实链接 import net.sf.json.JSONObject; import org.apache.http.impl.client.Defaul ...
- 如何使用ASP.NET Core Web API实现短链接服务
前言 在前面的文章中,我们介绍了hashids.net,可以将数值型Id加密成无意义的字符串. 今天,我们来利用这一特点,实现短链接服务. 原理 短链接,顾名思义就是在形式上比较短的链接网址.借助短链 ...
- Docker部署自己的短链接服务
Docker部署自己的短链接服务 Jump Jump 开箱即用,Go 语言开发的一个功能完善的短链接系统. 快速体验 功能与使用 短链接管理 本地启动 如何访问短链接? 设置短链接域名 获取完整短链接 ...
- PHP实现百度、新浪的API接口调用生成短链接网址
在实际过程中我们会有这样的场景,就是发送短信的时候,里面需要嵌入我们的网址,可是网址都是很长的. 如果你一般都是在手机上操作的话,可以在微信小程序中搜索:短链接的生成 或者在文章底部扫描小程序二维码进 ...
- php新浪api,php调用新浪短链接API的方法,php调用新浪api_PHP教程
php调用新浪短链接API的方法,php调用新浪api 本文实例讲述了php调用新浪短链接API的方法.分享给大家供大家参考.具体方法如下: 复制代码 代码如下: //Sina App_Key def ...
- 新浪短链api java_php调用新浪短链接API的方法
本文实例讲述了php调用新浪短链接API的方法.分享给大家供大家参考.具体方法如下: //Sina App_Key define('SINA_APPKEY', '31641035'); functio ...
- PHP调用新浪API 生成短链接
我们经常收到类似于这样的短信(如下图),发现其中的链接并不是常规的网址链接,而是个短小精悍的短链接,产品中经常需要这样的需求,如果在给用户下发的短信中是一个很长的连接,用户体验肯定很差,因此我们需要实 ...
- java 新浪短网址生成器,新浪短链接接口被限制?最新新浪短网址api接口
背景 新浪短网址api是sina平台官对外公开的短网址生成接口,可以将长链接通过接口生成t.cn样式的短链接,可以说是非常好用的.但近期新浪官方开始对已经公布的接口做出了多重限制,很多之前能用的功能现 ...
最新文章
- onmouseout事件与onchange事件分析
- boost::exception_detail::refcount_ptr的测试程序
- linux 怎么设置静态ip,如何在Linux中设置静态IP地址和配置网络
- 单例模式引发的内存泄漏:_资源泄漏:救援的命令模式
- 需求分析阶段各种图的功能
- C语言 · 龟兔赛跑预测
- html5的video怎么把里面的控制器移出来_6个月宝宝米粉怎么冲,一次吃多少?一天吃几次?关于宝宝米粉的难题,答案都在这了!...
- Java中HashMap原理
- PyTorch:Embedding初始化及自定义
- 高通QCA9377 WiFi蓝牙模块芯片介绍
- 山东理工大学ACM平台题答案关于C语言 1231 绝对值排序
- C语言程序设计 基础知识点
- 数学建模线性规划之Lingo教程
- 干货流出|腾讯内部几近满分的项目管理课程PPT
- excel转置怎么操作_EXCEL的矩阵运算
- 收款码在线生成系统源码 无限制 (web微信、QQ、支付宝三合一收款码)
- 1、串口(UART/COM/TTL/RS232/RS485)
- python中temp是什么意思_.temp(temp是什么意思?)
- 脚踩智能汽车春风,百度踏上千亿美元市值征程
- 智能网联变革下的“新赢家”:德赛西威荣登2021全球零部件供应商百强榜