简介
欢迎来到Chevereto的中文文档。在这里你可以找到使用本系统需要的所有资源。本文档始终引用最新的版本,所以如果你想正确使用本文档,请确保您使用本系统的网站是更新过的。
我们的理念
Chevereto是一个可以帮助你建立自己的图像分享网站(图床)的应用程序,我们的目标是可以让世界上的任何一个人都可以建立自己的图像共享平台。我们坚定不移的为那些想要可定制的白标图像共享服务的人建立一个真正的替代品。
白标:white-label 直译为白标,引申为不注重品牌宣传的产品。Whitelabel致力于研发具有新功能、外形时尚、操作简单的产品,消费者可以尽情享受高科技带来的完美体验。whitelabel不做品牌宣传,我们提倡产品价值的回归,让消费者购买的是产品真正的价值,剔除广告费等一切隐形费用,享受超高性价比。良好的品质和口碑是我们最好的宣传。(摘自百度百科)
工作原理
Chevereto的应用类型也被称作为是在web服务器上运行的脚本,在终端用户的web浏览器上显示。它使用PHP、JavaScript和MySQL数据库服务器。
系统层
Chevereto被分布在几个层中,在一定程度上解决了抽象的代码带来的难以理解的问题。最外面的一层是主题,最里面的一层是G\ Library框架。在Chevereto的体系中,你几乎可以自由的编辑任何东西,但是你始终应该从最外层开始,因为这样可以对代码造成更小的影响
G\ Library
Chevereto的核心就是建立在Chevereto的创建人员开发的G\ Library PHP框架上的。这个的创立是为了让Chevereto变得更加强大,清晰,快速。你可以在G\ Library的文档中找到关于它有用的信息。如果你准备扩展Chevereto或者用它作为你的项目的基础,你应该仔细地看一下这个文档。
Peafowl
Chevereto默认的主题是建立在Peafowl框架上的。它与Bootstrap或任何HTML/JS的框架都非常相似。虽然Peafowl是默认的主题,但是Chevereto的核心并不依赖于这个框架。所以你可以使用任何框架制作自己的前端(主题)。
许可证
Chevereto主要的版本(3.X)是一个商业软件,你将Chevereto安装到你的网站上的时候需要一个许可证。所有Chevereto许可证共享完全相同的系统功能,唯一的区别是每种许可证类型允许的域数的不同。
许可证类型
核心许可证
核心许可证是基本的Chevereto许可证,允许您在运行环境中的一个域中运行Chevereto,如果您需要在本地计算机或测试服务器上安装系统,您也可以自由地进行安装。如果你需要在更多的网站上运行,你可以把核心许可证升级到网络许可证。
网络许可证
网络许可证允许你在运行环境的多个域中使用Chevereto。这就意味着你可以同时在多个域(不同的网站)安装和运行这个系统。
免费许可证(免费的CHEVERETO,2.X及以下的版本)¶
最新的免费版本是免费的Chevereto,是V3版本的一个分支,可以完全免费的使用。Chevereto的1.X和2.X的版本是开源并且免费的,这意味着你不需要购买以获得使用它的权限。这些免费版的功能十分有限。与您在此比较表中注意到的最新版本(3.X)不同。
许可证文件
Chevereto3.X版本的许可证文件位于/app/licenses/
文件夹中,当你下载软件的时候他们会被包括在其中。请确保此文件夹具有与您的购买相匹配的正确的许可证文件。
获取更新
不要错过任何一次更新或是有关于Chevereto的消息。我们有几个渠道,你可以获取更新的消息并成为我们社区的一份子。Chevereto高度重视用户的反馈,所以不要犹豫,告诉我们你的想法吧。
- Chevereto社区 获取更新的消息并且成为我们社区的一部分
- Chevereto博客 了解将要发生的事情和更多内容
- 推特 关注 @chevereto
- 脸书
- Google+
安装
确保你的服务器满足所有的系统要求,然后执行下面的操作之一
通过我们提供的安装程序进行安装
这个安装程序是一个.php
文件,它将为您下载并解压最新的版本
- 将安装程序上传到你的目标地址(通常是
public_html
文件夹)。 - 打开你的网站并按流程操作。
通过Docker进行安装
Docker可以让你通过使用自动化应用程序容器轻松的安装和维护所有服务器依赖项。随时可用的Docker镜像位于nmtan/chevereto(十分感谢Tan Nguyen).
注意:使用
安装
标签去使用Docker,并和我们的付费版本一起使用。
通过Softaculous/Fantastico进行安装
如果你的服务器托管在Softaculous/Fantastico,你可以一键安装Chevereto免费版。Chevereto免费版可以在"Image Galleries"分类下一键安装。
注意:我们的付费版本不在任何一个脚本库中可用。但是你可以先安装Chevereto免费版,然后直接使用仪表盘的一键更新,升级到付费版本。
通过zip文件进行安装
- 下载最新版本。
- 将
chevereto
文件夹中的所有内容上传到你的服务器上(通常是public_html
文件夹)。 - 转到目标网站网址。
- 按照说明操作。
注意:你需要一个MySQL数据库才能安装Chevereto.请参考有关数据库的托管文档。
通过cPanel进行安装
继续使用我们的通过我们提供的安装程序进行安装或者通过zip文件进行安装进行安装。安装完成之后,请按照以下的步骤去创建一个MySQL数据库并连接到cPanel:
- 登录到你的cPanel服务器面板。
- 转到"MySQL® Database Wizard"
- 步骤一 创建Chevereto用于存储数据的数据库,记住用户名(稍后会询问)。
- 步骤二 创建连接到数据库的数据库用户。记住该用户名和密码(稍后会询问)。
- 步骤三 给数据库授予权限。请务必选择
ALL PRIVILEGES
,因为这将通过安装Chevereto的数据库向数据库用户添加权限。
- 完成之后,转到您的网站目标地址,然后这个系统会向你询问连接数据库所需要的信息(数据库名字,数据库用户名,数据库用户密码),然后按照说明操作。
通过宝塔进行安装(非官方文档内容)
当然你也可以使用宝塔面板进行安装chevereto,这对中国的用户将会非常方便。
大致上的步骤和上一步差不多。如果有兴趣查看详细的教程,请参考这篇博客:服务器+宝塔+Chevereto 搭建个人图床。
安装时常见的问题
最常见的安装问题是不满足系统要求,因此请确保你正在运行一个兼容的系统,并且确保所有的数据都是正确的,例如MySQL的凭证(这里指的应该是数据库名,数据库用户名,数据库用户密码)和权限。对于其他问题,请随时在支持(support)中查找解决方案。
从之前版本进行更新
如果您正在从之前的版本进行更新,您应该参考[更新指南]( /Setup/Update guide/)。
app/settings.php 的配置
此文件包含应用程序设置,如数据库凭据和其他设置。此文件可能如下所示:
<?php
$settings['db_host'] = '127.0.0.1';
$settings['db_port'] = 'port';
$settings['db_name'] = 'name';
$settings['db_user'] = 'user';
$settings['db_pass'] = 'password';
$settings['db_table_prefix'] = 'chv_';
$settings['db_driver'] = 'mysql';
$settings['debug_level'] = 1;
更新指南
这个指南包含将Chevereto更新到其上一版本的步骤。请通过你现在的版本请选择适当的更新步骤进行操作。 如果您需要下载Chevereto最新版本,您可以直接从您的帐户面板进行下载。
从3.6.9更新到现在的版本(当前的版本)
- 转到
/update
,系统会在几秒内下载并应用(进行)更新。 - 恢复或合并文件的更改(如果需要的话)。
手动更新
手动更新的步骤跟"从3.0.0.更新到3.6.8"的是一样的。
从3.0.0.更新到3.6.8
- 下载最新版本。
- 备份所有的文件更改(主题,路径等等)。
- 上传
chevereto
文件夹中所有的文件和文件夹。 - 登录到你安装过chevereto的网站(管理员用户)然后转到
/install
。 - 恢复或合并文件的更改(如果需要的话)。
每个版本都会有一些受影响的文件和文件夹,如果你是从之前的版本更新的并且不想覆盖所有的文件,这将会非常有用。如果你不是从上一个版本更新的(相邻的上一个版本),那么你应该始终执行列表中的步骤(2)。意思就是如果不是相邻的两个版本的更新,就一定要备份。
从2.1-2.6中的版本进行更新
当从这些旧版本更新时,请始终对系统的数据库进行备份。
- 下载最新版本。
- 从includes/config.php中保存数据库的连接信息。
- 保存你在
includes/definitions.php
中的__CHV_CRYPT_SALT__
,如果你没有在crypt中配置salt属性,你将不能更新。 - 上传除了图像文件夹的所有文件。
- 转到你安装了chevereto的网站,系统将会向你询问数据库的连接信息。
- 通过所给的信息,完成这些步骤。
- 系统一定会向你询问你的
__CHV_CRYPT_SALT__
。如果没有询问,请停止你的操作,并且寻求支持和帮助。 - 删除
/admin
文件夹,因为你再也用不到它了。从3.0.0开始,管理员的文件夹变为/dashboard
。
从2.0.X或更早的版本进行更新
- 通过这些下载中的说明更新到2.1或者更新的版本。
- 随着系统的更新,你现在可以使用2.1版本的更新指南。
系统需求
- Apache or Nginx web服务器(推荐使用的服务器)
- 5.6版本的PHP(推荐使用7.3版本)和标准库。
- MySQL 8 / MariaDB 10
文件权限
Chevereto需要在以下路径中写入并存取(递归权限):
app/content
app/content/languages
app/content/languages/cache
app/content/locks
app/content/system
content
images
Chevereto使用PHP和Web服务器(Apache,Nginx等)继承其对Chevereto的权限,因此如果Apache无法写入文件夹,那么Chevereto将无法在其上写入。确保Web服务器位于网站文件夹的root文件夹中,以保证Chevereto可以正常工作。
还要仔细检查对temp文件夹的读/写访问权限(Unix/Linux中的/tmp
和Windows中的C:/Windows/Temp
)。
设置文件(app/settings.php)
默认情况下,系统会尝试创建文件app/settings.php
,用来存储数据库连接的详细信息。在某些服务器的环境中,Chevereto不具备创建这个文件的权限,所以你需要手动的在app/
目录中创建一个空文件,并命名为'settings.php'。安装过程将告诉您应该在此文件中放入哪些内容。
数据库权限
建议您的MySQL用户在目标数据库拥有'ALL PRIVILEGES'的权限。在平常的运行环境中Chevereto仅仅只需要CRUD(创建/读入/更新/删除)的权限以保证它的正常工作,所以你可以撤销一些其它的权限,但是在安装或者更新的环境中它需要所有的权限。
漂亮的URL
这指的是使用漂亮(或友好)的url,是通过服务器重写完成的。根据您的服务器,您需要遵循适当的步骤才能使其正常工作。
APACHE服务器
你需要Apache mod_rewrite。默认情况下,Chevereto附带一个.htaccess
管理URL重写的文件,因此您只需上传此文件并确保mod_rewrite
已启用并正常工作。
如果你有关于漂亮的URL或者Apache的问题。尝试启用RewriteBase /
指令,并确保在你的虚拟主机中允许'覆盖全部'。
NGINX SERVER
在你的站点配置文件里面添加如下指令
# Image not found replacement
location ~* (jpe?g|png|gif) {
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 / {
try_files $uri $uri/ /index.php?$query_string;
}
其它的服务器
对于其他web服务器,您应该参考服务器API中关于URL重写的文档。
服务器问题
不是所有的web服务器都遵从一些基本原则,所以在有些情况下,即使拥有一个满足系统需求的服务器,你也可能会遇到一些问题,导致chevereto无法正常工作。 这是一个主要由服务器配置错误导致的已知服务器问题列表。 如果你想无忧的使用chevereto托管,你可以尝试使用我们的bundle。
bundle: 用于将本地数据打包到一个文件中,然后共享给别人(供参考)
如果您的服务器出现问题,并且这个服务器问题不在脚本层(就是下面列举出来的几种情况),必须向您的服务器托管公司或服务器管理员求助。
Web服务器
这些问题大多数是Apache或者Nginx的错误配置导致的。最常见的问题有
- 缺少Mod_rewrite或者
Allow Override All
虚拟主机中已禁用。 - Chevereto路径中缺少写入权限
- 错误或者无效的设置(时区、多视图、超时等).
PHP
PHP在你的服务器上可能导致有问题产生的的不同风格(模块或fcgi)和不同的库的设置:
- PHP版本过低(Chevereto需要PHP5.5.0及以上的版本)
- PHP库中的配置错误(GD, cURL, BCMath等)
- 错误的php.ini指令
- 执行时间短(系统在安装完成之前就停止了)
- 会话(权限)设置错误
- 启用eAccelerator (PHP 5.3及以上版本不推荐)
在某些服务器中,您可以通过执行.htaccess解决方法轻松切换到PHP 5.5。只需转到您的网站根目录中的.htaccess文件,并在顶部添加以下行:
AddHandler application/x-httpd-php55 .php55 .php
请注意,php.ini
指令还负责文件上载限制。您应该查看这篇文章以获取更多信息:PHP常见的陷阱。
MySQL
大部分MySQL得问题都跟错误的凭证或者没有权限有关,最常见的问题是:
- 错误的凭证(用户名和密码)
- 权限无效或缺少权限(不能再数据库中读写)
- 数据库版本太低(chevereto需要5.0版本的MySQL)
设置技巧
由于大量配置不当的服务器,我们开始添加设置技巧以便您强制设置PHP,此时,您可以破解会话保存路径、时区和HTTPS标志。请注意这些内容应该添加到app/settings.php
文件中。
$settings['session.save_path'] = 'absolute path';
$settings['default_timezone'] = 'timezone identifier';
$settings['https'] = TRUE; // TRUE to force PHP HTTPS
你甚至可以使用这个指令通过ini_set()
强制php.ini
指令。我们鼓励你不要这样做,但你可以把它作为最后的方法,它不应该破坏任何东西。
调试
调试指的是检测你在安装过程中遇到的问题的办法。进行调试是找到系统中问题的准确原因的唯一办法。并且,当涉及到缩小错误的来源时,它将非常有用。
调试级别
chevereto的异常问题处理程序包含四个调试的级别,你可以使用合适的级别来满足你的需求。这些调试等级在下面这个表格中说的很详细。
调试级别 | 描述 |
---|---|
0 | 无 |
1 | 错误日志(默认) |
2 | 仅打印错误 |
3 | 打印错误并生成错误日志 |
默认的调试级别是生成错误日志(级别1),如果你想改变这个级别,那么你必须去编辑文件app/settings.php
。如果你的文件中没有debug_level
属性,您可以参照以下实例
$settings['debug_level'] = 1;
chevereto的堆栈轨迹
堆栈轨迹:如果你需要打印出某个时间的调用堆栈状态,你将产生一个堆栈轨迹。
stack trace 中包括三部分,分别为:.bss .text .data
bss: 表示程序中未初始化的全局变量的一块内存区域
text: 表示程序中已初始化的全局变量的一块内存区域
data:表示存放程序执行代码的一块内存区域
(摘自百度百科)
chevereto自带一个错误堆栈跟踪器,有助于安全地找出错误所在的位置,它可能如下所示:
Fatal error [123]: Test
Triggered in /app/routes/route.index.php at line 22
Stack trace:
#0 /lib/G/classes/class.handler.php(205): G\Handler->{closure}(G\Handler)
#1 /lib/G/classes/class.handler.php(100): G\Handler->processRequest()
#2 /app/loader.php(201): G\Handler->__construct(Array)
#3 /index.php(21): include_once('/app/loader.php')
但你看到类似于这样的提示的时候不要慌,整个系统使用PHP异常处理工作,所以得到这样的报告是正常的。 您可能注意到没有公开完整的路径,所以这里没有安全隐患。
注意:在网站运行中不建议显示任何类型的PHP错误或chevereto异常,我们建议你使用调试级别1
来搭建网站,
PHP错误报告
如果要启用打印错误(error_reporting)你需要转到你的仪表盘 > 设置 > 系统,启用此功能之后,所有运行时的错误都将被打印出来。我们只建议在开发环境中启用此功能。
功能配置
上传图片
图像上传是Chevereto的主要功能,您可以在仪表板>设置>图像上传中高度自定义它的工作方式。
可配置的选项
上传(启用/禁止)
控制图像上传功能的全局设置。当它启用的时候,系统将允许在所有端点(主网站和API访问)上传图片。
访客上传(启用/禁止)
控制没有登录的用户的图片上传功能。如果你想只允许登录的用户才可以上传图片,这个你应该设置为启用
,然后系统会要求登录以后才可以上传图片。
文件上传的最大大小
配置允许上传的每张图片的大小的最大值,然后系统将不会允许上传的图片的大小大于在设置中设置的值。注意你设置的值不能超过服务器允许的最大值。文件上传限制,当您在此设置中使用较大值时,将会存在一些常见的PHP的坑。。
图像路径
设置系统在Chevereto根目录下存储上传图片的保存路径。这个设置仅在上传图片到本地存储的时候可用。默认的值:images
。
存储模式
设置上传图像的路径前缀。当你使用Datefolders
的时候,系统将会为上传的图片创造一个2014/10/14/
这样的的结构。默认值:Datefolders
Datefolders:日期文件夹
文件命名
控制上传的图片在存储的时候如何命名或者重命名。当你使用"Original" 的时候,系统会尝试使用文件本来的名字,使用"Random" 的时候,系统会生成一个完全随机的文件名,使用"Mixed" 的时候,系统会使用来自源文件名和一部分随机字符串。当你使用"Original" 的时候,如果这次要上传的文件名已经存在,系统会自动使用"Random" 。默认值:Original
Original:原始的
Random:随机的
Mixed:原始的+随机的 还有一个"ID"的模式, 这种模式使用生成的图像ID来命名.
缩略图大小
为生成的缩略图设置确定的高度和宽度。生成的图像将具有固定的尺寸,不会被调整。
中等图片大小
设置生成中等图片大小的宽度,高度将会按照这个宽度自动进行调整。
水印(开启/关闭)
控制上传图像的水印功能的使用。当启用水印将添加到上传的图像,您可以配置水印图像,位置和透明度。
分类
Chevereto允许你创建无限个分类,有助于对上传的图片进行分类,并且会对每一个相册生成一个清单。
添加一个类别
- 转到仪表盘 > 设置 > 分类
- 点击“添加类别”
- 填写表格中所需要的数据
SEO分类
系统允许你自定义分类的名称,链接和描述。为了获得更好的SEO结果,尝试在URL键中使用连字符(-)而不是下划线(_)。类别描述将在<meta name="description">
的标记中使用。
邮箱[¶]( /Configurable features/Email/#_1)
此功能允许您自定义位于仪表板 > 设置 > 电子邮件的整体电子邮件发送设置。
可配置选项[¶]( /Configurable features/Email/#_2)
- 系统的邮箱地址和发件人名字
- 发邮件的模式(SMTP或者PHPMail)
- 对于SMTP,您可以配置安全协议、主机、端口等。
推荐设置[¶]( /Configurable features/Email/#_3)
推荐使用SMTP的发送邮件方式,因为它在发送邮件这一方面有更好的表现。本机PHP函数(PHPMail)应该只在开发环境中使用,为了可靠性,您应该始终使用SMTP。 要使用SMTP方法,您需要能够在您的邮件公司获得的SMTP凭据。您还可以使用第三方SMTP提供者,如SparkPost。
横幅广告[¶]( /Configurable features/Banners/#_1)
Chevereto是一个流量制造机器,你会发现它用广告赚钱会效率很高。默认情况下,该系统自带16个预定义的广告位,允许您通过图像托管网站通过添加广告产生收入。
添加广告代码[¶]( /Configurable features/Banners/#_2)
- 转到仪表盘 > 设置 > 横幅广告
- 将代码粘贴到所需的广告位中
- 向下滚动并点击保存修改
广告网络(普通网站)[¶]( /Configurable features/Banners/#_3)
根据你的网站定位和你的流量来源,你会注意到一些广告网络对你来说是好的,也有一部分是不好的。这里有一个你可以尝试的广告网络的列表。
- Google AdSense
- Yahoo Advertising
- Bing Ads
- Vibrant Media
- Clicksor
- Chitika
- BidVertiser
- SiteScout
- BuySellAds
- Commission Junction
您可以启用/禁用在有NSFW内容的广告的显示,这有助于你的广告网络。要配置此设置,请转到仪表板> 设置 > 内容并更换“显示横幅在不安全的内容”选项。
广告网络(成人网站)[¶]( /Configurable features/Banners/#_4)
如果你准备搭建一个成人图片托管网站,那么你需要使用适用于此类内容的广告。这是一个成人内容广告网络的列表。
- AdultFriendFinder and its network
- LoadedCash
- TotemCash
- XXXwebTraffic
- ClickCash
- JuicyAds
- AdXpansion
顺便说一句,Cheveteto带有黑色主题,适合成人内容。
防洪保护[¶]( /Configurable features/Flood protection/#_1)
这个功能允许您通过在管理仪表板中配置的时间/使用限制条件来防止对图像上传网站可能遭遇的洪水袭击(flood attack)。
什么是洪水袭击(flood attack)[¶]( /Configurable features/Flood protection/#flood-attack)
洪水攻击是指攻击者向您的网站发送很多请求,目的是耗尽整个服务器资源,使网站性能极差,甚至导致网站瘫痪。这些攻击有很多不同的类型,但它们都是使用更多机器利用系统功能上的漏洞来完成工作的。
防洪保护是怎么工作的[¶]( /Configurable features/Flood protection/#_2)
Chevereto使用每个IP上传请求的时间/使用请求来确定上传请求是否泛滥。您可以配置触发洪水标志的时间限制,当检测到洪水时,您还可以通过电子邮件得到通知。
开启防洪保护
- 转到仪表盘 > 设置 > 防洪保护
- 选择下拉菜单中的启用
- 编辑设置以满足你的需要
防洪保护默认情况是开启的,我们强烈建议你在你的网站上开启防洪保护。
社交网络[¶]( /Configurable features/Social networks/#_1)
此功能允许您自定义位于仪表板 > 设置 > 社交网络的内置的社交网络集成。
启用社交网络登录[¶]( /Configurable features/Social networks/#_2)
为了开启社交网络登录,你需要在每一个社交网络服务中获取API密匙。因此建议你在每一步都按照着文档中的操作步骤来。只要你得到了API密匙,然后你只需要在仪表盘 > 设置 > 社交网络中启用/禁用目标社交网络,然后在每一种应用程序中填入对应的API密匙。
Facebook登录[¶]( /Configurable features/Social networks/#facebook)
为了使用Facebook登录,你首先需要创建一个Facebook应用程序。
-
转到
https://developers.facebook.com/apps
(你必须首先登录Facebook)然后点击"添加一个新的应用程序"。
- 出现提示的时候输入你的新应用程序的显示名称,邮件和类别。
- 点击"创建应用程序ID",你将会跳转到一个新页面。
-
转到"设置"然后点击"添加平台"
- 选择"网站"然后输入你的网站链接,点击页面底部的"保存修改"。
- 添加您的应用程序域,隐私和条款网址。记住点击页面底部的"保存修改"。
-
转到"产品"然后点击"Facebook登录"(如果不存在,则必须添加此产品)
- 在
客户端授权设置
中,确保启用了"网站授权登录"。 - 在"有效的授权重定向到的链接"中填入
http://yourwebsite.com/connect/facebook
。 - 在"取消认证后回调界面的链接"中填入
http://yourwebsite.com/
。
- 在
-
转到"应用程序审查"并公开您的应用程序(这将会为所有人启用你的应用程序)
-
只要你的应用程序审核通过为公开的,你就可以去"仪表盘",然后在你的Chevereto网站(仪表盘 > 设置 > 社交网络)中复制粘贴"应用程序ID"和"应用程序密码"
一定要特别注意一下Facebook的应用程序审查状态。只有当你填写完所有Facebook所需的信息的时候你的应用程序才是可见的。
Twitter登录[¶]( /Configurable features/Social networks/#twitter)
为了使用Twitte登录,你首先需要创建一个TWitter应用程序。
- 转到
apps.twitter.com
然后点击"添加一个新的应用程序"。 - 使用下面的设置
- 网站:
http://www.yourwebsite.com
- 回调网站的链接:
http://www.yourwebsite.com/connect/twitter
- 允许此应用程序用于使用Twitter登录。(开启)
- 网站:
- 使用以下的权限
- 读写(选中)
Google登录[¶]( /Configurable features/Social networks/#google)
为了开启谷歌登录:
- 转到将谷歌登录应用到您的web应用程序中然后点击"配置项目"。
- 在需要时设置项目和产品名称。
- 在"请求来自哪"下的"配置你的授权客户端"中选择'Web服务器'。
- 授权重定向的链接:
http://yourwebsite.com/connect/google
- 点击"创建"
- 点击"创建"之后你会获得一个
客户端ID
和客户端密匙
,你需要在你的Chevereto仪表盘中提供它们。
- 授权重定向的链接:
- 以后你可以随时使用API控制台管理你的API凭证和使用情况。
VK登录[¶]( /Configurable features/Social networks/#vk)
为了使用VK登录,你需要创建一个VK应用程序。
- 转到
vk.com/dev
然后点击创建一个应用程序
然后选择类别:网站 - 填入你的网站信息
- 点击"连接到站点"
- 授权重定向链接:
http://www.yourwebsite.com/connect/vk
- 在应用程序页面确保已启用API
个人模式[¶]( /Configurable features/Personal mode/#_1)
Chevereto包含一个可配置的个人模式,允许将系统设置为单个用户实例。当启用个人模式的时候新用户将无法注册。整个网站都由一个用户使用,非常适合投资组合或任何类型的个人图库。
启用个人模式[¶]( /Configurable features/Personal mode/#_2)
- 转到仪表盘 > 设置 > 网站
- 找到"网站模式"并选择"个人模式"
- 设置目标用户id和可选路径
个人模式文件路径[¶]( /Configurable features/Personal mode/#_3)
这允许您设置自定义用户配置文件路径/portfolio
或任何您想要的。此路径将映射到目标用户配置文件。
管理员[¶]( /Configurable features/Personal mode/#_4)
目标用户的id不一定必须是管理员,意思就是允许您将Chevereto设置为您可能想要的任何人的个人系统。比如说,你可以把目标用户设置成一个对这个系统不太了解的人,然后你负责管理,而他只关心上传图片即可。
主页定制[¶]( /Configurable features/Personal mode/#_5)
当使用个人模式时,系统会为主页分配不同的主题,这些主题可以在仪表板 > 设置 > 主页上更改。如果目标用户ID具有背景设置,则该图像将用于主页封面。
外部服务[¶]( /Configurable features/External services/#_1)
Chevereto包括对CDN,reCAPTCHA,评论系统,网站分析和Cloudflare的内置支持。可以在仪表板 > 设置 > 外部服务中配置外部服务。
CDN[¶]( /Configurable features/External services/#cdn)
有关于此集成服务的详细信息可以在CDN文档找到。
reCAPTCHA(验证码)[¶]( /Configurable features/External services/#recaptcha)
验证码可以帮助防止机器人注册或者强行破解别的用户的密码。你需要得到reCAPTCHA密匙来开启这个功能。
评论系统[¶]( /Configurable features/External services/#_2)
这允许您粘贴来自Disqus,Disqus或Facebook 等多个评论系统提供商的评论代码。这段代码将插入到图像查看器注释部分。
分析代码[¶]( /Configurable features/External services/#_3)
这允许您粘贴Google Analytics等分析服务提供商提供的代码。此代码将打印在每个页面中。
语言[¶]( /Configurable features/Languages/#_1)
Chevereto使用gettext语法进行翻译,系统内置了许多内置语言,您可以在app/content/languages
文件夹中找到。
仪表盘设置[¶]( /Configurable features/Languages/#_2)
在仪表板中,您可以配置多种语言相关设置。为了配置语言可以导航到仪表盘 > 设置 > 语言
默认的语言
这将设置默认使用的语言。这意味着对于所有用户,如果关闭“自动选择语言”,默认语言将会是他们使用的语言。
自动选择语言
当这个功能启用时,系统将基于浏览器的语言首选项检测用户语言。如果该语言在系统中可用,cheverto将为该用户使用该语言。如果检测到的语言不可用,系统将使用“默认语言”。
语言选择器
当这个功能开启的时候,系统将允许用户选择他们想要用的语言。
可用的语言
如果您不想提供所有内置语言,您可以选择启用/禁用任何语言,您也可以在其中设置默认语言,以及用户是否可以选择自定义语言。
添加新语言
如果你想添加一个新的语言,我们鼓励你去我们的翻译中心,在这里你可以轻松的为添加一个新语言做贡献。如果你想从头开始手动添加翻译文件,你需要使用[.po 编辑器软件](https://www.google.com/search?q=po editor)然后创建你自己的翻译。用.po文件进行编辑不是一件简单或者方便的事,这也是为什么我们鼓励你使用我们的翻译中心的原因,就是为了可以让你避免这种情况的选择。
仪表盘
仪表盘¶
Chevereto带有一个仪表板,您可以通过它控制和管理所有系统。要访问仪表板,您必须以管理员用户身份登录,然后转到/仪表板
。或者通过单击顶部栏上的管理员用户名,转到仪表板界面。
统计¶
Chevereto仪表板可以快速简便地统计您的Chevereto安装信息和系统版本。在这里,您将看到正在发生的事情的完整摘要以及您的系统版本和核心库的更新情况的完整摘要。
设置¶
要修改任何系统设置,您只需单击仪表板上的“设置”选项卡,然后单击出现在标题旁边的子菜单。您将可以修改:
- 内容及网站设置
- 图片上传参数
- 分类
- 防洪保护
- 主题
- 横幅广告
- 电子邮件
- 社交网络
- 外部服务
- 等等。
请随意更改这些设置并找到你认为最合适的。当您确定自己所做的更改时,记得向下滚动并单击“保存更改”。
内容管理器¶
Chevereto附带了一个系统范围的内容管理器,您可以在任何地方使用,而且该管理器也内置在仪表板中。Chevereto内容管理器允许您管理所有内容,包括图片、相册和用户。
配置¶
所有Chevereto可配置值都可以在仪表板>设置中找到。在像Chevreto这样的系统中,有Chevreto可配置值和服务器可配置值。
chevreto可配置值¶
使用Chevereto,您可以配置几乎所有功能,如网站模式、启用或禁用帐户注册、上传参数等。您可以在仪表板设置中发现许多的可配置值选项。
您应该注意的是Chevereto不能超过服务器限制,在极少数情况下,您需要参考您的服务器限制和配置。
服务器可配置值¶
就像其他任何web脚本一样,Chevereto运行在分层系统上,这些层中的限制决定了Chevereto的一些边界。要检查的一些可配置值包括:
- 上传的最大大小(php.ini的最大上传大小和最大传输大小)
- 最大客户连接数(Apache或者Nginx的最大客户连接数)
- 最大连接数(MySQL最大连接数)
这些服务器层的限制,Chevereto不能超过它们。例如,如果您想要增加上传大小限制(默认2 MB),您必须首先在php.ini文件中更改该限制。
主题¶
您可以在仪表板中配置如logo,图标,自定义CSS,自定义JS等主题选项。您还可以直接从管理仪表板配置横幅广告。
添加自定义CSS和js¶
您可以在Chevereto中简单方便地将自定义CSS和JS代码放入您的网站。要做到这一点,请遵循以下步骤:
- 转到仪表盘>主题
- 将代码放在“自定义CSS代码”和“自定义JS代码”框中
- 保存修改
注意:您也可以使用自定义挂钩添加自定义CSS和JS。
主题覆盖¶
如果你想定制一个或几个主题文件,最好的办法是使用主题覆盖。主题覆盖的工作原理是通过检测覆盖文件并使用它代替默认文件来工作。例如,要使用自定义图像查看器页面:
- 转到主题文件夹
pp/themes/Peafowl/
- 把您的自定义文件放到
overrides/views/image.php
- 替代
app/themes/Peafowl/views/image.php
完成后,系统将加载覆盖原视图而不是使用默认视图,换句话说,加载的实际主题文件将是app/themes/Peafowl/overrides/views/image.php
通过这样做,您将能够以更简单的方式来随时间来改变主题。您仍然需要将更改从默认主题推送到您自己的覆盖,但它只会影响您实际编辑的文件而不是所有主题。
自定义挂钩¶
自定义挂钩允许在主题的指定区域或片段中添加或编辑代码。默认主题包括一个自定义挂钩文件夹,您可以在其中添加自己的东西,并填充大量的示例文件。例如,要自定义共享按钮,请遵循以下步骤:
- 转到主题自定义挂钩文件
app/themes/Peafowl/custom_hooks/
- 制作副本
share_links.sample.php
(在此副本中进行所有编辑) - 重命名你的工作副本为:
share_links.php
chevereto将检测您的非示例文件(file.sample.ext),并将该文件加载到主题中。
克隆默认主题¶
如果您需要更多自定义,则应克隆默认的“Peafowl”主题并在此新主题中完成工作。要克隆默认主题:
- 复制
app/themes/Peafowl/
并粘贴到同一个目录中 - 把你的新主题命名为你想要的名字(不能带有空格)
跟踪默认主题变化的最佳方法是在计算机中创建一个本地git仓库。使用上一个Chevereto版本创建一个本地git仓库,并在每次要合并代码提交时,您都能够逐行查看所有更改。我们建议您使用完全免费的SourceTree。
页面¶
创建和管理页面¶
要添加或管理页面,只需转到仪表盘>设置>页面
就可以进行添加,编辑,删除页面。你可以自定义页面的标题,链接rel,元标记,图标等。
页面类型¶
您可以创建功能齐全的PHP页面,这些页面可以利用所有G\framework和Chevereto命名空间,这样您就可以获得看起来与系统其他部分完全一样的页面,甚至是看起来完全不同的页面。您还可以创建链接页面,您可以自定义链接Facebook粉丝页面或任何您想要的其他页面。您还可以创建不可见的页面,这些页面只有在他人知道URL密钥时才可见。
自定义样式和编码¶
Chevereto页面是G\Library 加载器的包装器,这意味着这些页面可以完全自定义所有代码。您可以使用自己的页眉,页脚,元标记等。
这意味着您可以使用任何您想要的代码,包括HTML、JS、CSS和PHP。您甚至可以创建与主站点外观完全不同的页面,甚至可以使用所有的系统类和函数(G\和Chevereto)来使其更加简洁和强大。
语言字符串[¶]( /Customization/Language strings/#_1)
chevereto语言字符串可以很容易地定制,以适应您想要向访客显示的内容。您可以配置从按钮到完整段落的任何语言字符串,而不会干扰主题编辑。
翻译覆盖[¶]( /Customization/Language strings/#_2)
系统通过覆盖目标翻译来工作,例如您可以替换“上传和共享您的图像”。通过执行以下过程:
1.获取MSGID和MSGSTR值[¶]( /Customization/Language strings/#1msgidmsgstr)
- 转到
app/content/languages
文件夹 - 打开文件
n.po
(在本例中我们覆盖英语语言) - 找到这个文字:
Upload and share your images
- 复制
msgid
和msgstr
行,你应该得到这样的东西:
msgid "Upload and share your images."
msgstr ""
!!!在这种情况下,msgstr为空,因为英语是默认的语言。
2.覆盖翻译[¶]( /Customization/Language strings/#2)
在本例中,您需要在app/content/languages/overrides/en.po
中创建一个覆盖文件,其中包含以下内容:
msgid "Upload and share your images."
msgstr "Upload and share your photos."
您只需要替msgst
r因为这是翻译字符串。在这之后的结果是现在Chevereto主页上显示“上传和分享你的照片”。
注意:您不需要gettext编辑器来执行此操作,但请确保一定要使用双引号。如果您需要在msgstr
中使用双引号,请使用\"
(转义双引号)。
性能方面[¶]( /Customization/Language strings/#_3)
也许你知道这样做的影响,但是不要担心。Chevereto使用翻译缓存,因此无法对系统产生影响,因此您可以随意添加许多自定义语言字符串。
路由¶
Routes指的是虚拟路径,如/dashboard
,它在系统中不作为真实文件夹存在,Chevereto将该请求映射到PHP。默认情况下,Chevereto附带了许多路由,所有路由都在/app/routes
文件夹中。
如果您想添加自己的api或更改默认/image
路由的工作方式,那么自定义路由非常有用。使用此系统,您根本不需要插件,您可以通过添加路径或覆盖现有路径来高度自定义任何内容。
添加或覆盖路由¶
您可以完全覆盖默认路由并且安全添加自己的新路由。要做到这一点,只需在app/routes/overrides
文件夹中完成工作。您需要多看看默认的路线来适应它。
您可以在app/routes/overrides
文件夹中随心所欲地进行任何操作,您的更改不会打乱默认路由,并且在更新脚本时会保留您的更改。
路由是G\Library的一项功能,因此您应该查看G\Library文档,了解有关系统路由的详细信息。
拓展
外部存储[¶]( /Extend/External storage/#_1)
外部存储的工作方式与计算机添加网络驱动器相似,上传的文件将会储存在外部存储,而不是储存在你的网站的本地硬盘,这有助于降低服务器的负载,提高网站的可靠性。
如何工作[¶]( /Extend/External storage/#_2)
系统不会将文件储存在服务器的硬盘中,而是将文件储存在外部存储的服务器中。Chevereto会将每张图片与其相应的存储系统相匹配,并且它将使用给定的URL来定位该图片。所有的Chevereto系统工作方式都完全相同。
搭建外部存储[¶]( /Extend/External storage/#_3)
在Chevereto添加外部存储,您可以按照如下步骤:
- 首先,在仪表板>设置中找到外部存储。
- 点击“添加存储”。
- 填写相应的信息,点击提交就可以了。
如果存储凭证正确则会添加储存,然后您可以在已激活的复选框选择启用或者禁用该存储。如果没有设置存储,则系统会默认使用本地服务器存储。
可支持的云存储[¶]( /Extend/External storage/#_4)
- [Amazon S3]( /Extend/External storage/#amazon-s3)
- [谷歌云端存储]( /Extend/External storage/#_5)
- OpenStack (like [RunAbove]( /Extend/External storage/#openstack-runabove))
- Azure
- Alibaba Cloud
- Backblaze B2
- S3 clone (like DreamObjects)
- FTP
- SFTP
AMAZON S3[¶]( /Extend/External storage/#amazon-s3)
首先,你需要一个亚马逊云服务 (AWS)的账号。如果配置Amazon S3,您可以参照一下步骤:
1 从身份和访问管理创建访问凭证
- 点击“创建新用户”并且创建您的Chevereto S3用户,确保能够“访问程序”
- 接下来储存你的Access Key ID和Secret Access Key 。
- 点击新建用户,然后转到权限选项
- 点击“附加政策”,添加AmazonS3FullAccess政策
2 从 S3 控制台创建储存库
- 点击“创建储存库”并继续创建储存库
- 设置储存库的名字和地区
- 不需要设置日志记录
3 将S3储存添加到Chevereto
- 在 仪表板 > 设置 中找到 外部存储。
- 点击“添加存储”。
- 一一与上述步骤获得的信息对应,填写到相应的位置。
如果您想要自定义域名,请参考 CNAME文档。此外确保你的[储存链接]( /Extend/External storage/#_6) 结尾为 /<yourbucketname>/
谷歌云端存储[¶]( /Extend/External storage/#_5)
你需要一个谷歌账号,并且激活云端储存。配置谷歌云端存储,可以参考以下步骤:
- 创造一个项目。
- 转到“API和服务”信息中心,确认已启用“谷歌云端储存 JSON API”。
- 找到“API和服务”下的凭证,点击“创建凭证”,然后点击“账号秘钥服务”。
- 确保已经配置以下信息
- 选择您的服务账号或者创建一个新的账号。
- 秘钥类型:JSON
- 您的浏览器将会开始下载JSON秘钥文件,在之后的储存表单中填写对应的秘钥。
- 转回到“存储”,然后点击“浏览器”。
- 单机“创建储存库”创建一个储存库,这是之后Chevereto上传图像的地方。
OPENSTACK (RUNABOVE)[¶]( /Extend/External storage/#openstack-runabove)
OpenStack配置因供应商的不同而又差异。以下操作步骤是配置RunAbove成功的案例。
- 链接地址:https://auth.Runabove.io/v2.0
- 用户姓名:你的RunAbove用户名
- 密码:你的RunAbove密码
- 地区:
SBG-1
orBHS-1
,这是创建储存库的数据中心。 - 储存库:你创建储存库的名字。
- 租户ID:无
- 租户名称:你的项目ID,在位于左侧的OpenStack Horizon处可以找到(当前项目)
- 链接:访问储存库的链接(请参考 RunAbove CNAME)
储存链接[¶]( /Extend/External storage/#_6)
储存链接是Chevereto用于匹配储存文件与指定储存位置的链接,可以是直接链接,CNAME 链接,CDN链接或者任何可以解析图片请求的链接。这就意味着您可以自定义储存的链接。
我们建议您使用与您域名相匹配的网址,尽量利用CNAME 记录.。
CDN额外外部存储[¶]( /Extend/External storage/#cdn)
由于您可以自定义储存的链接的原因,您可以轻松地为每个要是用的图片存储连接添加CDN。您只需要转到CDN提供程序为原始的储存链接创建一个拉区。
如果您使用的是Amazon S3,则源链接将如下所示:
http://s3.amazonaws.com/my-bucket/
如果您使用的是CDN,链接将是这样:
http://pullzone-url.at.cdn-service.com/
通过CNAME的记录,您最终得到如下内容:
http://s3-cdn.mydomain.com/
插件下载[¶]( /Extend/Upload plugin/#_1)
Popup Upload Plugin(PUP)是一个小插件,允许使用Chevereto作为图床的网站可以通过一个小小的JavaScript文件提供外部图像上传。自版本3.10.2起,默认情况下所有基于Chevereto的网站都启用了PUP,启用后,您的网站上的/plugin
将提供说明。
PUP将用户可编辑的内容与上传按钮绑定,点击该按钮可出现图像上传对话框,并自动处理图片插入所需的代码。最终用户将体验流畅而简洁的流程而无需离开原始网站。
设备支持[¶]( /Extend/Upload plugin/#_2)
无论用户设备(包括移动设备)如何,PUP都可以在Web浏览器(HTML 5)中使用。它已经过测试并且经过确认适用于Windows,Mac,Linux和Android(Chrome)。
安装[¶]( /Extend/Upload plugin/#_3)
您可以将以下代码复制到目标网站的任何HTML部分,轻松地进行基本安装。当然了,您还可以在此代码的基础上添加自定义选项。
<script async src="//demo.chevereto.com/sdk/pup.js" data-url="https://demo.chevereto.com/upload"></script>
**注意:**您需要编辑src和data-url以匹配您的Chevereto网站。
PUP在DOM上运行,因此它没有任何服务器端依赖项,可以安装在任何网站上。
自定义[¶]( /Extend/Upload plugin/#_4)
所有插件的自定义都是通过添加到PUP基本代码的数据属性来处理的。例如,要使用红色调色板,代码应如下所示:
<script async src="//demo.chevereto.com/sdk/pup.js" data-url="https://demo.chevereto.com/upload" data-palette="red"></script>
这适用于所有PUP选项。格式为data-key,其中key是目标选项键,在这种情况下,palette选项被声明为数据选项板的属性值。
选项[¶]( /Extend/Upload plugin/#_5)
以下是所有可用插件键选项的列表:
url | Chevereto网站的URL。 |
---|---|
palette | 按钮的命名调色板或逗号分隔的颜色列表(HEX,RGB等)。使用逗号分隔的颜色列表时,系统会将每种颜色绑定到可以与自定义CSS一起使用的%n颜色索引(从%1开始)。可支持的调色板名称列表:default , clear , turquoise , green , blue , purple , darkblue ,yellow , orange , red , grey , black . |
auto-insert | 将代码嵌入到目标可编辑内容中自动插入。默认bbcode-embed-medium 。使用完整,中等或缩略图的代码将链接到图像查看器页面。使用0 可禁用自动插入。支持的嵌入代码字符串: viewer-links direct-links html-embed html-embed-full html-embed-medium html-embed-thumbnail bbcode-embed bbcode-embed-full bbcode-embed-medium bbcode-embed-thumbnail markdown-embed markdown-embed-full markdown-embed-medium markdown-embed-thumbnail |
sibling | Sibling CSS选择器将其作为对插入按钮的DOM节点的引用。默认情况下,该按钮将置于可编辑内的状态。定义sibling时,插件将搜索该元素,并将其用作按钮作为参考插入的。Value为css-selector 。 |
sibling-pos | 相对于sibling的位置,放置按钮。Defaultafter ,Valuebefore ,after 。 |
vendor | 对供应商字符串命名。默认为自动。支持的供应商字符串:bbpress,discourse,discuz,ipb,mybb,nodebb,phpbb,smf,vanilla,vbulletin,woltlab,xenforo |
mode | 插件模式。默认情况下,插件绑定到任何匹配的编辑器框。使用manual 模式显式插入按钮并停止任何自动绑定。Defaultauto 。Valueauto,manual 。 |
target | 可编辑内容的CSS选择器。手动插入按钮时使用它。Defaultauto 。Valuecss-selector 。 |
lang | 用于双字母和四字母语言代码的按钮语言。默认auto 。支持的语言字符串:ar,cs,de,es,fi,fr,id,it,ja,nl,pt_BR,ru,zh_CN,zh_TW |
container-class | 自定义按钮容器类名。它将%cClass绑定到模板堆栈。默认情况下,系统将使用chevereto-pup-container 。 |
button-class | 自定义按钮类名称。它将%bClass 绑定到模板堆栈。默认情况下,系统将使用chevereto-pup-button 。 |
html | 按钮的自定义HTML。有关详细信息,请查看[自定义HTML和CSS部分]( /Extend/Upload plugin/#htmlcss)。 |
css | 插件按钮的自定义CSS。有关详细信息,请查看[自定义HTML和CSS部分]( /Extend/Upload plugin/#htmlcss)。 |
fit-editor | 一个布尔值,表明插件是否适合目标编辑器工具栏的按钮。Value0 (禁用),1 (启用)。禁用时,插件将不适合目标编辑器的按钮样式(覆盖仅对受支持的供应商有效)。 |
observe | 点击事件上的元素的CSS选择器将触发silbing观察,然后插入按钮。对于动态生成编辑器代码的动态编辑器很有用。Valuecss-selector 。 |
observe-cache | 一个布尔值,指明是否应该缓存匹配的观察元素。默认值1 .值0 (禁用),1 (启用)。启用后,它将不在观察匹配的观察元素单击事件。如果编辑器是动态生成的并且未存储为DOM节点,则始终禁用监察缓存。 |
自定义HTML和CSS[¶]( /Extend/Upload plugin/#htmlcss)
PUP支持自定义模板,它包括模板占位符。模板占位符是PUP将转换为可用标记的特殊字符串。以下可用的模板占位符列表:
%x | PUP按钮监视(必须用于触发按钮动作) |
---|---|
%cClass | 容器类名 |
%bClass | 容器类名 |
%iClass | 图标类名 |
%iconSvg | 以即用型SVG HTML标签的形式的矢量图标 |
%text | 翻译按钮 |
对于自定义CSS,您还可以使用%n形式的调色板占位符,其中n是调色板索引,因此它绑定%1,%2,...,%n
占位符。
自定义HTML可以将模板字符串指示作为选项属性来工作。在下面示例中,这是我们要使用的自定义HTML:
<a %x title='%text' class='%bClass'>%iconSvg</a>
要使用此模板,只需将data-html
直接插入到插件的代码中
<script async src="//demo.chevereto.com/sdk/pup.js" data-url="https://demo.chevereto.com/upload" data-html="<a %x title='%text' class='%bClass'>%iconSvg</a>"></script>
自定义CSS与自定义HTML完全相同,但它使用data-button-css
和调色板占位符(%1,%2,...,%n)
。在下面示例中是我们要使用的自定义CSS:
li.%cClass .%bClass{background:%1;color:%2;text-indent:unset;border-radius:3px;position:relative}li.%cClass a.%bClass:hover{background:%3;color:%4;border-color:%5}.%cClass .%bClass svg{font-size:15px;width:1em;height:1em;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);position:absolute;left:50%;top:50%;fill:currentColor}
要使用此模板,只需将data-css
插入到插件代码中:
<script async src="//demo.chevereto.com/sdk/pup.js" data-url="https://demo.chevereto.com/upload" data-css="li.%cClass .%bClass{background:%1;color:%2;text-indent:unset;border-radius:3px;position:relative}li.%cClass a.%bClass:hover{background:%3;color:%4;border-color:%5}.%cClass .%bClass svg{font-size:15px;width:1em;height:1em;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);position:absolute;left:50%;top:50%;fill:currentColor};"></script>
**重要提示:**对于自定义HTML和CSS,请确保在使用引号时符合正确的语法。
按钮手动绑定[¶]( /Extend/Upload plugin/#_6)
如果要手动绑定按钮,只需创建自己的按钮,然后确认添加data-chevereto-pup-trigger
和data-target
属性。以下是手动插入按钮的示例:
<div id="editor" contenteditable></div>
<button data-chevereto-pup-trigger data-target="#editor">Custom button</button>
手动插入的按钮可以获得相同的弹出对话框功能和绑定功能。但是,手动插入的按钮不会使用任何插件选项或模板。
核心功能[¶]( /Extend/Upload plugin/#_7)
该插件具有非常简洁的功能,并利用现代标准提供其核心功能。以下是PUP核心的一些特征。
原生JAVASCRIPT[¶]( /Extend/Upload plugin/#javascript)
PUP是用JavaScript编写的,它不需要任何外部库或服务器模块。代码量大约是18KB,gzip压缩后应该只有6KB左右。使用 Google Closure compiler编译器缩小源代码量,但不触及对象名称,因此您可以检查源代码而且轻松地理解代码。
它工作异步,因此对插入代码的位置选择并不重要,它根本不会阻止目标网站的负载。
智能负载和动态触发观察器[¶]( /Extend/Upload plugin/#_8)
PUP设计用来监视DOM,直到目标关联元素可用,如果一旦发生这种情况,它将启动其进程,停止任何其他DOM节点观察。对于动态生成的编辑框,PUP有一个自由的加载选项,可以监视自定义在选择器元素上的click事件。任何对该元素的点击都会触发PUP的相关联的监视行为,并且会在找到相应元素后立即停止。这使得PUP可以在静态或动态编辑器框中工作。
由于一些动态编辑框只会出现一次,然后存储为DOM节点(XenForo),而其他动态编辑框将始终重新解析(Discourse,NodeBB),您可以设置PUP是否应该缓存察觉到的触发绑定。XenForo,Discourse和NodeBB供应商配置为察觉特定选择(observe certain selectors) ,以防止你想要了解其工作原理。
CLOSURE[¶]( /Extend/Upload plugin/#closure)
源代码都封装在JavaScript 的closure中,使内部变量无法调整。这大大避免了利用浏览器控制台漏洞或者通过DOM操作被劫持的风险。此外PUP处理的所有变量不会与目标网站上运行的任何脚本冲突。
POSTMESSAGE[¶]( /Extend/Upload plugin/#postmessage)
PUP使用 postMessage API与Chevereto网站保持活跃的通信。此外,使用此API可以安全地处理选项和嵌入的代码,限制发布的消息的来源,并且最重要的是,PUP会验证每条消息以确保不会对这些消息进行调整。PUP只会接收来自目标Chevereto网站的消息。
多个实例[¶]( /Extend/Upload plugin/#_9)
PUP支持多个无限实例。您可以同时使用多个按钮,并使用GUID算法引用到所有实例的ID。
缓存模板[¶]( /Extend/Upload plugin/#_10)
PUP将会缓存按钮模板,因此不会不必要地重新处理模板占位符。即使在多个实例中,也可以提供超快的性能。
批量内容导入[¶]( /Extend/Bulk content importer/#bulk-content-importer)
Bulk content importer 是一个通过解析文件系统文件夹的内容,将图像,相册和用户大量插入以Chevereto为框架的网站的工具.
如何工作[¶]( /Extend/Bulk content importer/#_1)
批量内容导入程序扫描目标目录并相应地创建内容。该过程可以在可配置的并行线程中生成,因此您可以充分利用服务器硬件,并可以在更短的时间内运行大型导入工作。
图像文件将上传到现有的本地/远程存储库,用户设置信息(头像和背景图像)将上传到系统用户文件夹。
该进程将删除导入目录及其内容。如果出现问题,请确保您有副本。
如何使用[¶]( /Extend/Bulk content importer/#_2)
您可以通过导航到仪表板/批量来使用页面下使用该工具(版本需要3.12.0)。在批量导入程序页面中,您将能够添加并能管理当前导入工作。
目录结构[¶]( /Extend/Bulk content importer/#_3)
由于基于文件夹的结构,所以允许添加用户和相册。即使没有基于文件夹的结构,图像也会被解析。不过请注意,其他文件夹级别将被省略。
顶级文件夹作为用户[¶]( /Extend/Bulk content importer/#_4)
顶级文件夹被解析为用户,由用户名标识。用户文件夹中的任何内容都绑定到此用户。二级文件夹被解析为用户相册。目录结构:< username ><album>filename.jpg
顶级文件夹作为相册[¶]( /Extend/Bulk content importer/#_5)
顶级文件夹被解析为访客相册。相册文件夹中的任何图像都绑定到此相册。目录结构://filename.jpg
元数据[¶]( /Extend/Bulk content importer/#_6)
(可选)您可以使用JSON定义元数据(描述其他数据的数据)。必须按内容提供元数据,这意味着您必须为每张图片添加一个元数据文件。
元数据信息合并正在解析的内容,因此您不需要指示所有元数据属性,只需要指定要添加的内容。
图像元素据[¶]( /Extend/Bulk content importer/#_7)
图像元数据必须以 .json(同一目录)的形式提供。//example.jpg的元数据必须在//example.json中定义:
{
"imageData": {
"title": "Pewito color cafe",
"description": "Podemos apreciar un pewito de color cafe",
"nsfw": false,
"category": {
"name": "Animals",
"urlKey": "animals",
"description": "Images of animals from all around the globe"
}
}
}
当您同时提供名称和urlKey时,将自动添加缺少的类别。
相册元数据[¶]( /Extend/Bulk content importer/#_8)
您必须在相册文件夹中提供相册元数据。//metadata.json:
{
"albumData": {
"title": "Detroit Rock City (KISS)",
"description": "Pics from last concert in Detroit.",
"access": "private",
"privacy": {
"type": "password",
"password": "12345"
}
}
}
用户元数据[¶]( /Extend/Bulk content importer/#_9)
您必须在用户文件夹中提供用户元数据。//metadata.json:
{
"userData": {
"role": "user",
"name": "Peter Jackson",
"username": "peter",
"email": "peter@welcometomordor.com",
"website": "http://hereibringyouthestuffpeter.com",
"bio": "Maker of TLOTR and that other movie",
"profileImages": {
"avatar": "7Ns6rtiI_400x400.jpg",
"background": "1500x500.jpg"
},
"networks": {
"facebook": "peterj",
"twitter": "peterjk"
},
"timezone": "Pacific/Auckland",
"language": "en",
"private": false
}
}
配置文件图像必须位于用户文件夹内的.assets文件夹中。
图像资源的文件名和类型必须是安装处理的文件格式之一。
处理[¶]( /Extend/Bulk content importer/#_10)
如果您要启动导入任务,请单击“操作”菜单下的“处理”。在那里,您必须选择要用于该过程的线程数,您选择的线程数越多,流程就越密集。
您的服务器限制每个客户端的最大并发连接数。确保您的服务器可以支持您要生成的线程数。
状态[¶]( /Extend/Bulk content importer/#_11)
导入工作状态定义如下:
- 排队:工作处于进程队列中(默认状态)。
- 工作:正在解析工作内容。
- 暂停:暂停处理。
- 已取消:此项进程已被用户中止。
- 完成:处理完成。
启动处理后,此时状态将变为“正常”。如果您想要放弃此项进程,此项进程将会被锁定。片刻之后,状态将变为“暂停。
查看日志[¶]( /Extend/Bulk content importer/#_12)
整个导入过程记录在位于/ app / import / jobs / / logs /的文本文件中。您可以在低端的process.txt和error.txt来获取导入过程的实时状态。您还可以通过单击“操作”菜单来访问这些日志。
CloudFlare是一种反向代理,广泛地应用于网站加速和提高网站的安全性。Chevereto中的CloudFlare的实现仍在进行中,因此某些功能可能无法按预期实现,但大多数的功能已经可以正常运行。
启用CloudFlare¶
要启用CloudFlare,您只需要创建一个账号并按照步骤操作就可以了。值得注意的是,您需要对您的网站DNS进行一些更改。一些托管公司与CloudFlare建立了合作关系,您可以直接从您的托管账号中启用CloudFlare。
CloudFlare HTTPS¶
CloudFare提供了大量的HTTPS的解决方案,您可以轻松的打开或关闭网站上的SSL。根据您要处理的证书类型,他们提供了“灵活”,“完整”的SSL变体。要启用HTTPS,请按以下步骤操作:
- 转到您的网站。
- 点击齿轮图标,然后选择“CloudFlare设置”。
- 在下边找到SSL部分,然后选择您的配置。
强制 使用HTTPS¶
默认情况下,CloudFlare HTTPS不会强制所有流量通过HTTPS。如果要强制HTTPS,请按照如下操作:
- 登录您的网站
- 登记齿轮图标并选择“页面选择”。
- 在链接模式中输入您的网站
- 切换“始终使用HTTPS”开关
- 点击底部的“添加规则”
通过如上操作,您的网站所有流量都将使用HTTPS。当有人使用HTTP访问您的网站时,CloudFlare会将这些请求重新定向到HTTPS.
更多帮助¶
如果您需要更多帮助,请访问CloudFlare Support。当然了您也可以联系 Chevereto support ,我们将为您提供优质的服务。
内容交付网络(CDN)¶
内容交付网络是一个通过在多个边缘服务器之间分发您的内容来卸载您的网站的系统。当您使用CDN时,内容将缓存在此网络中,并使用最近的边缘服务器进行传送,而不是直接访问服务器中的内容。如果您想了解更多信息,可以查看 维基百科CDN 。
本文档引用了本地存储的CDN。对于外部存储上的CDN,请查看此链接。
如何工作¶
CDN服务通过使用“拉区”来工作,在您设置时,将会为您提供“CDN URL”或者“拉区链接”。提供的链接将用于替换静态内容中常规的链接。例如,假设您可以使用以下URL访问服务器中的图像:
http://demo.chevereto.com/image/picture.jpg
当您在Chevereto中打开CDN时,系统将使用CDN 链接替换您的默认链接,因此显示的链接将为
http://pullzone-url.at.cdn-service.com/image/picture.jpg
根据您的使用源(服务器的链接)将内容缓存到CDN上。整个过程需要利用时间来显示用户的最终修改,具体取决于您的网站内有多少活动。
启用CDN方法¶
首先,您需要在CDN提供商中创建一个拉区。要在Chevereto中启用CDN,请按如下步骤:
- 在仪表盘中>设置中找到外部服务.
- 在CDN菜单中“启用”CDN"
- 填写CND链接
- 保存修改
自定义域(CNAME记录)¶
您的CDN供应商会为您提供一个U链接,用于从您的网站提取内容并将其放入CDN。他们很可能会给你一个像如下这样的长网址:
http://pullzone-url.at.cdn-service.com/
您可以使用大多数CDN供应商提供的CNAME记录,因此您最终会得到如下链接:
http://cdn.mydomain.com/
使用CNAME的好处是,当您更改CDN的供应商时,更改过程将是无缝链接的,并且URL将会继续工作,并且没有任何更改。此外,如果您选择关闭CDN,只需将CNAME更改为您的域名,其他一切配置都将继续有效。在此,我们强烈建议您将CDN与CNAME一起使用。
有关如何使用CNAME记录的说明,请咨询您的CDN提供商。
ShareX¶
ShareX 是一个Windows实用程序,您可以将图像,截屏,文本和其他类型的内容上传到多个提供的程序。借助[Chevereto API]( /API/API V1/),您可以轻松地在Chevereto网站上使用通过ShareX从您的计算机上传图像。
下载ShareX¶
ShareX是免费的开源软件。您可以从ShareX官方网站上下载,下载后将其安装到您的电脑中。
将Chevereto添加到ShareX¶
从ShareX版本9.4.0开始,您只需:
- 找到image destination地设置
- 选择«Chevereto»
- 填写您的网站信息
对于ShareX旧版本,您需要手动将Chevereto导入ShareX。首先请将以下代码块复制并进行编辑,以匹配您的Chevereto安装。
{
"Name": "Chevereto",
"RequestType": "POST",
"RequestURL": "http://mysite.com/api/1/upload", // edit this
"FileFormName": "source",
"Arguments": {
"key": "your API key goes here", // edit this
"format": "redirect",
"source": "%input"
},
"ResponseType": "RedirectionURL",
"RegexList": [],
"URL": "",
"ThumbnailURL": "",
"DeletionURL": ""
}
准备好编辑的代码后,请复制所有代码并按照如下步骤:
- 打开ShareX
- 点击“目标”,然后转到“目标设置...”
- 向下滚动并点击“自定义上传”
- 点击“导入”,然后点击“从剪贴板”(位于左侧的列)
您将看到代码块中的信息已添加到ShareX。单击“图像上传器”部分旁边的“测试”。您可以在“测试结果”日志中看到如下的内容:
URL: http://mysite.com/image/<id>
如果一切正确,您将看到ShareX已准备好直接上传到您的Chevereto网站。
将图像上传到用户帐号¶
Chevereto API V1可以将图像作为访客上传。如果要将图像上传到指定用户,请查看 [API用户上传解决方法]( /API/API V1/#_4)。
更多帮助¶
有关于ShareX和Chevereto的更多帮助,请参考 ShareX and Chevereto。
展望[¶]( /Extend/Going big/#_1)
托管一个庞大的图像托管网站可能是一个非常具有挑战性和难以实现的东西。作为Chevereto的开发者,我们非常关心这件事,不过我们已经为您准备好方法指南。在您尝试实现这一目标之前,您需要先了解一些事项。
服务器[¶]( /Extend/Going big/#_2)
更多用户意味着更多服务器负载和数据处理。任何大型图片托管网站都需要某种硬件才能正确地运行所有功能,以至于不会出现延迟或停机。使用拥有大量服务器资源的专用机器,再加上一个良好的网络线路和专业配置,这一定是一个良好的开端。
您应该考虑如下的服务器优化内容:
- NGiNX或任何具有Micro-cache的优化服务器
- OPCache或任何具有类似PHP的优化器
- 可以阻止恶意请求的IP地址
- 用于发送交易电子邮件的Mandrill或任何具有类似的SMTP API
- 高端的服务器硬件
由于所有的图像处理,数据存储等等其他处理都在服务器上运行,因此最好尽量利用服务器所有负载。同时,其他有利于利用服务器负载的方法都要必须考虑,例如使用[外部存储]( /Extend/Going big/#_2)和或者启用[CDN]( /Extend/Going big/#cdn)。
外部储存[¶]( /Extend/Going big/#_3)
当你的图床网站越做越好时,外部存储至关重要的,这样使您能够在多个服务器之间分配存储,降低主服务器的压力。这意味着数千人上传的所有图片将被分配到不同的储存空间,而不仅仅是一台服务器。这有助于使用服务器带宽并且能够从庞大的I / O中释放空间。如果您想要实现,可以点击 [存储文档]( /Extend/External storage/)来开始使用。
内容交付网络(CDN)[¶]( /Extend/Going big/#cdn)
CDN一个优化器,就像外部存储一样。它基于分布式全局请求缓存,可以使您的网站更快地被访问,当然了,它也可以利用服务器负载。除此之外,您也可以使用CDN来提供主服务器(JS,CSS等)的所有静态本地文件,这样会使您的网站加载速度更快,而速度的快慢具体取决于CDN中继。
您还可以在每个外部存储服务器的顶部使用CDN,有助于提高速度和可靠性。有关此内容的更多信息,请查看 CDN文档。
软件更新[¶]( /Extend/Going big/#_4)
每个软件或脚本系统都处于一个不断发展的过程,因此我们建议您尝试不断更新软件。使Chevereto保持良好的系统性能,一直是我们的主要目标之一,因此我们强烈建议您使用最新的稳定版本更新您的网站。
值得注意的是,服务器依赖项和库始终在更新,但对于服务器运行,您应该选择稳定且经过测试的版本。如果您知道自己想要做什么,可以冒险一试,否则不要轻易在您的网站上尝试实验版本。
其他[¶]( /Extend/Going big/#_5)
在脚本层,总是有一些有益于系统性能优化的改进,如果您发现可以优化的功能或其他东西,请不要犹豫,让我们知道,我们衷心的感谢。
API介绍¶
Chevereto的应用程序编程接口(API)允许开发者使用标准化方法在其应用程序中使用Chevereto。换句话说就是它允许你以编程方式使用一些Chevereto的功能。 现在最新的Chevereto是Chevereto API v1,支持从文件,base64或者图片的链接进行上传。在未来,我们将添加一个API v2,它将具有更多的方法模式、每个用户、速率限制和更多的功能。
API V1[¶]( /API/API V1/#api-v1)
Chevereto API v1(也被称为Bridge API)允许访客上传图片到你的Chevereto驱动的网站上。被称为Bridge API的是因为它与Chevereto 2.X版本中的内容几乎完全一样而且还是向未来版本二的一个过渡。
API的V1版本没有速率限制,但是会受到仪表盘中设置的最大上传限制的影响。因此,你应该只在自己的应用程序或脚本使用此API
API密匙[¶]( /API/API V1/#api)
API版本一使用一个API密匙,你可以在仪表盘 > 设置 > API里面设置。
调用API[¶]( /API/API V1/#api_1)
请求方法[¶]( /API/API V1/#_1)
API v1调用可以使用POST或GET请求方法来完成,但是由于GET请求受URL允许的最大长度限制,您应该更多的使用POST请求方法。
请求网址[¶]( /API/API V1/#_2)
http://mysite.com/api/1/<action>/
参数[¶]( /API/API V1/#_3)
密匙: API版本一的密匙,它可以在你的管理员设置面板进行设置。
操作: 你想做什么 [values: upload].
来源: 图像URL或base64编码的图像字符串。您还可以在请求中使用文件["source"]。
格式: 设置返回格式[values: json (默认的), redirect, txt].
示例调用
GET http://mysite.com/api/1/upload/?key=12345&source=http://somewebsite/someimage.jpg&format=json
注意:注意:上传本地文件时一定要使用POST。Url编码可能会由于编码的字符或仅仅由于GET请求的Url请求长度限制而更改base64源。
API响应[¶]( /API/API V1/#api_2)
API v1的响应将根据参数的格式不同而有所不同:。
json 以JSON格式显示所有图像上传信息。[默认]
txt 直接返回图片的链接,以txt/plain的格式
重定向 重定向到图片的链接(应该是跳转的意思)
当使用json的方式时,API响应将会有头状态代码,允许您轻松地注意请求是否成功。它还将输出status_txt
和status_code
属性。
示例响应(json)
{
"status_code": 200,
"success": {
"message": "image uploaded",
"code": 200
},
"image": {
"name": "example",
"extension": "png",
"size": 53237,
"width": 1151,
"height": 898,
"date": "2014-06-04 15:32:33",
"date_gmt": "2014-06-04 19:32:33",
"storage_id": null,
"description": null,
"nsfw": "0",
"md5": "c684350d722c956c362ab70299735830",
"storage": "datefolder",
"original_filename": "example.png",
"original_exifdata": null,
"views": "0",
"id_encoded": "L",
"filename": "example.png",
"ratio": 1.2817371937639,
"size_formatted": "52 KB",
"mime": "image/png",
"bits": 8,
"channels": null,
"url": "http://127.0.0.1/images/2014/06/04/example.png",
"url_viewer": "http://127.0.0.1/image/L",
"thumb": {
"filename": "example.th.png",
"name": "example.th",
"width": 160,
"height": 160,
"ratio": 1,
"size": 17848,
"size_formatted": "17.4 KB",
"mime": "image/png",
"extension": "png",
"bits": 8,
"channels": null,
"url": "http://127.0.0.1/images/2014/06/04/example.th.png"
},
"medium": {
"filename": "example.md.png",
"name": "example.md",
"width": 500,
"height": 390,
"ratio": 1.2820512820513,
"size": 104448,
"size_formatted": "102 KB",
"mime": "image/png",
"extension": "png",
"bits": 8,
"channels": null,
"url": "http://127.0.0.1/images/2014/06/04/example.md.png"
},
"views_label": "views",
"display_url": "http://127.0.0.1/images/2014/06/04/example.md.png",
"how_long_ago": "moments ago"
},
"status_txt": "OK"
}
示例响应(txt)
http://127.0.0.1/images/2014/06/04/example.png
上传到用户的解决方案[¶]( /API/API V1/#_4)
API V1没有办法上传与给定用户相关联的图像,但是你可以覆盖默认的API,将默认的app/routes/route.api.php
的文件复制到app/routes/overrides/route.api.php
文件夹。
把这个
CHV\Image::uploadToWebsite($source);
改成这个(将juanito更换成目标用户名或用户id)
// 这将会为juanito用户上传图片
CHV\Image::uploadToWebsite($source, 'juanito');
通过这一步,/api
路径(来源于app/routes/overrides/route.api.php
)将以该用户的名称上载图像。
使用不同的API密匙[¶]( /API/API V1/#api_3)
如果你想在这个新的自定义API中使用不同的API密匙,只需将这个:
!G\timing_safe_compare(CHV\getSetting('api_v1_key'), $_REQUEST['key'])
修改成
!G\timing_safe_compare('NowThisIsAnotherAPIKEY!', $_REQUEST['key'])
多个API[¶]( /API/API V1/#api_4)
你只需要在app/loader.php
上执行一些编辑,就可以使用多个api 由于此文件处理一些预路径,您需要将自定义路径添加到所有提到api的条件中。
安全配置[¶]( /Other features/Security/#_1)
Chevereto系统包含安全设置板块,使你拥有一个更安全,更值得信赖的图床网站。
ID编码[¶]( /Other features/Security/#id)
通过对Chevereto的公共ID编码避免了被一一列举的麻烦和不必要的错误链接。所有使用Chevereto的用户,以及其图片和相册都会被编码,对其链接进行加密。
ID的编码/解码[¶]( /Other features/Security/#id_1)
ID的编码/解码在你安装Chvereto的时候就已经执行了。每当你安装Chvereto时,系统会随机生成一个“crypt_salt”,通过CHV\encodeID()
和 CHV\decodeID()
这两个函数,将数据库中储存的数字ID转化为更安全的字母数字ID,这也就意味着公共的ID会随着每次安装而改变。
跨站点请求伪装[¶]( /Other features/Security/#_2)
跨站点请求伪装,简称CSRF,是一种未经用户许可,从远程网站传输指令欺骗网站的网站攻击手段。例如,自动删除请求内容。
跨站点请求伪装的保护[¶]( /Other features/Security/#_3)
Chevereto的跨站点请求伪装保护基于令牌请求的使用。令牌请求在网站加载时由会话设置,并询问何时发出请求。如果令牌与会话不匹配,则表示会话未发起请求,系统会默认返回403 错误。
加密[¶]( /Other features/Security/#_4)
Chevereto使用 BCrypt加密方法来储存密码和Cooike登录的个数。社交登录和“保持在线”功能则是使用BCrypt和随机方法组合的办法来加密。
验证码[¶]( /Other features/Security/#_5)
Chevereto 添加了对 reCAPTCHA的支持,可以有效阻止注册、尝试暴力破解用户密码的非法机器人。在仪表板>设置>外部服务中,您可以启用或禁用验证码,并设置触发验证码的无效尝试次数。
无效请求[¶]( /Other features/Security/#_6)
无效请求是指一个用户输入错误的密码或者CSRF令牌不匹配。每一次发生的无效请求,系统会默认记录该用户的IP地址,并记录下触发该无效请求的操作行为。
系统中有一个强大的编码设置,用来限制每天无效请求的出现次数。当用户的无效请求次数超过每天最大无效请求次数时,系统将会拒绝24小时内来自任何IP地址的请求。系统默认的最大无效请求次数为25次,当然了,你可以修改在 /app
目录下的loader.php
文件,自定义最大无效请求次数。
评论区