awk – команда контекстного поиска и преобразования текста. Она – фильтр. Ее можно рассматривать как оболочку “awk” в оболочке “shell”.

1. Структура awk-программы
Программа состоит из операторов (правил), имеющих вид:

шаблон {действие}
шаблон {действие}
. . .

Частные случаи:
{действие} – когда действие выполняется для всех строк.
шаблон – когда выводятся строки с данным шаблоном.
Действие может состоять из последовательности операторов, разделяемой “;” или переводом строки или закрывающей скобкой.

Возможны комментарии (как в shell “#………”).
Пример:
Для дальнейших примеров возьмем входной файл “f-awk” ( фамилия инициалы год-приема-на-работу возраст ):

Иванов И.И.	1980	50
Петров А.В.	1979	40
Сидоров С.К.	1979	40
Хведоров И.Х.	1970	60
awk '{print}' f-awk # выдает весь текст;
echo
awk '/до/ {print}' f-awk # выдает строки, где есть "до".
echo
awk '/до/ {}' f-awk # выдает строки, где есть "до"
echo
awk '/до/ {print("Привет!")}' f-awk

Результат:

Иванов И.И. 1980 50
Петров А.В. 1979 40
Сидоров С.К. 1979 40
Хведоров И.Х. 1970 60
Сидоров С.К. 1979 40
Хведоров И.Х. 1970 60
Сидоров С.К. 1979 40
Хведоров И.Х. 1970 60
Привет!
Привет!

Существует два оператора специального вида (“BEGIN”-начальные установки и “END” – “последействия”):

BEGIN {действие}
шаблон {действие}
шаблон {действие}
. . .
END {действие}

Вызов awk
Возможны два основных варианта:
1) awk [-Fc] ‘prog.awk’ [files]
Это простейший случай, когда программа (заключенная в кавычки ” ‘ “) находится в теле команды, “-Fc” – флаг, меняющий стандартный разделитель полей на “c” “file” – имя файла исходных данных, при его отсутствии – со стандартного входа. (Этот формат использован в начальных примерах).

cat f-awk | awk '/до/ {print}'

и

awk '/до/ {print}' < f-awk

дают результат, аналогичный

awk '/до/ {print}' f-awk

Для демонстрации действия флага “-Fc” рассмотрим вызовы:

awk '/до/ {print($2)}' f-awk
awk -F0 '/до/ {print($2)}' f-awk

На экран будет выведено:

С.К.
И.Х.
6

Первая команда “awk” выведет вторые поля (благодаря позиционной переменной “$2″) строк, содержащие “до”. (Кстати, позиционная переменная “$0″ соответсвует всей строке). Во втором случае, благодаря флагу “-F” стандартные разделители заменены на символ “0″, т.е. теперь выбранные строки воспринимаются, как разбитые на следующие поля:

Сидоров С.К. 1979 40
---------------------^--------------------
1-е поле 2-е поле (пусто)
Хведоров И.Х. 1970 60
-----------------^---^--------------------
1-е поле 2-е 3-е поле (пусто)

2) awk [-Fc] -f prog.awk [files]
Флаг “-f” говорит о том, что awk-программу надо брать из файла, имя которого указано следом (имя может быть произвольным и расширение “.awk” добавлено здесь просто из эстетических соображений).

3. awk-переменные и выражения
В языке awk выделяются две группы переменных: предопределенные и декларированные в программе. Исходные значения предопределенных переменных устанавливаются интерпретатором awk в процессе запуска и выполнения awk-программы.

К предопределенным относятся: Умолчания:
NR – номер текущей строки
NF – число полей в текущей строке
RS – разделитель строк на вводе “\0″
FS – разделитель полей на вводе пробел и/или табуляция
ORS – разделитель строк на выводе RS
OFS – разделитель полей на выводе FS
OFMT – формат вывода чиcл “%.6g”
FILENAME – имя входного файла.
Прочим переменным пользователь может присваивать начальные значения. По умолчанию “0″ или пустая строка (что здесь равнозначно!).

Типы переменных:
позиционные,
числа с плавающей точкой,
строка символов,
массив.

Интерпретатор awk рассматривает переменную как строковую, пока не возникает необходимость выполнить операции:
если пробел (конкатенация), то строки;
если “+”, то числа с плавающей точкой.

Примеры:

awk '{a = $3 $4; print a}' f-awk
awk '{a = $3+$4; print a}' f-awk

Результат:

198050
197940
197940
197060
2030
2019
2019
2030

awk ‘{}

END {a = 2 + 2 ; print a}' < f-awk
awk '{}
END {a = 2 + "2" ; print a}' < f-awk
awk '{}
END {a = 2 + "два" ; print a}' < f-awk
awk '{}
END {a = "два"+"два" ; print a}' < f-awk
awk '{}
END {a = 2.2 + 2.000 ; print a}' < f-awk

Результат:

4
4
2
0
4.2

Массив не об’является, а начинае существовать в момент первого использования. Индекс массива – любое ненулевое значение или строка. Массивы ассоциативные, т.е. не по вычисляемому индексу, а по совпадению содержания, например:

day [Jan][31] = Mon
day [Feb][01] = Tue
day [Feb][02] = Wed

Массивы удобно использовать при суммированиях, например записи выплат имеют вид (файл “p-1″):

John 100
Mary 200
Mary 200
John 100
John 300
awk '{sum[$1] += $2; print $1 sum[$1]} ' < p-1

Результат (поименный нарастающий итог):

John100
Mary200
Mary400
John200
John500

Операции как в Си =, +=, -=, *=, /=, %=, +, /, %, ++, –.
Сравнения чисел, если оба числа, иначе – строк < , <=, ==, !=, >=, >
Логические операции !, ||, &&
Операция “пробел” конкатенация.

4. Примеры awk-программ
1

awk '{print ($2, $3)}' f-awk

Результат:

И.И. 1980
А.В. 1979
С.К. 1979
И.Х. 1970

2

awk '/е/ {print ($2, $3)}' f-awk

Результат:

А.В. 1979
И.Х. 1970

3

awk '/е/ {print ($1, 2000 - $3)}' f-awk

Результат:

Петров 21
Хведоров 30

4

awk '{ s = s + $4}
END {print ("Суммарный возраст:" s)
print ("Средний возраст:" s/NR)}' f-awk

Результат:

Суммарный возраст:190
Средний возраст:47.5

5

awk '{ s += $4 }
{print("NR="NR, "NF="NF)}
END {print ("FILENAME=" FILENAME)
print ("Значение позиционной переменной" $4 "\"пусто\" \после окончания просмотра)")
print ("Суммарный возраст:" s)
print ("Средний возраст:" s/NR)}' f-awk

Результат:

NR=1 NF=4
NR=2 NF=4
NR=3 NF=4
NR=4 NF=4
FILENAME=f-awk
Значение позиционной переменной"пусто" (после окончания просмотра)
Суммарный возраст:190
Средний возраст:47.5

5. Селекторы
Здесь “селектор” следует понимать, как расширение понятия “шаблон”, поскольку там где в структуре команды указан шаблон, в общем случае может стоять любой селектор.

Замечание. Открывающая скобка действия “{” должна быть в строке селектора.

В качестве селектора может быть:
выражение;
шаблон;
их комбинация.
Соответствующие примеры:

1) $3 != $4 && $3 > 1970
$3 % 2 == 1
$1==”Иванов” – кавычки, чтобы воспринималось, как строка.

2) /ab/ отлично от /a b/, / ab/ и /ab /
Nполя ^шаблон – по совпадению
Nполя !^шаблон – по несовпадению
Пример:

awk '$3~0 {print} ' < f-awk
echo
awk '$3!~0 {print} ' < f-awk
Иванов И.И. 1980 50
Хведоров И.Х. 1970 60
Петров А.В. 1979 40
Сидоров С.К. 1979 40

3) Шаблон может формировать множество образцов или указывать, в каком месте поля искать:

/^a/ поле начинается с “a”
/a$/ поле кончается “a”
\+ экранирует оператор
[abc] любой из символов “a”, “b” и “c”
[a-р] любой символ диапазона
* 0 или больше вхождений регулярного выражения
+ 1 или больше вхождений регулярного выражения
? 0 или 1 вхождение регулярного выражения
ab|cd “ab” или “cd”

Примеры сочетаний:

awk ' $3~/(7[0-9])$/ {print} ' f-awk

Результат:

Петров А.В. 1979 40
Сидоров С.К. 1979 40
Хведоров И.Х. 1970 60

То есть в третьем поле выделить 70-е годы (7 и еще одна цифра от конца поля).

6. Еще примеры
1

awk '$1=="Иванов" {print} ' f-awk

Результат:

Иванов И.И. 1980 50

2

awk '$4/2==30 {print} ' f-awk

Результат:

Хведоров И.Х. 1970 60

3

awk '$3 != $4 && $3 > 1970 {print} ' f-awk

Результат:

Иванов И.И. 1980 50
Петров А.В. 1979 40
Сидоров С.К. 1979 40

4

awk '$1~/нов$/ {print} ' f-awk

Результат:

Иванов И.И. 1980 50

5

awk '/^Ив|дор/ {print} ' f-awk

Результат:

Иванов И.И. 1980 50
Сидоров С.К. 1979 40
Хведоров И.Х. 1970 60

6

awk '/1980/,/1979/ {print} ' f-awk

Результат:

Иванов И.И. 1980 50
Петров А.В. 1979 40 

7. Действия

В awk возможны следующие действия:
присваивания выражений;
операторы управления
операторы вывода;
встроенные функции.
Операторы управления

Простейшие операторы
exit завершить выполнение программы;
next перейти к следующей строке, управление на начало awk-программы;
break выход из цикла;
continue переход к следующей итерации;

Структурные операторы
if (условие) {операторы} [else {операторы}]
while (условие) {операторы}
for (выражение; условие; выражение) {операторы}
for (индекс in имя_массива) {операторы}

Структурные операторы в значительной степени аналогичны соответствующим операторам Си. В последнем случае для каждого индекса выполняется блок. Текстовые индексы рассматриваются в лексикографическом порядке.

Примеры

awk ' $4~/40/ {if($3< =1980) {print("Фамилия: " $1 )
M["40"]++}}
$4~/50/ {M["50"]++}
END {for(i in M)
{print(" i =" i " M[" i "]=" M[i])}} ' f-awk

Результат:

Фамилия: Петров
Фамилия: Сидоров
i =40 M[40]=2
i =50 M[50]=1
awk ' BEGIN {ORS = " "}
{ for(k=NF; k>0; --k) {print $k}
{print RS}
} ' f-awk |sed 's/^ //'

Результат:

50 1980 И.И. Иванов
40 1979 А.В. Петров
40 1979 С.К. Сидоров
60 1970 И.Х. Хведоров

Здесь, кроме изменения очередности полей в строке на противоположное (что делает цикл “for”), предварительно устанавливается выходной разделитель – пробел и весь результат предварительно выдается в одну строку, поэтому после обработки каждой строки выдается команда “print RS” для перевода выходной строки. Редактор “sed” подключен через конвейер, чтобы убрать возможные пробелы в начале строки. Существенная деталь. Если запустить лишь базовую структуру

awk '{ for(k=NF; k>0; --k) {print $k}}' f-awk

то все поля исходной таблицы с изменениями порядка внутри прежних строк получим вытянутыми в один столбец переводом строки:

50
1980
И.И.
Иванов
40
1979
А.В.
Петров
40
1979
С.К.
Сидоров
60
1970
И.Х.
Хведоров

Однако, если поставим “;” сразу после условия, т.е. сделаем пустое тело цикла, за пределы которого вынесен “print $k”

awk '{ for(k=NF; k>0; --k); {print $k}}' f-awk

то получим исходную таблицу

Иванов И.И. 1980 50
Петров А.В. 1979 40
Сидоров С.К. 1979 40
Хведоров И.Х. 1970 60

поскольку “$k” после выхода из цикла будет иметь значение “0″, а “$0″ – соответсвует всей строке в качестве значения(!), то “print $k” будет после каждого цикла печатать полные строки.

8. Ввод и вывод данных

В общем случае в команде awk может быть указано несколько файлов. Напомним форматы вызова команды:

awk [-Fc] 'prog.awk' [file ...]
awk [-Fc] -f prog.awk [file ...]

Файлы обрабатываются последовательно в указанном порядке. Это можно использовать для “настройки” awk команды при обработке последующих файлов.

Пусть файл “f0″ имеет вид:

60 Сидоров

А файл awk-программы “prim.awk” имеет вид:

FILENAME == "f0" { # если просматривается файл "f0"
w1 = $2 # присваиваются значения переменным
w2 = $1 # w1 - Сидоров, w2 - 60
}
$1 == w1 { print ("фамилия: "$1)} # означенные переменные
$4 == w2 { print ("годы: " $4)} # используются в селекторах

Тогда при вызове команды

awk -f prim.awk f0 f-awk

Результат:

фамилия: Сидоров
годы: 60

То есть второе поле файла “f0″ дает значение переменной “w1″, а первое – “w2″. Эти переменные используются в селекторах при обработке файла “f-awk”.

Изменим программу в файле “f-awk”:

FILENAME == "f0" {
w1 = $2
w2 = $1
next
}
{ print ("фамилия: "$1); next}
$4 == w2 { print ("годы: " $4)}

Результат:

фамилия: Иванов
фамилия: Петров
фамилия: Сидоров
фамилия: Хведоров

Если исключить первый оператор “next”, то в выходном файле появится дополнительно первая строка:

фамилия: 60

поскольку выбирается снова первое поле в певом файле (“f0″). Если исключить и второй “next”, то в выходном файле появится дополнительно последняя строка:

годы: 60

которая ранее не выводилась, так как в предшествующий оператор ” { print (“фамилия: “$1)}” заканчивал работу на ПОСЛЕДНЕЙ строке файла “f-awk”, поэтому “next” пропускал последующую командную строку

$4 == w2 { print ("годы: " $4)}

И еще одна модификация в связи с вводом данных с терминала. Вызов команды будет:

awk -f prim.awk f0 f-awk

А файл “prim.awk” примет вид:

BEGIN { print ("Введите годы и фамилию: ")}
FILENAME == "-" {
w1 = $2
w2 = $1
next
}
$1 == w1 { print ("фамилия: "$1); next}
$4 == w2 { print ("годы: " $4)}

9. Встроенные функции

Встроенные функции:

sin (expr) синус expr
cos (expr) косинус expr
exp (expr) возведение в степень expr
log (expr) натуральный логорифм expr
sqrt (expr) извлечение корня expr
int (expr) целая часть числа
length (s) длина строки s
printf (fmt, …) форматирование (аналогично Си) по спецификации fmt.
substr (s, m, n) подстрока в n символов строки s, начинающаяся с m.
getline () чтение следующей строки.
0 конец файла, иначе 1.
index (s1, s2) номер позиции, с которой s1 совпадает с s2, иначе 0.
split (s, M, c) строка s разбивается элементы массива M по разделителю c (по умолчанию FS=” “); функция возвращает число полей.
Примеры.

awk ' BEGIN {FS = "."; a=0}
length ($1) > 8 {print (length ($1), $0);
a++
}
END {print ("Найдено строк: " a) }' f-awk

Результат:

9 Сидоров С.К. 1979 40
10 Хведоров И.Х. 1970 60

Найдено строк: 2
Здесь поля разделяются по “.”, выбираются строки у которых длина первого поля больше 8-ми, и их длина “length ($1)” печатается перед строкой “$0″.

awk '{i=split($0, Name, ".");
for (j=1; j<=i; j++)
print ("Name[" j "]=" Name[j])
}' f-awk

Результат:

Name[1]=Иванов И
Name[2]=И
Name[3]= 1980 50
Name[1]=Петров А
Name[2]=В
Name[3]= 1979 40
Name[1]=Сидоров С
Name[2]=К
Name[3]= 1979 40
Name[1]=Хведоров И
Name[2]=Х
Name[3]= 1970 60
awk '{print (length)}' f-awk

Результат:

22
22
22
22

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

awk '{printf "%7.2f %s\n", NR, $0}' f-awk
echo
awk '{printf "\t%s %s \n", NR, $0}' f-awk

Результат:

1.00 Иванов И.И. 1980 50
2.00 Петров А.В. 1979 40
3.00 Сидоров С.К. 1979 40
4.00 Хведоров И.Х. 1970 60

1 Иванов И.И. 1980 50
2 Петров А.В. 1979 40
3 Сидоров С.К. 1979 40
4 Хведоров И.Х. 1970 60

Команда имеет формат:

 sed [ -n ] [ -e script ] [ -f sfile ] [ files ]  

Команда копирует файлы (по умолчанию со стандартного входа) на стандартный выход, редактирует их в соответствии со своими(!) командами, размещенными в “script” (в командном файле или строке редактора [а не shell!]). По флагу “-f” берет берет файл команд из файла “sfile”; Если есть только опция “-e script”, то флаг “-e” можно опустить. Флаг “-n” подавляет вывод (происходящий по умолчанию). “script” состоит из команд редактирования, по одной в строке, имеющих формат:

  [ addr [ , addr ] ] cmd [ args ]  

“sed” циклически преобразует входные строки в выходные.

Адреса “[ addr [ , addr ] ]” – это либо номера строк, либо последняя строка (символ “$”), либо регулярные выражения в стиле редактора “ed”:

“\” используется в многострочных командах для экранирования продолжения строки.
“.” совпадает с любым символом.
Если адреса не указаны – просматриваются все входные строки.
Если один адрес, то выбираются совпадающие строки.
Если заданы два адреса, выбираются строки в заданном интервале.
“!cmd” выполняется команда “cmd”, для строк, которые не были выбраны по адресам.
Для следующих (основных) функций (команд) максимальное число допустимых адресов указано в скобках.

a\ text Добавляет text после указанной строки
Пример:

 who | sed '2a\ новая строка' 

Результат:

root tty1 Mar 13 17:23
mas tty2 Mar 13 18:50
sae tty6 Mar 13 17:24
sae tty5 Mar 13 17:24

c\ text Удаляет выбранные строки и заменяет их на “text’.
Пример:

who | sed '/sae/ c\cтрока замены'

Результат:

root tty1 Mar 13 17:23
mas tty2 Mar 13 18:50
строка замены
строка замены

d Удаляет найденные строки
Пример:

who | sed '2,4d'

Результат:

root tty1 Mar 13 17:23

i\ text Вставляет “text” на место выбранной строки. (сравните с “a\”)
Пример:

who | sed '2i\новая строка'

Результат:

root tty1 Mar 13 17:23
новая строка
mas tty2 Mar 13 18:50
sae tty6 Mar 13 17:24
sae tty5 Mar 13 17:24

y/str1/str2/ Заменяет все вхождения символов “str1″ соответствующими символами “str2″. Длины строк должны быть одинаковыми.
Пример:

who | sed 'y/sae/SAE/'

Результат:

root tty1 MAr 13 17:23
mAS tty2 MAr 13 18:50
SAE tty6 MAr 13 17:24
SAE tty5 MAr 13 17:24

! Cmd Команда(ы) “cmd” применяются к невыбранным строкам.
Пример:

who | sed '2,4!d'

Результат:

mas tty2 Mar 13 18:50
sae tty6 Mar 13 17:24
sae tty5 Mar 13 17:24

= Выдает номера строк.
Пример:

who | see =
1
Результат:
1
    1
    root tty1 Mar 13 17:23
    2
    mas tty2 Mar 13 18:50
    3
    sae tty6 Mar 13 17:24
    4
    sae tty5 Mar 13 17:24


p Выводит найденные строки (используется с флагом “-n”).
q Выходит из “sed”.
r rfile Читает файл “rfile” и выдает на выход.
s/reg_expr/rpl/flags Заменяет регулярное выражение “reg_expr” на “rpl” с учетом флагов “flags”:
g глобально (по всей строке)
p выводить замены
w wfile сохранять заменяемое в “wfile”.
{ } Скобки группируют команды.
b label Осуществляет переход к команде (“cmd”) “label:cmd”. Если метка (“label”) отсутствует, то переход на конец командного файла.

Гру 152011

load average – числа отображают число блокирующих процессов в очереди на исполнение в определенный временной интервал, а именно 1 минута, 5 минут и 15 минут, соответственно. В данном случае, блокирующий процесс — это процесс, который ожидает ресурсов для продолжения работы. Как правило, происходит ожидание таких ресурсов, как центральный процессор, дисковая подсистема ввода/вывода или сетевая подсистема ввода/вывода.

Высокие значения показателей load average говорят о том, что система не справляется с нагрузкой. Если речь идет о целевом сервере, работающем под высокой нагрузкой, то обычно полезно провести тонкую настройку операционной системы (сетевая подсистема, ограничение на количество одновременно открытых файлов и тому подобное). Высокая загрузка также может быть вызвана аппаратными проблемами, например, выходом из строя накопителя.

Для начала что мы соберяемся сделать:
Мы создадим виртуальное пространство для пользователя который заходит на сервер с помощью SSH.
Что это значит. Значит то что кроме папки /home/user доступа у юзера никуда не будет.

Содаем нового пользователя user:

useradd testuser

Редактируем файл /etc/ssh/sshd_config

Добавляем в него следующее:

Subsystem sftp internal-sftp
UsePAM yes
Match user testuser
        ChrootDirectory /home/testuser
        ForceCommand internal-sftp
        X11Forwarding no
        AllowTcpForwarding no

Создаем нужные папки:

mkdir /home/testuser/home
mkdir /home/testuser/home/testuser
chown -R root:root /home/testuser/
chown -R testuser:testuser /home/testuser/home/testuser

Теперь если testuser зайдет по ssh на сервер он увидит только свои папки и больше ничего.

З.І. В большенстве случеев нужно для того чтобы давать доступ для загрузки файлов пользователю по SFTP

Перед началом установки убедитесь, что ваш компьютер имеет необходимые параметры(Oracle обычно требует большого количества ОЗУ и swap (> 1Gb) на диске.)

Oracle Database или Oracle RDBMS — объектно-реляционная система управления базами данных.

Для установки Oracle на Debian Linux добавьте в /etc/apt/source.list следующие строки:

deb http://oss.oracle.com/debian/ unstable main non-free
deb-src http://oss.oracle.com/debian/ unstable main

Выполните:

aptitude update
apt-get install oracle-xe-universal

aptitude скачает из интернета дистрибутив порядка 400-500 мегабайт и произведет инсталляцию Oracle. После исталяции нужно запустить скрипт от имени root:

/etc/init.d/oracle-xe configure

и ответить на несколько вопросов.

После успешной инсталляции Oracle интерфейс для конкурирования будет доступен по адрессу

http://127.0.0.1:8080/apex.

Nginx — веб-сервер и почтовый прокси-сервер, работающий на Unix-подобных операционных системах.

  • обслуживание статических запросов, индексных файлов, автоматическое создание списка файлов, кеш дескрипторов открытых файлов
  • акселерированное проксирование без кэширования, простое распределение нагрузки и отказоустойчивость
  • поддержка кеширования при акселерированном проксировании и FastCGI
  • акселерированная поддержка FastCGI и memcached серверов, простое распределение нагрузки и отказоустойчивость
  • модульность, фильтры, в том числе сжатие (gzip), byte-ranges (докачка), chunked ответы, HTTP-аутентификация, SSI-фильтр
  • несколько подзапросов на одной странице, обрабатываемые в SSI-фильтре через прокси или FastCGI, выполняются параллельно
  • поддержкаSSL
  • экспериментальная поддержка встроенного Perl

Перед началом установки:

hostname
hostname -f

Эти команды показывают название вашего компьютера, убедитесь что все корректно.

Установка необходимых пакетов(nginx web server, PHP, и все что нужно:) )

apt-get update
apt-get upgrade
apt-get install nginx php5-cli php5-cgi build-essential wget psmisc
/etc/init.d/nginx start

После установки всех требуемых пакетов, вы сможете увидеть стандартную страницу nginx, открыв в браузере IP адрес вашего компьютера.

Настройка вашего сайта:
В этом примере мы будем использовать домен “example.com”, как ваш сайт. Вы должны использовать ваш домен в конфигурации представленной ниже.
Для начала нам нужно:

mkdir -p /srv/www/www.example.com/public_html
mkdir /srv/www/www.example.com/logs
chown -R www-data:www-data /srv/www/www.example.com

Отредактируем файл /etc/nginx/sites-available/www.example.com:

server {
server_name www.example.com example.com;
access_log /srv/www/www.example.com/logs/access.log;
error_log /srv/www/www.example.com/logs/error.log;
root /srv/www/www.example.com/public_html;

location / {
index index.html index.htm index.php;
}

location ~ \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /srv/www/www.example.com/public_html$fastcgi_script_name;
}
}

Включаем сайт:

cd /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/www.example.com
/etc/init.d/nginx restart

Вы можете отредактировать тестовую страницу здесь /srv/www/www.example.com/public_html/

Установка spawn-fcgi

cd /opt
wget http://www.lighttpd.net/download/spawn-fcgi-1.6.3.tar.gz
tar -xf spawn*
cd spawn*
./configure
make
cp src/spawn-fcgi /usr/bin/spawn-fcgi

cd /opt
wget -O php-fastcgi-deb.sh http://library.linode.com/assets/680-php-fastcgi-deb.sh
mv php-fastcgi-deb.sh /usr/bin/php-fastcgi
chmod +x /usr/bin/php-fastcgi
wget -O php-fastcgi-init-deb.sh http://library.linode.com/assets/681-php-fastcgi-init-deb.sh
mv php-fastcgi-init-deb.sh /etc/init.d/php-fastcgi
chmod +x /etc/init.d/php-fastcgi
update-rc.d php-fastcgi defaults
/etc/init.d/php-fastcgi start

Тестирование PHP FastCGI

Создайте файл “test.php” в “public_html”:

Пример: /srv/www/www.example.com/public_html/test.php

<!--?php echo phpinfo(); ?-->

Когда вы откроете http://www.example.com/test.php в вашем браузере, Вы увидите стандартное “PHP info”

Поздравляю) вы настроили nginx web server для работы с PHP-FastCGI ! Можно идти пить пиво!)

Установка git
Сам git устанавливается одной строчкой:

sudo aptitude install git-core git-svn gitweb

Создаем нового пользователя:

sudo adduser git

Настраиваем git web:

sudo vim /etc/gitweb.conf
# path to git projects (<project>.git)
$projectroot = "/home/git";

# directory to use for temp files
$git_temp = "/tmp";

# target of the home link on top of all pages
#$home_link = "/gitweb/";

# html text to include at home page
$home_text = "indextext.html";

# file with project list; by default, simply scan the projectroot dir.
$projects_list = $projectroot;

# stylesheet to use
$stylesheet = "gitweb.css";

# logo to use
$logo = "git-logo.png";

# the 'favicon'
$favicon = "git-favicon.png";

А теперь добавим настройки для apache2(Он должен бить установлен и настроен. Как установить apache описано в старих постах)

sudo vim /etc/apache2/conf.d/gitweb
Alias /gitweb /usr/share/gitweb

<directory >
  Options FollowSymLinks +ExecCGI
  AddHandler cgi-script .cgi
  Order deny,allow
  Allow from all
</directory>

<location ">
                Order deny,allow
                Allow from all
</location>

Перезагружаем apache2

sudo apache2ctl graceful

Создаем первий репозиторий:

sudo su - git
cd ~
mkdir test
cd test
git init --bare

Тепер можна поключаться к репозиторию и заливать свой проект. Для работи я іспользую JetBranins продукти
Вот прмер строки подключения git@127.0.0.1:test
(Нужно вводить пароль пользователя git)
Для подключения к репозиторию с eclips срока виглядит также.

А также можно посмотреть свои проекти по адресу http://localhost/gitweb/

Для начала устанавливаем Apache2:

apt-get install apache2

После, включаем WebDAV модули:

a2enmod dav_fs
a2enmod dav

Перезагружаем Apache2:

/etc/init.d/apache2 restart

Создание виртуальных хостов
Создаем каталог и устанавливаем на него соответствующие права:

mkdir -p /var/www/web/
chown www-data /var/www/web/

Создаем резервную копию конфигурационного файла, чтобы всегда могли вспомнить что же накуралесили:

cp /etc/apache2/sites-available/default /etc/apache2/sites-available/default.bak
vim /etc/apache2/sites-available/default
NameVirtualHost *
<VirtualHost *>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/web/
<Directory /var/www/web/>
Options Indexes MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>

Перезагружаем конфигурацию Apache:

/etc/init.d/apache2 reload

Настраиваем виртуальный хост для WebDAV
Создаем файл паролей WebDAV –> /var/www/web/passwd.dav с пользователем thetech:

htpasswd -c /var/www/web/passwd.dav thetech

ключ -с создает новый файл, если до этого он не существовал.
На запрос вводим нужный пароль для пользователя.
Устанавливаем требуемые права доступа, чтобы никто не смог скачать или взломать сервер WebDAV:

chown root:www-data /var/www/web/passwd.dav
chmod 640 /var/www/web/passwd.dav

И теперь редактируем файл виртуального хоста для работы WebDAV,

vim /etc/apache2/sites-available/default

и добавляем строки:

[...]
Alias /webdav /var/www/web/
<Location /webdav>
DAV On
AuthType Basic
AuthName «webdav»
AuthUserFile /var/www/web/passwd.dav
Require valid-user
</Location>
[...]

В конце всех этих манипуляций у вас должно получится:

NameVirtualHost *
<VirtualHost *>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/web/
<Directory /var/www/web/>
Options Indexes MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
Alias /webdav /var/www/web
<Location /webdav>
DAV On
AuthType Basic
AuthName «webdav»
AuthUserFile /var/www/passwd.dav
Require valid-user
</Location>
</VirtualHost>

Перезагружаем конфигурацию Apache2:

/etc/init.d/apache2 reload

Проверяем работу WebDAV
Устанавливаем консольный client WebDAV – cadaver:

apt-get install cadaver

Тестируем работу WebDAV:

cadaver http://localhost/webdav/

У вас должен появится запрос на ввод имени пользователя. Вводим логин и пароль. Если вы вошли в созданный каталог, то у вас все получилось!

cadaver http://localhost/webdav/
Authentication required for webdav on server `localhost':
Username: thetech
Password:
dav:/webdav/ quit
Connection to `localhost' closed.

Есть два вида ssh проброса туннелей:
Первый вы открываете на удаленной машине локальный порт

 ssh root@bukashk0zzz.org.ua -R 2222:46.4.14.146:22 

где 2222 на удаленной машине, а 22 локальный порт.
IP нужно указывать удаленного сервера.

Второй на локальной машине открываем удаленный порт

 ssh root@bukashk0zzz.org.ua -L 2222:46.4.14.146:22

где 2222 локальный порт, а 22 порт на удаленной машине.
IP нужно указывать удаленного сервера.

Часто возникает потребность в написании скриптов которые конектятся на машину и выполняют какие либо команды. Но как бить если нужно вводить пароль для того чтобы залогинится на хост? Все очень просто достаточно знать 2 команды с помощью которых можно сделать так что заходить по ssh на машину возможно без пароля.

ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub bukashk0zzz@10.0.0.1

Первой создаем ключ, второй копируем его на машину на которую нужно заходить.

Вже повинно бути встановлене таке програмне забезпечення: Apache2, MySQL 5, Apache2_mod_perl

1) Скачування tar.gz:

 shell> cd /opt/
 shell> wget otrs-x.x.x.tar.gz
 shell> tar -xzvf otrs-x.x.x.tar.gz
 shell> mv otrs-x.x.x otrs

2) Установка додаткових Perl модулів:

Перевірити які модулі вже встановлені та які потрібно встановити можна командою:

shell> perl /opt/otrs/bin/otrs.CheckModules.pl

Встановити потрібні Perl модулі, можна так:

 shell> apt-get search Digest::MD5
 shell> apt-get install libdigest-md5-perl

3) Створення OTRS користувача:

 shell> useradd -d /opt/otrs/ -c 'OTRS user' otrs
 shell> usermod -G www-data otrs

4) Підготовка config файлів:

 shell> cd /opt/otrs/
 shell> cp Kernel/Config.pm.dist Kernel/Config.pm
 shell> cd Kernel/Config/
 shell> for foo in *.dist; do cp $foo `basename $foo .dist`; done

5) Перевіряємо чи є всі необхідні бібліотеки для роботи OTRS:

 shell> perl -cw /opt/otrs/bin/cgi-bin/index.pl
 /opt/otrs/bin/cgi-bin/index.pl syntax OK
 shell> perl -cw /opt/otrs/bin/otrs.PostMaster.pl
 /opt/otrs/bin/otrs.PostMaster.pl syntax OK

6) Налаштування Webserver:

Добавляємо в /etc/apache2/httpd.conf цю строку:

 HTTPD_CONF_INCLUDE_FILES=/opt/otrs/scripts/suse-httpd.include.conf

7) Встановлюємо права на файли:

 shell> bin/otrs.SetPermissions.pl --otrs-user=otrs --web-user=www-data --otrs-group=otrs --web-group=www-data /opt/otrs 

8 ) Продовження встановлення за допомогою WEB інтерфейсу:

http://yourhost/otrs/installer.pl

9) Перший вхід:

http://yourhost/otrs/index.pl

User: root@localhost
PW: root
10) Відправка тестового листа:

 shell> cat /opt/otrs/doc/sample_mails/test-email-1.box | /opt/otrs/bin/otrs.PostMaster.pl 

11) Встановлення завдань в Cron:

 shell> cd var/cron
 shell> for foo in *.dist; do cp $foo `basename $foo .dist`; done
 shell> /opt/otrs/bin/Cron.sh start

12) Радіємо)

Для начала нужно в консоли Mac OS выполнить команду

defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1

Тепер заходим в настройки Time Machine и там уже можем указать в качестве диска на котором будем хранить информацию ваш любой подключений сетевой диск.

Нажиманм кнопку создать бекап сейчас и ждем пока появится ошибка

Time Machine could not complete the backup.
The backup disk image “/Volumes/backups-1/Wall-E.sparsebundle” could not be created (error 45).

Теперь нам нужно найти имя вашего компьютера и его MAC адрес

Узнаем MAC адрес
В консоле выполняем

ifconfig en0 | grep ether | awk ‘{print $2}’ | sed ‘s/://g’

Узнаем имя вашего компьютера
Заходим в системние настройки , общий доступ и там есть Имя компьютера)

Теперь нам нужно создать sparsebundle и скопировать его на сетевой диск в то место где ваш Time Machine питался его создать в первий раз но у него не плучилось.

Выполняем команду указав свои данние

sudo hdiutil create -size 320g -type SPARSEBUNDLE -nospotlight -volname “Backup of ” -fs “Case-sensitive Journaled HFS+” -verbose ~/Desktop/_.sparsebundle

Домашняя страничка проекта eAccelerator

http://www.eaccelerator.net/

Установка eAccelerator

Для начала нужно установить пакет

apt-get install php5-dev

Загружаем eaccelerator

wget http://bart.eaccelerator.net/source/0.9.5/eaccelerator-0.9.5.tar.bz2

Извлекаем архив.

tar jxvf eaccelerator-0.9.5.tar.bz2
cd eaccelerator-0.9.5

Запускаем конфигуратор и инсталляцию.

phpize
./configure –enable-eaccelerator=shared –with-php-config=/usr/bin/php-config
make
make install

После этого установка eaccelerator завершена.

Теперь нужно добавить eaccelerator в конфигурационный фал php

vi /etc/php5/apache2/php.ini
extension=”eaccelerator.so”
eaccelerator.shm_size=”16″
eaccelerator.cache_dir=”/tmp/eaccelerator”
eaccelerator.enable=”1″
eaccelerator.optimizer=”1″
eaccelerator.check_mtime=”1″
eaccelerator.debug=”0″
eaccelerator.filter=”"
eaccelerator.shm_max=”0″
eaccelerator.shm_ttl=”0″
eaccelerator.shm_prune_period=”0″
eaccelerator.shm_only=”0″
eaccelerator.compress=”1″
eaccelerator.compress_level=”9″

Если ви хотите установить Zend Вам нужно добавить следующие строки в конфигурационный файл /etc/php4/apache2/php.ini file

zend_extension=”/usr/lib/php5/eaccelerator.so”
eaccelerator.shm_size=”16″
eaccelerator.cache_dir=”/tmp/eaccelerator”
eaccelerator.enable=”1″
eaccelerator.optimizer=”1″
eaccelerator.check_mtime=”1″
eaccelerator.debug=”0″
eaccelerator.filter=””
eaccelerator.shm_max=”0″
eaccelerator.shm_ttl=”0″
eaccelerator.shm_prune_period=”0″
eaccelerator.shm_only=”0″
eaccelerator.compress=”1″
eaccelerator.compress_level=”9″

Создание директории для кеша

mkdir /tmp/eaccelerator
chmod 0777 /tmp/eaccelerator

Рестартуем apache2

/etc/init.d/apache2 restart

Тестируем Ваш eaccelerator

Создаем файл

< ?php
eaccelerator();
?>

Если все хорошо то вы увидите страницу с информацией об установленном eAccelerator.

Или вы можете использовать следующую команду:

php -v

Открываем файл /etc/apt/sources.list в текстовом редакторе с правами рута Добавляем эти строки:

sudo gedit /etc/apt/sources.list

Для ubuntu 7.10 (Gutsy Gibbon):

deb http://repository.cairo-dock.org/ubuntu gutsy cairo-dock

Для ubuntu 8.04(Hardy Heron):

deb http://repository.cairo-dock.org/ubuntu hardy cairo-dock

Для ubuntu 9.04(Jaunty Jackalope):

deb http://repository.cairo-dock.org/ubuntu jaunty cairo-dock

Для ubuntu 9.10(Karmic Koala):

deb http://repository.cairo-dock.org/ubuntu karmic cairo-dock

Сохраняем файл и закрываем его. Затем выполняем в терминале, добавляем ключи для данного репозитария:

wget -q http://repository.cairo-dock.org/cairo-dock.gpg -O- | sudo apt-key add -

Обновляем список пакетов

sudo apt-get update

Установливаем cairo-dock и плагины для него

sudo apt-get install cairo-dock cairo-dock-plug-ins

Для запуска cairo-dock, в терминале наберите:
cairo-dock

Для того чтобы подготовить Flash накопитель мы воспользуемся программой gparted. С помощью данного софта мы сможем отформатировать флешку. А также как угодно разбить на разделы если нужно.

Устанавливаем

sudo apt-get install gparted ntfsprogs

Запускаем)

sudo gparted

интерфейс програмы предельно прост и описывать его думаю не стоит.

Записать образ можно командой:

dd if=/w7.iso of=/dev/sdx

Где  /dev/sdx   это ваша флешка как правило ето /dev/sdb1

© 2011 Записи о настройке Debian, Ubuntu
Украина онлайн Rambler's Top100 Каталог MyList.com.ua каталог сайтів