作者:亚艾元技术部
我们有一个客户,想在国庆期间关闭网站的数据库,还想让网站能够访问。这个需求在国内很常见。我们初步选定了boost模块基于Tome模块。首先尝试了Tome模块,总是报错,我检查了一下,网站升级不彻底,重新帮助客户升级到8.7.7,再安装Tome模块。在后台生成静态页面的时候,总是报错。我们研究一下,增加了日志输出。检查到了几个出错的页面:
\Drupal::logger('tome')->notice('path:'.$path); /// path:data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD… // png if(substr($path,0,11) == 'data:image/'){ return; } //可以在settings.php里面配置 $exclude_paths = [ '/wechat', '/en/wechat', ]; if(in_array($path, $exclude_paths)){ return; }
发现写的wechat模块提供的路径,匿名用户下,在tome下面报错,就把它排除出去了,还有以data:image/开头的奇怪路径也被我排除掉了。
这样批处理就可以正常运行。成功生成了静态页面。这是后面我们的tome在settings.php里面的配置:
$settings['tome_files_directory'] = '/data/8211/static/files'; $settings['tome_content_directory'] = '/data/8211/static/content'; $settings['tome_static_directory'] = '/data/8211/static/html'; $settings['tome_static_path_exclude'] = [ '/wechat', '/en/wechat', ];
生成的静态文件存在了/data/8211/static/html目录下面。我们将端口指向到这个静态文件的目录,当前使用的apache,可以直接访问,运行良好。
将同样的目录,部署到nginx下面,使用Drupal的nginx配置,是出不来的。Tome生成静态文件夹,部署到nginx下面,采用这样的配置:
location / { try_files $uri $uri/ $uri/index.html; # For Tome static html files }
这样就可以跑起来了。