作者:Chancel Yang, 创建:2020-11-28, 字数:3531, 已阅:5, 最后更新:2020-11-28
博客上的使用到图片的地方不多,为了简单我做了一个简单的后台上传文件的API,但时间长发现这东西其实是需要管理的,然而完成一个文件管理太麻烦了
检查了下服务器的文件,大部分都是图片,其他需求不高,刚好手上有一个3年的vps无处可用,纯当一个下载器,再加个小小的图床应该也是不错的?
图床的需求其实很少,就是简单的上传文件并给我一个链接即可,其他杂七杂八的功能不太需要,网站并发访问量不大的情况下也不需要oss对象存储或cdn加速
我只想找一个图床满足以下四个点
作为图床使用,除掉上面的程序需求外,首先考虑两个最重要的点
笔记/博客等用途肯定很长时间要保证内容有效,那么里面的图片链接肯定不能换..否则折腾程度恐怕非常吓人,所以排除了使用第三方不稳定的个人图床/新浪微博图床等
剩下可以考虑的也就是个人搭建的图床以及对象存储,两者均需要钱,后者对象存储需要在博客程序中自定义添加,而且适应性不如个人自建图床强(毕竟要是有需要自建图床完全可以添加OSS)
持久性考虑的话,我们需要一个长期不变的域名,所幸域名非常便宜,购买了10年域名也就几十块钱
迁移性考虑则要考虑程序的结构来备份,不过大部分自检图床要备份起来都是不难的
然而转了一圈下来,基本都是我最不喜欢PHP程序(对PHP的部署感到厌恶),无奈那就在PHP里挑一个吧,看了下ImageURL跟Chevereto好像还可以
使用了一圈发现基本满足后面2个点,但功能实在是太多了,感觉杀鸡焉用牛刀,最后找来找去,找到了lsky,下面是项目传送门
https://github.com/wisp-x/lsky-pro
运行之后的效果图,非常简洁(功能少)
没有域名可以忽略此步
申请一张免费的DV SSL证书,现在大部分域名服务商都会直接提供一张,申请一年有效期的很简单,申请通过后会得到一个压缩包
解压压缩包,会得到Tomcat/Apache/IIS/Nginx等文件夹,将Nginx文件夹里的东西上传到服务器上,解压到某个目录,例如/etc/nginx/certificates
注意,压缩包根目录的crt文件也需要上传
安装Nginx
sudo apt install nginx
修改Nginx配置文件
sudo vim /etc/nginx/nginx.conf
# nginx.conf
user chancel; # 修改运行用户为当前用户或自定义用户,注意php-fpm跟nginx的运行用户必须一致并且不能为root
...
http {
...
include /etc/nginx/conf.d/*.conf; # 默认导入自己写的网站
# include /etc/nginx/sites-enabled/*; # 屏蔽自带的网站配置(根据需要)
}
...
添加图床的Nginx配置文件
sudo vim /etc/nginx/conf.d/[你的域名].conf
server{
listen 443;
server_name [你的域名];
ssl on;
ssl_certificate /etc/nginx/certificates/1_www.chancel.cn.crt; # 压缩包中的crt证书
ssl_certificate_key /etc/nginx/certificates/2_www.chancel.cnkey; # 压缩包中的key文件
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 根据需要支持相关的TLS版本
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
# 下面的PHP的配置,这里顺便配置了,假设lsky的解压目录是/opt/lsky/lsky-pro-1.5.5
root /opt/lsky/lsky-pro-1.5.5/public;
index index.php index.html;
location ~ \.php$ {
include fastcgi.conf;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last; break;
}
}
}
server{
listen 80;
server_name [你的域名];
location / {
rewrite ^(.*)$ https://[你的域名] permanent;
}
}
安装PHP7.2以及项目依赖
sudo apt install php7.0-curl php7.0-mysql php7.0-zip php7.0-gd php7.0-xml php7.0-fpm
修改php运行配置文件
sudo vim /etc/php/7.0/fpm/pool.d/www.conf
# www.conf
...
user = chancel # 与Nginx一致的运行用户
group = chancel # 与Nginx一致的运行用户组
...
listen = 127.0.0.1:9000 # 我采用端口监听的方式,推荐使用文件sock的方式不占用端口
...
运行Nginx与PHP
sudo systemctl start php7.0-fpm
sudo systemctl enable php7.0-fpm
sudo systemctl start nginx
sudo systemctl enable nginx
安装Mariadb
sudo apt install mariadb-server
初始化Mariadb
sudo mysql_secure_installation
数据库初始化 & 用户初始化
CREATE DATABASE lsky DEFAULT CHARACTER SET utf8;
CREATE USER 'chancel'@'localhost' IDENTIFIED BY '12345678';
GRANT ALL PRIVILEGES ON *.* TO 'chancel'@'localhost';
FLUSH PRIVILEGES;
下载解压lsky
sudo mkdir /opt/lsky
sudo chown chancel:chancel /opt/lsky
cd /opt/lsky
wget https://github.com/wisp-x/lsky-pro/archive/v1.5.5.tar.gz
tar -zxvf v1.5.5.tar.gz
这里注意路径要与Nginx中配置的一致,配置成功后访问你的域名即可进入自动化安装,根据界面输入相关参数即可运行
只需要定期执行备份数据库跟程序Public目录即可