重新搭建随机图片
起因
早在几年前我就做过随机图片了,但是一段时间过去后由于服务器到期的原因导致随机图片挂了。(详见这篇文章)
最近在学习k8s和docker的过程中了解到了sealos Cloud,感觉性价比非常高,于是思考起重新部署随机图片。
使用方法
可以直接在html或php中调用:
<img src=https://nalevvmfgseh.cloud.sealos.top/img.php>
<img src=https://nalevvmfgseh.cloud.sealos.top/bg.php>
或者直接前往网站体验。
效果展示:
搭建过程
之前我使用阿里云oss的过程中我感觉体验还不错,所以这次我决定将图片存储在阿里云oss上(把oss当成图床),然后在sealos Cloud上部署一个php镜像,来解析php代码。注意oss的读写权限需要是公共读(当然不能是公共读写啦~)。
首先修改阿里云提供的代码来获取每个图片的url:
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# 填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# 填写Bucket名称,例如examplebucket。
bucket = oss2.Bucket(auth, 'https://xxxx.aliyuncs.com', 'examplebucket')
lst=[]
# 列举fun文件夹下的文件与子文件夹名称,不列举子文件夹下的文件。
for obj in oss2.ObjectIterator(bucket, prefix = 'pixiv/', delimiter = '/'):
# 通过is_prefix方法判断obj是否为文件夹。
if obj.is_prefix(): # 判断obj为文件夹。
print('directory: ' + obj.key)
else: # 判断obj为文件。
print('file: ' + obj.key)
url='https://xxxx.aliyuncs.com/'+obj.key+'\n'
lst.append(url)
with open('D:\python\img.txt', mode='w') as f:
for i in lst:
f.write(i)
在我们得到图片的url后,我们去sealos Cloud上起一个php容器。我这里使用了php:7.4-apache
镜像。Cpu核和内存调到最低够用了,我们将80端口映射到它提供的公网地址。
该镜像内需要把我们的url文件和php代码放到/var/www/html
目录下。
index.php代码为:
<?php
$img=file('img.txt');
$url=array_rand($img);
header("Location:".$img[$url]);
?>