搭建chevereto图床

前言

  兜兜转转还是使用了chevereto个人图床,因为觉得图片放在自己手上最安全。考虑到第二年服务器费用暴涨,专门研究了一下一台服务器配置2台web网站的方法来省钱;同时,这也是我从apache转战nginx的引子,因为使用apache没配明白双网站(原因卡在端口上,是腾讯云服务器的对应端口没开);而转战nginx的原因是资料比较多,查阅资料后被卡的问题成功解决,所以本教程是基于nginx配置的第二个web网站。
  转战nginx也艰难的搞了一天,归根结底是网上的资料都落后了,很多问题都没解决方法。我查阅资料历尽千辛万苦解决了如下四个问题:安装包、配置端口、浏览器http访问失败、markdown不识别http的url。解决这四个问题后,后面一路坦途轻松配置完成。

运行环境

ubuntu-22.04
nginx-1.18.0
php 8.1

安装软件

  这里一半的时间都浪费在找包上。找的所有包都失效不能用,最后在论坛找到了兼容php8.1-fpm版本的安装包,放到gitee上了,需要的自取。

将下载的zip包解压到/var/www/html下并赋予权限
mkdir chevereto
mv cheveretoChinaV4.zip chevereto
unzip cheveretoChinaV4.zip //解压
cd ../
sudo mv chevereto /var/www/html/  //挪到nginx读取目录下
赋予权限
sudo chown -R www-data:www-data /var/www/html/chevereto
sudo chmod -R 755 /var/www/html/chevereto

配置数据库

  创建chevereto的mysql数据库及用户,若需要创建root用户,可以参考这篇博文配置数据库的章节。

CREATE DATABASE chevereto;
CREATE USER 'cheveretouser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON chevereto.* TO 'cheveretouser'@'localhost';
FLUSH PRIVILEGES;
#退出mysql数据库终端
EXIT;

配置网络

  基于nginx搭建2个web网站有多种实现方法。比如使用双域名加80/443端口在nginx配置中解析转发,实现访问双网站的方式。这种方式要俩域名肯定不适合我,直接淘汰。我使用的是域名+额外端口号的方式访问第二个web网站。因为是个人图床不给其他人用,加端口后一般人也找不到我的第二个网站,我感觉我这个方法更安全。
  1.配置nginx-开启端口
  以8080端口为例,开启自己想要的端口。在nginx中添加自己的8080端口配置,具体配置参数有疑问的可以看我这篇博文配置网络的章节。

server {
    listen 8080 ssl;
    server_name www.域名.com 域名.com;
    index index.php index.html index.htm default.php default.htm default.html;
    root /var/www/html/chevereto;

    ssl_certificate    /etc/ssl/xxx.pem;
    ssl_certificate_key    /etc/ssl/xxxx.key;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    client_max_body_size 128M;  # 设置请求体大小限制为100MB

    gzip on;# 启用 gzip 压缩
    gzip_comp_level 5; # 压缩级别(1-9,级别越高,压缩率越高,但消耗 CPU 资源越多
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;# 禁止压缩响应中包含 Vary 头的响应
    gzip_min_length 256;# 配置不压缩的文件大小(小于该值的文件不进行压缩)
    gzip_proxied any;# 禁止压缩响应中包含 Vary 头的响应
    gzip_disable "MSIE [1-6]\.";# 禁用压缩的用户代理(在此列出的用户代理不会被压
    gzip_buffers 16 8k;# 启用压缩的缓冲区大小
    gzip_http_version 1.1;# 启用压缩的压缩级别
    gzip_static on;# 启用压缩的缓存时间

    location / {  //配置静态IP。没有登陆不进去后台
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~* \.(png|jpg|gif)$ {
       valid_referers yanwenkai.com www.yanwenkai.com;
       if ($invalid_referer) {
           return 403;
        }
    }

    location ~ \.php$ {
            include snippets/fastcgi-php.conf;
                 fastcgi_pass unix:/run/php/php8.1-fpm.sock;
            }
    location ~ /\.ht {
                 deny all;
            }
}

  2.开启服务器的端口

sudo ufw allow 8080 //开启8080端口
sudo ufw status //查看端口的状态

sudo netstat -tuln //查看网络情况
输出如下:
To                         Action      From
--                         ------      ----
8080                       ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
8080/tcp                   ALLOW       Anywhere
8080 (v6)                  ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)
8080/tcp (v6)              ALLOW       Anywhere (v6)

  3.开启腾讯云的端口
  此时上面的输出表明服务器端口已开启。试了一下但外网还是不通,访问不通的原因是端口需要进一步设置。使用家庭网络需要配置路由器进行端口转发,使用腾讯云服务器需要用户开启8080端口。我没路由器所以相关教程自己查吧,下面是腾讯云服务器的配置方法。
  在防火墙页面点击添加规则。



  依照下图填入8080端口点击确定即可开启端口。



  使用这个测试端口是否能联通外网

sudo traceroute -n -T -p 8080 自己的IP
出现这个表明联通成功
traceroute to 82.156.142.153 (自己的IP), 30 hops max, 60 byte packets
 1  xx.xx.xxx.xxx  4.862 ms  4.465 ms  4.621 ms
 2  自己的IP  1.998 ms  2.019 ms  2.011 ms

  网络畅通后,在浏览器输入https://域名:8080/index.php进入登陆页面。
  注意:网上的教程都落后了,每个教程都说使用installer.php进入安装界面,但我找了n个版本都不行,有个官方正式版本installer.php安装脚本是能用,但40刀劝退了。后面发现原来是不知道从哪个版本开始直接使用index.php进入登陆页面了(我这个是免费版),浪费了我半天时间。
  另外这个对php版本依赖很严重,我这个版本得chevereto只对应8.1*得php,高于或低于这个版本可能安装都会出现未知问题。可能会"Something went wrong"得报错!

配置chevereto

  使用刚刚在数据库中创建的用户登陆进入后台,只需要把上传限制改大,禁止用户注册即可。
  1.进入登陆界面



  2.配置chevereto上传图片大小限制



  3.配置用户注册
  因为图库设为开放,所以把用户注册设为禁止,防止外人进入图床删除图片。



配置picgo

  1.下载插件



  2.获取chevereto的api



  3.配置chevereto的插件
  将api填充到key中,将url设置为“https://自己的域名:自己的端口/api/1/upload”。这里只改域名,目录就是upload



  4.将chevereto的网站模式设置为社区模式。否则picgo图片传不上去。



  5.整体配置完成后图库如下



问题总结

  1.服务器端口配置完外网不能访问
  配置端口后,ip+端口的模式访问不了外网,查了半天原因,根据蛛丝马迹,想到家庭网络配置时是配置路由器转发实现外网访问的。由此联想到云服务器也要专门把对应的端口打开才行。果然一开就通了。
  2.安装chevereto不成功
  按照网上的教程使用installer.php安装chevereto一直失败,换了好多包都不成功,差点以为chevereto不支持php8以上版本了,后来试了一下正版的installer.php能用才放下心继续找;翻遍论坛终于找到一个好心人发的高版本的免费版,支持php高版本的问题解决了。但installer.php还是访问失败,就试了一下包里的其他php网页,误打误撞进入了登陆界面才解决安装失败的问题。
  3.wordpress不识别http的url
  一开始偷懒没配ssl证书,结果有道云和typora都能用的url,wordpress的markdown就是不能解析,咋查都没问题。查半天最后自己想明白了,估计是wordpress的markdow插件不能解析http协议下的url,只能解析https的图片url。配置nginx对应端口的server,添加ssl证书更新url后,瞬间能解析了。
  感觉chevereto和picgo的配合还有些小问题,首先不能分类,其次即使chevereto修改了上传大小限制,但超过2M的图片只能通过chevereto后台上传,picgo不能上传。这些我没细究,因为图片整理工作我都在本地做了,只是借用picgo+chevereto做url。
  4.chevereto后台看不到通过picgo传输的图片
  最近发现后台看不到picgo传输的图片;因为图片是通过接口传输而不是后台传输的,所以图片信息没存到数据库中,导致后台看不到图片信息。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇