Ubuntu构建chevereto图床

起因

  • 之前使用markdown插入图片采用相对目录,一旦更改图片存储文件夹路径,插图图片的路径需要同步更改,比较麻烦,所以想直接插入图片链接
  • 当然现在有很多的在线图床,但是出于个人隐私考虑(人活着就是折腾),所以想自建一个图床方便自己存储图片并可以生成图片的在线链接

准备

  • 一个域名(白嫖了freenom域名)

  • 一台有公网ip的服务器(映射域名到国内服务器需要备案,所以可以考虑国外的云服务器,例如vultr,digital ocean,其中digital ocean学生可以获得100美元的优惠券,基本够一年左右的使用),本文的服务器选择如下:

  • 本文主要参考这篇博客

环境

  • Ubuntu 20.04
  • PHP 7.4
  • Mysql
  • Nginx

安装过程

以下安装过程基本与博客相同,中间根据我遇到的情况进行了一些修改

Nginx

1
2
3
4
5
#更新系统
apt update
apt upgrade
#安装Nginx
apt install nginx
  • 由于我是直接使用了root登录,因此这里不需要sudo
1
2
ufw allow 'Nginx Full'
ufw status

Mysql

1
2
3
4
#安装Mysql
apt install mysql-server
#配置权限
mysql_secure_installation
  • 这里在设置root密码的时候,由于权限的原因并不能设置密码,需要首先进入mysql更改root权限
1
2
3
4
#新开一个连接,进入mysql设置root用户密码,这里我直接输入mysql没输入密码就直接进到了mysql的命令交互界面
mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'your_password';
flush privileges;
  • 在这之后,回到mysql_secure_installation的连接,权限设置与之前的博客内容相同

    1
    2
    3
    4
    5
    Set root password? [Y/n] n
    Remove anonymous users? [Y/n] y
    Disallow root login remotely? [Y/n] y
    Remove test database and access to it? [Y/n] y
    Reload privilege tables now? [Y/n] y
  • 设置完毕后,需要进入mysql创建数据库

1
2
create database chevereto;
exit

PHP

1
apt install php-fpm php-zip php-curl php-mbstring php-gd php-mysql
  • 配置php
1
2
3
4
5
6
7
vim /etc/php/7.4/fpm/conf.d/chevereto.ini

#粘贴一下内容到chevereto.ini中
upload_max_filesize = 20M;
post_max_size = 20M;
max_execution_time = 30;
memory_limit = 512M;

域名配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
mkdir -p /var/www/html/your.domainname/public_html
rm -f /etc/nginx/sites-enabled/default
vim /etc/nginx/sites-available/your.domainname
#粘贴以下内容
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name your.domainname;
root /var/www/html/your.domainname/public_html;
index index.html;

# Context limits
client_max_body_size 20M;

# Disable access to sensitive files
location ~* (app|content|lib)/.*\.(po|php|lock|sql)$ {
deny all;
}

# Image not found replacement
location ~ \.(jpe?g|png|gif|webp)$ {
log_not_found off;
error_page 404 /content/images/system/default/404.gif;
}

# CORS header (avoids font rendering issues)
location ~ \.(ttf|ttc|otf|eot|woff|woff2|font.css|css|js)$ {
add_header Access-Control-Allow-Origin "*";
}

# Pretty URLs
location / {
index index.php;
try_files $uri $uri/ /index.php$is_args$query_string;
}

location ~* \.php$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
}
1
2
3
4
ln -s /etc/nginx/sites-available/your.domainname.conf /etc/nginx/sites-enabled/
#重启Nginx和php
systemctl restart php7.4-fpm
systemctl restart nginx

设置https(没有域名也许可以跳过)

1
2
3
4
# 安装Certbot
apt install python3-certbot-nginx
# 运行Certbot,根据提示进行相应的设置,最后会检测你的域名
certbot --nginx

Chevereto

  • 项目地址,这里使用的是免费的chevereto,是v1.6.0版本,项目地址为:https://github.com/rodber/chevereto-free

  • 我们需要需要下载项目release中的源码,解压并解压后文件夹的内容放到/var/www/html/your.domainname/public_html

  • 随后修改文件夹的权限

    1
    chmod -R 777 /var/www/html/your.domainname/public_html
  • 最后在浏览器中,输入your.domainname/index.php按照指示可完成设置(这里需要注意的是,现在你的域名已经映射到服务器的ip地址)