# 要求
- PHP 7.4 ( ≥ 7.3 )
- 数据库: MySQL 8 / MariaDB 10
- Cron
- Web 服务器: Nginx / Apache / *any
# PHP
PHP 必须带有以下扩展: curl hash json mbstring pdo pdo-mysql zip session xml fileinfo
。
PHP 必须支持 PNG、GIF、JPG、BMP、WEBP
(在 Imagick 或 GD 扩展下的) 图片格式。
Imagick
系统默认使用 Imagick
(ImageMagick) 处理图像。其次才使 GD。
# PHP 配置
建议在 Chevereto 安装中使用以下 ini
配置:
upload_max_filesize = 20M;
post_max_size = 20M;
max_execution_time = 30;
memory_limit = 512M;
# 数据库
MySQL/MariaDB 用户必须在目标数据库上具有 ALL PRIVILEGES
。 Chevereto 需要以下内容才能连接到数据库:
数据库名
数据库用户名及其密码
# Cron
需要使用 cron 来处理应用程序后台作业。您安装的 cron 可能如下所示:
* * * * * IS_CRON=1 /usr/bin/php /var/www/html/chevereto.loc/public_html/cron.php >/dev/null 2>&1
其中 * * * * * (opens new window) 是 cron 表达式
# 测试 cron
您可以到 explainshell (opens new window)查看该命令,您可以根据需要自由修改它。在命令中添加sudo-u www-data
,以www-data
用户身份运行命令:
sudo -u www-data IS_CRON=1 /usr/bin/php /var/www/html/chevereto.loc/public_html/cron.php >/dev/null 2>&1
# Web 服务器
# PHP 配置
Web 服务器必须配置为 PHP (opens new window) 环境,建议使用 PHP-FPM (opens new window)
# 文件系统权限
请赋予相应的文件夹权限和 web 用户执行权限。这是允许 Chevereto 修改文件系统的必要条件,这对于一键更新和许多其他功能是很必要的。
提示
😜 Web服务器用户通常为 www-data
,宝塔面板一般为 www
,请授予该用户一定的权限
Chevereto 在以下路径中需要赋予 可读写 访问权限:
app/content
app/content/languages
app/content/languages/cache
app/content/system
content
images
对临时文件夹的 读
和 写
访问权限( Linux 中为/tmp
;Windows 中为 C:/Windows/Temp
)。
# URL 伪静态
Web 服务器必须将 Get/image/ome-name.<id>
等 HTTP 请求重定向到 /index.php
。以下是 nginx (opens new window) 和 Apache HTTP Server) 的使用说明。
# Nginx URL 伪静态
example.com.conf
# 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;
}
# Apache URL 伪静态
确保 mod_rewrite
(opens new window) 被启用,并且你的虚拟主机设置允许执行 URL 重写
<Directory /var/www/html>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
Apache .htaccess
配置文件已经包含在软件中
/.htaccess
# Disable server signature
ServerSignature Off
# Enable CORS across all your subdomains (replace dev\.local with your domain\.com)
# SetEnvIf Origin ^(https?://.+\.dev\.local(?::\d{1,5})?)$ CORS_ALLOW_ORIGIN=$1
# Header append Access-Control-Allow-Origin %{CORS_ALLOW_ORIGIN}e env=CORS_ALLOW_ORIGIN
# Header merge Vary "Origin"
# Disable directory listing (-indexes), Multiviews (-MultiViews)
Options -Indexes
Options -MultiViews
<IfModule mod_rewrite.c>
RewriteEngine On
# If you have problems with the rewrite rules remove the "#" from the following RewriteBase line
# You will also have to change the path to reflect the path to your Chevereto installation
# If you are using alias is most likely that you will need this.
#RewriteBase /
# 404 images
# If you want to have your own fancy "image not found" image remove the "#" from RewriteCond and RewriteRule lines
# Make sure to apply the correct paths to reflect your current installation
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule images/.+\.(gif|jpe?g|png|bmp|webp) - [NC,L,R=404]
#RewriteRule images/.+\.(gif|jpe?g|a?png|bmp|webp) content/images/system/default/404.gif [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.(css|js|html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml|asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|exe|gif|gz|gzip|ico|jpe?g|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|swf|tar|tif|tiff|wav|webp|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$ [NC]
RewriteRule . index.php [L]
</IfModule>
# 真实 IP
对于在任何一种代理(包括 CloudFlare),都要求 Web 服务器为客户端连接 IP 设置适当的值
⚠ 如果没有配置,软件将无法检测到用户真实的 IP
- Nginx:
ngx_http_realip_module
- Apache:
mod_remoteip