折腾了两天,总算在IIS虚拟主机上成功安装运行了Chevereto...期间经历了数次挫败。第一天本来要放弃了,第二天又静下心来慢慢梳理,终于解决了问题,安装的过程就不详述了,主要把遇到的问题列出来,供各位参考。
一、Chevereto简介
Chevereto有两个版本,免费版可以从官网直接下载(https://github.com/chevereto),还有一个付费版,在搜索引擎上随处可见破解版本。付费版主要增加了外部存储、管理横幅、喜欢和粉丝、外部分享这几个功能。据说官方会对安装了破解版本的站点进行投诉、封站,所以如果要装破解版本,可要仔细考虑哦~~
二、安装环境
- Apache或Nginx Web服务器(推荐的服务器)
- PHP 5.6(推荐7.3)与标准库。
- MySQL 8 / MariaDB 10
因为本人建站用的是IIS虚拟主机,不在官方推荐的配置里,因为对其他图床程序都不是很满意,所以只能尝试安装一下了。
三、错误提示G\: Sessions are not working on this server due to missing write permission on session save path (php.ini session.save_path).
压缩包上传服务器,解压,打开首页就发现了这个错误,而且搜索引擎上很少能找到这个问题。后来通过研究官方文档,发现是虚拟主机的session一般在C:/Windows/Temp,而网站需要对这个temp文件夹进行读/写访问。
根据官方文档(https://chevereto.com/docs/server-issues)的提示,在app/settings.php文件内添加下面的语句,把session路径放在自己站点的文件夹里(后面的引号里填入你自己设置的路径),权限问题就搞定了!
$settings['session.save_path'] = 'D:\local\XXXX\Web\session';
另外,请把您改好的这一行文本复制做好备份,后面有用!
四、进入安装页面空白(或出现404/500页面)
Chevereto图床的伪静态特征,需要在服务器配置URL重写的文件。官方文档(https://chevereto.com/docs/requirements)只对Apache/Nginx服务器的配置进行了说明,而对于IIS服务器的伪静态规则却只字未提。
陷入再度绝望的我,终于在官网的论坛里查找到了两篇相关的资料。参考网址如下:
- https://chevereto.com/community/threads/guide-how-to-run-chevereto-on-windows-server-2008-with-iis-7.5643/
- https://chevereto.com/community/threads/chevereto-3-on-iis.4278/
根据参考资料的提示,在Chevereto程序的根目录下添加web.config文件(刚开始我加到了我虚拟主机的根目录下,又出了不少错误提示,折腾了大半天,后来才发现,文件应该放在这个程序的根目录下)。
web.config文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Importierte Regel 1">
<match url="lines" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="and" ignoreCase="false" />
</conditions>
<action type="Rewrite" url="Make" />
</rule>
<rule name="Importierte Regel 2" stopProcessing="true">
<match url="images/.+\.(gif|jpe?g|png|bmp)" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
</conditions>
<action type="Redirect" url="{R:0}" redirectType="Temporary" />
</rule>
<rule name="Importierte Regel 4" stopProcessing="true">
<match url="." ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
<add input="{URL}" pattern="\.(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|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$" negate="true" />
</conditions>
<action type="Rewrite" url="index.php" />
</rule>
</rules>
</rewrite>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="200000000" />
</requestFiltering>
</security>
</system.webServer>
</configuration>
搞定!这次终于成功打开安装页面!
五、填入数据库配置,点击下一步按钮,又出现了和之前一样的Sessions are not working on this server
这是因为数据库配置信息提交后,之前的设置文件被覆盖导致的。解决方法是:安装页面一定不要关闭(很重要),同时打开app/settings.php文件,把之前你复制的那一行追加到最后(不要覆盖已有的记录)。
编辑好的文件上传之后,刷新你刚才没有关闭的安装页面,安装就可以继续进行了。
六、样式表打不开,页面版式错乱
安装完成之后,又出现了问题!页面版式错乱,通过检查发现是.css样式表报错net::ERR_ABORTED 500 / Failed to load resource: the server responded with a status of 500 (Internal Server Error)
经过研究,发现问题最终出现在web.config文件中。在官方论坛里给出参考的伪静态规则里包括这几行:
<staticContent>
<mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
</staticContent>
这几行的含义是,在IIS中将.svg添加到MIME类型。否则.svg格式的chevereto徽标将不会显示。在MIME类型中将.svg添加为image / svg + xml。因为我的web.config伪静态规则里有这几行,才导致了css文件无法读取(推测可能是和服务器的已有配置冲突了)。
将上述几行删掉,搞定收工!成就感满满 :P
自此,Chevereto图床程序安装全部完成,剩下的就是自己的后续配置了~~