前言

当我们需要在网站上显示随机图片时,会用到api接口,这时可以自己做一个图片api接口,就不用担心使用别人的api接口不稳定或对图片不满意等情况了
本篇文章是基于jsDeliver + github制作图片api接口

准备工作

  • 一台配置好域名&证书的服务器
  • 服务器安装好基本的lnmp环境,需要php-fpm,新版php已集成(这里mysql用不上)
  • 一个github账号(需要科学上网)

过程介绍

  • 上传图片到github仓库中
  • 在github中进行项目的发布
  • 编写php文件,引用jsDeliver上的文件
  • 将php文件上传到服务器中
  • 在nginx配置文件中配置好php-fpm相关配置

操作过程

上传图片到github仓库中

在本地建一个放图片的文件夹,图片需为jpg格式,名称用数字排好序,注意该勾的勾上
在这里插入图片描述

下载GitHub Desktop,登录账号
在GitHub Desktop中克隆自己已存在的仓库(要有README.md文件,仓库是公开的
ps:可以专门弄一个放图片的仓库
在这里插入图片描述
选择已有的库,选择本地需要克隆的路径
在这里插入图片描述

没有仓库就新建一个,该勾的勾上
在这里插入图片描述
在这里插入图片描述

同步操作
①写好说明②提交③更新到github
在这里插入图片描述

如果是在GitHub Desktop上新创建的仓库,第三步会有一个提示框,注意把勾去掉,那勾相当于代码私密,我们需要公开代码
在这里插入图片描述

在github中进行项目的发布

仓库管理中点击release
在这里插入图片描述
①填写版本号②描述说明③发布
在这里插入图片描述
到这里就可以引用资源了

https://cdn.jsdelivr.net/gh/你的github用户名/你的仓库名@发布的版本号/文件名
例:https://cdn.jsdelivr.net/gh/bananaYH/images@0.33/img/2.jpg

不加版本号等同于默认访问https://cdn.jsdelivr.net/gh/bananaYH/images@master/img/2.jpg
现github默认分支名是main,若要不加@版本号访问则将main重命名为master
不加@,好像jsDeliver那边不能及时更新过来,建议还是加上@,能够及时更新

编写php文件,引用jsDeliver上的文件

<?php
$rand = rand(1,3);
$url = 'https://cdn.jsdelivr.net/gh/bananaYH/images@0.33/img/'.$rand.'.jpg';
$img = file_get_contents($url,true);
header("Content-Type: image/jpeg;");
echo $img;
?>

rang随机产生数字,按图片编号填写
填写好url

编辑好,用FTP上传该php文件到域名根目录下

在nginx配置文件中配置好php-fpm相关配置

编辑nginx.conf文件

vim /www/server/nginx/conf/nginx.conf

在配置了443和ssl的server中加上以下代码

location ~ \.php$ {
        root           /www/wwwroot;
        fastcgi_pass   unix:/tmp/php-cgi-74.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /www/wwwroot$fastcgi_script_name;
        include        fastcgi_params;
}

root 指定php的根目录,自行更改
fastcgi_pass 监听端口(两种形式tcp:127.0.0.1:9000或unix)tcp注意要开防火墙,下面详细解释
fastcgi_indexnginx 默认首页文件
fastcgi_param 脚本文件请求的路径,更改/www/wwwroot为根目录路径
include 引入fastcgi的配置文件

参考
在这里插入图片描述
使用unix
查看php-fpm.conf文件,不知道在哪输查找命令

find / -name php-fpm.conf

在这里插入图片描述
将.sock的路径复制到nginx.conf中的fastcgi_pass即可

使用tcp方式
在php-fpm.conf中将.sock路径更改为127.0.0.1:9000即可

注意事项!!!
php-fpm.conf和nginx.conf文件中的user是一致的,不一致会出现权限问题
当两边user不为root时,根目录最好不要再/root下面,会有权限问题

重启Nginx服务

service nginx restart

测试

测试php配置

创建编辑index.php文件

<?php 
    phpinfo(); 
?>

将index.php文件放到网页根目录下

https://域名/index.php 访问

出现php页面即为nginx配置php成功
在这里插入图片描述

测试图片api接口

访问并运行php文件,这里假设php文件名为images.php

https://域名/images.php

正常情况是和引用jsDeliver的资源一样,会显示一张图片
在这里插入图片描述

最后修改:2021 年 07 月 04 日 01 : 49 PM
如果觉得我的文章对你有用,请随意赞赏