Jump to content

Recommended Posts

Posted (edited)

Всем привет.

Помогите найти решение для решения следующей задачи:

Необходимо какой-то простой и легкий способ показывать фотографии.

Что-то типа Piwigo ( но желательно полегче и без наворотов PHP).

Есть интересный способ организовать это чисто через nginx с библиотекой 

ngx_http_xslt_filter_module.so ссылка

 , но насколько я понял под нашу платформу она не собрана.

 

Edited by Kirill Petrov
Posted (edited)

Спасибо за подсказку. НЕ силен в nginx долго не мог понять почему не работает вызов библиотеки.

Напишу маленький мануал может быть кому-нибудь пригодится.

 

  1. Ставим nginx-extras + библиотеки libxml2 и libxslt.
    opkg update
    opkg install nginx-extras libxml2 libxslt
  2. Подключаем библиотеку в /opt/etc/nginx/nginx.conf 
    load_module  /opt/lib/nginx/ngx_http_xslt_filter_module.so;
  3. Делаем свой server ( тут кусочек из nginx.conf отвечающий за Галерею)

     

      server {
        listen 4444 ;
        auth_basic "Restricted Content";
            auth_basic_user_file /opt/etc/nginx/.htpasswd;
    
        root /opt/share/www;
    
        location  /gal { autoindex on;}
        
        location ~ /gal/([A-z]+)/$ {
        autoindex on;
        autoindex_format xml;
        xslt_string_param title $1;
        xslt_stylesheet /opt/etc/nginx/gal.xslt;
        try_files $uri/ =404;
        }
          }



    Маленькое пояснение. Сделал листинг директории /gal - открытый - можно видеть папки ( делать аля Альбомы).
    Директории ниже /gal - включается листинг через xslt_stylesheet - отображение фотографий. Т.е. положив фотографии в директорию /opt/share/www/gal/myphoto их можно будет просмотреть по адресу: http://mysite.com/gal/myphoto
    auth_basic и  auth_basic_user_file - отвечают за аутентификацию. Т.е. вход в галерею по Логин\пароль (легко гуглится подробности)

  4. Создать файл /opt/etc/nginx/gal.xslt следующего содержания

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" encoding="utf-8" indent="yes" />
    <xsl:template match="/">
      <xsl:text disable-output-escaping='yes'><!DOCTYPE html></xsl:text>
      <html>
      <head>
        <title><xsl:value-of select="$title" /></title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <style>
        img {
                display: block;
                max-width: 25cm;
                max-height: 20cm;
                margin: 2mm;
                vertical-align: bottom;
            }
        @media all and (max-width: 20.4cm) {
            img {
                max-width: calc(100% - 4mm);
            }
        }
        body {
                margin: 0;
        }
        </style>
      </head>
      <body>
        <xsl:for-each select="list/file">
            <img src="{.}" alt="{.}"/>
        </xsl:for-each>
      </body>
      </html>
  5.  Опустил подробности HTTPS настройки- по этому поводу тут уже много мануалов написано

     

Edited by Kirill Petrov
форматирование
  • Thanks 2
  • Upvote 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

This site uses cookies. By clicking "I accept" or continuing to browse the site, you authorize their use in accordance with the Privacy Policy.