Mod_pagespeed 已启用。 FileCachePath 不能为空:

Posted

技术标签:

【中文标题】Mod_pagespeed 已启用。 FileCachePath 不能为空:【英文标题】:Mod_pagespeed is enabled. FileCachePath must not be empty: 【发布时间】:2018-02-24 05:46:43 【问题描述】:

我试图克制自己不要在 Stack Overflow 上问太多问题,但几天来我一直在尝试在我的 Apache2 服务器上启用 mod_pagespeed,并且准备开始拔头发哈哈。我安装了 mod_pagespeed 和 mod_pagespeed_ap24,虽然我的 Apache2 版本只需要 mod_pagespeed_ap24。我在 /apache2/conf/httpd.conf 中编辑了 Apache 的配置,将模块加载到

LoadModule pagespeed_module  modules/mod_pagespeed_ap24.so

我重启服务器成功,但是得到一个502 bad gateway,这个错误

[mod_pagespeed 1.12.34.2-0 @27107] mod_pagespeed is enabled. FileCachePath must not be empty: define_name=(null) defne_line_number=0 server_hostname=web551.webfaction.com port=0

我多次尝试在 linux 中编辑 mod_pagespeed 的配置文件,但没有任何效果。因此,我在 Webfaction 上创建了一个指向 static/php/cgi 的符号链接,以通过 Apache 服务器而不是他们的 nginix 服务器为我的媒体提供服务,因此我可以使用 .htaccess 文件来配置我的 Apache 服务器。但是,我仍然遇到问题。

.htaccess 文件

Options +FollowSymLinks
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpg "access 1 year"
    ExpiresByType image/jpeg "access 1 year"
    ExpiresByType image/gif "access 1 year"
    ExpiresByType image/png "access 1 year"
    ExpiresByType text/css "access 1 month"
    ExpiresByType text/html "access 1 month"
    ExpiresByType application/pdf "access 1 month"
    ExpiresByType text/x-javascript "access 1 month"
    ExpiresByType application/x-shockwave-flash "access 1 month"
    ExpiresByType image/x-icon "access 1 year"
    ExpiresDefault "access 1 month"

</IfModule>



#Begin gzip and deflate
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/css application/x-javascript text/plain text/xml image/x-icon
</IfModule>

<IfModule mod_pagespeed_ap24.c>
    ModPagespeed on
    ModPagespeedFileCachePath "/home/doc4design/var/cache/mod_pagespeed"
    ModPagespeedEnableFilters rewrite_css,combine_css
    ModPagespeedEnableFilters recompress_images
    ModPagespeedEnableFilters convert_png_to_jpeg,convert_jpeg_to_webp
    ModPagespeedEnableFilters collapse_whitespace,remove_comments
</IfModule> 

Apache httpd.conf

ServerRoot "/home/doc4design/webapps/django_2016/apache2"

LoadModule authz_core_module modules/mod_authz_core.so
LoadModule dir_module        modules/mod_dir.so
LoadModule env_module        modules/mod_env.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module       modules/mod_mime.so
LoadModule rewrite_module    modules/mod_rewrite.so
LoadModule setenvif_module   modules/mod_setenvif.so
LoadModule wsgi_module       modules/mod_wsgi.so
LoadModule unixd_module      modules/mod_unixd.so
LoadModule pagespeed_module  modules/mod_pagespeed_ap24.so

LogFormat "%X-Forwarded-Fori %l %u %t \"%r\" %>s %b \"%Refereri\" \"%User-Agenti\"" combined
CustomLog /home/doc4design/logs/user/access_django_2016.log combined
ErrorLog /home/doc4design/logs/user/error_django_2016.log

Listen 30651
KeepAlive Off
SetEnvIf X-Forwarded-SSL on HTTPS=1
ServerLimit 1
StartServers 1
MaxRequestWorkers 5
MinSpareThreads 1
MaxSpareThreads 3
ThreadsPerChild 5

WSGIDaemonProcess django_2016 processes=2 threads=12 maximum-requests=100 python-path=/home/doc4design/webapps/django_2016:/home/doc4design/webapps/django_2016/doc4_2016:/home/doc4design/webapps/django_2$
WSGIProcessGroup django_2016
WSGIRestrictEmbedded On
WSGILazyInitialization On
WSGIScriptAlias / /home/doc4design/webapps/django_2016/doc4_2016/webapp/wsgi.py

【问题讨论】:

您是通过deb 还是通过源安装的?当我部署Mod_Pagespeed 时,我安装了deb 并使用了sudo a2enmod pagespeed。 Mod pagespeed 会自动将一个 conf 文件放入 mods-available,因此对我来说,一个简单的 a2enmod 是可能的。一个简单的问题,您的 FileCachePath 参数是否存在文件路径(文件夹本身)? 您在serverfault.com 上提问可能比在这里问得好——严格来说,这不是一个与编程相关的问题。 【参考方案1】:

您确定路径/home/doc4design/var/cache/mod_pagespeed 存在吗?如果可以,Apache可以访问路径吗?

确认路径存在并授予www-data 的权限,或者在哪个用户下运行 apache。

【讨论】:

嘿弗雷泽,这最终成为了问题。我有 apache .htaccess 文件试图设置 FileCachePath,但它试图配置错误的服务器。我的托管服务提供商 Webfaction 使用他们自己的 Nginix 和 Apache2.4 服务器来提供应用程序、媒体和静态资产。通过直接在我的 Apache2 目录中的 httpd.conf 文件中设置路径,它解决了这个问题。

以上是关于Mod_pagespeed 已启用。 FileCachePath 不能为空:的主要内容,如果未能解决你的问题,请参考以下文章

任务输出缓存已启用,但未配置或启用构建缓存

如果已启用,如何修复“当前未启用对实验语法 'classProperties' 的支持”错误?

如何解决“已启用矢量粉碎保护”?

如何使用 Hibernate 解决错误“失败,因为启用了'在集合获取上的分页失败'已启用”?

要启用扩展,请确认它们已在您的 .ini 文件中启用 - 使用 XAMPP 的 Windows

我如何知道 SwiftUI 按钮是不是已启用/禁用?