用仅ipv6vps自建图床并支持ipv4访问
221019更新,图床已支持https且仅支持https
换图床的原因
之前sm.ms图床已经不太能用而且有审核,已经无故挂了我三张图片了
后来github图床的解决方案因为jsdelivr的cdn加速在国内被墙:
干脆直接换个较大硬盘的vps
简单搜索之后发现方案可行,基本上随便一搜就20欧10G千兆带宽
选择主机商
舍友推荐了个便宜的主机商:
221019更新:请考虑别的主机,该机型已无库存
仅ipv6主机仅需6欧,nat主机9欧一年,而且支持Alipay(支付宝)
要什么自行车,冲他
买这个仅Ipv6就行,解决ipv4访问用cf cdn套一层代理
确保用cf代理,小云朵打开即可
申请证书
之前用脚本在vps上申请证书的时候不能套上述小云朵,否则会失败或者替cf申请证书……
这次尝试直接套小云朵嫖cf证书
221001更新
如果要加证书在获取token时就如下图所示
申请cf证书请参考:博客
选择图床
大概有三个很好的选择,兰空图床、imgurl和chevereto
最后选择兰空的原因是:imgurl社区开源版本上次更新已经过去三年了,chevereto令人望而生畏的英文文档(而且只有付费版了,还不便宜,以及,我以为兰空有中文文档很好搭建,官方宣传:半小时搭好,文档写的不好,但照着我这个教程10分钟ko)
安装
主要参考资料
非常感谢
为啥不用宝塔面板
毕竟1G的机子跑宝塔完全没问题
但
在舍友的极力劝阻下我开始了我的苦闷的从0开始之旅
没头苍蝇阶段
所谓的半小时,我整了整整一天。
一开始按照中文文档搭建,几乎没任何指导,并且有nginx和php两大知识盲区,后来……
痛苦
直到我找到了上面引用的第2篇教程
安装Nginx
参阅官方文档后
决定直接apt安装
以下均root用户命令
1 |
|
在浏览器内输入您的IP地址或域名并打开
显示:
说明Nginx已经正常工作
安装PHP
根据官方的文档,要满足如下要求
PHP >= 8.0.2
BCMath PHP 扩展
Ctype PHP 扩展
DOM PHP 拓展
Fileinfo PHP 扩展
JSON PHP 扩展
Mbstring PHP 扩展
OpenSSL PHP 扩展
PDO PHP 扩展
Tokenizer PHP 扩展
XML PHP 扩展
Imagick 拓展
exec、shell_exec 函数
readlink、symlink 函数
putenv、getenv 函数
chmod、chown、fileperms 函数
有些头大
最后整理出来的安装命令如下:
1 |
|
上述脚本将官方源添加到apt中,apt install完成了所有依赖的安装。
配置PHP
打开php.ini,示例命令
1 |
|
在其中找到如下几点:
- 找到
disable_functions
,若 “=” 右侧存在exec、shell_exec、readlink、symlink、putenv、getenv
函数,将其删除(默认状态下,等号右侧为空白); - 找到
memory_limit
,根据机器配置适当调大 “=” 右侧最大内存大小(默认php128mb内存); - 找到
post_max_size
,适当调大 “=” 右侧POST方法所能传输数据的最大大小(这是队列大小,调整为想上传最大单个文件大小乘上想一次性上传图片数); - 找到
upload_max_filesize
,适当调大 “=” 右侧最大文件上传大小(这是单个文件上传大小); max_execution_time
右侧为最大执行时间,默认为30秒,也就是说如果上传超过 30 秒,该队列就会停止- 找到
open_basedir
,在其前面加上“;”(默认已添加)。
重启php-fpm并检查工作状态
1 |
|
安装兰空图床本体
- 下载源码:
从release下载最新安装包,放在你想安装的路径上
这里以 /home/www/lsky
路径举例
1 |
|
配置Nginx和PHP协同
打开default网站配置文件
1 |
|
将内容复制到/etc/nginx/cinf.d
下新建一文件命名为:lsky.conf
修改其中
0. 去除掉80端口后的 default……
- 转到server块,找到root项,将其后的路径指向Lsky Pro安装路径的public文件夹;
- 找到index项,在其后添加index.php;
- 找到server_name项,将其后的内容改为您的IP或域名;
- 转到location / 块,找到try_files项,将 =404 改为 /index.php?$query_string(即设置伪静态);
- 转到location ~ .php$块,去除行前#号,选择With php-fpm方法,将路径中的PHP版本修改为对应安装版本。修改完的效果应如图所示:
执行以下命令打开Nginx配置文档:
1 |
|
在http块中添加
1 |
|
检查配置有无错误,重启
1 |
|
安装数据库
尝试安装MySQL
但官方源始终无法curl到,我也懒得整了
就用SQLite,简单不用安装
初始化图床
配置好域名以后,访问站点首页,程序会自动跳转至安装页面,环境检测通过以后即可通过引导进行安装。
数据库名称/路径
留空即可
接入api和picgo协同
但是捏,套了cdn的地址没法在线post,解了cdn之后才发现并不能post ipv6地址……纯ipv6的痛苦
想了想,发现能本地post,命令如下
1 |
|
可以正常返回
发现能用webdav等存储
还未尝试,TODO:
其他问题,http图床链接在vscode中无法加载预览解决
参看如下两篇就明白了
本篇博客所有图片均上传在新部署的图床上
目前图床关闭注册以及游客上传功能,没有公开计划,如有需要请联系我