====== Сховище зображень ====== Призначено, для зберігання ваших зображень, як не дивно. ====== Ввімкнення ====== Просто увімкніть. Усюди, де це підтримується, воно почне працювати. PHOTOSTORAGE_ENABLED=1 ====== Винесення даних кудись подалі ====== За замовчуванням, дані зберігаються в **content/documents/photostorage**. Ті, хто активно використовують зображення для ведення своєї господарської діяльності, можуть зіткнутися з проблемою "розпухання" директорії білінгу, що як мінімум нездорово, з точки зору швидкого бекапу даних. У таких випадках, починаючи з релізу 1.2.5 з'явилася можливість тримати ці дані практично де завгодно вашій душі. Від "просто іншої директорії" до "на зовнішньому хості і взагалі хочу свою хмару". ===== Конфігурація зовнішнього хоста ===== Припустимо, ми хочемо витягнути, всі наші зображення, на якийсь зовнішній сервер, нехай він буде віртуалкою. Нехай його IP буде 192.168.0.5, наприклад.\\ Отож по пунктах: * Встановлюємо чисту FreeBSD, чи що ви там хочете або чим вмієте користуватися. Неважливо. * Конфігуруємо на ній мережу ifconfig_vtnet0="inet 192.168.0.5 netmask 255.255.255.0" * Створюємо директорію, в якій ми зберігатимемо зображення # mkdir /share/ # mkdir /share/photostorage # chmod -R 777 /share * Експортуємо директорію як NFS, хоча можете використовувати будь-що, хоч CIFS хоч sshfs на ваш смак. rpcbind_enable="YES" nfs_server_enable="YES" nfs_server_flags="-u -t -n 4" mountd_enable="YES" mountd_flags="-r" /share -alldirs -maproot=root здесь_IP_вашего_биллинга * Перезавантажуємо сервер, щоб переконатися, що все нормально стартує ===== Монтування на білінговий сервер ===== Припустимо, ми збираємось зберігати зображення локально на білінговому сервері, в директорії **/mnt/photostorage**. * Створюємо цю директорію: # mkdir /mnt/photostorage * Монтуємо в неї нашу шару 192.168.0.5 # mount 192.168.0.5:/share/photostorage /mnt/photostorage Для забезпечення автоматичного монтування директорії, зверніться до документації з вашої ОС. Можливо, вам не хочеться взагалі піднімати NFS, CIFS або ще щось і вам здається, що досить ssh. Да без проблем: # pkg install fusefs-sshfs # kldload fuse # sysctl vfs.usermount=1 # devfs ruleset 10 # devfs rule add path 'fuse*' mode 666 # sshfs -o allow_other somelogin@192.168.0.5:/share/photostorage /mnt/photostorage Не забуваємо перенести в нове місце наявні зображення з **content/documents/photostorage/** в наше нове місце зберігання! # mv /usr/local/www/apache24/data/billing/content/documents/photostorage/* /mnt/photostorage/ ===== Конфігурація білінгу ===== Можемо взагалі нічого не змінювати, та вказати просто нову директорію сховища та включити режим проксування самим модулем "сховище зображень" для віддачі зображень зі змонтованою ФС. PHOTOSTORAGE_DIRECTORY="/mnt/photostorage/" PHOTOSTORAGE_URL_PREFIX="" PHOTOSTORAGE_PROXY_MODE=1 Можемо знизити навантаження на бекенд, наприклад, тупо сімлінкнувши нове місце зберігання кудись у місце доступне по HTTP: # ln -fs /mnt/photostorage /usr/local/www/apache24/data/photosplace і вказавши це якось так у конфізі PHOTOSTORAGE_DIRECTORY="/mnt/photostorage/" PHOTOSTORAGE_URL_PREFIX="http://ваш_біллінг/photosplace/" PHOTOSTORAGE_PROXY_MODE=0 Можемо показувати зображення прямо з нашого зовнішнього хоста, піднявши там web-сервер, що дивиться у /share/photostorage PHOTOSTORAGE_DIRECTORY="/mnt/photostorage/" PHOTOSTORAGE_URL_PREFIX="http://192.168.0.5/" PHOTOSTORAGE_PROXY_MODE=0 Ну, загалом ви зрозуміли. Все обмежується лише вашою фантазією. ====== Пост-процесинг ====== Також, в Ubilling 1.4.3 з'явилась можливість автоматичної обробки всіх завантажуваних зображень. ; Чи ввімкнено після-обробку зображень при завантаженні в сховище зображень? Зображення просто відкриватимуться, ; читатимуться та зберігатимуться по-новому після завантаження. Вже саме по собі, це може суттєво зменшувати їх розмір. PHOTOSTORAGE_POSTPROCESSING=0 ; Додавати на зображення водяний знак з content/documents/watermark.png? Очевидно, що підтримується прозорість та даний файл переживає оновлення. PHOTOSTORAGE_WATERMARK=1 ; Змінювати рівень стиснення для jpeg/png з метою мініфікації та підвищення їх притомності? Теж радикально зменшує розмір файлів, що будуть збережені. PHOTOSTORAGE_RECOMPRESS=1 ; Чи ввімкнено автоматичну зміну розмірів великих зображень? Власне, наразі, зображення з будь-яким з вимірів більшим ; за 4k px буде продаунскейлено до 0.5х а зображення з будь-яким з вимірів більшим за 2к px буде продаунскейлено до 0.8х. PHOTOSTORAGE_AUTORESIZE=1 ; Вдруковувати в зображення відлагоджувальну інформацію, таку як дата, оригінальні розміри, оригінальний об'єм файлу, тощо. PHOTOSTORAGE_DRAWIMGINFO=1