Dec
31
Posted on 31-12-2009
Filed Under (Allgemeine Informationen) by Arun Bagul

Introduction ~

—————————————–
Program (1) ~ array.sh
—————————————–

#!/bin/bash
echo “==============”
declare -a myarr[0]=”Arun”
declare -a myarr1
myarr1=(arun bagul bangalore mumbai raju santhosh)
myarr[1]=”Bagul”

echo “my name is ${myarr[0]} ${myarr[1]}”
echo “————————–”
echo “${myarr1[*]}”
echo ${myarr1[2]}
echo ${myarr1[@]}
echo “————————–”
echo “Total no of elements in array – ${#myarr1[*]}”
echo “Total no of elements in array – ${#myarr1[@]}”
echo “Size of word ‘${myarr1[2]}’ is – ${#myarr1[2]}”
echo ${#myarr1[1]}
echo ${#myarr1[0]}

echo “————————–”

#how to delete element in array
unset myarr[1]
echo “myarr is – ${myarr[*]}”

#how to assign element in array
myarr[1]=”- System Engineer!”
echo “myarr is – ${myarr[*]}”

echo ${myarr}

————————————————————————
Program (2) ~ command_line_arguments.sh
————————————————————————

#!/bin/bash

echo “Script/command name => $0″
echo “arg1 => $1″
echo “arg2 => $2″
echo “arg3 => $3″
echo “Total No of argument = $#”

echo “Script PID is => $$”
echo “Status of previous command – $?”

name=$myname
echo “Name – $name”

read n

————————————————-
Program (3) ~ default_value.sh
————————————————-

#!/bin/bash

#start=’123′
#start=${1:-$start}

start=${1:-’123′}

echo “Value of ’start’ variable is ==> $start”

—————————————————
Program (4) ~ echo_example.sh
—————————————————

#!/bin/bash

name=”Arun”

echo -e “My Name is $name_arun and \n”
echo -e “My Name is ${name}_arun and \n”

echo -e ‘My Name is $name and \n’

—————————————–
Program (5) ~ elif.sh
—————————————–

#! /bin/bash

if [ $1 -eq $2 ];then
echo “good”
elif [ $2 -eq $3 ];then
echo “Fine”
elif [ $1 -eq $3 ];then
echo “OK”
else
echo “NO”
fi

————————————————————
Program (6) ~ for_loop_example-1.sh
————————————————————

#!/bin/bash

i=1
while [ $i -le 512 ]
do
temp=$i
echo “What is => $i | $temp”
i=$(expr $i + 32)
for (( j=$temp; $j<=$i; j++ ))
do
echo -n ” $j”
done
done

———————————————————–
Program (7) ~ for_loop_example-2.sh
———————————————————–

#!/bin/bash
#for val in $(ls -1 /tmp)
sum=0
#for val in {1..5}
#for val in {$1..$2}
for((val=$1;$val<=$2;val++))
do
#echo “$val”
sum=$(expr $sum + $val )
#sum=`expr $sum + $val`
done

echo “$0 # Sum of $1 to $2 => $sum”

————————————————————
Program (8) ~ for_loop_example-3.sh
————————————————————

#!/bin/bash

for i in {1..9}
do
echo $i
done

—————————————–
Program (9) ~ function.sh
—————————————–

#!/bin/bash

function my_function()
{
name=”Arun Bagul”
echo “‘my_function’ body ~ $name”
return 1;
}
##########

myfunc()
{
echo “Another way of defining the function”
}

##########################

echo “Starting function program”
echo “——————————”

#calling function here
my_function
##
myfunc

echo -e “\n end of program”

—————————————————————————————
Program (10) ~ how_to_pass_argument_to_function.sh
—————————————————————————————

#!/bin/bash

function my_function()
{
echo “Total number of argument ~ $#”
echo “Arg1 => $1″
echo “Arg2 => $2″
echo “Arg3 => $3″
return 0;
}
##########

echo “Starting function program”
echo “——————————”

#calling function here
my_function arun bagul 1234

————————————————————————-
Program (11) ~ how_to_take_hidden_input.sh
————————————————————————-

#!/bin/bash

echo -n “Enter User Name :”
read username
echo -n “Enter Password :”
read -s mypwd

echo -e “\nI am $username and my password is – $mypwd”

——————————————————————————
Program (12) ~ how_to_take_input_from_user.sh
—————————————————————————–

#!/bin/bash

echo -ne “Enter the Name:- ”
read name
echo -n -e “Enter the Number:- ”
read num

echo “——————————”

add=$(expr $num + 10)

echo “Name is ~ $name”
echo “Number is ~ $add”

—————————————–
Program (13) ~ ifthen.sh
—————————————–

#!/bin/bash

if [ "arun" == "arun" ];then
echo “true!”
else
echo “false”
fi

echo “———————————-”

if [ 2 == 2 ];then
echo “true!”
else
echo “false”
fi

echo “———————————-”

if [ "arun" = "arun" ];then
echo “true!”
else
echo “false”
fi

echo “———————————-”

if [ 2 -eq 2 ];then
echo “true!”
else
echo “false”
fi

——————————————————
Program (14) ~ non-interactive.sh
——————————————————

#!/usr/bin/expect -f
spawn ssh arun@192.168.0.1
expect “password:”
sleep 1
send “pwd\r”
interact

—————————————————————-
Program (15) ~ read_file_line_by_line.sh
—————————————————————-

#!/bin/bash

file_name=”/etc/hosts”

while read myvar
do
echo “Line => $myvar”
done < $file_name

echo “#################################################”

for myvar1 in $(cat $file_name)
do
echo “Line => $myvar1″
done

——————————————————
Program (16) ~ reverse-number.sh
——————————————————

#!/bin/bash

declare -a date_array
num=$1
i=$(expr $(echo $num | wc -c) – 1 )

while [ $num -gt 10 ]
do
temp=$( expr $num % 10 )
num=$( expr $num / 10);
echo “Digit($i) => $temp”
date_array[$i]=”${temp}”
i=$(expr $i – 1)
done
echo “Digit($i) => $num”
date_array[$i]=”${num}”

echo ${date_array[*]}

——————————————————–
Program (17) ~ string-operation.sh
——————————————————–

#! /bin/bash

echo “Arun Bagul:-”
string=”/root/arun/bagul/image.gif”
echo “string=> $string”
echo “String=> ${string##/*/}”
echo “String=> ${string#/*/}”

echo “String=> ${string%.*}”
echo “String=> ${string%%.*}”
#str=”/home/y/conf/arunbagul/daily_market_0.conf”
str=”${str##/*conf/}”
echo “String=> ${str%/*}”

#done

mystr=”keyword_summary_exact_arunsb”
echo $mystr
echo ${mystr%_*}

echo “$*”

—————————————–
Program (18) ~ switch.sh
—————————————–

#!/bin/bash

echo ” Switch program | arg1 => $1″
echo ” ——————————-”
case $1 in

123)
echo “Case is 123″
;;

arun)
echo “Case is ‘arun’”
;;

pri*)

echo “Case is ‘pri*’”
;;

*)
echo ” * Usage: $0 ”
echo ” Default case (nothing is matched)”
exit 0;
;;
esac

—————————————————————–
Program (19) ~ while_loop_example-1.sh
——————————————————————

#!/bin/bash

mywait=wait

while [ "${mywait}" = "wait" ]
do
echo “arun”
done

——————————————————————-
Program (20) ~ while_loop_example-2.sh
——————————————————————–

#! /bin/bash

## on command line -> i=0 && while [ $i -le 10 ] ; do echo $i; i=$(expr $i + 1); done

i=0
while [ $i -le 10 ]
do
echo $i
i=$(expr $i + 1)
done

——————————————————————–

* Please download PDF file http://www.slideshare.net/arunbagul/bash-learning-by-examples/

Regards,
Arun

Dec
09
Posted on 09-12-2009
Filed Under (Allgemeine Informationen) by Arun Bagul

Einführung ~

Ich hatte geplant, Artikel auf Multi-Master-Replikation MySQL seit langer Zeit schreiben, schließlich begann jetzt!. Verwenden Sie hierzu den Artikel “How to configure MySQL-Replikation mit einem Master” URL ~ http://www.indiangnu.org/2007/mysql-replication-one-master-multiple-slave/

* Lassen Sie mich zu informieren, dass Sie alle Multi-Master-Replikation in MySQL ist lediglich auf die beiden folgenden Variablen. Es hat nichts mit Replikations-Technologie in die MySQL-Replikation verwendet tun ….

mysql> show variables like ‘%increment_%’;
+——————————-+——-+
| Variable_name                 | Value |
+——————————-+——-+
| auto_increment_increment      | 1     |
| auto_increment_offset         | 1     |
+——————————-+——-+
2 rows in set (0.00 sec)

mysql>

** Requirements ~

a) Master Hosts (2 master in my case) ~
master-1 => 10.66.66.194
master-2 => 10.66.90.135
b) Replication Slave (1 slave) ~
Slave => 10.66.75.137

c) MySQL server (with replication support)

** Let us understand how it works ?

* Master-1 Server =>

Set following variables…

mysql> set auto_increment_increment=5;
mysql> set auto_increment_offset=1;

mysql> show variables like ‘%increment_%’;
+————————–+——-+
| Variable_name            | Value |
+————————–+——-+
| auto_increment_increment | 2     |
| auto_increment_offset    | 1     |
+————————–+——-+
2 rows in set (0.00 sec)

mysql>

** Create Table ~

mysql> create table class ( rollno INT(5) NOT NULL PRIMARY KEY AUTO_INCREMENT , name VARCHAR(30) );

** Add Record now ~

mysql> INSERT INTO class VALUES (”,’Arun Bagul’);
mysql> INSERT INTO class VALUES (”,’Ravi Bhure’);
mysql> INSERT INTO class VALUES (”,’Karthik Appigita’);
mysql> INSERT INTO class VALUES (”,’Ameya Pandit’);

mysql> SELECT * FROM class;
+——–+——————+
| rollno | name             |
+——–+——————+
|      1 | Arun Bagul       |
|      3 | Ravi Bhure       |
|      5 | Karthik Appigita |
|      7 | Ameya Pandit     |
+——–+——————+
4 rows in set (0.00 sec)

mysql>

* Master-2 Server =>

Set following variables…

mysql> set auto_increment_increment=2;
mysql> set auto_increment_offset=2;

mysql> show variables like ‘%increment_%’;
+————————–+——-+
| Variable_name            | Value |
+————————–+——-+
| auto_increment_increment | 2     |
| auto_increment_offset    | 2     |
+————————–+——-+
2 rows in set (0.00 sec)

mysql>

** Create Table ~

mysql> create table class ( rollno INT(5) NOT NULL PRIMARY KEY AUTO_INCREMENT , name VARCHAR(30) );

** Add Record now ~

mysql> INSERT INTO class VALUES (”,’Nilkanth Parab’);
mysql> INSERT INTO class VALUES (”,’Nishit Shah’);
mysql> INSERT INTO class VALUES (”,’Ram Krishna’);
mysql> INSERT INTO class VALUES (”,’Suhail Thakur’);

mysql> SELECT * FROM class;
+——–+——————+
| rollno | name             |
+——–+——————+
|      2 | Nilkanth Parab   |
|      4 | Nishit Shah      |
|      6 | Ram Krishna      |
|      8 | Suhail Thakur    |
+——–+——————+
4 rows in set (0.00 sec)

mysql>

** What is the importance of “auto_increment_increment” and “auto_increment_offset” ~

mysql> desc class;
+——–+————-+——+—–+———+—————-+
| Field  | Type        | Null | Key | Default | Extra          |
+——–+————-+——+—–+———+—————-+
| rollno | int(5)      | NO   | PRI | NULL    | auto_increment |
| name   | varchar(30) | YES  |     | NULL    |                |
+——–+————-+——+—–+———+—————-+

auto_increment_offset    => This is BASE value for column with “auto_increment” attribute (please refer the above example)
auto_increment_increment => This is the increment value for column with “auto_increment” attribute

** If you combine the both tables (master-1 and master-2) the final table will look like this ~

mysql> SELECT * FROM class;
+——–+——————+
| rollno | name             |
+——–+——————+
|      1 | Arun Bagul       |
|      2 | Nilkanth Parab   |
|      3 | Ravi Bhure       |
|      4 | Nishit Shah      |
|      5 | Karthik Appigita |
|      6 | Ram Krishna      |
|      7 | Ameya Pandit     |
|      8 | Suhail Thakur    |
+——–+——————+
8 rows in set (0.00 sec)

mysql>

** This is how Multi master replication works….

auto_increment_offset=Nth master server
auto_increment_increment=M

Wo –
N => n-te Zahl der Master-Server (auf Master-1 keep it 1 und Master-2 keep it 2 und so weiter ..)
M => Anzahl der Master-Server (2 in unserem Fall aber besser, diesen Wert so hoch zu halten, dass wir neue Master-Server hinzufügen können)

log-slave-updates => Slave-Server nicht anmelden, um sein eigenes Binärlog alle Aktualisierungen, die von einem Master-Server empfangen werden. Diese Option weist den Slave die Updates von der SQL-Thread auf seine eigenen Binärlog zu schreiben.

** Stellen Sie sicher, dass MySQL läuft und sich auf allen Servern und Master-Slave-Server -

How to setup Multi-Master-Replikation MySQL? –

Step 1] Create Database/Tables on  Master  & Slave Servers -

You can create DB on all master & slave server or  create on one server and export that DB on  rest of all servers…

Master-1 => Create DB and Table

mysql> create database student;

mysql> use student;

mysql> create table class ( rollno INT(5) NOT NULL PRIMARY KEY AUTO_INCREMENT , name VARCHAR(30) );

mysql> show tables;
+——————-+
| Tables_in_student |
+——————-+
| class             |
+——————-+
1 row in set (0.00 sec)

mysql> desc class;
+——–+————-+——+—–+———+—————-+
| Field  | Type        | Null | Key | Default | Extra          |
+——–+————-+——+—–+———+—————-+
| rollno | int(5)      | NO   | PRI | NULL    | auto_increment |
| name   | varchar(30) | YES  |     | NULL    |                |
+——–+————-+——+—–+———+—————-+
2 rows in set (0.00 sec)

mysql> SELECT * FROM class;
Empty set (0.00 sec)
mysql>

* Now take dump of “student” DB and export it on all master and Slave server…

[root@master-1~]# mysqldump -u root -p  -d student > /home/arunsb/student.sql

* SCP the dump file on master-2 and slave server ~
[root@master-1~]# scp /home/arunsb/student.sql arunsb@10.66.90.135:/tmp/student.sql
[root@master-1~]# scp /home/arunsb/student.sql arunsb@10.66.75.137:/tmp/student.sql

Login on master-2 and slave ~

mysql> create database student;

[root@master-2~]# mysql -u root -p student < /tmp/student.sql
Enter password:
[root@master-2~]#

[root@master-2~]# mysql -u root -p
Enter password:

mysql> use student

mysql> SELECT * FROM class;
Empty set (0.00 sec)
mysql>

** Please repeat the same steps on Slave server as well…

Step 2] Update “my.cnf” config file on master-1,master-2 and slave server -

[root@master-1~]# cat /etc/my.cnf

###########################
##MySQL replication setting

#Master setting(1)
server-id = 1
log-bin = /var/log/mysql/binary/mysql-bin.log
binlog-do-db = student
binlog-ignore-db = mysql
#log = /var/log/mysql/mysql.log
auto_increment_offset=1
auto_increment_increment=5
log-slave-updates

##slave setting
master-port=3306
master-host=10.66.90.135
master-user=replication
master-password=mypwd
master-connect-retry=60
replicate-do-db=student
###########################

[root@master-1~]#

[root@master-2~]# cat /etc/mysql/my.cnf

###########################
##MySQL replication setting

#Master setting(2)
server-id = 2
log-bin = /var/log/mysql/binary/mysql-bin.log
binlog-do-db=student
binlog-ignore-db = mysql
log = /var/log/mysql/mysql.log
auto_increment_offset=2
auto_increment_increment=5
log-slave-updates

##slave setting
master-port=3306
master-host=10.66.66.194
master-user=replication
master-password=mypwd
master-connect-retry=60
replicate-do-db=student
###########################

[root@master-2~]#

* please create directory for binary log and set permission…

[root@master-1~]# mkdir -p /var/log/mysql/binary/
[root@master-1~]# chown mysql:adm  /var/log/mysql/ /var/log/mysql/binary/

[root@master-2~]# mkdir -p /var/log/mysql/binary/
[root@master-2~]# chown mysql:adm  /var/log/mysql/ /var/log/mysql/binary/

** MySQL Replication Slave ~

[root@slave~]# cat  /etc/my.cnf

[mysqld]

########################################
##slave setting
server-id=4
master-port=3306
master-host=10.66.90.135
master-user=replication
master-password=mypwd
master-connect-retry=60
replicate-do-db=student
########################################

[root@slave~]#

Step 3] Give Replication permission on both masters ~

** Master (1 & 2) ~

mysql> GRANT REPLICATION SLAVE ON *.* TO ‘replication’@'10.66.%.%’ IDENTIFIED BY ‘mypwd’;
Query OK, 0 rows affected (0.00 sec)

mysql>

Step 4] Restart MySQL on both master as well as replication slave server ~

** Please verify setting on master-1 and master-2 server…

* Master-1

mysql> show variables like ‘%increment_%’;
+————————–+——-+
| Variable_name            | Value |
+————————–+——-+
| auto_increment_increment | 5     |
| auto_increment_offset    | 1     |
+————————–+——-+
2 rows in set (0.00 sec)

* Master-2

mysql> show variables like ‘%increment_%’;
+————————–+——-+
| Variable_name            | Value |
+————————–+——-+
| auto_increment_increment | 5     |
| auto_increment_offset    | 2     |
+————————–+——-+
2 rows in set (0.00 sec)

** Please verify ‘master’ & ’slave’ status on both masters(1 & 2) and slave -

mysql> show master status;
mysql> show slave status;

** Multi Master replication is started…

Step 5] Add few records on Master-1 & Master-2 server at same time ~

Add records on both master server at same time and check master and replication slave status as shown above….

** Add following on master-1

mysql> INSERT INTO class VALUES (”,’Arun Bagul’);
mysql> INSERT INTO class VALUES (”,’Ravi Bhure’);
mysql> INSERT INTO class VALUES (”,’Karthik Appigita’);
mysql> INSERT INTO class VALUES (”,’Ameya Pandit’);

** Add following on master-2

mysql> INSERT INTO class VALUES (”,’Nilkanth Parab’);
mysql> INSERT INTO class VALUES (”,’Nishit Shah’);
mysql> INSERT INTO class VALUES (”,’Ram Krishna’);
mysql> INSERT INTO class VALUES (”,’Suhail Thakur’);

** Please verify the numbers of records on both masters and slave….

mysql> SELECT * FROM class;
+——–+——————+
| rollno | name             |
+——–+——————+
|      1 | Arun Bagul       |
|      2 | Nilkanth Parab   |
|      6 | Ravi Bhure       |
|     11 | Karthik Appigita |
|     16 | Ameya Pandit     |
|     17 | Nishit Shah      |
|     22 | Ram Krishna      |
|     27 | Suhail Thakur    |
+——–+——————+
8 rows in set (0.00 sec)

mysql>

* Also haben wir alle gelernt, zu konfigurieren, Multi-Master-Replikation MySQL. Viel Spaß!

Grüße,
Arun Bagul

Dec
02
Posted on 02-12-2009
Filed Under (Allgemeine Informationen) by Arun Bagul

Einführung –

* “Rpmbuild” Werkzeug wird verwendet, um beide zu bauen …

1) ~ Binary-Paket verwendet, um die Software zu installieren und Skripten unterstützt. Es enthält die Dateien, die die Anwendung umfassen, zusammen mit zusätzlichen Informationen, die zu installieren und zu löschen.
2) ~ Quellcode-Paket enthält die Original-komprimierten tar-Datei des Quellcodes, Patches und File-Spezifikation.

* Was ist RPM und RPM-Paket-Manager?

Die RPM Package Manager (RPM) ist ein leistungsfähiges Befehlszeilen-Paket-Management-System, das Installieren, Deinstallieren, Überprüfung, Abfrage und Aktualisierung von Softwarepaketen.

RPM-Paket besteht aus einem Archiv von Dateien und Meta-Daten, die zur Installation und Archiv-Dateien zu löschen. Die Meta-Daten umfassen Hilfsskripte, Dateiattribute und beschreibende Informationen über das Paket.

* So erstellen Sie RPM-Paket müssen Sie drei Dinge angeben ~

1) Quelle der Anwendung – in jedem Fall, sollten Sie nicht ändern, die Quellen in der Paket-Erstellung verwendet.

2) Patches – RPM gibt Ihnen die Möglichkeit, automatisch Patches zu ihnen. Der Patch behebt ein Problem, speziell für das Zielsystem. Dies könnte auch die Veränderung Makefiles um den Antrag in die entsprechenden Verzeichnisse der Lösung von Cross-Plattform installieren Konflikte. Patches erstellen, die Umwelt für die ordnungsgemäße Erstellung erforderlich.

3) Specification File – Die Spezifikation Datei befindet sich im Herzen von RPM-Paket Bauprozess. Es enthält Informationen, die von RPM benötigt, um das Paket zu erstellen, sowie Instruktionen, RPM, wie sie zu bauen. Die Spezifikation Datei bestimmt auch genau, welche Dateien ein Teil des Pakets sind, und wo sie installiert werden.

** Spezifikation Datei ~ ist um 8 Abschnitte unterteilt, wie unten gezeigt

a) Präambel ~ enthält Informationen, die angezeigt werden, wenn Anwender Informationen über das Paket anfordert. Dies würde eine Beschreibung der Funktion des Pakets gehören die Version der Software etc.

b) Herstellung ~ wo die eigentliche Arbeit des Aufbaus eines Pakets gestartet. Wie der Name schon sagt, ist dieser Abschnitt, wo die notwendigen Vorbereitungen vor dem eigentlichen Aufbau der Software vorgenommen werden. In der Regel, wenn alles muss geschehen, bevor die Quellen für den Aufbau der Software sein, muss es in der Vorbereitung Abschnitt passieren. Der Inhalt dieses Abschnitts sind eine normale Shell-Skript. Jedoch nicht RPM zwei Makros bieten das Leben leichter machen. Ein Makro kann eine komprimierte tar-Datei entpacken und in das Quell-Verzeichnis cd. Die anderen Makros gilt leicht Patches auf die entpackte Quellen.

c) Build ~ Dieser Abschnitt besteht aus einer Shell-Skript. Es wird verwendet, um Befehle auszuführen, was sind erforderlich, um tatsächlich den Quellen kompilieren wie Single-make-Befehl, oder komplizierter sein, wenn der Build-Prozess erfordert. Es gibt keine Makros in diesem Abschnitt.

d) Installieren ~ Dieser Abschnitt beinhaltet auch ein Shell-Skript, die Installation Abschnitt wird verwendet, um die Befehle benötigt, um tatsächlich die Installation der Software ausführen.

e) Installieren und Deinstallieren von Scripts ~ Es besteht aus Skripten, die ausgeführt werden, auf dem System des Benutzers, wenn das Paket tatsächlich installiert oder entfernt. RPM kann ein Script ausführen pre / post Installation / Deinstallation des Pakets.

f) Stellen Sie sicher, Script ~ Skript, das auf dem System des Benutzers ausgeführt wird. Es wird ausgeführt, wenn das RPM-Paket ist die ordnungsgemäße Installation überprüft.

g) Abschnitt Sauberkeit ~ Skript, das Dinge sauber nach dem aufbauen können. Dieses Skript wird nur selten verwendet, da RPM in der Regel einen guten Job gemacht hat Clean-up in den meisten Build-Umgebungen.

h) Dateiliste ~ besteht aus einer Liste von Dateien, die das Paket enthalten. Darüber hinaus können eine Reihe von Makros verwendet werden, um Dateiattribute Kontrolle bei der Installation, sowie zu bezeichnen, welche Dateien Dokumentation sind, und die Konfigurations-Informationen enthalten. Die Dateiliste ist sehr wichtig.

*** RPM Voraussetzung für die Build-Umgebung ~

A] U / min erfordert eine Reihe von Verzeichnissen, die Ausführung der zu bauen. Während die Standorte der Verzeichnisse und Namen können geändert werden. Standard-Layout wird unten gezeigt –

root @ arunsb: ~ # ls-l / usr / src / redhat /

drwxr-xr-x 2 root root 4096 25. August 2007 SOURCES => Enthält die Original-Quellen, Patches und Icon-Dateien
drwxr-xr-x 2 root root 4096 25. August 2007 SPECS => Enthält die Spezifikations-Dateien
drwxr-xr-x 2 root root 4096 25. August 2007 BUILD => Verzeichnis, in dem die Quellen entpackt werden, und Software wird gebaut
drwxr-xr-x 8 root root 4096 28. Mai 2008 RPMS => Enthält die Binär-Paket Dateien, die von den Build-Prozess erstellt
drwxr-xr-x 2 root root 4096 25. August 2007 SRPMS => Quellcode-Paket enthält die Dateien, die von den Build-Prozess erstellt

root @ arunsb: ~ #

B] Need zu exportieren einige globale Variablen durch RPM verwendet –

root @ arunsb: ~ # export RPM_BUILD_DIR = / usr / src / redhat / BUILD /
root @ arunsb: ~ # export RPM_SOURCE_DIR = / usr / src / redhat / SOURCES /

Schritt 1] erstellen Spezifikation (spec) Datei ~

root @ arunsb: ~ # head-n 50 / usr / src / redhat / SPECS / openlsm.spec
# Authority: Arun Bagul

# RPM_BUILD_DIR / usr / src / redhat / BUILD /
# RPM_SOURCE_DIR / usr / src / redhat / SOURCES /

% define MY_PREFIX / usr / local / openlsm /

# # Präambel Section -
Name: openlsm
Version: 0.99
Hersteller: IndianGNU.org & openlsm
Release: r45
Group: System Environment / Daemons
Packager: IndianGNU.org (http://www.indiangnu.org)
URL: http://openlsm.sourceforge.net/
Zusammenfassung: openlsm Admin-Server
Lizenz: GPL

% description
openlsm Admin-Server ist kostenlos und Open-Source-Web-basiertes Control Panel für Linux, Unix-Systemen.

# # Section-Vorbereitung
% prep

rm-rf $ (RPM_BUILD_DIR) / openlsm-0.99-R45 /
tar xvfz RPM_SOURCE_DIR $ () / openlsm-0,99-r45.tar.gz-C $ (RPM_BUILD_DIR)

# # Build-Abschnitt
% build

cd ./openlsm-0.99-r45 /
. / configure-prefix = / usr / local / openlsm-with-mysql = / usr / bin / mysql_config-enable-interne-pcre-mit-geoip = / usr-with-ldap = / usr-enable-trace
machen

# # Install-Abschnitt
% install

cd ./openlsm-0.99-r45 /
make install

# # Files-Sektion
% files

/ usr / local / openlsm
/ usr / local / openlsm / etc / openlsm / openlsm.conf
/ usr / local / openlsm / etc / openlsm / openlsm.conf.perf_sample
/ usr / local / openlsm / etc / openlsm / ssl /
/ usr / local / openlsm / bin / openlsm-config
….
… ..
… .. Liste der Dateien, die von pkg installiert
root @ arunsb: ~ #

* Wie erstellen Sie die Datei-Liste?

Erstellen der Datei-Liste ist manuell. Was ich tat, ist nahm ich die Datei-Liste aus meiner Anleitung installiert Präfix Verzeichnis mit Befehl finden wie unten gezeigt …

root @ arunsb: ~ # find / usr / local / openlsm /-type f-oder-Typ D

Schritt 2] Ab dem Build ~

root @ arunsb: ~ # cd / usr / src / redhat / SPECS
root @ arunsb: / usr / src / redhat / SPECS # ls-l openlsm.spec
-rw-r-r-1 root root 12938 2. Dezember 17.21 openlsm.spec
root @ arunsb: / usr / src / redhat / SPECS #

root @ arunsb: / usr / src / redhat / SPECS # rpmbuild-ba openlsm.spec

….
… ..

Überprüfen bei unverpackten Datei (en): / usr / lib / rpm / check-files% (buildroot)
Schrieb: / usr/src/redhat/SRPMS/openlsm-0.99-r45.src.rpm
Schrieb: / usr/src/redhat/RPMS/i386/openlsm-0.99-r45.i386.rpm
root @ arunsb: / usr / src / redhat / SPECS # echo $?
0

root @ arunsb: / usr / src / redhat / SPECS # ls-l / usr/src/redhat/SRPMS/openlsm-0.99-r45.src.rpm
-rw-r-r-1 root root 3206 2. Dezember 17.50 Uhr / usr/src/redhat/SRPMS/openlsm-0.99-r45.src.rpm
root @ arunsb: / usr / src / redhat / SPECS # ls-l / usr/src/redhat/RPMS/i386/openlsm-0.99-r45.i386.rpm
-rw-r-r-1 root root 3052868 2. Dezember 17.50 Uhr / usr/src/redhat/RPMS/i386/openlsm-0.99-r45.i386.rpm
root @ arunsb: / usr / src / redhat / SPECS #

* Quelle und Binär-Paket erzeugt!

** Mal sehen, was passiert ist in “/ usr / src / redhat /”-Verzeichnis

root @ arunsb: / usr / src / redhat # pwd
/ usr / src / redhat
root @ arunsb: / usr / src / redhat # ls
BUILD RPMS SOURCES SPECS SRPMS
root @ arunsb: / usr / src / redhat # ls BUILD /
openlsm-0.99-r45 <== Quelle extrahiert hier als Teil des Build-Instruktionen von der Spezifikation Datei zB “openlsm.spec”
root @ arunsb: / usr / src / redhat # ls SOURCES /
openlsm-0,99-r45.tar.gz <== Original “openlsm-0,99-r45.tar.gz” Quelle von mir kopierte Datei
root @ arunsb: / usr / src / redhat # ls RPMS /
athlon i386 i486 i586 i686 noarch
root @ arunsb: / usr / src / redhat RPMS/i386 # ls /
openlsm-0,99-r45.i386.rpm <== Binär-RPM-Paket erstellt!
root @ arunsb: / usr / src / redhat SRPMS # ls /
openlsm-0,99-r45.src.rpm <== Source-RPM-Paket erstellt!
root @ arunsb: / usr / src / redhat #

Schritt 3] Jetzt installieren Sie das Paket und testen Sie es ~

root @ arunsb: / usr / src / redhat RPMS/i386/openlsm-0.99-r45.i386.rpm # cp / home / arunsb /

root @ arunsb: / usr / src / redhat # cd / home / arunsb /
root @ arunsb: ~ # ls
openlsm-0,99-r45.i386.rpm
root @ arunsb: ~ # rpm-ivh openlsm-0,99-r45.i386.rpm
Preparing … ########################################### [100%]
1: openlsm ########################################### [100%]
root @ arunsb: ~ # ls / usr / local / openlsm /
bin contrib etc gehören lib sbin Skripte Aktien var
root @ arunsb: ~ #

** Starten des openlsm-Server ~

root @ arunsb: ~ # / usr / local / openlsm / contrib / openlsm-redhat starten
* Starting openlsm Admin-Server: openlsm
. [OK]
root @ arunsb: ~ #
root @ arunsb: ~ # / usr / local / openlsm / contrib / openlsm redhat-Status
openlsm (pid 21607) läuft …
root @ arunsb: ~ #

root @ arunsb: ~ # rpm-q openlsm-0.99-r45
openlsm-0.99-r45
root @ arunsb: ~ #

root @ arunsb: ~ # rpm-ql openlsm-0.99-r45
..

root @ arunsb: ~ # rpm-qiv openlsm-0.99-r45
Name: openlsm Relocations: (nicht verschiebbar)
Version: 0.99 Hersteller: IndianGNU.org & openlsm
Release: r45 Build Date: Mi 02 Dec 2009 05:50:54 PM ist
Install Date: Mi 02 Dec 2009 06:06:23 PM ist Build Host: alongseveral-dr.eglbp.corp.yahoo.com
Group: System Environment / Daemons Source RPM: openlsm-0,99-r45.src.rpm
Grösse: 14877918 Lizenz: GPL
Signature: (none)
Packager: IndianGNU.org (http://www.indiangnu.org)
URL: http://openlsm.sourceforge.net/
Zusammenfassung: openlsm Admin-Server
Beschreibung:
openlsm Admin-Server ist kostenlos und Open-Source-Web-basiertes Control Panel für Linux, Unix-Systemen.
root @ arunsb: ~ #

** Hinweis ~ Dieser Artikel keine Informationen darüber enthalten, wie micros definieren, wie man Dokumente zu kopieren, sind man-Seiten Standort standardmäßig, wie Baugenehmigungen und Eigenverantwortung usw. Ich werde diese Themen im nächsten Artikel über RPM-Decke.

** Bitte beachten Sie die Englisch Artikel ~ http://www.indiangnu.org/2009/how-to-create-or-build-rpm-package/

Grüße,
Arun Bagul

Einführung ~

GNU Privacy Guard (GnuPG oder GPG) ist Open Source / Free Software-Verschlüsselung und Signatur-Tool, Alternative zu den Pretty Good Privacy (PGP) Suite von Kryptographie-Software. Enigmail ist eine Erweiterung für Mozilla Thunderbird und Mozilla-Anwendungen. Es bietet öffentlichen Schlüssel E-Mail-Verschlüsselung. Aktuelle kryptographische Funktionen von GNU Privacy Guard (GnuPG, GPG) behandelt.

Schritt 1] GnuPG installieren oder GPG –

* Ubuntu / Debian ~

root @ Arun: ~ # apt-get install gnupg gnupg2

* Redhat / Fedora ~

root @ Arun: ~ # yum install gnupg gnupg2

Schritt 2] Wie installiere ich Enigmail?

Ich gehe davon aus, dass Mozilla Thunderbird bereits auf Ihrem System installiert ist. So installieren Sie “Enigmail” folgen folgenden Schritte

a) Download “Enigmail” aus url “http://enigmail.mozdev.org/download/”

Hinweis: ~ select OS und Thunderbird-Version richtig.

b) in der Menüleiste der wichtigsten Thunderbird-Fenster sehen Sie “Extras”. Wählen Sie diese, und dann auf “Add-ons”-Option. Dies öffnet ein neues Fenster mit allen Ihren Thunderbird-Plug-Ins. In der unteren linken Ecke des neuen Fensters finden Sie einen Button sehen der Aufschrift “Install”. Klicken Sie auf diese Schaltfläche. Erzähl Thunderbird in dem Sie die Enigmail. XPI-Datei. und einfach sagen, “Install” that’s it!

* Once ‘Enigmail’ installiert ist, starten Sie den Thunderbird. Dann werden Sie sehen “OpenPGP”-Reiter im Hauptmenü von Thunderbird.

Schritt 3] Setup private / öffentliche Schlüssel ~

Enigmail setzt Public-Key Kryptographie, um die Privatsphäre zwischen Ihnen und Ihren Korrespondenten gewährleisten. Um die öffentlich / privaten Schlüssel gibt es zwei Methoden, entweder erzeugen sie mit Hilfe von “gpg” Kommandozeilen-Tool oder benutzen Sie “Enigmail” ….

* Wir erzeugen private / öffentliche kryptographische Schlüssel mit Hilfe von “Enigmail” wie unten gezeigt ….

a) Klicken Sie auf “OpenPGP” in der Menüleiste des Thunderbird-Hauptfenster. Wählen Sie “Key Management”.
b) In Enigmail Key Manager ~ klicken Sie auf “Erstellen”-Registerkarte in der Menüleiste und wählen Sie “Neuer Schlüssel-Paar”.
c) An der Spitze des Fensters sehen Sie ein Auswahlmenü mit allen Ihrer E-Mail-Adressen. GnuPG wird Ihre neue Schlüssel mit einem E-Mail-Adresse zuordnen.
Enigmail ist nur bitten Sie, die gewünschte Adresse für diesen Schlüssel verwenden. Wählen Sie die Konten werden verschlüsselte E-Mail erhalten.

HINWEIS ~ Wir können dieselben Tasten für mehrere Konten.

d) Sie können Passphrase oder einfach nur “no Passphrase” Option wählen, um Schlüssel ohne Passwort zu generieren.
e) Verzeichnis erstellen zu retten “Revocation Zertifikate” …

arunsb @ Arun: ~ $ mkdir / home / arunsb / .gpg_key /

f) Klicken Sie auf “Generate key”-Taste, um Schlüssel zu generieren. Fertig ..

Um Aktien-Tasten können Sie einfach veröffentlichen Sie Ihre Schlüssel mit Keyserver.

a) In “Key Management”-Fenster wählen Sie Ihren Schlüssel und klicken Sie dann auf die Registerkarte “Keyserver” im Hauptmenü und klicken Sie dann auf “Upload Public Keys”
Hinweis: ~ stellen Sie sicher, zu überprüfen, “Display All Keys by Default” markieren (alle Tasten list)

Schritt 4] die E-Mail verfassen und zu unterschreiben ~

Verfassen Sie die E-Mail und sagen Sie Enigmail zu unterzeichnen. An der Spitze Ihres Compose-Fenster sehen Sie eine Schaltfläche Lesung finden Sie unter “OpenPGP”. Klicken Sie auf diese. Stellen Sie sicher, dass die “Sign”-Option, und nur, dass überprüft wird. Schließlich “Senden” die E-Mail! (Sie werden nach Ihrer Passphrase gefragt werden. Sobald Sie eingegeben haben, wird Ihre E-Mail Enigmail unterzeichnen und schicken Sie es, wenn Sie Ihre eigenen Schlüssel mit Passphrase es wird nicht fragen)
/ pgp_enigmail-compose

Viel Spaß!

Grüße,
Arun Bagul

Oct
15

Einführung ~

Finden Sie in der folgenden Artikel / configure Jabberd2 installieren …

http://www.indiangnu.org/2009/how-to-configure-jabber-jabberd2-with-mysqlpam-as-auth-database/

Requirement ~

* Folgende Pakete sind erforderlich, um zu kompilieren MU-Konferenz …

root @ laptop: ~ # apt-get install libglib2.0-0 libglib2.0-dev
root @ laptop: ~ # apt-get install libidn11 libidn11-dev
root @ laptop: ~ # apt-get install expat lib64expat1 lib64expat1-dev libexpat1-dev liblua5.1-expat-dev liblua5.1-expat0

Schritt 1] Wie kompilieren “MU-Conference” –

* Download “MU-Konferenz” von folgender URL – https: / / gna.org / projects / mu-Konferenz /

root @ laptop: / var / src # wget-c http://download.gna.org/mu-conference/mu-conference_0.8.tar.gz
root @ laptop: / var / src # tar xvfz mu-conference_0.8.tar.gz
root @ laptop: / var / src # cd mu-conference_0.8 /
root @ laptop: / var/src/mu-conference_0.8 #

* MU compile-Konferenz

root @ laptop: / var/src/mu-conference_0.8 make #
cd src / make;
make [1]: Leaving directory `/ var/src/mu-conference_0.8/src”
cd jabberd; machen
make [2]: Leaving directory `/ var/src/mu-conference_0.8/src/jabberd”

… ..

root @ laptop: / var/src/mu-conference_0.8 # echo $?
0
root @ laptop: / var/src/mu-conference_0.8 #

Schritt 2] Configure MU-Konferenz –

* Kopieren Sie nun die “MU-Konferenz” Binär-zu Jabberd2 Installations-Verzeichnis –

root @ laptop: ~ # cp / var/src/mu-conference_0.8/src/mu-conference / usr/local/jabberd-2.2.9/bin /
root @ laptop: ~ # chown jabber: jabber / usr/local/jabberd-2.2.9/bin/mu-conference
root @ laptop: ~ # ls-l / usr/local/jabberd-2.2.9/bin/mu-conference
-rwxr-xr-x 1 Jabber Jabber 191904 2009-10-12 18:59 / usr/local/jabberd-2.2.9/bin/mu-conference
root @ laptop: ~ #

root @ laptop: ~ # / usr/local/jabberd-2.2.9/bin/mu-conference-help
Jabber Component Runtime – 0.2.4
(c) 2003-2004 Paul Curtis

/ usr/local/jabberd-2.2.9/bin/mu-conference: ungültige Option – ‘-’
Nutzung: mu-Konferenz [-B] [-s] [-h] [-d LEVEL]-c FILE
B-Put der Dämon im Hintergrund
-s Karte Debugmeldungen auf stderr
-h Print this help
d-LEVEL Festlegen der Debug-Ausgabe
-c FILE Legen Sie die Konfigurationsdatei, obligatorische Argument
root @ laptop: ~ #

* Spool-Verzeichnis erstellen “MU-Konferenz”. Die mu-Konferenz Komponente erfordert ein Spool-Verzeichnis auf, in dem Konferenzraum Informationen zu speichern.

root @ laptop: ~ # mkdir / usr/local/jabberd-2.2.9/var/spool
root @ laptop: ~ # chown jabber: jabber / usr/local/jabberd-2.2.9/var/spool

HINWEIS ~ “jabber: jabber” user / group Namen Jabberd2 Server.

* Kopieren Sie die Konfigurationsdatei von “MU-Konferenz” Jabberd2 Installations-Verzeichnis und bearbeiten Sie diese Einstellung –

root @ laptop: ~ # cp / var/src/mu-conference_0.8/muc-default.xml / usr/local/jabberd-2.2.9/etc/mu-conference.xml
root @ laptop: ~ # chown jabber: jabber / usr/local/jabberd-2.2.9/etc/mu-conference.xml
root @ laptop: ~ #

root @ laptop: ~ # vi / usr/local/jabberd-2.2.9/etc/mu-conference.xml

<name> conf.laptop.ubuntu.me </ name>
<host> conf.laptop.ubuntu.me </ host>
<ip> localhost </ ip>
<port> 5347 </ port>
<secret> secret </ secret>

<spool> / usr/local/jabberd-2.2.9/var/spool </ spool>
<logdir> / usr/local/jabberd-2.2.9/var/log </ logdir>
<pidfile> / usr/local/jabberd-2.2.9/var/run/mu-conference.pid </ pidfile>

<loglevel> 255 </ loglevel>

<sadmin>
<user> admin@laptop.ubuntu.me </ user>
</ sadmin>


… ..
root @ laptop: ~ #

* Jetzt starten Sie den Jabberd2-Server und starten Sie dann “MU-Konferenz” …

root @ laptop: ~ # su-l jabber-s / bin / bash-c “/ usr/local/jabberd-2.2.9/bin/mu-conference-B-c / usr/local/jabberd-2.2.9 / etc / mu-conference.xml ”
root @ laptop: ~ #

* Bitte obigen Artikel, init Startskript bedeutet ‘check / etc/init.d/jabberd2′ werden mu Start-Konferenz.

root @ laptop: ~ # tail-f / usr/local/jabberd-2.2.9/var/log/mu-conference.log
Mon Oct 12 19:19:40 2009 main.c: 168 (main): Jabber Component Runtime – 0.2.4 ab.
Mon Oct 12 19:19:40 2009 MU-Konferenz: [conference.c: 1076 (Konferenz)] mu-Konferenz geladen – Service ID: conf.laptop.ubuntu.me

Mon Oct 12 19:19:40 2009 MU-Konferenz: [conference.c: 1157 (Konferenz)] Adding sadmin admin@laptop.ubuntu.me
Mon Oct 12 19:19:40 2009 MU-Konferenz: [xdb.c: 319 (xdb_rooms_get)] gebeten, ab xdb erhalten
Mon Oct 12 19:19:40 2009 MU-Konferenz: [xdb.c: 418 (xdb_rooms_get)] Skipping .. keine Ergebnisse
Mon Oct 12 19:19:40 2009 main.c: 219 (main): Main-Schleife ab.
Mon Oct 12 19:19:40 2009 jcr_base_connect.c: 34 (jcr_socket_connect): Der Versuch, Verbindung zu localhost: 5347
Mon Oct 12 19:19:40 2009 jcr_base_connect.c: 87 (jcr_send_start_stream): Öffnen von XML-Stream: sent 173 bytes
Mon Oct 12 19:19:40 2009 jcr_main_stream_error.c: 50 (jcr_main_new_stream): Server-Stream verbunden.
Mon Oct 12 19:19:40 2009 jcr_deliver.c: 51 (jcr_queue_deliver): Packet Delivery Thread gestartet.

Fertig!

Schritt 3] Test “MU-Conference” –

* In “PSI”-IM-Client, lese “General”-Menü und klicken Sie dann auf “Service Discovery” und überprüfen Sie die Raum-Liste …
* In “Pidgin” IM-Client, lese “Extras” und klicken Sie auf ‘Room List’ Abschnitt.

Sobald Sie entdeckte die “mu-Konferenz”-Server. Bitte klicken Sie auf “+ Add Chat” von “Menü” Freunde “von Pidgin. Im Falle von PSI klicken Sie auf ‘Join Gruppenchat’ aus dem Menüpunkt “Allgemein”, um “Seminar / Zimmer” und nehmen dann die “Confernece Room ‘.

Genießen,
Arun Bagul

Einführung –

XMPP-Protokoll basiert jabberd2 Instants Messaging (IM)-Server. Jabberd2 ist hoch skalierbar, leistungsstarken Serverlösungen jabber. Die Schönheit der jabberd2 Architektur liegt in der Tatsache, dass die Komponenten-Architektur verteilt in sechs Komponenten, von denen jeder kommuniziert über TCP / IP.

1) Router – ist das Rückgrat der Jabber-Server. Es nimmt die Verbindungen von jabberd Komponenten und übergibt XML-Pakete zwischen den Komponenten
2) Server to Server (S2S) – Komponente wickelt die Kommunikation mit den externen Servern. S2S geht Pakete zwischen anderen Komponenten und externen Servern, und er führt Dial-Back auf Remote-Jabber-Server zu authentifizieren.

3) Resolve – Handlungen zur Unterstützung der S2S-Komponente. Sie löst Hostnamen für S2S-Authentifizierung als Teil des dialback.
4) Session Manager (SM) – Komponente implementiert Instant-Messaging-Funktionen wie Message-Passing, Präsenz, Dienstplan und Abo etc. + DB-Verbindung
5) Client zum Server (C2S) – Komponente wickelt die Kommunikation mit Jabber-Clients wie Zusammenhang, vorbei Pakete an SM, Benutzer zu authentifizieren und zu registrieren.
6) Jabber-core – Dritter Plug-in-Protokollierung und Kommunikation.

** Um kompilieren / installieren jabberd-2.2.9 benötigen wir folgende Pakete für Debian / Ubuntu (wie auf Redhat / Fedora oder andere OS)

- Libpam0g libpam0g-dev (PAM-Unterstützung)
- OpenSSL libssl-dev (TLS / SSL-Unterstützung)
- Libudns0 libudns-dev (DNS-Resolver-Bibliothek)
- Libidn11 libidn11-dev-libidn libnet-perl (libidn sorgt für die nötige Funktionalität für String-Manipulation jabberd2)
- Mysql-common-perl libdbd-mysql-5.1 mysql-server mysql-client-5.1 libmysqlclient16-dev (MySQL DB-Authentifizierung)

** Jabberd2 unterstützt fünf Authentifizierung (Benutzer)-Mechanismus –

* PAM
* MySQL-Datenbank
* Berkeley DB
* PostgreSQL Datenbank
* SQLite DB
* OpenLDAP

** Im Anschluss werden die Häfen von jabberd2 verwendet –
* Port 5222 – Nicht-SSL-Client-Verbindung
* Port 5223 – SSL-Client-Verbindung
* Port 5269 – Server zu Server Verbindung
* Port 5347 – Router jabberd2

Schritt 1] Neues System für Benutzer und Gruppen für jabberd 2 Server (http://codex.xiaoka.com/wiki/jabberd2:start) –

root @ laptop: ~ # addgroup-System jabber
Hinzufügen Gruppe “jabber ‘(GID 61) …
Getan.
root @ laptop: ~ #

root @ laptop: ~ # adduser-system-home / usr/local/jabberd-2.2.9 /-Shell / bin / false-gid 61 jabber

* Überprüfen Sie Benutzer-und Gruppen-System … (Schritte für Ubuntu)

root @ laptop: ~ # id jabber
uid = 125 (Jabber) gid = 61 (Jabber) groups = 61 (Jabber)
root @ laptop: ~ #

Schritt 2] Download der neuesten Version von jabberd2 –

* Auszug der Quelle dann kompilieren / installieren Sie sie wie folgt mit PAM / MySQL-Datenbank für die Authentifizierung mit SSL gezeigt

root @ laptop: / var / src / # wget-c http://codex.xiaoka.com/pub/jabberd2/releases/jabberd-2.2.9.tar.bz2

root @ laptop: / var / src # tar xvfj jabberd-2.2.9.tar.bz2

root @ laptop: / var / src # cd jabberd-2.2.9

root @ laptop: / var/src/jabberd-2.2.9 #. / configure-prefix = / usr/local/jabberd-2.2.9 /-enable-debug-enable-mysql-enable-ssl-enable-pam-enable -ssl

… ..
checking for Libidn Version> = 0.3.0 … ja
checking for dns_init in ludns … ja
usability … yes checking gsasl.h
Präsenz … yes checking gsasl.h
yes checking for gsasl.h …
checking for gsasl_check_version in lgsasl … ja
checking for GnuSASL Version> = 0.2.27 … nein
configure: error: no SASL-Backend zur Verfügung von: gsasl
root @ laptop: / var/src/jabberd-2.2.9 #

Schritt 3] Facing Problem wie “configure: error: no SASL-Backend zur Verfügung von: gsasl” ~

Sorgen Sie sich nicht die neueste Version der Bibliothek von gsasl URL ~ http://alpha.gnu.org/gnu/gsasl/

* Download der aktuellen Version von GNU SASL (gsasl) …

root @ laptop: / var / src / # wget-c http://alpha.gnu.org/gnu/gsasl/gsasl-0.2.29.tar.gz

* Auszug der Quelle kompilieren Sie dann / install it …

root @ laptop: / var / src # tar xvfz gsasl-0.2.29.tar.gz
root @ laptop: / var / src # cd gsasl-0.2.29 /
root @ laptop: / var/src/gsasl-0.2.29 #. / configure-prefix = / usr / local / gsasl /
root @ laptop: / # make var/src/gsasl-0.2.29
root @ laptop: / var/src/gsasl-0.2.29 # make install
root @ laptop: / var/src/gsasl-0.2.29 #

* Überprüfen Sie die “gsasl”-Version

root @ laptop: / var/src/gsasl-0.2.29 # / usr / local / gsasl / bin / gsasl-Version
gsasl (GNU SASL) 0.2.29
Copyright (C) 2008 Simon Josefsson.
Lizenz GPLv3 +: GNU GPL Version 3 oder höher <http://gnu.org/licenses/gpl.html>
Dies ist freie Software: Sie sind frei zu ändern, und es neu zu verteilen.
Es gibt keine Garantie, soweit dies gesetzlich zulässig ist.

Geschrieben von Simon Josefsson.
root @ laptop: / var/src/gsasl-0.2.29 #

Schritt 4] Zurück zu jabberd2 Quelle und der Kompilierung starten / installieren, wie in unten –

root @ laptop: / var/src/jabberd-2.2.9 #. / configure-prefix = / usr/local/jabberd-2.2.9 /-enable-debug-enable-mysql-enable-ssl-enable-pam-enable -ssl-with-extra-include-path = / usr / local / gsasl / include /-with-extra-library-path = / usr / local / gsasl / lib /
root @ laptop: / # make var/src/jabberd-2.2.9
root @ laptop: / var/src/jabberd-2.2.9 # make install

** Protokoll erstellen und Runtime-Verzeichnisse ~

root @ laptop: / usr/local/jabberd-2.2.9 # mkdir / usr/local/jabberd-2.2.9/var
root @ laptop: / usr/local/jabberd-2.2.9 # mkdir / usr/local/jabberd-2.2.9/var/run

root @ laptop: / # ls-l usr/local/jabberd-2.2.9
insgesamt 20
drwxr-xr-x 2 Jabber Jabber 4096 2009-10-11 18:21 bin
drwxr-xr-x 3 jabber jabber 4096 2009-10-11 18:21 etc
drwxr-xr-x 3 jabber jabber 4096 2009-10-11 18:21 lib
drwxr-xr-x 3 jabber jabber 4096 2009-10-11 18:21 Aktien
drwxr-xr-x 3 jabber jabber 4096 2009-10-11 18:42 var
root @ laptop: / usr/local/jabberd-2.2.9 #

Schritt 5] jabberd-2.2.9 Konfigurieren ~

* Setup (jabberid@laptop.ubuntu.me) Domain Name (Hostname des Servers), IP-Adresse, Port-und Log-Einstellung im Client (c2s.xml) & Server (sm.xml) Konfigurationsdatei –

HINWEIS ~ Domain Name nicht notwendig zu sein Hostname des Servers ab. Aber es sollte aufgelöst werden kann (DNS) zu einer der IP des Servers ab.

root @ laptop: / # hostname usr/local/jabberd-2.2.9
laptop.ubuntu.me
root @ laptop: / usr/local/jabberd-2.2.9 #

root @ laptop: / usr/local/jabberd-2.2.9 # vi / usr/local/jabberd-2.2.9/etc/sm.xml

<pidfile> / usr/local/jabberd-2.2.9/var/run/sm.pid </ pidfile>

node_id laptop.ubuntu.me </ id>

<ip> 0.0.0.0 </ ip> <! – Standard: 127.0.0.1 ->
<port> 5347 </ port> <! – Standard: 5347 ->

<Logo type=’file’>
<file> / usr/local/jabberd-2.2.9/var/log/sm.log </ file>

root @ laptop: / usr/local/jabberd-2.2.9 # vi / usr/local/jabberd-2.2.9/etc/c2s.xml

<pidfile> / usr/local/jabberd-2.2.9/var/run/c2s.pid </ pidfile>

** Um die automatische Registrierung zu ermöglichen (in c2s.xml Datei “Register-enable = ‘true’ erforderlich ist)
<id register-enable=’true’> laptop.ubuntu.me </ id>

<ip> 0.0.0.0 </ ip>
<port> 5222 </ port>

<Logo type=’file’>
<file> / usr/local/jabberd-2.2.9/var/log/c2s.log </ file>

root @ laptop: / usr/local/jabberd-2.2.9 # vi / usr/local/jabberd-2.2.9/etc/s2s.xml

<pidfile> / usr/local/jabberd-2.2.9/var/run/s2s.pid </ pidfile>
<Logo type=’file’>
<file> / usr/local/jabberd-2.2.9/var/log/s2s.log </ file>

Schritt 6] jabberd-2.2.9 Konfigurieren für die Speicherung und Authentifizierung 9using MySQL DB) –

* Stellen Sie sicher, dass Datenbank “jabberd2″ nicht vorhanden (falls vorhanden db entweder löschen oder zu ändern DB-Name in setup.mysql db-Datei). Ist dies nicht der MySQL DB Export-Dump von jabberd2 Quelle … ..

root @ laptop: / usr/local/jabberd-2.2.9 # mysql-u root-p </ var/src/jabberd-2.2.9/tools/db-setup.mysql
Passwort:
root @ laptop: / usr/local/jabberd-2.2.9 # mysql-u root-p
Passwort:
Willkommen in der MySQL-Monitor. Commands end with; or \ g.
Ihre MySQL-Verbindungs-ID ist 176
Server Version: 5.1.31-1ubuntu2 (Ubuntu)

Type ‘help;’ or ‘\ h’ for help. Type ‘\ c’, um den Puffer.

mysql> SHOW DATABASES;
+————+
| Datenbank |
+————+
| INFORMATION_SCHEMA |
| Jabberd2 |
| Mysql |
+————+
3 rows in set (0.00 sec)

mysql> use jabberd2;
Lesetisch Informationen für den Abschluss der Tabellen-und Spaltennamen
Sie können diese Funktion abschalten, um eine schnellere Inbetriebnahme mit GET-A

Database changed
mysql> show tables;
+——-+
| Tables_in_jabberd2 |
+——-+
| Aktiv |
| Authreg |
| Disco-Artikel |
| Logout |
| Motd-Nachricht |
| Motd-mal |
| Privacy-Standard |
| Privacy-Produkten |
| Private |
| Queue |
| Roster-Gruppen |
| Roster-Artikel |
| Status |
| Reisen-Einstellungen |
| VCard |
+——-+
15 rows in set (0.00 sec)

mysql>

* Erstellung von MySQL-Benutzer für jabberd2 dh “jabberd2 ‘mit Zugang zum DB” jabberd2 –

mysql> GRANT select, insert, delete, update ON jabberd2 .* to ‘jabber’ @ ‘localhost’ identified by ‘mypassword’;
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Tschüss
root @ laptop: / usr/local/jabberd-2.2.9 #

* Verifizieren Sie nun Zugriff auf DB ~

root @ laptop: / usr/local/jabberd-2.2.9 # mysql-u-p jabberd2
Passwort:
Willkommen in der MySQL-Monitor. Commands end with; or \ g.
Ihre MySQL-Verbindungs-ID ist 178
Server Version: 5.1.31-1ubuntu2 (Ubuntu)

Type ‘help;’ or ‘\ h’ for help. Type ‘\ c’, um den Puffer.

mysql> SHOW DATABASES;
+——-+
| Datenbank |
+——-+
| INFORMATION_SCHEMA |
| Jabberd2 |
+——-+
2 rows in set (0.00 sec)

mysql> quit
Tschüss
root @ laptop: / usr/local/jabberd-2.2.9 #

Schritt 7] Ändern c2s.xml und sm.xml Konfigurationsdatei für MySQL-DB-Unterstützung –

root @ laptop: / usr/local/jabberd-2.2.9 # vi / usr/local/jabberd-2.2.9/etc/c2s.xml

<! – Authentifizierung / Registrierung Datenbank-Konfiguration ->
<authreg>

<! – Backend-Modul zu verwenden ->
<module> mysql </ module>

<! – MySQL-Modul-Konfiguration ->
<mysql>
<! – Datenbank-Server Host und Port ->
<host> localhost </ host>
<port> 3306 </ port>

<! – Name der Datenbank ->
<dbname> jabberd2 </ dbname>
<! – Datenbank Benutzername und Passwort ->
<user> jabberd2 </ user>
<pass> mypassword </ pass>

root @ laptop: / usr/local/jabberd-2.2.9 # vi / usr/local/jabberd-2.2.9/etc/sm.xml

<! – Storage Datenbank-Konfiguration ->
<storage>
<! – Dynamic Storage Module Pfad ->
<path> / usr/local/jabberd-2.2.9/lib/jabberd </ path>

<! – Standardmäßig verwenden wir die SQLite-Treiber für alle Speicher ->
<driver> mysql </ driver>

<! – MySQL-Treiber-Konfiguration ->
<mysql>
<! – Datenbank-Server Host und Port ->
<host> localhost </ host>
<port> 3306 </ port>

<! – Name der Datenbank ->
<dbname> jabberd2 </ dbname>
<! – Datenbank Benutzername und Passwort ->
<user> jabberd2 </ user>
<pass> mypassword </ pass>

** Um die automatische Registrierung zu ermöglichen (in sm.xml-Datei)

<auto-create/>

————

HINWEIS ~ Es reicht nicht aus, um Nutzer auf die “authreg ‘table Da dies nur stellt Benutzern, die C2S-Komponente, aber nicht an die SM-Komponente hinzufügen. Richtigen Einsendungen werden in der “aktive” Tabelle als auch erforderlich. Am besten ist es ein Jabber-Client verwenden, um Benutzer zu registrieren.

Schritt 8] Let’s start jabberd-2-Server (Test-Konfiguration) –

root @ laptop: ~ # su jabber-l-s / bin / bash-c “/ usr/local/jabberd-2.2.9/bin/jabberd-b”
root @ laptop: ~ #

* Prüfen Sie, ob Ports offen sind oder nicht

root @ laptop: ~ # netstat-nlp

Proto Recv-Q Send-Q Local Address Foreign Address State PID / Program name
tcp 0 0 0.0.0.0:5347 0.0.0.0: * LISTEN 31662/router
tcp 0 0 0.0.0.0:5222 0.0.0.0: * LISTEN 13883/c2s
tcp 0 0 127.0.0.1:3306 0.0.0.0: * LISTEN 2892/mysqld
tcp 0 0 0.0.0.0:5269 0.0.0.0: * LISTEN 13886/s2s

… ..

root @ laptop: ~ #

** Jetzt Registrieren Sie den Benutzer “jabberd@laptop.ubuntu.me” und Passwort “secret” mit Jabber IM-Client

root @ laptop: / usr/local/jabberd-2.2.9 # tail-f var/log/c2s.log

Mon Oct 12 00:43:15 2009 [notice] [8] Registrierung gelungen, anfragenden Nutzers Erstellungsjahr: jid = jabberd@laptop.ubuntu.me
Mon Oct 12 00:43:15 2009 [notice] [8] SASL Authentifizierung gelungen: Mechanismus = DIGEST-MD5; authz = jabberd@laptop.ubuntu.me
Mon Oct 12 00:43:15 2009 [notice] [8] gebunden: jid = jabberd@laptop.ubuntu.me / Telepathie
Mon Oct 12 00:44:20 2009 [notice] [9] [192.168.0.1, Port = 48307] in Verbindung zu treten

* Überprüfen DB Eintrag –

mysql> SELECT * FROM aktiv;
+———+——+—-+
| Collection-besitzer | Objekt-Sequenz | Zeit |
+———+——+—-+
| Jabberd@laptop.ubuntu.me | 1 | 1255288395 |
+———+——+—-+
1 row in set (0.00 sec)

mysql> SELECT * FROM authreg;
+—-+——+—-+
| Benutzername | Reich | Passwort |
+—-+——+—-+
| Jabberd | laptop.ubuntu.me | Geheimnis |
+—-+——+—-+
1 row in set (0.00 sec)

mysql>

=> Prüfung erfolgreich abgeschlossen ….

Schritt 9] jabberd2 Konfigurieren für SSL / TLS-Verbindungen –

Let’s konfigurieren jabberd2 für SSL / TLS-Verbindung. Jabberd2 wurde entwickelt, um für die Bereitstellung von SSL / TLS-Verbindungen nicht nur zwischen Jabber-Clients und dem Server, sondern auch zwischen den jabberd-Server-Komponenten (sm, s2s und C2S) und die jabberd Router. Eine einzige SSL-Zertifikat kann für diese beiden Funktionen (und Jabber-Client verwendet werden, um jabberd Komponente Router jabberd) oder zwei separate Tasten verwendet werden.

* Generieren selbst signierten SSL-Zertifikat …

root @ laptop: / usr/local/jabberd-2.2.9 openssl req-new-x509-newkey rsa: 1024-days 365-out-keyout privkey.pem server.pem
Erstellen eines 1024-Bit-RSA-Schlüssel
.++++++
… .. ++++++
schriftlich neuen privaten Schlüssel zu “privkey.pem”
Enter PEM pass phrase:
….
Common Name (eg, YOUR name) []: laptop.ubuntu.me
root @ laptop: / usr/local/jabberd-2.2.9 #

* Entfernen Sie Kontrollwert aus privaten Schlüssel

root @ laptop: / usr/local/jabberd-2.2.9 # openssl rsa-in-out privkey.pem privkey.pem

** Kombinieren Sie die privaten und öffentlichen Schlüssel, und löschen Sie private Schlüssel

root @ laptop: / # cat usr/local/jabberd-2.2.9 privkey.pem>> server.pem

root @ laptop: / # rm usr/local/jabberd-2.2.9 privkey.pem

* Ändern Sie die Berechtigung …

root @ laptop: / usr/local/jabberd-2.2.9 # chown jabber: jabber / usr/local/jabberd-2.2.9/server.pem
root @ laptop: / usr/local/jabberd-2.2.9 # ls-l / usr/local/jabberd-2.2.9
insgesamt 24
drwxr-xr-x 2 Jabber Jabber 4096 2009-10-11 22:17 bin
drwxr-xr-x 3 jabber jabber 4096 2009-10-12 01:03 etc
drwxr-xr-x 3 jabber jabber 4096 2009-10-11 20:16 lib
-rw-r-r-1 jabber jabber 2217 2009-10-12 01:17 server.pem
drwxr-xr-x 3 jabber jabber 4096 2009-10-11 20:16 Aktien
drwxr-xr-x 4 jabber jabber 4096 2009-10-12 00:20 var
root @ laptop: / usr/local/jabberd-2.2.9 #

root @ laptop: / usr/local/jabberd-2.2.9 # vi / usr/local/jabberd-2.2.9/etc/c2s.xml
<ssl-port> 5223 </ ssl-port>
<pemfile> / usr/local/jabberd-2.2.9/server.pem </ pemfile>

root @ laptop: / usr/local/jabberd-2.2.9 # vi / usr/local/jabberd-2.2.9/etc/s2s.xml

<pemfile> / usr/local/jabberd-2.2.9/server.pem </ pemfile>

root @ laptop: / usr/local/jabberd-2.2.9 # vi / usr/local/jabberd-2.2.9/etc/sm.xml

<pemfile> / usr/local/jabberd-2.2.9/server.pem </ pemfile>

<pemfile> / usr/local/jabberd-2.2.9/server.pem </ pemfile>

** Neu, jetzt den Server neu starten und überprüfen Login …

root @ laptop: / usr/local/jabberd-2.2.9 # tail-f var/log/c2s.log

Mon Oct 12 01:28:57 2009 [notice] Verbindung zum Router eingerichtet
Mon Oct 12 01:28:57 2009 [notice] [0.0.0.0, port = 5222] auf Verbindungen wartet
Mon Oct 12 01:28:57 2009 [notice] [0.0.0.0, port = 5223] Hören für SSL-Verbindungen

* Bei der Registrierung user ~

1) Notwendig SSL / TLS
2) Force alte SSL (Port 5223)

Bitte beiden oben genannten Einstellung aktivieren und deaktivieren Sie “Allow plaintext auth unecrypted Streams

HINWEIS ~ Während loggen Sie sich zuerst Zeit (automatische Registrierung Modus) stellen Sie sicher, aktivieren Sie “Erstellen dieses neue Konto auf dem Server” checkbox in Pidgin (unten)

** Es funktioniert!

Schritt 10] init.d Startskript für jabberd2 und Mu-Konferenz –

root @ laptop: ~ # / etc/init.d/jabberd2 starten
Starten des Chat-Server jabberd2 …
Router 11.095 | 11.099 sm | s2s 11102 | C2S 11.106 | 11.149 mu-conf

Getan.
root @ laptop: ~ # / etc/init.d/jabberd2 Status
Jabberd2 Chat-Server-Status –
Router – 11095 | sm – 11.099 | s2s – 11102 | C2S – 11106 | 11149 mu-conf
root @ laptop: ~ #

* Überprüfen Sie nun Netzwerkeinstellungen …

root @ laptop: ~ # netstat-nlp

Proto Recv-Q Send-Q Local Address Foreign Address State PID / Program name
tcp 0 0 0.0.0.0:5347 0.0.0.0: * LISTEN 11095/router
tcp 0 0 0.0.0.0:5222 0.0.0.0: * LISTEN 11106/c2s
tcp 0 0 0.0.0.0:5223 0.0.0.0: * LISTEN 11106/c2s
tcp 0 0 127.0.0.1:3306 0.0.0.0: * LISTEN 2899/mysqld
tcp 0 0 0.0.0.0:5269 0.0.0.0: * LISTEN 11102/s2s

root @ laptop: ~ # / etc/init.d/jabberd2 stoppen
Stoping die jabberd2 IM Server …
Getan.
root @ laptop: ~ #

** Möchten Sie sehen, das Skript ~

root @ laptop: ~ # cat / etc/init.d/jabberd2
/ Bin / bash

# # Jabberd2 Chat-Server
# # Jabber User / Group – jabber / jabber
# # Befehl zum srart ~ su jabber-l-s / bin / bash-c “$ (base_path) / bin / jabberd-b”
# #
# C2S
Base_path = “/ usr/local/jabberd-2.2.9″
c2s_pid = “$ (base_path) / var/run/c2s.pid”
# S2s
s2s_pid = “$ (base_path) / var/run/s2s.pid”
# Sm
sm_pid = “$ (base_path) / var / run / sm.pid”
# Router
router_pid = “$ (base_path) / var / run / router.pid”
# Mu-Konferenz
mu_conf_pid = “$ (base_path) / var / run / mu-conference.pid”

case “$ 1″ in

start)
# # Prüfung, ob jabberd2 läuft oder nicht
if [-f $ (c2s_pid)], dann
c2spid = $ (cat $ (c2s_pid))
echo “jabberd2 IM Server ~ C2S ‘ausgeführt wird (pid $ (c2spid))”
elif [-f $ (s2s_pid)], dann
s2spid = $ (cat $ (s2s_pid))
echo “jabberd2 IM Server ~ s2s ‘ausgeführt wird (pid $ (s2spid))”
elif [-f $ (sm_pid)], dann
smpid = $ (cat $ (sm_pid))
echo “jabberd2 IM Server ~ ’sm’ ausgeführt wird (pid $ (smpid))”
elif [-f $ (router_pid)], dann
routerpid = $ (cat $ (router_pid))
echo “jabberd2 IM Server ~” Router “ausgeführt wird (pid $ (routerpid))”
sonst
echo “Starting die jabberd2 IM Server …”
jabber su-l-s / bin / bash-c “$ (base_path) / bin / jabberd-b”
jabber su-l-s / bin / bash-c “$ (base_path) / bin / mu-conference-B-c $ (base_path) / etc / mu-conference.xml”> / dev / null 2> & 1
echo “$ router (cat $ (router_pid)) | sm $ (cat $ (sm_pid)) | s2s $ (cat $ (s2s_pid)) | C2S $ (cat $ (c2s_pid)) | mu-conf $ (cat $ ( mu_conf_pid)) ”
echo “…”
echo “Done.”
fi
;;

stop)
echo “stoping die jabberd2 IM Server …”
if [-f $ (sm_pid)], dann
kill -9 $ (cat $ (sm_pid))
fi
if [-f $ (router_pid)], dann
kill -9 $ (cat $ (router_pid))
fi
if [-f $ (c2s_pid)], dann
kill -9 $ (cat $ (c2s_pid))> / dev / null 2> & 1
fi
if [-f $ (s2s_pid)], dann
kill -9 $ (cat $ (s2s_pid)) $ (cat $ (mu_conf_pid))> / dev / null 2> & 1
fi
# #
killall-9-u jabber
rm-f $ (router_pid) $ (sm_pid) $ (s2s_pid) $ (c2s_pid) $ (mu_conf_pid)> / dev / null 2> & 1
echo “Done.”
;;

Status)
echo “jabberd2 Chat-Server-Status -”
if [-f $ (c2s_pid)], dann
c2spid = $ (cat $ (c2s_pid))
fi
if [-f $ (s2s_pid)], dann
s2spid = $ (cat $ (s2s_pid))
fi
if [-f $ (sm_pid)], dann
smpid = $ (cat $ (sm_pid))
fi
if [-f $ (router_pid)], dann
routerpid = $ (cat $ (router_pid))
fi
if [-f $ (router_pid)], dann
als Mitarbeiter = $ (cat $ (mu_conf_pid))
fi
echo “Router – $ (routerpid) | sm – $ (smpid) | s2s – $ (s2spid) | C2S – $ (c2spid) | mu-conf $ (als Mitarbeiter)”
;;
*)
echo “Usage: $ 0 (start | stop | status)”
exit 1
esac
exit 0
# VORBEI
root @ laptop: ~ #

Danke,
Arun Bagul

(1) Comment    Read More    Edit
Get Adobe Flash playerPlugin by wpburn.com wordpress themes

www.flickr.com
arunbagul's photos More of arunbagul's photos