1Panle 部署
安装1panel
在线安装 - 1Panel 文档
1
| curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && bash quick_start.sh
|
一路回车即可安装,记得保存面板信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| [1Panel Log]: 启动 1Panel 服务 [1Panel Log]: 1Panel 服务启动成功! [1Panel Log]: [1Panel Log]: =================感谢您的耐心等待,安装已经完成================== [1Panel Log]: [1Panel Log]: 请用浏览器访问面板: [1Panel Log]: 外网地址: http://35.194.135.232:14705/8dfe25e2d1 [1Panel Log]: 内网地址: http://10.140.0.7:14705/8dfe25e2d1 [1Panel Log]: 面板用户: 1c3e070d23 [1Panel Log]: 面板密码: 86925adabc [1Panel Log]: [1Panel Log]: 项目官网: https://1panel.cn [1Panel Log]: 项目文档: https://1panel.cn/docs [1Panel Log]: 代码仓库: https://github.com/1Panel-dev/1Panel [1Panel Log]: [1Panel Log]: 如果使用的是云服务器,请至安全组开放 14705 端口 [1Panel Log]: [1Panel Log]: 为了您的服务器安全,在您离开此界面后您将无法再看到您的密码,请务必牢记您的密码。 [1Panel Log]: [1Panel Log]: ================================================================
|
1panle设置
访问面板分别在左侧导航栏安装对应服务
网站
未检测到 OpenResty ,请进入应用商店点击安装!
默认设置-直接点击确认即可
数据库
未检测到 数据库服务 (MySQL 或 MariaDB) ,请进入应用商店点击安装!
默认设置-直接点击确认即可
提示
当前未勾选端口外部访问,将无法通过外网IP:端口访问,是否继续?
选择 确认
创建chevereto数据库
重新点击左侧导航栏数据库-创建数据库
名称和用户名都是chevereto
密码自己设置或则生成都可以记得保存后面需要使用
设置好以后点击确认创建。
名称 |
chevereto |
用户名 |
chevereto |
密码 |
DDPXDPy22m7kZJiW |
权限 |
所有人(%) |
主机
- 点击左侧导航栏主机-文件-进入opt目录
- 点击创建-文件夹-名称
chevereto
-权限先不用动
- 进入chevereto文件夹-远程下载
下载完成后,opt/chevereto文件夹下会有CheveretoV4.zip
文件
点击解压-保持解压路径/opt/chevereto-确认
再在/opt/chevereto下创建一个文件夹asset
最后/opt/chevereto目录包含以下文件和文件夹
返回opt目录下
选择chevereto前面的复选框
点击权限 把用户组和公共写入打上✅后确认
容器
拉取镜像
- 点击左侧导航栏-容器
- 点击镜像
- 点击拉取镜像
- 取消镜像仓库
- 输入镜像名
ghcr.io/chevereto/chevereto:4.0.9
- 点击拉取
耐心等待镜像拉取完成,镜像大小有900多MB,速度取决于你的主机网络环境
等到末尾出现这两行字样,代表拉取完成
1 2 3
| {"status":"Digest: sha256:f6f657ab0b7f432dd56bc19e5fe693fd85f2a78e296d3586b33920284f27dbbb"}
{"status":"Status: Downloaded newer image for ghcr.io/chevereto/chevereto:4.0.9"}
|
部署容器
回到 容器 界面
创建容器
名称chevereto
镜像选择ghcr.io/chevereto/chevereto:4.0.9
暴露端口 服务器任意未被占用的端口这里示例为4243
容器端口 固定80
网络 选择1panel-network
挂载需要两个本机目录
/opt/chevereto |
/var/www/html/ |
/opt/chevereto/asset |
/var/www/html/images/_assets/ |
重启规则 选择一直重启
环境变量-需要注意的是
CHEVERETO_DB_PASS=DDPXDPy22m7kZJiW
改为你之前保存的数据库密码
1 2 3 4 5 6 7 8
| CHEVERETO_DB_HOST=mysql CHEVERETO_DB_USER=chevereto CHEVERETO_DB_PASS=DDPXDPy22m7kZJiW CHEVERETO_DB_PORT=3306 CHEVERETO_DB_NAME=chevereto CHEVERETO_ASSET_STORAGE_TYPE=local CHEVERETO_ASSET_STORAGE_URL=/images/_assets/ CHEVERETO_ASSET_STORAGE_BUCKET=/var/www/html/images/_assets/
|
检查无误后点击确认
编辑
编辑容器需要重建,任何未持久化的数据将丢失,是否继续?
选择确认
如果上诉步骤正确操作后打开IP+端口
可以正确进入安装页面
我这里是35.194.135.232:4243
配置好管理员信息点击安装
进入仪表盘 试一下上传没有问题,chevereto更多内容自行研究
域名和SSL
现在访问方式是IP+端口不方便也不安全,图床内容也受限制,为了解决这个问题,首先将你的vps绑定好域名
我这里绑定了img.yyaohuo.me
创建网站
然后回到最开始的1panel-网站-创建网站
- 选择反向代理
- 主域名设置域名
- 代理地址设置为IP:端口
申请证书
- 创建Acme账户
- 输入邮箱后点击确定(邮箱可以随便输入)
创建完Acme账户后点击申请证书
主域名可以从网站中获取
验证方式选择HTTP,然后点击确认
1
| 2024/11/01 14:51:50 开始申请证书,域名 [img.yyaohuo.me] 申请方式 [HTTP]2024/11/01 14:51:50 [INFO] [img.yyaohuo.me] acme: Obtaining bundled SAN certificate2024/11/01 14:51:51 [INFO] [img.yyaohuo.me] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz-v3/4241829621872024/11/01 14:51:51 [INFO] [img.yyaohuo.me] acme: Could not find solver for: tls-alpn-012024/11/01 14:51:51 [INFO] [img.yyaohuo.me] acme: use http-01 solver2024/11/01 14:51:51 [INFO] [img.yyaohuo.me] acme: Trying to solve HTTP-012024/11/01 14:51:56 [INFO] [img.yyaohuo.me] The server validated our request2024/11/01 14:51:56 [INFO] [img.yyaohuo.me] acme: Validations succeeded; requesting certificates2024/11/01 14:51:57 [INFO] [img.yyaohuo.me] Server responded with a certificate.2024/11/01 14:51:57 申请 [img.yyaohuo.me] 证书成功!!
|
证书申请成功后去网站开启https
保存后再次访问看到https已经加载成功了
Docker compose部署
不用安装1panel,直接使用docker部署,更轻量化但是操作起来更复杂,后续更改配置也很麻烦,非必要建议1panel直接部署。
安装docker
1
| curl -fsSL https://get.docker.com | bash -s docker
|
创建必需文件夹
1 2 3 4 5 6 7 8
| mkdir chevereto cd chevereto mkdir nginx www mysql mkdir -p certbot/etc/letsencrypt mkdir -p certbot/var/lib/letsencrypt mkdir -p certbot/var/log/letsencrypt mkdir -p ./www/.well-known/acme-challenge nano docker-compose.yml
|
docker compose配置
粘贴以下内容
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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| version: "3" networks: web: services: nginx: image: nginx:1.23.3 ports: - "80:80" - "443:443" restart: always environment: - TZ=Asia/Shanghai volumes: - ./www:/var/www/html - ./nginx:/etc/nginx/conf.d - ./logs:/var/log/nginx - ./certbot/etc/letsencrypt:/etc/letsencrypt - ./www:/var/www depends_on: - php networks: - web
php: image: hkccr.ccs.tencentyun.com/idog/php:8.14 restart: always expose: - "9000" privileged: true volumes: - ./www:/var/www/html environment: - TZ=Asia/Shanghai command: sh -c "docker-php-ext-enable imagick > /dev/null 2>&1; php-fpm" depends_on: - mysql networks: - web
mysql: image: mysql:5.7 restart: always expose: - "3306" volumes: - ./mysql/data:/var/lib/mysql - ./mysql/logs:/var/log/mysql - ./mysql/conf:/etc/mysql/conf.d environment: - TZ=Asia/Shanghai - LANG=en_US.UTF-8 - MYSQL_ROOT_PASSWORD=HeDDSer8DSHFRyGDDdfwfb - MYSQL_DATABASE=chevereto - MYSQL_CHARSET=utf8mb4 networks: - web
certbot: image: certbot/certbot volumes: - ./certbot/etc/letsencrypt:/etc/letsencrypt - ./certbot/var/lib/letsencrypt:/var/lib/letsencrypt - ./certbot/var/log/letsencrypt:/var/log/letsencrypt - ./www:/var/www command: certonly --webroot --webroot-path=/var/www --email 1@qq.com --agree-tos --no-eff-email -d img.yyaohuo.me networks: - web
|
- 创建nginx配置文件
1 2
| cd nginx nano default.conf
|
Nginx http配置
粘贴以下内容
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
| server { listen 80; server_name img.yyaohuo.me; ##修改域名或则ip root /var/www/html; index index.php;
access_log /var/log/nginx/typecho_access.log main;
location ~* /(importing|app|content|lib)/.*\.(po|php|lock|sql)$ { deny all; }
location ~ \.(jpe?g|png|gif|webp)$ { log_not_found off; error_page 404 /content/images/system/default/404.gif; }
location ~* /.*\.(ttf|ttc|otf|eot|woff|woff2|font.css|css|js)$ { add_header Access-Control-Allow-Origin "*"; }
location / { index index.php; try_files $uri $uri/ /index.php$is_args$query_string; }
# 限制上传文件大小为50MB
client_max_body_size 50M;
# END Chevereto nginx rules
location ~ \.php(.*)$ { fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
|
上传开心版源码
1 2 3 4 5 6 7 8 9 10 11
| sudo wget -O ./chevereto/www/CheveretoV4.zip https://s3.tebi.io/yaohuo/file/CheveretoV4.zip
sudo apt install unzip -y
sudo unzip ./chevereto/www/CheveretoV4.zip -d ./chevereto/www
sudo rm ./chevereto/www/CheveretoV4.zip
chmod 777 ./chevereto/www -R
|
运行docker服务
1 2 3 4
| cd ./chevereto
docker compose up -d
|
Nginx https配置
替换为以下内容img.yyaohuo.me都需要修改为你自己的域名
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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
| # HTTP 重定向到 HTTPS server { listen 80; server_name img.yyaohuo.me; return 301 https: }
# HTTPS server server { listen 443 ssl; server_name img.yyaohuo.me; root /var/www/html; index index.php;
# SSL Configuration ssl_certificate /etc/letsencrypt/live/img.yyaohuo.me/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/img.yyaohuo.me/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/img.yyaohuo.me/chain.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_session_tickets off; ssl_stapling on; ssl_stapling_verify on;
# 访问日志 access_log /var/log/nginx/typecho_access.log main;
# 安全性配置:禁止访问特定文件 location ~* /(importing|app|content|lib)/.*\.(po|php|lock|sql)$ { deny all; }
# 图片文件处理 location ~ \.(jpe?g|png|gif|webp)$ { log_not_found off; error_page 404 /content/images/system/default/404.gif; expires 30d; add_header Cache-Control "public, no-transform"; add_header X-Content-Type-Options "nosniff"; }
# 静态资源处理 location ~* /.*\.(ttf|ttc|otf|eot|woff|woff2|font.css|css|js)$ { add_header Access-Control-Allow-Origin "*"; expires 7d; add_header Cache-Control "public, no-transform"; add_header X-Content-Type-Options "nosniff"; }
# 主要路由配置 location / { index index.php; try_files $uri $uri/ /index.php$is_args$query_string; }
# 限制上传文件大小为50MB client_max_body_size 50M;
# PHP 处理配置 location ~ \.php(.*)$ { fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params;
# FastCGI 缓冲配置 fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k;
# FastCGI 超时设置 fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; }
# 安全性头部 add_header X-Frame-Options "SAMEORIGIN" always; add_header X-XSS-Protection "1; mode=block" always; add_header X-Content-Type-Options "nosniff" always; add_header Referrer-Policy "no-referrer-when-downgrade" always; add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline' 'unsafe-eval'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline';" always; }
|
修改以后重启Nginx
1
| docker compose restart nginx
|
打开域名https://img.yyaohuo.me/ 会跳转到安装页面
- 数据库主机:
mysql
- 数据库端口:
3306
- 数据库名称:
chevereto
- 数据库用户:
root
- 数据库密码:
HeDDSer8DSHFRyGDDdfwfb
- 表前缀:
chv_
解决jpg和webp不能上传
修复:已经在docker compose内置代码了,理论来说不需要这一步了,如果Chevereto不能上传jpg和webp格式的文件再尝试操作以下步骤
1 2 3 4 5
| docker exec -it chevereto-php-1 /bin/bash docker-php-ext-enable imagick docker exec -it chevereto-php-1 php -m | grep -E "gd|imagick" exit docker restart chevereto-php-1
|
然后在chevereto网站设置-图片上传里面开启jpg和webp后保存修改