存储方案--本地存储
说明
本文中的本地存储主要说明在服务器上使用nginx生成图片模块,将图片存储到服务器上。
推荐使用阿里云的OSS存储。不用频繁登录服务器管理图片,并且图片管理方便,不占用服务器空间。
准备工作
1、确保项目可以正常跑通。
2、静态页可以正常配置,并且可以生成。
3、lua脚本可以正常使用
配置操作
一、查看现有的OpenResty+nginx套件是否已经支持http_image_filter_module模块
/usr/local/openresty/nginx/sbin/nginx -V
二、给nginx添加http_image_filter_module模块
1、下载编译环境
yum install gcc gcc-c ++
2、下载并解压源码包
wget https://openresty.org/download/openresty-1.13.6.1.tar.gz
tar -zxvf openresty-1.13.6.1.tar.gz
3、解决依赖
yum install perl libxml2 libxml2-devel libxslt libxslt-devel gd gd-devel perl-ExtUtils-Embed geoip geoip-devel
yum install pcre zlib openssl
4、kill掉nginx
killall nginx
5、编译
cd openresty-1.13.6.1
./configure --with-http_image_filter_module
gmake
gmake install
6、查看是否添加http_image_filter_module模块
/usr/local/openresty/nginx/sbin/nginx -V
注:当前安装openresty-1.13.6.1的路径,不要和已经安装好的OpenResty+nginx套件相同。
nginx配置说明
添加好模块以后,需要在已有的nginx增加如下参数
server {
listen 80;
server_name javamall.com.cn;
charset utf-8;
#指定源文件目录
root /opt/data/;
#缩略图路径为/原图.jpg_300x300.jpg
location /{
set $isapi "";
.......... //其他原配置信息
if ( $uri ~* "\.(gif|jpg|jpeg|png|css|js|ico)$" ){
proxy_pass http://127.0.0.1:82;
set $isapi "no";
break;
}
}
#生成缩略图的路径
location /image_resize {
alias /opt/data/; //服务器实际存放图片路径
image_filter resize $arg_width $arg_height;
image_filter_jpeg_quality 95;
allow 127.0.0.0/8;
deny all;
}
}
server {
listen 82;
server_name localhost;
location / {
#在这个下面寻找缩略图
root /opt/data/; #如果找到直接返回
if (-f $request_filename) {
break;
}
#如果不匹配规格,直接返回
if ($uri !~* "^(.*)/(.*)_(300|400|800)x(300|400|800)\.(.*)" ) {
break;
}
set $width 150;
set $height 100;
set $dimens "";
set $image_name "";
set $image_ext "";
#匹配规格设置变量
if ($uri ~* "^(.*)/(.*)_(300|400|800)x(300|400|800)\.(.*)" ) {
set $width $3;
set $height $4;
set $image_path $1;
set $image_name $2;
set $demins "_$3x$4";
set $image_ext $5;
}
#拼凑生成缩略图地址如:/image_size/原图.jpg?width=300&height=300
set $image_uri image_resize/$image_path/$image_name?width=$width&height=$height;
#如果文件不存在,跳转到生成缩略图路径
if (!-f $request_filename) {
proxy_pass http://127.0.0.1/$image_uri;
break;
}
#存储图片
proxy_store /opt/statics/$image_path/$image_name$demins.$image_ext;
proxy_store_access user:rw group:rw all:r;
proxy_temp_path /tmp/images;
proxy_set_header Host $host;
}
}
后台配置
进入平台后台--设置--存储方案,选择本地存储,设置时,开启nginx支持,
域名:当前项目主域名,如果有虚拟路径,一并填写
路径:图片在服务器的实际存储路径,此路径要与上面的nginx配置的图片实际存储路径相同。
附商城图片后台配置参数
进入后台--设置--系统设置--图片设置