Архивы: linux

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/, а потом на новой машине восстановить.

Взято отсюда

Установка лампы в debian одной строкой

# apt-get install mysql-server mysql-client apache2 php5 php5-mysql libapache2-mod-php5 php-pear

ну и может пригодиццо:

# /usr/bin/mysqladmin -u root password ‘enter-your-good-new-password-here’

Debian и проклятый intel software raid

В процессе установки доходит до grub2-install и борода… Не ставиццо.

Решение есть.

В начале выбираем расширенную установку и нажимаем TAB

Дописываем к строке загрузки установщика dmraid=true

Ставимся, бьем рейд на разделы, доходим до граба2… обламываемся(

Выбираем пункт «продолжить без установки загрузчика».

Доставляем все необходимое.

Перезагружаемся, но грузимся опять с диска!

Выбираем Rescue mode, опять TAB, добавляем dmraid=true

Проходим все стадии рескуе-мода, выбираем раздел который мы заюзали в качестве корня в процессе установки.

Попадаем в консоль режима восстановления.

Делаем:

#ls /dev/ |grep dm

Получаем /dev/dm или /dev/dm0  или /dev/dm-0

Смотрим его

#fdisk /dev/dm

Если показывает разделы на которы мы били рейд при установке — значит этот девайс-то нам и нужен.

Делаем

#grub-install /dev/dm

Если «0 errors reported», то добиваем гада:

#grub-mkconfig > /boot/grub/grub.cfg

Ребутим комп и наслаждаемся.

Рецепт взят отсюда: debian wiki

Какие порты у нас открыты?

Как посмотреть, какие порты используются debian, ubuntu

показать прослушиваемые порты в системе (и кто их слушает):
netstat -lp —inet
показать активные соединения:
netstat -p —inet
также можно пользоваться утилитой lsof
прослушиваемые порты
lsof -i | grep LIST
активные соединения
lsof -i | grep ESTAB
для того, чтобы увидеть, какие программы слушают на каких портах,
необходимо иметь root-привилегии. ещё вариант
netstat -pan | grep LIST

взято отсюда

PHPVirtualbox в Ubuntu

1. Скачиваем phpvirtualbox с сайта
2. Ставим апач с поддержкой PHP
3. Распаковываем скачаный архив в /var/www/
4. Правим конфиги

# cd /var/www
# cp config.php-example config.php
# mcedit config.php
var $username='(имя пользователя под кем запущен vbox)’
var $password=’ (пароль пользователя под кем запущен vbox)’
var $location='(ip адрес компа)’
var $language=’ru_ru’
var $consoleHost='(ip адрес компа)’
var $rdphost='(ip адрес компа)’

5.Создаем конфигурационный файл для запуска vboxweb-service

# touch /etc/default/virtualbox

и правим его

mcedit /etc/default/virtualbox
VBOXWEB_USER= (имя пользователя под кем запущен vbox)
VBOXWEB_HOST=(ip адрес компа)
VBOXWEB_PORT= (порт, по умолчанию 18083)

6.Стартуем сервис

# /etc/init.d/vboxweb-service start

7. Правим права доступа для входа в консоль

# su (имя пользователя) -c «VBoxManage setproperty websrvauthlibrary null»

8. Заходим в админку http://ip_адрес_компа
Логин и пароль по умолчанию admin
9. Настраиваем консоль

# su (имя пользователя под кем запущен vbox) — с «vboxmanage modifyvm «ИМЯ ВИРТУАЛЬНОЙ МАШИНЫ» —vrde on»
VBoxManage modifyvm «ИМЯ ВИРТУАЛЬНОЙ МАШИНЫ» —vrdeport 3389-4000
VBoxManage controlvm «ИМЯ ВИРТУАЛЬНОЙ МАШИНЫ» vrde on

Заходим в админке в меню Свойства-Дисплей-Удаленный Дисплей
Ставим галку включить сервер и прописываем порт 3389
PROFIT!?

bacula, бэкап mssql баз и грабли (а также питоны, самбаклиенты и все-все-все) часть вторая

В продолжение записи: bacula, бэкап mssql баз и грабли (а также питоны, самбаклиенты и все-все-все).

В процессе выяснились некоторые тонкости:
1) если бекап отрабатывал некорректно (ну вырубили сервак тупо, или место на винте кончилось), то в следующий раз бекап не проходил, т.к. файлик sql already exist, мать его.

2) логи скуля перед бекапом стоит шринкать, ибо нечего гонять лишнее по сети.

В итоге скриптик стал такой:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Импортируем библиотеку для работы с MSSQL
import pymssql
import sys
import os
ahost = sys.argv[1] + «.vashdomen.ru»
auser = sys.argv[2]
apassword = sys.argv[3]
awheredisk = sys.argv[4]
awhere = sys.argv[5]
adatabase = sys.argv[6]

# Соединение с БД. Если вы не в том-же домене, что и сервер БД, то вместо
# ИМЯ_КОМПЬЮТЕРА впишите его IP.
con = pymssql.connect(host=ahost, user=auser, password=apassword, database=adatabase)

# Создаем курсор для работы с соединением
cur = con.cursor()

## удаляем папку с бекапом с именем базы (нужно из-за глюка бакулы) если нету ее конечно такой
os.system(«smbclient -U=vashdomen.ru\\\\megauser%megapassword //»+ahost+»/»+awheredisk+»$ -c ‘cd «+awhere+»; cd «+adatabase+»; rm «+adatabase+».sql; cd ..; rmdir «+adatabase+» ‘»)

###создаем папку с именем базы (нужно из-за глюка бакулы).
os.system(«smbclient -U=vashdomen.ru\\\\megauser%megapassword //»+ahost+»/»+awheredisk+»$ -c ‘cd «+awhere+»; md «+adatabase+»‘»)

#запрос на шринканье базы
squery1=»ALTER DATABASE » + adatabase + » SET recovery simple»
squery2=»DBCC SHRINKDATABASE (» + adatabase + «, TRUNCATEONLY)»
squery3=»BACKUP LOG » + adatabase+ » WITH TRUNCATE_ONLY»
squery4=»ALTER DATABASE » + adatabase + » SET recovery full»

#запрос на бекап
query=»BACKUP DATABASE » + adatabase + » TO DISK = ‘» + awheredisk + «:\\» + awhere + «\\» + adatabase +»\\» + adatabase +».sql’ WITH INIT»

# Выполняем запросы
cur.execute(«commit tran»)
cur.execute(squery1)
cur.execute(squery2)
cur.execute(squery3)
cur.execute(squery4)
cur.execute(query)
cur.execute(«begin tran»)

# Подтверждаем транзакцию и закрываем соединение
#con.commit()
con.close()