Архивы по Категориям: linux

scp без ssh

Всегда забываю про эту штуку:

rssh — удобный шелл, когда нужно дать только scp не давая собственно ssh

https://habrahabr.ru/post/325904/

оптимизируем картинки сайтов

Ставим jpegoptim и optipng.

Первый раз запускаем руками

find /var/www ! -regex  '*.\(jpg\|JPG|jpeg\)$'  -print0 |  xargs -0 jpegoptim --max=94 --preserve --totals >> /root/jpegoptimfirsttime.log

И уходим пить кофе.

Потом делаем скриптик

#!/bin/bash
echo `date` >> /root/optipng.log
find /var/www/ -mtime -2 -iname '*.png' -print0 | \
 xargs -0 optipng -o7 -log /root/optipng.log -preserve
echo `date` >> /root/jpegoptim.log
find /var/www/ -mtime -2 -iname '*.jpg' -print0 | \
 xargs -0 jpegoptim --max=94 --preserve --totals >> /root/jpegoptim.log

И запускаем его по крону

# m h dom mon dow command
0 1 * * * /root/optimize-images.sh

Экономим место на хостинге и трафик. Реально можно подосвободить до 50%.
С max=94 можно поиграться. Если у вас не галерея профессиональных фотографий, то можно смело ставить 90.

php, float: запятая, точка и opencart

Столкнулся тут недавно: в опенкарте не ставятся копейки (в размерах миллиметры, и в весе граммы, соответственно).

В инсертах мускулевых эти переменные выглядят так: (float)$price.

Ок, проблема локализована, что-то не так с флоатом. Смотрим:

<?php
echo (float)'1.22'; // 1,22
?>

Зашибись!

Правится так: из консоли никсовой

php -r 'setlocale("LC_NUMERIC", "C");'

или если у вас шаред, то

setlocale(LC_NUMERIC, "C");

В опенкарте это можно запихать в config.php

linux проброс rdp

iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED,DNAT -j ACCEPT
iptables -t nat -A PREROUTING -d EXTERNAL_ROUTER_IP -p tcp -m tcp --dport 3389 -j DNAT --to-destination INTERNAL_SERVER_IP

вся соль в первой строчке)

самый простой способ создания загрузочной/установочной флешки

http://forum.tortila.net/index.php?showtopic=504

проверено. работает.

openvz + iptables + multiport = FATAL: modules.dep: No such file or directory

Дано VPS под openvz. На впске трахаемся с iptables:

iptables -A INPUT -i $IFACE -p tcp -m multiport --port 49452:49146 -j ACCEPT

а иптаблес нам в ответ нечеловеческим голосом заявляет:

FATAL: Could not load /lib/modules/2.26.blablalba.stab00bla.1/modules.dep: No such file or directory
FATAL: Could not load /lib/modules/2.26.blablalba.stab00bla.1/modules.dep: No such file or directory

Лечится так:

mkdir /lib/modules/2.26.blablalba.stab00bla.1/
depmod -a

миграция ocstore 0.2.0 -> 1.0.1

Как произвести миграцию на новый (сочни, мжвячни!) оцсторе можно прочитать тут.

От себя могу добавить, что после этой миграции некоторые старые модули с диким воплем крашатся:
PHP Fatal error: Cannot access private property Document::$title in блаблабла.php

Лечится сие просто.
Заходим в папку с нашим магазином и делаем там:

find . -type f -name '*.php' -print | xargs egrep -i 'document->title'

в найденных файлах правим:

вместо:
$this->document->title = $this->language->get('heading_title');

пишем:
$this->document->setTitle($this->language->get('heading_title'));

после этого фиксим еще один вредный баг.
после мигарции в админке везде в заказах показывает цены «итого» и «цена за единицу» — 0.00р
лезем пыхпыхмайадмин (ну или как вам будет удобно) и делаем там следующее:

UPDATE `ВАША_ТАБЛИЦА`.`order` SET `currency_code` = 'rub',`currency_value` = '1' WHERE `order`.`currency_value` = 0.00000000;

nginx+apache = 127.0.0.1 в логах

При использовании нгинкса в качестве фронтэнда к апачу в логах последнего все запросы внезапно становятся от локалхоста, что логично, конечно, но крайне неудобно.
Исправить можно это крайне просто:

apt-get install libapache2-mod-rpaf

postgrey надоела дикая задержка

Отличная штука постгрей. Очень даже эффективно борется со спамом. Но есть у нее несколько (на первый взгляд) недостатков.
Первый и самый главный — длительный отлуп.
Оказывается его можно и настроить!

Идем править конфиги!

mcedit /etc/default/postgrey

видим там скудную строку:

POSTGREY_OPTS="--inet=127.0.0.1:60000"

Сюда, промеж кавычек можно дописать:
—delay=XX — время задержки в сером листе XX секунд
—max-age=YY — устанавливает срок YY дней — время жизни в автоматическом белом листе клиентов, которые успешно прошли проверку
—auto-whitelist-clients=ZZ — добавлять в автоматический белый список клиентов, которые ZZ раз успешно прошли проверку

А вообще, man как всегда рулит!

клонируем debian

Для того, чтобы создать список установленных в Debian (Ubuntu) пакетов можно воспользоваться следующей утилитой:

$ dpkg —get-selections > installed_programs.txt

Можно также записать в файл краткую информацию о пакетах (версия пакета и краткое описание):

$ COLUMNS=150 dpkg -l > packages.txt

Теперь все эти пакеты можно установить на другом компьютере (или на этом же, после переустановки). Для этого устанавливаем Debian (Ubuntu) по умолчанию, и после установки выполняем следующую операцию, предварительно скопировав на этот компьютер файл installed_programs.txt:

$ sudo dpkg —set-selections < installed_programs.txt

и дальше

$ sudo apt-get -u dist-upgrade

или

$ sudo apt-get dselect-upgrade

Прежде чем переносить, желательно забэкапить /etc/, а потом на новой машине восстановить.

Взято отсюда