存储方案--本地存储

说明


本文中的本地存储主要说明在服务器上使用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配置的图片实际存储路径相同。

附商城图片后台配置参数

进入后台--设置--系统设置--图片设置

results matching ""

    No results matching ""