Category: 一般的な情報

一般的な情報

トップ5 – オープンソースのネットワークおよびパフォーマンスの監視+警告システム

トップ5 – オープンソースのネットワークおよびパフォーマンスの監視+警告システム

はじめに – ネットワークと様々なアプリケーションを監視するには、商務の最も重要な部分です。あなたは完全に何かがおかしくなったときに通知するために、このツールに返信されますので、そのように監視ツールを選択すると、重要かつ最も重要な作業です!

1)Nagiosは – 人気のあるオープンソースのコンピュータシステムのモニタ、ネットワーク監視およびインフラストラクチャの監視ソフトウェアアプリケーションです。 Nagiosは、サーバ、スイッチ、アプリケーション、およびサービスのための完全な監視と警告を提供しており、事実上の業界とみなされます
標準。 Nagiosは監視アクティブとパッシブの2種類をサポートしています。アクティブ監視Nagiosのスケジュールの場合、または積極的に言及しサービスをチェックします。パッシブチェックの場合には一方で、外部アプリケーションは、サービスチェックの結果を提出することができます。
– パッシブチェックはNSCA(Nagiosはサービスチェック·アクセプター)デーモンは、UNIXソケット経由でNagiosにパッシブチェックを提出し、ネットワークを介してパッシブチェックを受け入れるようにNagiosのサーバー上で実行する必要があります。
– AcitiveチェックNRPE(Nagiosのプラグインのリモートエグゼキュータ)デーモンの意志は、サービスを監視するために、リモートマシン上で実行する必要があります。しかし、あなたは同様にSSHを使用することができます。

以下に示すように、リモートホストとサービスを監視するNagiosのコミュニティはあなたにいくつかのプラグインを提供します…
* NRPE – NRPEデーモンは、Nagiosのホストからのcheck_nrpeプラグイン(コマンド)を経由してリモートホストとNagiosリモートホスト上になりますチェックのサービス上で実行されます。
* Check_MK – リモートホストを監視するための最良のNagiosプラグイン。このプラグインの美しさはコモンズのサービスのほとんどは、リモートホストへの1つの接続でチェックされ、その結果をNagiosにパッシブ結果として提出されていることです。これは、パフォーマンス、ネットワークトラフィックが少ないともちろんリモートホスト(我々は監視されている)上に、無負荷または負荷を改善します。 Check_MKのために、私たちはcheck_mkエージェントすなわちcheck_mk_agent単純なシェルスクリプトをインストールする必要があるとxinetdデーモンを使用してTCPポート6556にこのスクリプトをバインドします。 Check_MKは、次の機能を提供します。
– Check_MKサポート動的なNagiosのコンフィギュレーションの生成、チェックのインベントリ。
– Livestatus – 美しいプラグインはNagiosが(UNIXソケット)と通信するために
– NagiosのマルチGUI – 単一のWebベースのインターフェースから複数のNagiosを監視する
– 同様に多くのシスコ製スイッチ、ルータ、およびNetAppファイラのSNMPサポートとサービスの自動検出。
NagiosのマルチGUI – Check_MK Nagiosプラグインのもう一つの美しさは、1つのWebベースのインターフェイスを使用して複数のNagiosをmontoringされています。このWebベースのインタフェースusese Check_MK LivestatusプラグインはNagiosのデータを取得します。
Check_MK – http://mathias-kettner.de/
URL – http://www.nagios.org/~~V
作者 – イーサンGalstad

2)神経節 – クラスターやグリッドなどの高性能コンピューティングシステムのためのスケーラブルな分散システム·モニター·ツールです。これは、ユーザーがリモートで監視されているすべてのマシンのライブや歴史的な統計情報を(例えば、CPUの平均負荷やネットワークの使用率など)を表示することができます。 Gangliaはあっても、クラスタ環境でのアプリケーションまたはチーム単位でのリソース使用率を見つけるために非常に便利です。我々は、すべての統計情報を収集し、各マシン(グループまたはクラスタ内の)にgmond(神経モニター·デーモン)をインストールする必要があります。
gmetad(神経のメタデータ·デーモン)が指定されたgmondサーバからデータを収集するグループまたはクラスタ内の加工1にインストールされている必要があります。
URL – http://ganglia.info/~~V

3)Cactiは – オープンソース、Webベースのグラフ作成ツール(rrdtoolのフロントエンド)です。 Cactiは、ユーザが所定の間隔やグラフで得られたデータをサービスをポーリングすることができます。それは、一般的にCPU負荷とネットワーク帯域幅の使用率などのメトリックのグラフの時系列データに使用されます。 CactiはSNMPを介して、スイッチ、ルータなどのハードウェアデバイスを監視することをお勧めします。
URL – http://www.cacti.net/

4)Zabbixは – これは、さまざまなネットワークサービス、サーバ、およびその他のネットワークハードウェアの状態を監視し、追跡するために設計されています。これはデータを格納するためにはMySQL、PostgreSQL、SQLiteは、Oracle、またはIBM DB2を使用しています。そのバックエンドはCで書かれており、ウェブのフロントエンドはPHPで書かれています。
ZABBIXは、いくつかの監視オプションを提供しています。 ZABBIXエージェントはまた、CPU負荷、ネットワーク使用率、ディスク容量などの統計情報を監視するために、UNIXとWindowsホストにインストールすることができます。
ホスト上のエージェントをインストールするための代替手段として、ZabbixはSNMP、TCP、およびICMPのチェックを介してだけでなく、IPMI、SSH、Telnet、およびカスタム·パラメータを使用する上で監視するためのサポートが含まれています。
Zabbixはリアルタイム通知のさまざまなメカニズムをサポートしています。 ZABBIXの美しさは、XMPPの通知です。
URL – http://www.zabbix.com/
作者 – アレクセイVladishev

5)Zenoss – Zenossは(Zenossコア)オープンソースのアプリケーション、サーバ、Zopeアプリケーションサーバに基づいて、ネットワーク管理プラットフォームです。
URL – http://www.zenoss.com/

注 – このリストは、多くのIndianGNUコミュニティのメンバーの個人的な経験と選択に基づいています。

ありがとう、
アルンBagul

ディスクとしてRAM(物理)を使用する方法

ディスクとしてRAM(物理)を使用する方法

はじめに –
いつかパフォーマンスを得るために、物理的なRAMが非常に速く、通常のハードディスクと比較しているディスク領域として使用することができます。
ですから、ディスクがどのように私はRAMを使用することができますか?この手順を踏む。

以下に示すようにディスクとしてRAMをマウントするステップ1)はディレクトリを作成します。

ルート@ arunbagul:〜#でmkdir-p/ tmpに/ RAM
ルート@ arunbagul:〜#lsのを/ tmp /ラム
ルート@ arunbagul:〜#

ステップ2)マウントポイントのマウントRAMすなわちtmpfsのは “/ tmp/ RAM”ディレクトリ

ルート@ arunbagul:〜#マウントの-t tmpfsの-Oサイズ=10M tmpfsを/ tmpに/ RAM /

*ないに搭載されたチェック?

ルート@ arunbagul:〜#df-hコマンド
ファイルシステムサイズ使用残り使用%が上に実装
tmpfsは10M010M0%/ tmpに/ RAM

以下に示すように、** / etc / fstabにこの恒久的に追加のエントリをマウントします。

ルート@ arunbagul:〜#猫/ etc / fstabに

….

tmpfsを/ tmpに/ RAM tmpfsはデフォルト値は、size =10メートル0 0

ルート@ arunbagul:〜#

– (これはfstabに記述されているすべてのマウントポイントをマウントします)この使用は、mountコマンドをマウントするには

ルート@ arunbagul:〜#マウント

ありがとう、
アルンBagul

IndianGNU.org – 4周!

IndianGNU.org – 4周!

すべてを親愛なる

今日は、4周年を祝っている!我々は、4年に完了が、まだ完全な速度で成長!それはあなたのサポート、貢献と努力不要で、簡単には不可能でした。

openlsmプロジェクト〜未満/強い>

class=”alignleft” title=”openlsm” src=”http://www.indiangnu.org/main/images/openlsm.png” alt=”” width=”116″ height=”92″これは/> 乾杯、
IndianGNU.org

PerlのCGI – セッションとCookieの手引き

PerlのCGI – セッションとCookieの手引き

はじめに –

ほぼ1年前、私はPerlのCGIアプリケーションでセッションとCookieを実装するための多くの苦労した。だから、すべてあなたと私の仕事を共有すると考えられている。
私は自分の方法でそれをやってみたかった…

仮定は、Webサーバー、つまりApacheがCGIスクリプトを実行するために有効になっている

Step 1] Write Auth.pm Perl module –

Please simply copy following Auth.pm perl module for authentication using Session and Cookies…

[root@arun ~]# cat /var/application/module/Auth.pm

package Auth;

### Subroutine to authenticate user
sub  User
{
my ($ref_page) = (@_);
### Session information
my $sid = $ref_page->cookie(“APP_SID”) || undef;
my $session = CGI::Session->load(undef,$sid);
if ( $session->is_expired ) { print $ref_page->redirect(-location => ‘../arun.html’);}
elsif ( $session->is_empty) { print $ref_page->redirect(-location => ‘../arun.html’);}
else { print $ref_page->header();}
# don’t forget to create dir ‘/var/tmp’
# with proper ownership/permission
#$session = new CGI::Session(undef, $sid, {Directory=>’/var/tmp’});
#################################################
return($session->param(‘login_user’));
}

1;
[root@arun ~]#

Step 2] authe_me.pl –

authe_me.pl file is used to set cookies and verify username/password. You may use MySQL DB to store username and password.
In this case you have to this file…

[root@arun ~]# cat /var/application/www/cgi-bin/auth_me.pl
#!/usr/bin/perl

sub BEGIN
{
unshift (@INC, ‘/var/application/module/’);
}

use strict;
use warnings;
use CGI qw(:standard);
use CGI::Session;
use Auth; ## our module

### Header
########################
my $page = CGI->new();
##print $page->header();

##########
if ( $ENV{REQUEST_METHOD} eq “POST” )
{
my %form;
my $session_dir=”/var/tmp”;
my ($admin_user,$admin_password) = (“admin”,”arun123″);

foreach my $key (param()) { $form{$key} = param($key);}
##
if (($form{username}) && ($form{password}))
{

### Session Details ###
CGI::Session->name(“APP_SID”);
## Create new session
my $session = new CGI::Session(undef, undef, {Directory=>$session_dir});
## Set cookies
my $cookie = $page->cookie(-name=>$session->name(),-value=>$session->id(),-expires=>’+2h’,-path=>’/’);
## Store data in session variable and save it
$session->param(‘login_user’,$form{username}); # OR
##$session->param(-name=>’login_user’,-value=>$form{username});
$session->save_param($page, [“login_user”]);

## Session and Cookie expiration time is SAME.
$session->expire(“+2h”);
#### Session Details end ####

## if login successful redirect to main.pl else login page
if (($form{username} eq $admin_user) and ($form{password} eq $admin_password))
{ print $page->redirect(-location => ‘main.pl’,-cookie=>$cookie);}
else { print $page->redirect(-location => ‘../arun.html’); }
############################
} else { print $page->redirect(-location => ‘../arun.html’); }
}

[root@arun ~]#

Step 3] Create Login Page –

[root@arun ~]# cat /var/application/www/arun.html
<html>
<title>Arun Login Page</title>

<!– Form start –>
<table align=’center’ border=’1′>
<form method=”POST” action=”cgi-bin/auth_me.pl”>
<tr>
<td><label>Login</label></td>
<td><input name=”username” type=”text”></td>
</tr>
<tr>
<td><label>Password</label></td>
<td><input name=”password” type=”password”><br/></td>
</tr>
<tr>
<td><input value=”Submit” type=”submit”></td>
</tr>

</form>
</table>

</html>

[root@arun ~]#

Step 4] Create main page where Session and Cookie authentication verified – main.pl

[root@arun ~]# cat /var/application/www/cgi-bin/main.pl
#!/usr/bin/perl

sub BEGIN
{
unshift (@INC, ‘/var/application/module/’);
}

use strict;
use warnings;
use CGI qw(:standard);
use CGI::Session;
use Auth;

### Header
my $page = CGI->new();
## check authentication
my $login_name=Auth::User($page);
###
print $page->start_html( -title=>’Arun Main Page’);

print “<h3>This is Main Page</h3></br>”;
print “<br>Login Name – $login_name”;

#end
[root@arun ~]#

Step 5] Please access login page and try http://your_ipaddr/arun.html

Thank you,
Arun Bagul

どのようにテストネットワークパフォーマンスと帯域幅に

どのようにテストネットワークパフォーマンスと帯域幅に

はじめに –

ネットワークの遅延や帯域幅は、2つのメトリック最も興味を引かされる可能性が高いときのベンチマークネットワーク。ほとんどのサービスや製品の広告は倍の帯域幅に焦点を当てても待ち時間が以上のメトリックの重要なことができます。

**帯域幅とは何ですか?

帯域幅(BW)は、コンピュータネットワークのネットワーク接続、またはインターフェイスによってサポートされているデータレートを指します。 BWはビット/秒(bps)の条件で測定されます。

ネットワークの待ち時間は何**ですか?

レイテンシは、システム内の経験の遅延時間の測定値です。遅延時間は別のポイントからのデータを送信するように観察されるネットワークの遅延は、単に定義されています。ネットワークの遅延に寄与する要因がいくつかあります。これらは、(接続の媒体)の距離、ルータとコンピュータハードウェアの遅延を送信含まれています。

ネットワークのパフォーマンスおよび帯域幅をテストするために使用されるプロジェクトのリスト –

1)bmonのは – 、それが基づいてコンソールです帯域幅モニタ、レート推定、BWを生きる
2)bwbar – テキストとグラフィックの帯域幅の使用形式
3)はbwm – ngの – 帯域幅モニタNGの(次世代、ベースのコンソールは、BWライブ
4)のdstat – Dstatはは、vmstat、iostatおよびifstatに関する置き換わるものです。
5)iftopの – インターフェイスの帯域幅の使用量は、コンソールベース
6)iperfの – を実行するネットワークスループットテストは、2つのホストを賭ける
7)ifstat – レポートインターフェイスの統計情報
8)cbmのは、 – カラー帯域幅メーター、コンソールベース
9)etherape – グラフィカルなネットワークトラフィックブラウザ
10)がiptrafのは – 対話式のカラフルなのIP LAN Monitorは、コンソールおよびGUIベースの
11)netmrg – それはデーモンベースのMySQLのサポートは、デバイスからデータを収集されます。
12)nuttcpの – ネットワークのパフォーマンス測定ツール
13)nepim

注は、それらのいくつかはrpmまたはdebパッケージが利用可能にされていない〜!

ステップ1]は、どのようにインストールするにはRedHat / RHCEのは、CentOSベースのシステムDibianベースのシステム?

ルート@私:〜#yumをインストールするのnetperf iperfのnuttcpののnepimのlmbench

** Ubuntuの –

ルートは@私:〜#のapt – netmrg iperfののifstatのiptraf iftopのbmonののbwbar bwm – ngののdstatのcbmのetherapeをインストール取得

ステップ2]どのように使用する – bmonのを、bwm – ngの、のdstat、ifstat –

root@me:~# bmon

interface: lo at me.arun.world

#   Interface                RX Rate         RX #     TX Rate         TX #
───────────────────────────────────────────────────────────────────────────────
me.arun.host (source: local)
0   lo                         0.00B            0       0.00B            0
1   eth0                       0.00B            0       0.00B            0
2   eth2                       0.00B            0       0.00B            0
3   vboxnet0                   0.00B            0       0.00B            0
4   pan0                       0.00B            0       0.00B            0
5   ppp0                      69.39KiB         61       7.49KiB         44

root@me:~# bwm-ng

bwm-ng v0.6 (probing every 0.500s), press ‘h’ for help
input: /proc/net/dev type: rate
\         iface                   Rx                   Tx                Total
==============================================================================
lo:           0.00 KB/s            0.00 KB/s            0.00 KB/s
eth0:           0.00 KB/s            0.00 KB/s            0.00 KB/s
eth2:           0.00 KB/s            0.00 KB/s            0.00 KB/s
ppp0:          64.39 KB/s            7.92 KB/s           72.31 KB/s
——————————————————————————
total:          64.39 KB/s            7.92 KB/s           72.31 KB/s

root@me:~# dstat
—-total-cpu-usage—- -dsk/total- -net/total- —paging– —system–
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw
7   4  85   4   0   0| 281k  110k|   0     0 |   0     0 | 865  3013
8   4  88   0   0   0|   0     0 |7027B 1261B|   0     0 | 956  4505
8   5  86   0   0   0|   0     0 |  14k 1867B|   0     0 |1144  3332
9   5  86   0   1   0|   0     0 |  79k 2496B|   0     0 |1360  3366
18   8  74   0   0   0|   0     0 |  52k 6511B|   0     0 |1299  3618
8   6  85   0   1   0|   0     0 |  35k 5339B|   0     0 |1094  4231
6   4  90   0   0   0|   0     0 |   0  3164B|   0     0 | 953  2750 ^C
root@me:~#

root@me:~# ifstat
eth0                eth2                ppp0
KB/s in  KB/s out   KB/s in  KB/s out   KB/s in  KB/s out
0.00      0.00      0.00      0.00     95.73      4.31
0.00      0.00      0.00      0.00     67.93      8.17
0.00      0.00      0.00      0.00    106.77     13.70

つのホスト(A)と、クライアント別のホスト(B)の上**スタート”iperfの”サーバー – 2つのホスト間のネットワークのスループットを測定しています。

* Host -A

root@me:~# iperf -s
————————————————————
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
————————————————————
[  4] local 192.168.0.1 port 5001 connected with 192.168.0.2 port 56171
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.0 sec  9.11 GBytes  7.82 Gbits/sec

* Host -B
test@hostB:~$ iperf -c 192.168.0.1
————————————————————
Client connecting to 192.168.0.1, TCP port 5001
TCP window size: 49.5 KByte (default)
————————————————————
[  3] local 192.168.0.2 port 56171 connected with 192.168.0.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  9.11 GBytes  7.82 Gbits/sec
test@hostB:~$

root@me:~# iftop
root@me:~# cbm

Thank you,
Arun Bagul

上位 7 ERPおよびCRMオープンソースソフトウェア

上位 7 ERPおよびCRMオープンソースソフトウェア

はじめに –

何がエンタープライズリソースプランニング(ERP)ですか?

ERPは、リソース、資産、金融資源、材料、人事を管理するために使用統合ソフトウェアシステムです。
その目的は、組織のすべてのビジネス機能間の情報の流れを促進することです。

顧客関係管理(CRM)は何ですか?

CRMは広く顧客、クライアントと販売見通しを持つ企業の相互作用として認識されます。これは、の使用を含む
整理し、自動化、および活動、マーケティング、顧客サービス、テクニカルサポート、ビジネス(売上高)を同期させる技術です。

1)のOpenbravo

Openbravo ERPの下でリリースされて中小企業のためのWebベースのERPビジネスソリューションです。
Mozilla公衆利用許諾契約書に基づいてOpenbravoの公衆利用許諾契約書、。
URLは – http://www.openbravo.com/

2)OpenERP

OpenERPは、売上高は、CRM、プロジェクト管理などのビジネスアプリケーションのオープンソースの包括的なスイートです。
倉庫管理、製造、会計、人事。
URLは – http://www.openerp.com/

3)Fedena

Fedenaは、Ruby on Railsフレームワーク上で開発されたオープンソースの学校管理ソフトウェアです。 fedenaは、入場料、学生の詳細に関連するモジュールが含まれているニュース、試験、時刻表や出席の管理、ユーザーを管理します。
URLは – http://www.projectfedena.org/

4)JFire

JFireisエンタープライズリソースプランニングや顧客関係管理システム。 JFireは、デスクトップクライアントを使用してベースのシステムのWindowsおよびLinux OSで使用可能なクライアントサーバーです。
URLは – http://www.jfire.net/

5)ApacheのOFBiz –

OFBizは、ERPシステムです。これは、統合されたビジネスプロセスの多くを自動化するエンタープライズアプリケーションを提供しています。
URLは – http://ofbiz.apache.org/

6)SugarCRMはを

SugarCRMはオープンソースソフトウェアをCRPがリードしている。 SugarCRMは私の個人的な選択です!

URLは – http://www.sugarcrm.com

7)VtigerCRMを

VtigerCRM最高のERPおよびCRMのWebベースのソフトウェアとは非常に簡単です。私は個人的なこのソフトウェアを使用している。それは多くのアドオンを持っています。 URLは – http://www.vtiger.com/

wiki上のERPソフトウェアのリストを参照してください – http://en.wikipedia.org/wiki/List_of_ERP_software_packagesを

ありがとう、
Arun Bagul

How to use socat with haproxy stat

How to use socat with haproxy stat

*** Introduction –

All you know about the haproxy, that its the one of the good opensource load balancing software and to check the fun stats of haproxy here we using ‘socat’ – Multipurpose relay (SOcket CAT)

* What is socat?

Socat  is  a  command  line based utility that establishes two bidirectional byte streams and transfers data between them. Because the streams can be constructed from a large set of different types of data sinks and sources (see address  types),  and  because  lots  of address options may be applied to the streams, socat can be used for many different purposes.(see more info at ‘man socat’ 🙂 or at http://www.dest-unreach.org/socat/)

* How to use ‘socat’ with haproxy stat

Step 1) Download ‘socat’ from http://www.dest-unreach.org/socat/download/  latest version ~ “socat-2.0.0-b3.tar.gz”

ravi@arun:~$ wget http://www.dest-unreach.org/socat/download/socat-1.7.1.2.tar.gz

ravi@arun:~$ tar xvzf socat-1.7.1.2.tar.gz

ravi@arun:~$ cd socat-1.7.1.2

NOTE ~ No need to install the ‘fipsld’ package if you got the below msg after running the ‘make’ just following steps for

compiling socat….

FIPSLD_CC=gcc fipsld -O -D_GNU_SOURCE -Wall -Wno-parentheses  -DHAVE_CONFIG_H -I.  -I.   -c -o socat.o socat.c
/bin/sh: fipsld: command not found
make: *** [socat.o] Error 127

ravi@arun:~$ ./configure –disable-fips
ravi@arun:~$ make

To install it login as root
ravi@arun:~$ su –

ravi@arun:~# make install

Step 2) Now you need to add stats socket PATH in Haproxy configuration and restart haproxy as per shown in following example,

where I have added it under in ‘global’ setting –

ravi@arun:~# more /etc/haproxy/myhaproxy.cfg

#———–Start of haproxy Config file————–
global
log 127.0.0.1   local0
log 127.0.0.1   local1 notice
#log loghost    local0 info
maxconn 25000
#debug
#quiet
user ravi
group ravi
stats socket    /tmp/haproxy
defaults
option          contstats
timeout         connect 5s
timeout         client 25s
timeout         server 25s
maxconn         100

listen ravitestbed      0.0.0.0:80 ##ravi.com IP
mode            tcp
balance         roundrobin
server          web1 192.168.19.117
server          web2 192.168.19.122

listen stats
bind            0.0.0.0:8081
mode            http
#stats          uri /stat  #Comment this if you need to specify diff stat path for viewing stat page
stats enable
stats auth admin:admin ##Auth user pass

#———–End of haproxy Config file————–

Step 3) Used /tmp/haproxy. Now you can send the commands to get stats from HAProxy –

Now time to use socat

ravi@arun:~# echo “”  | socat unix-connect:/tmp/haproxy stdio
Unknown command. Please enter one of the following commands only :
show info   : report information about the running process
show stat   : report counters for each proxy and server
show errors : report last request and response errors for each proxy
show sess   : report the list of current sessions

This will dump (possibly huge) info about all know sessions.

ravi@arun:~$ echo “show sess” | socat unix-connect:/tmp/haproxy stdio
0x9ee3520: proto=tcpv4 src=192.168.19.117:4721 fe=ravitestbed be=ravitestbed srv=arun as=0 ts=08 age=4s calls=3
rq[f=009202h,l=0,an=00h,rx=20s,wx=,ax=] rp[f=009202h,l=0,an=00h,rx=20s,wx=,ax=] s0=[7,8h,fd=1,ex=] s1=[7,8h,fd=2,ex=] exp=20s
0x9eeb8e8: proto=tcpv4 src=192.168.19.117:4723 fe=ravitestbed be=ravitestbed srv=arun as=0 ts=08 age=4s calls=3
rq[f=009000h,l=0,an=00h,rx=20s,wx=,ax=] rp[f=009202h,l=0,an=00h,rx=20s,wx=,ax=] s0=[7,8h,fd=8,ex=] s1=[7,8h,fd=9,ex=] exp=20s
0x9ef3d08: proto=tcpv4 src=192.168.19.117:4725 fe=ravitestbed be=ravitestbed srv=arun as=0 ts=08 age=4s calls=3
rq[f=009000h,l=0,an=00h,rx=20s,wx=,ax=] rp[f=009202h,l=0,an=00h,rx=20s,wx=,ax=] s0=[7,8h,fd=12,ex=] s1=[7,8h,fd=13,ex=]
exp=20s
0x9f04548: proto=unix_stream as=2 ts=09 age=0s calls=2 rq[f=00e042h,l=10,an=20h,rx=10s,wx=,ax=]

rp[f=048060h,l=716,an=00h,rx=,wx=10s,ax=] s0=[7,0h,fd=3,ex=] s1=[0,0h,fd=-1,ex=] exp=9s

This will give you information about the running HAProxy process such as pid, uptime and etc.

ravi@arun:~$ echo “show info” | socat unix-connect:/tmp/haproxy stdio
Name: HAProxy
Version: 1.3.23
Release_date: 2010/01/28
Nbproc: 1
Process_num: 1
Pid: 11829
Uptime: 0d 0h42m53s
Uptime_sec: 2573
Memmax_MB: 0
Ulimit-n: 50013
Maxsock: 50013
Maxconn: 25000
Maxpipes: 0
CurrConns: 1
PipesUsed: 0
PipesFree: 0
Tasks: 1
Run_queue: 1
node: ravi.world
description:

This will give you stats on all of your backends and frontends, some of the same stuff you see on the stats page enabled by the stats uri configuration. As an added bonus it’s all in CSV.

ravi@arun:~$ echo “show stat” | socat unix-connect:/tmp/haproxy stdio
#
pxname,svname,qcur,qmax,scur,smax,slim,stot,bin,bout,dreq,dresp,ereq,econ,eresp,wretr,wredis,status,weight,act,bck,chkfail,ch
kdown,lastchg,downtime,qlimit,pid,iid,sid,throttle,lbtot,tracked,type,rate,rate_lim,rate_max,
ravitestbed,FRONTEND,,,0,5,100,30,32582,50616,0,0,0,,,,,OPEN,,,,,,,,,1,1,0,,,,0,0,0,5,
ravitestbed,trupti,0,0,0,2,,15,7020,22722,,0,,0,0,0,0,no check,1,1,0,,,,,,1,1,1,,15,,2,0,,2,
ravitestbed,arun,0,0,0,5,,15,25562,27894,,0,,0,0,0,0,no check,1,1,0,,,,,,1,1,2,,15,,2,0,,3,
ravitestbed,BACKEND,0,0,0,5,100,30,32582,50616,0,0,,0,0,0,0,UP,2,2,0,,0,2710,0,,1,1,0,,30,,1,0,,5,
stats,FRONTEND,,,0,1,100,21,9605,152357,0,0,0,,,,,OPEN,,,,,,,,,1,2,0,,,,0,0,0,9,
stats,BACKEND,0,0,0,1,100,5,9605,152357,0,0,,5,0,0,0,UP,0,0,0,,0,2710,0,,1,2,0,,0,,1,0,,4,

show errors will give you a capture of last error on each backend/frontend.

ravi@arun:~$ echo “show errors” | socat unix-connect:/tmp/haproxy stdio

Reffer:
http://www.dest-unreach.org/socat/
http://haproxy.1wt.eu/download/1.3/doc/configuration.txt

Thanks to Joe (http://www.joeandmotorboat.com)

Thank you,
Ravi

秒アクションスクリプト〜例による学習

秒アクションスクリプト〜例による学習

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

を構成する方法マルチマスターのMySQLレプリケーション

を構成する方法マルチマスターのMySQLレプリケーション

はじめに〜

私は長い間、マルチマスタのMySQLレプリケーションで記事を書くことを計画していた。最後に、今すぐ開始!。してください”を構成する方法1つのマスター”のURLでのMySQLのレプリケーションは、記事参照してください〜 http://www.indiangnu.org/2007/mysql-replication-one-master-multiple-slave/

*私のすべては、MySQLのマルチマスタのレプリケーションは純粋に2つの以下の変数に基づいていますことをお知らせしましょう。これはレプリケーションテクノロジー、MySQLのレプリケーションで使用されるとは何の関係もない…。

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

どこ –
マスタサーバのN =”n番目の番号マスタ(上の1 ..上に2などを保持)が1とマスタ- 2上の維持
当社の場合、マスターサーバ(2のM =”の合計数が高いので、簡単、新しいマスタサーバーを追加することができますがこの値を維持する方)

ログ- slave – updatesを=”スレーブサーバは、バイナリ、独自にマスターサーバーから受信されたすべての更新ログに記録されません。このオプションは、スレーブの更新プログラムは、SQLスレッドによって、独自のバイナリログに実行ログに伝えます。

**は、MySQLとまではすべてのマスターサーバーとスレーブサーバー上で実行されていることを確認-

どのように設定するマルチマスタの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>

*だから、すべての設定、マルチマスタのMySQLのレプリケーションを学びました。をお楽しみください!

よろしく、
Arun Bagul

どのように作成したり、RPMパッケージを構築する

どのように作成したり、RPMパッケージを構築する

はじめに –

*””rpmbuildをツールの両方を構築するために使用され…

1)バイナリパッケージ〜ソフトウェアをインストールし、スクリプトをサポートする使用されます。これは、アプリケーションを構成するファイルが含まれ、任意の追加情報をインストールするには、それを消去する必要に沿っている。
2)ソースパッケージ〜ソースコード、パッチ、および仕様ファイルの元の圧縮されたtarファイルが含まれます。

*何のRPMとRPMパッケージマネージャですか?

RPMパッケージマネージャ(RPM)は、強力なコマンドラインのパッケージ管理システムをインストールすることができる、アンインストール、検証、クエリは、ソフトウェアパッケージのアップデート。

RPMパッケージのファイルやメタアーカイブの構成データをインストールすると、アーカイブファイルを消去する使用されます。メタデータのヘルパースクリプトは、ファイル属性、およびパッケージについての記述情報が含まれます。

*以下の3点を指定する必要があるRPMパッケージをビルドするには〜

アプリケーションの1)ソース – すべての場合には、ソースパッケージの構築プロセスで使用される変更しないでください。

2)パッチ – RPM形式を利用すると、自動的にパッチを適用することができます。パッチの問題は、ターゲットシステムに固有のアドレス。これは、適切なディレクトリ、またはクロスを解決するにプラットフォームの競合がアプリケーションをインストールするmakefileの変更を含めることができます。パッチは、環境に適切にコンパイルするために必要な作成します。

3)仕様書ファイル] – [ファイル仕様のRPMパッケージをビルドプロセスの中心にあります。この情報はRPMで、同様の手順どのように構築するRPMを伝えるパッケージをビルドするために必要が含まれます。仕様ファイルには、正確にどのようなファイルは、パッケージの一部であり、指示場所にインストールする必要があります。

**仕様ファイル〜8セクションを以下に示すように分割されて

1)前文〜したときのユーザーは、パッケージに関する情報を要求される情報が含まれます。これは、ソフトウェアのバージョン番号等は、パッケージの機能の説明が含まれます

イ)の準備〜ここでパッケージをビルドするのは、実際の作業を開始します。その名のとおり、このセクションでは、必要な準備を前に、ソフトウェアの実際の建物に作られています。もし何か必要な一般的に、ソースをする前にソフトウェアを構築するために行われるため、その準備のセクションで発生する必要があります。このセクションの内容は、通常のシェルスクリプトです。しかし、RPMを簡単に生活する2つのマクロを提供します。 1つのマクロは、圧縮されたtarファイルを展開することができますし、ソースディレクトリへcdします。他のマクロを簡単に展開したソースにパッチを適用します。

℃)ビルド〜このセクションでは、シェルスクリプトで構成されます。それは何のコマンドを実行するために使用され、実際の場合、またはビルドプロセスが複雑になる、makeコマンドを1つのように、ソースをコンパイルする必要がありますが必要です。ないマクロは、このセクションでご利用いただけます。

エ)をインストールする〜このセクションには、コマンドは実際にソフトウェアをインストールするために必要を実行するために使用されているセクションをインストールするシェルスクリプトを含む。

電子)のインストールとアンインストールスクリプトを〜これはスクリプトが実行されると、ユーザーのシステムでは、パッケージが実際にインストールまたは削除される上で構成されます。 RPMは/ポストインストール/パッケージの削除スクリプトを事前に実行することができます。

メス)を確認スクリプト〜は、ユーザーのシステム上で実行されるスクリプトです。このときのRPMパッケージの適切なインストールを検証が実行されます。

グラム)クリーン項〜は、ビルド後のことをクリーンアップすることができますスクリプトです。以来、RPMは、通常の良い仕事をしてこのスクリプトではほとんど使用され、クリーンアップ、ほとんどの環境を構築します。

h)ファイルリスト〜のファイルは、パッケージで構成されるリストから成ります。さらに、マクロの数を、インストール時にファイルの属性を制御するだけでなく、ファイルのマニュアルは、アールを示すために、および構成情報が含まれて使用することができます。ファイルのリストは非常に重要です。

環境を構築するための*** RPMの要件〜

] RPMには、ビルドを実行するディレクトリの設定が必要です。一方、ディレクトリの場所や名前を変更することができます。デフォルトのレイアウトは次のとおりです –

arunsb @ルート:〜#ls – lを/ usr / srcに/ RedHatの/

drwxr – xr – xに4096 25 2007ソース=”、およびアイコンのファイルは、オリジナルのソース、パッチが含まれて8月2日のルートルート
drwxr – xr – xに4096 25 2007スペック=”8月2日のルートルートは、仕様ファイルが含まれ
drwxr – xr – xに4096 25 2007ビルド=”ディレクトリは、ソースアンパックされ、&ソフトウェアを8月2日のルートルート構築されて
drwxr – xr – xに8ルートルート4096 2008年5月28日RPMSに=”バイナリパッケージに含まれてビルドプロセスによって作成されたファイル
drwxr – xr – xに4096 25 2007 SRPMS =”8月2日のルートルートは、ソースパッケージに含まれてビルドプロセスによって作成されたファイル

arunsb @ルート:〜#

のB]いくつかのグローバル変数をRPMで使用されるエクスポートする必要がある –

arunsb @ルート:〜#エクスポートRPM_BUILD_DIR = / usr / srcに/ RedHatの/は、BUILD /
arunsb @ルート:〜#エクスポートRPM_SOURCE_DIR = / usr / srcに/ redhat / SOURCESに/

ステップ1](spec)は、ファイル仕様書の作成〜

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/

## Preamble Section-
Name: openlsm
Version: 0.99
Vendor: IndianGNU.org & openlsm
Release: r45
Group: System Environment/Daemons
Packager: IndianGNU.org (http://www.indiangnu.org)
URL: http://openlsm.sourceforge.net/
Summary: openlsm Admin Server
License: GPL

%description
openlsm Admin Server is free & open source web based control panel for Linux,Unix systems.

## Preparation Section-
%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 Section-
%build

cd ./openlsm-0.99-r45/
./configure –prefix=/usr/local/openlsm –with-mysql=/usr/bin/mysql_config –enable-internal-pcre –with-geoip=/usr –with-ldap=/usr –enable-trace
make

## Install Section-
%install

cd ./openlsm-0.99-r45/
make install

## Files Section-
%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
….
…..
….. list of files installed by pkg
root@arunsb:~#

*どのようにファイルのリストを作成するのですか?

ファイルリストの作成は手動で処理します。何か私が私の手動インストールプレフィックスディレクトリからファイルをリストしたがわかる以下のようにコマンドを…

root@arunsb:~# find /usr/local/openlsm/ -type f -or  -type d

ステップ2]ビルドの開始〜

root@arunsb:~# cd /usr/src/redhat/SPECS
root@arunsb:/usr/src/redhat/SPECS# ls -l  openlsm.spec
-rw-r–r– 1 root root 12938 Dec  2 17:21 openlsm.spec
root@arunsb:/usr/src/redhat/SPECS#

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

…。
… ..

アンパッケージファイル(複数可)を確認する場合:/ usr / libに/回転数/チェックアウトファイルを%(BuildRoot用)
書き込み:/ usr/src/redhat/SRPMS/openlsm-0.99-r45.src.rpm
書き込み:/ usr/src/redhat/RPMS/i386/openlsm-0.99-r45.i386.rpm
arunsb @ルート:/ usr / srcに/ RedHatの/仕様#$エコー?
0

arunsb @ルート:/ usr / srcに/ RedHatの/仕様#ls – lを/ usr/src/redhat/SRPMS/openlsm-0.99-r45.src.rpm
– RWの- rを- rを- 1ルートルート3206 12月2日午後05時50分/ usr/src/redhat/SRPMS/openlsm-0.99-r45.src.rpm
arunsb @ルート:/ usr / srcに/ RedHatの/仕様#ls – lを/ usr/src/redhat/RPMS/i386/openlsm-0.99-r45.i386.rpm
– RWの- rを- rを- 1ルートルート3052868 12月2日17時50分/ usr/src/redhat/RPMS/i386/openlsm-0.99-r45.i386.rpm
arunsb @ルート:/ usr / srcに/ RedHatの/仕様#

*ソースとバイナリパッケージを作成!

のように”が起こったか/ usr / srcに/ RedHatの/”ディレクトリみましょう**

arunsb @ルート:/ usr / srcに/ RedHatの#PWDの
/ usr / srcに/ RedHatの
arunsb @ルート:/ usr / srcに/ RedHatの#1!
ビルドRPMSにソース仕様SRPMS
arunsb @ルート:/ usr / srcに/ RedHatの#1!は、BUILD /
openlsm – 0.99 – r45″==ソースここで”openlsm.spec”ファイル仕様すなわちからビルド手順の一部として抽出された
arunsb @ルート:/ usr / srcに/ RedHatの#1!ソース/
openlsm – 0.99 – r45.tar.gz”==’元のopenlsm – 0.99 – r45.tar.gz’ソース私がコピーされたファイル
arunsb @ルート:/ usr / srcに/ RedHatの#1!RPMS /ディレクトリ
のathlon i386以外i486のはi586 i686 noarch
arunsb @ルート:/ usr / srcに/ RedHatの#1!RPMS/i386 /
openlsm – 0.99 – r45.i386.rpm”==バイナリrpmパッケージを作成!
arunsb @ルート:/ usr / srcに/ RedHatの#1!SRPMS /
openlsm – 0.99 – r45.src.rpm”==ソースのRPMパッケージを作成!
arunsb @ルート:/ usr / srcに/ RedHatの#

ステップ3]今すぐにパッケージをインストールしてテストする〜

arunsb @ルート:/ usr / srcに/ RedHatの#cpはRPMS/i386/openlsm-0.99-r45.i386.rpm /ホーム/ arunsb /

arunsb @ルート:/ usr / srcに/ RedHatの#のCD /ホーム/ arunsb /
arunsb @ルート:〜#1!
openlsm – 0.99 – r45.i386.rpm
arunsb @ルート:〜#回転- ivh openlsm – 0.99 – r45.i386.rpm
準備中… ########################################### [100%]
1:openlsm ########################################### [100%]
arunsb @ルート:〜#1!/ usr /ローカル/ openlsm /
ビンのcontrib等libにsbinスクリプトを共有ヴァール含まれて
arunsb @ルート:〜#

** openlsmサーバーの始動〜

arunsb @ルート:〜#/ usr / / openlsmに/ contrib / openlsm – RedHatの起動ローカル
*料金openlsm管理サーバ:openlsm
。 [OK]を
arunsb @ルート:〜#
arunsb @ルート:〜#/ usr / / openlsmに/ contrib / openlsm – RedHatのステータスローカル
openlsm()が実行さ21607 pidを…
arunsb @ルート:〜#

arunsb @ルート:〜#回転- qをopenlsm – 0.99 – r45
openlsm – 0.99 – r45
arunsb @ルート:〜#

arunsb @ルート:〜#回転- QLのopenlsm – 0.99 – r45
..

arunsb @ルート:〜#RPMベースのqiv openlsm – 0.99 – r45
名前:openlsmリロケーション:()配置しない
バージョン:0.99メーカー:IndianGNU.org&openlsm
発売日:r45をビルド日付:Wed 2009年12月2日午前5時50分54秒午後IST
インストール日付:Wed 2009年12月2日6時06分23秒午後ISTビルドホスト:alongseveral – dr.eglbp.corp.yahoo.com
グループ:システム環境/デーモンSource RPM:openlsm – 0.99 – r45.src.rpm
サイズ:14877918ライセンス:GPL
署名:(なし)
パッケージャ:IndianGNU.org(http://www.indiangnu.org)
のURL:http://openlsm.sourceforge.net/
要約:openlsm管理サーバー
概要:
Linuxでは、Unixシステム用のopenlsm管理サーバー&オープンソースのウェブは無料ですベースのコントロールパネルを開きます。
arunsb @ルート:〜#

**注〜この資料では、どのようにドキュメントをコピーするマイクロを定義するための情報が含まれていない場合、manページを、どのようにpermisionと私はRPMに関する次回の記事では、このトピックをカバーする所有権等を設定する場所をデフォルトに。

**してください英語記事参照してください〜http://www.indiangnu.org/2009/how-to-create-or-build-rpm-package/

よろしく、
Arun Bagul