Category: ข้อมูล ทั่วไป

ข้อมูล ทั่วไป

5 อันดับ – เครือข่าย Open Source และตรวจสอบประสิทธิภาพของระบบการแจ้งเตือน

5 อันดับ – เครือข่าย Open Source และตรวจสอบประสิทธิภาพของระบบการแจ้งเตือน

บทนำ – การตรวจสอบเครือข่ายและการใช้งานต่างๆของคุณเป็นส่วนหนึ่งที่สำคัญที่สุดของธุรกิจของคุณ ดังนั้นการเลือกเครื่องมือตรวจสอบเป็นสิ่งสำคัญและสำคัญที่สุดงานเพราะคุณพร้อมจะตอบเกี่ยวกับเครื่องมือที่จะแจ้งให้ทราบเมื่อใดก็ตามที่อะไรผิดพลาดนี้!

1) Nagios – เป็นแหล่งที่ใช้คอมพิวเตอร์เป็นที่นิยมเปิดจอแสดงผลระบบตรวจสอบเครือข่ายและโครงสร้างพื้นฐานแอพลิเคชันซอฟต์แวร์ตรวจสอบ Nagios มีการตรวจสอบเสร็จสมบูรณ์และแจ้งเตือนสำหรับเซิร์ฟเวอร์สวิตช์การใช้งานและการให้บริการและถือเป็นอุตสาหกรรม defacto
มาตรฐาน Nagios สนับสนุนสองประเภทของการตรวจสอบ-Active และ Passive ในกรณีที่ตารางการใช้งานการตรวจสอบ nagios หรือแข็งขันตรวจสอบการให้บริการดังกล่าวในขณะที่ในกรณีของการตรวจสอบ Passive แอพลิเคชันภายนอกสามารถใช้ในการส่งผลการตรวจสอบการให้บริการ
– สำหรับการตรวจสอบ Passive NSCA (Acceptor Nagios บริการตรวจสอบ) daemon ควรรันบนเซิร์ฟเวอร์ nagios ที่จะยอมรับการตรวจสอบแบบพาสซีฟผ่านทางเครือข่ายซึ่งจะส่งเช็ค passive เพื่อ nagios ผ่าน Unix ซ็อกเก็ต
– สำหรับการตรวจสอบ Acitive ภูต NRPE (ผู้ปฏิบัติการปลั๊กอิน Nagios ระยะไกล) จะมีการเรียกใช้บนเครื่องระยะไกลในการตรวจสอบการให้บริการ อย่างไรก็ตามคุณสามารถใช้ SSH เช่นกัน

ในการตรวจสอบโฮสต์จากระยะไกลและการบริการชุมชน nagios ให้คุณปลั๊กอินบางที่แสดงด้านล่าง …
* NRPE – ภูต NRPE จะทำงานบนโฮสต์ระยะไกลและการตรวจสอบ nagios บริการบนโฮสต์ระยะไกลผ่านทาง check_nrpe ปลั๊กอิน (คำสั่ง) จากครอบครัวที่ nagios จะ
* Check_MK – ปลั๊กอิน nagios ที่ดีที่สุดสำหรับการตรวจสอบพื้นที่ห่างไกล ความงามของปลั๊กอินนี้คือที่สุดของการบริการที่สภาสามัญจะถูกตรวจสอบในการเชื่อมต่อไปยังโฮสต์ระยะไกลและผลการแสดงความคิดเห็นผลลัพธ์เป็น passive เพื่อ nagios นี้ช่วยเพิ่มประสิทธิภาพเครือข่ายการจราจรน้อยและแน่นอนโหลดหรือภาระในพื้นที่ห่างไกล (ที่เรากำลังตรวจสอบ) สำหรับ Check_MK เราจะต้องติดตั้งตัวแทน check_mk เช่นเชลล์สคริปต์ check_mk_agent ง่ายและผูกสคริปต์นี้เพื่อ TCP พอร์ต 6556 โดยใช้ daemon xinetd Check_MK ยังมีคุณสมบัติดังต่อไปนี้
– การสนับสนุนการกำหนดค่าแบบไดนามิก Check_MK รุ่น nagios สินค้าคงคลังของการตรวจสอบ
– Livestatus – ปลั๊กอินที่สวยงามในการสื่อสารกับ nagios (Unix ซ็อกเก็ต)
– Nagios MultiSite GUI – จอ nagios หลายจากอินเตอร์เฟซเดียวที่ใช้บนเว็บ
– รองรับ SNMP และการตรวจจับการบริการโดยอัตโนมัติสำหรับสวิตช์ Cisco หลายเตอร์และ filers NetApp เช่นกัน
Nagios MultiSite GUI – ความงามของ Check_MK nagios ปลั๊กอินก็คือ montoring nagios หลายเครื่องโดยใช้เพียงคนเดียวบนเว็บอินเตอร์เฟซที่ใช้ อินเตอร์เฟซนี้ usese webbased ปลั๊กอิน Check_MK Livestatus เพื่อให้ได้ข้อมูล nagios
Check_MK – http://mathias-kettner.de/
URL – http://www.nagios.org/~~V
ผู้แต่ง – อีธาน Galstad

ปมประสาท 2) – เป็นเครื่องมือที่สามารถปรับขยายระบบจำหน่ายจอแสดงผลสำหรับที่มีประสิทธิภาพสูงระบบคอมพิวเตอร์เช่นกลุ่มและกริด จะช่วยให้ผู้ใช้ระยะไกลดูสถิติสดหรือประวัติศาสตร์ (เช่นค่าเฉลี่ยภาระ CPU หรือการใช้เครือข่าย) สำหรับเครื่องทั้งหมดที่กำลังถูกตรวจสอบ ปมประสาทจะมีประโยชน์มากที่จะหาการใช้ทรัพยากรของโปรแกรมประยุกต์หรือทีมที่ฉลาดแม้ในสภาพแวดล้อมแบบคลัสเตอร์ เราต้องติดตั้ง gmond (daemon จอภาพปมประสาท) ในแต่ละเครื่อง (ในกลุ่มหรือคลัสเตอร์) ที่รวบรวมสถิติทั้งหมด
gmetad (daemon metadata ปมประสาท) ต้องติดตั้งอยู่บนหนึ่งในกลุ่มกลึงหรือคลัสเตอร์ซึ่งจะเก็บรวบรวมข้อมูลจากเซิร์ฟเวอร์ที่ระบุ gmond
URL – http://ganglia.info/~~V

3) Cacti – เป็นโอเพนซอร์สซึ่งเป็นเครื่องมือกราฟบนเว็บ (frontend เพื่อ RRDTool) Cacti ช่วยให้ผู้ใช้บริการในช่วงเวลาที่สำรวจความคิดเห็นไว้ล่วงหน้าและกราฟข้อมูลผลการศึกษา มันถูกใช้โดยทั่วไปกับข้อมูลอนุกรมเวลาของกราฟจากการวัดเช่นโหลด CPU และการใช้แบนด์วิธของเครือข่าย Cacti ดีกว่าที่จะตรวจสอบอุปกรณ์ฮาร์ดแวร์เช่นสวิตช์เราเตอร์ผ่าน SNMP
URL – http://www.cacti.net/

4) Zabbix – มันถูกออกแบบมาเพื่อตรวจสอบและติดตามสถานะของบริการเครือข่ายต่างๆเซิร์ฟเวอร์และอุปกรณ์เครือข่ายอื่น ๆ โดยจะใช้ MySQL, PostgreSQL, SQLite, Oracle หรือ IBM DB2 เพื่อจัดเก็บข้อมูล แบ็กเอนด์ของมันจะถูกเขียนใน C และ frontend เว็บที่เขียนใน PHP
Zabbix เสนอตัวเลือกการตรวจสอบหลาย ตัวแทน Zabbix นอกจากนี้ยังสามารถติดตั้งบนโฮสต์ UNIX และ Windows เพื่อตรวจสอบสถิติเช่นโหลด CPU, การใช้เครือข่ายพื้นที่ดิสก์เป็นต้น
เป็นทางเลือกที่จะติดตั้งตัวแทนในครอบครัว, Zabbix รวมถึงการสนับสนุนสำหรับการตรวจสอบผ่าน SNMP, TCP และการตรวจสอบ ICMP เป็นมากกว่า IPMI, SSH, telnet และใช้พารามิเตอร์ที่กำหนดเอง
Zabbix สนับสนุนความหลากหลายของเรียลไทม์กลไกการแจ้งเตือน ความงามของ Zabbix เป็น XMPP การแจ้งเตือน!
URL – http://www.zabbix.com/
ผู้เขียน – อเล็กซี่ Vladishev

5) Zenoss – Zenoss (Zenoss Core) เป็นโปรแกรมโอเพนซอร์ส, เซิร์ฟเวอร์และแพลตฟอร์มการจัดการเครือข่ายบนพื้นฐานของแอพพลิเคชันเซิร์ฟเวอร์ Zope
URL – http://www.zenoss.com/

หมายเหตุ – รายการนี​​้ขึ้นอยู่กับประสบการณ์ส่วนตัวและทางเลือกของหลาย IndianGNU สมาชิกในชุมชน

ขอขอบคุณ
Bagul อรุณ

วิธีการใช้ RAM (กายภาพ) เป็นดิสก์

วิธีการใช้ RAM (กายภาพ) เป็นดิสก์

บทนำ –
บางครั้งที่จะได้รับประสิทธิภาพการทำงาน, RAM ทางกายภาพที่สามารถใช้เป็นพื้นที่ว่างในดิสก์ที่มีความรวดเร็วเมื่อเทียบกับฮาร์ดดิสก์ปกติ
ดังนั้นวิธีที่ฉันสามารถใช้แรมดิสก์คืออะไร? ผ่านขั้นตอนนี้

ขั้นตอนที่ 1) การสร้างไดเรกทอรีที่แสดงด้านล่างที่คุณต้องการติดตั้ง RAM เป็นดิสก์

ราก @ arunbagul: ~ # mkdir-p / tmp / ram
ราก @ arunbagul: ~ # ls / tmp / ram
ราก @ arunbagul: ~ #

ขั้นตอนที่ 2) mount RAM เช่น tmpfs ที่จุดเมานท์ “/ tmp / RAM” ไดเรกทอรี

ราก @ arunbagul: ~ # mount-T-ขนาด tmpfs o = tmpfs 10M / tmp / ram /

* ตรวจสอบติดตั้งอยู่บนไม่ได้?

ราก @ arunbagul: ~ # df-H
ขนาดระบบแฟ้มมีจำหน่าย% ใช้งานติดตั้งอยู่ที่
tmpfs 10M 0 0% 10M / tmp / ram

เพื่อยึด ** นี้รายการเพิ่มอย่างถาวรใน fstab / etc / ที่แสดงด้านล่าง

ราก @ arunbagul: ~ # cat / etc fstab /

….

tmpfs tmp / / RAM เริ่มต้น tmpfs, size = 10m 0 0

ราก @ arunbagul: ~ #

– การติดตั้งไว้ใช้คำสั่ง mount (นี้จะเมาจุดทั้งหมดที่กล่าวถึงใน fstab)

ราก @ arunbagul: ~ #-mount

ขอบคุณ,
Bagul อรุณ

IndianGNU.org — ครบรอบสี่!

IndianGNU.org — ครบรอบสี่!

เรียนทั้งหมด

วันนี้เรามีวันครบรอบปีที่สี่! เราจบสี่ปีและยังคงเติบโตด้วยความเร็วเต็ม! มันเป็นไปไม่ได้ก็ไม่สนับสนุนการมีส่วนร่วมของคุณและทำงานอย่างหนัก

โครงการ openlsm ~

นี้ ปีได้ยากสำหรับ openlsm และเราจะเปิดตัวรุ่นพัฒนาผู้ดูแลระบบแผงสิ้น ธ.ค. 2010 เราคาดว่ามากขึ้นจากขั้นที่สอง …

ไชโย,
IndianGNU.org

Perl CGI – Session และ Cookie howto

Perl CGI – Session และ Cookie howto

บทนำ –

เกือบ 1 ปีหลังผมพยายามมากสำหรับช่วงการดำเนินการและคุกกี้ในโปรแกรม Perl CGI ดังนั้นคิดว่าจะร่วมงานของผมกับคุณทั้งหมด
ฉันอยากจะทำในทางของฉัน …

อัสสัมชั, 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

วิธีการทดสอบประสิทธิภาพของเครือข่ายและแบนด์วิดท์

วิธีการทดสอบประสิทธิภาพของเครือข่ายและแบนด์วิดท์

บทนำ —

แอบแฝงเครือข่ายและแบนด์วิธเป็นสองตัวชี้วัดส่วนใหญ่น่าจะเป็นประโยชน์เมื่อคุณเกณฑ์มาตรฐานเครือข่าย ถึงแม้ว่าบริการมากที่สุดและเน้นการโฆษณาผลิตภัณฑ์แบนด์วิดธ์ที่แอบแฝงครั้งอาจจะเป็นตัวชี้วัดที่สำคัญกว่า

** อะไรคือ Bandwidth?

Bandwidth (BW) ในระบบเครือข่ายคอมพิวเตอร์หมายถึงอัตราการส่งข้อมูลได้รับการสนับสนุนโดยการเชื่อมต่อเครือข่ายหรืออินเตอร์เฟซ BW เป็นวัดในแง่ของบิตต่อ (bps) ที่สอง

** สามารถแอบแฝงเครือข่ายเป็นอย่างไร

เป็นตัวชี้วัดความล่าช้าของการหน่วงเวลาที่มีประสบการณ์ในระบบ แอบแฝงเครือข่ายจะถูกกำหนดเป็นเพียงแค่การหน่วงเวลาที่สังเกตเป็นส่งข้อมูลจากจุดหนึ่งไปยังอีก มีหลายปัจจัยที่ช่วยในการแอบแฝงเครือข่ายเป็น เหล่านี้รวมถึงการส่งผ่าน (กลางของการเชื่อมต่อ) ระยะทางเราท์เตอร์และความล่าช้าอุปกรณ์คอมพิวเตอร์

รายชื่อโครงการที่ใช้ในการทดสอบประสิทธิภาพของเครือข่ายและแบนด์วิธ —

1) bmon — จอแบนด์วิดท์และวิธีการประมาณค่าอัตราก็เป็นคอนโซลตามสด BW
2) bwbar — การใช้แบนด์วิธในข้อความและกราฟิกรูปแบบ
3) bwm – ng — Bandwidth Monitor NG (Next Generation, Live BW, คอนโซลตาม
4) dstat — Dstat สามารถเปลี่ยนสำหรับ vmstat iostat และ ifstat
5) iftop — การใช้แบนด์วิธในอินเตอร์เฟซ, คอนโซลตาม
6) iperf — ทำการทดสอบผ่านเครือข่ายเดิมพันสองโฮสต์
7 ifstat) — รายงานสถิติการเชื่อมต่อ
8 cbm) — สี Bandwidth Meter, คอนโซลตาม
9 etherape) — เบราว์เซอร์แบบกราฟิกการจราจรในเครือข่าย
10) iptraf — Interactive Colorful IP LAN Monitor, คอนโซลและ GUI ตาม
11) netmrg — เป็นภูตตามการสนับสนุน MySQL, รวบรวมข้อมูลจากอุปกรณ์
12 nuttcp) — เครือข่ายการวัดประสิทธิภาพของเครื่องมือ
13 nepim)

หมายเหตุ ~ สำหรับบางคน deb ชุดรอบต่อนาทีหรือไม่สามารถใช้ได้!

ขั้นตอนที่ 1] วิธีการติดตั้งใน RedHat / RHCE, CentOS ระบบพื้นฐานและระบบฐาน Dibian?

root@me:~# yum install netperf iperf nuttcp nepim lmbench

Ubuntu ** —

root@me:~# apt-get install  bmon bwbar bwm-ng dstat cbm etherape iftop iperf ifstat iptraf netmrg

ขั้นตอนที่ 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

** เริ่มต้น”iperf”เซิร์ฟเวอร์บนโฮสต์ (A) และลูกค้าในพื้นที่อื่น (B) — การวัดผ่านเครือข่ายระหว่างสองครอบครัว

* 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

Top 7 ERP และซอฟแวร์ที่มาเปิด CRM

Top 7 ERP และซอฟแวร์ที่มาเปิด CRM

บทนำ –

คือการวางแผนทรัพยากรองค์กร (ERP) คืออะไร

ERP เป็นระบบซอฟต์แวร์ที่บูรณาการใช้ในการจัดการทรัพยากรสินทรัพย์ทรัพยากรทางการเงินวัสดุและทรัพยากรมนุษย์
วัตถุประสงค์คือเพื่ออำนวยความสะดวกในการไหลของข้อมูลระหว่างทุกฟังก์ชั่นทางธุรกิจขององค์กร

การจัดการความสัมพันธ์กับลูกค้า (CRM) คืออะไร?

CRM จะได้รับการยอมรับในวงกว้างเป็นปฏิสัมพันธ์กับลูกค้าของ บริษัท ลูกค้าและกลุ่มเป้าหมายการขาย มันเกี่ยวกับการใช้
สนับสนุนเทคโนโลยีในการจัดระเบียบอัตโนมัติและประสาน (ขาย) กิจกรรมทางธุรกิจการตลาดการบริการลูกค้าและด้านเทคนิค

1) Openbravo

Openbravo ERP เป็น Web – based ERP แก้ปัญหาทางธุรกิจสำหรับ บริษัท ขนาดเล็กและขนาดกลางที่ออกภายใต้
Openbravo Public License, ขึ้นอยู่กับ Mozilla Public License
URL — http://www.openbravo.com/

2) OpenERP

OpenERP เป็นที่มาเปิดห้องสวีทที่ครอบคลุมการใช้งานทางธุรกิจรวมทั้งการขาย, CRM, การจัดการโครงการ
การจัดการคลังสินค้า, การผลิต, การบัญชี, ทรัพยากรมนุษย์
URL — http://www.openerp.com/

3) Fedena

Fedena เป็นแหล่งโรงเรียนเปิดซอฟต์แวร์การจัดการการพัฒนาบน Ruby on Rails กรอบ fedena มีโมดูลที่เกี่ยวข้องกับการเข้าพักรักษานักศึกษารายละเอียดการจัดการผู้ใช้จัดการ News, สอบตารางเวลาและการเข้าร่วม
URL — http://www.projectfedena.org/

4) JFire

JFireis Enterprise Resource Planning และระบบการบริหารลูกค้าสัมพันธ์ JFire เป็น Client – Server ระบบฐานกับลูกค้า Desktop พร้อมสำหรับ 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 เว็บซอฟต์แวร์ตาม ฉันมีส่วนบุคคลที่ใช้ซอฟต์แวร์นี้ มีหลาย Addons URL — http://www.vtiger.com/

โปรดดูรายชื่อซอฟแวร์ ERP ในวิกิพีเดีย — http://en.wikipedia.org/wiki/List_of_ERP_software_packages

ขอขอบคุณ
Arun Bagul

Bash Scripting ~ เรียน รู้ จาก ตัวอย่าง

Bash Scripting ~ เรียน รู้ จาก ตัวอย่าง

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

วิธี การ กำหนด ค่า หลาย master ซ้ำ MySQL

วิธี การ กำหนด ค่า หลาย master ซ้ำ MySQL

Introduction ~

ฉัน วางแผน ที่ จะ เขียน บทความ เกี่ยว กับ การ ทำ ซ้ำ Multi Master MySQL ตั้งแต่ เวลา ยาว ที่สุด เริ่ม ต้น วัน นี้. โปรด ดู ที่ บทความ เรื่อง “วิธี การ กำหนด ค่า ซ้ำ MySQL กับ Master” URL ~ http://www.indiangnu.org/2007/mysql-replication-one-master-multiple-slave/

* ให้ ฉัน ทราบ สิ่ง ที่ จำลอง แบบ Multi Master ใน MySQL จะ ขึ้น ต่อ ไป อย่าง บริสุทธิ์ ใน สอง ตัวแปร. มี อะไร จะ ทำ อย่างไร กับ เทคโนโลยี การ ทำ ซ้ำ ใช้ ใน การ ทำ ซ้ำ 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 => หมายเลข nth ของ เซิร์ฟเวอร์ หลัก (ใน master-1 เก็บ ไว้ 1 และ master-2 ให้ เป็น 2 เป็นต้น ..)
M => จำนวน Master Server (2 ใน กรณี ของ เรา แต่ ดี กว่า เพื่อ ให้ ค่า นี้ สูง เพื่อ ให้ เรา สามารถ เพิ่ม เซิร์ฟเวอร์ หลัก ใหม่ ได้ อย่าง ง่ายดาย)

ปรับปรุง log-ทาส-=> server ทาส ไม่ เข้า กับ ตัว เอง binary log ของ การ ปรับปรุง ใด ๆ ที่ จะ ได้ รับ จาก เซิร์ฟเวอร์ Master. ตัว เลือก นี้ จะ บอก ทาส เพื่อ เข้า สู่ การ ปรับปรุง โดย ด้าย SQL เพื่อ เข้า สู่ ระบบ ไบนารี ของ ตนเอง.

** โปรด ตรวจ สอบ ว่า MySQL ทำงาน และ มี ขึ้น ใน ทุก เซิร์ฟเวอร์ หลัก และ เซิร์ฟเวอร์ ทาส –

วิธี การ ติด ตั้ง ซ้ำ Multi Master 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>

* ดังนั้น เรา ทุก คน เรียน รู้ เพื่อ multi-กำหนด ค่า ซ้ำ MySQL master. สนุก!!

ความ นับถือ,
Arun Bagul

วิธี การ สร้าง หรือ สร้าง RPM Package

วิธี การ สร้าง หรือ สร้าง RPM Package

Introduction —

เครื่องมือ * “rpmbuild” จะ ใช้ ใน การ สร้าง ทั้ง …

1) Binary Package ~ ที่ ใช้ ใน การ ติด ตั้ง ซอฟต์แวร์ และ สนับสนุน สคริปต์. มัน มี ไฟล์ ที่ ประกอบด้วย ใบ สมัคร พร้อม ด้วย ข้อมูล เพิ่มเติม ที่ จำเป็น ใน การ ติด ตั้ง และ ลบ มัน.
แพค เก จ ที่ มา 2) ~ มี น้ำมันดิน ไฟล์ ต้นฉบับ บีบ อัด ของ รหัส ที่ มา, แพ ท ช์ และ ข้อกำหนด File.

* เป็น RPM และ ผู้จัดการ package RPM คือ อะไร?

RPM Package Manager (RPM) มี คำ สั่ง บรรทัด ที่ มี ประสิทธิภาพ การ บริหาร จัดการ ระบบ พัสดุ สามารถ ติด ตั้ง ถอน การ ติด ตั้ง, ตรวจ สอบ, querying, และ ปรับปรุง ชุด ซอฟต์แวร์.

Package RPM ประกอบด้วย เก็บ ไฟล์ และ meta ข้อมูล ที่ ใช้ ใน การ ติด ตั้ง และ ลบ ไฟล์ ที่ เก็บ. Meta ข้อมูล รวม สคริปต์ ผู้ ช่วยเหลือ, แอตทริบิวต์ ของ แฟ้ม และ ข้อมูล อธิบาย เกี่ยว กับ แพค เก จ.

* ใน การ สร้าง แพ็ก เก จ RPM คุณ ต้อง ระบุ สาม สิ่ง ~

ที่ มา 1) การ สมัคร – กรณี ที่ คุณ ไม่ ควร ปรับ เปลี่ยน มา ใช้ ใน การ สร้าง package.

2) กระจาย – RPM ช่วย ให้ คุณ สามารถ ที่ จะ ใช้ ปรับปรุง ให้ พวก เขา. แก้ไข ปัญหา ที่ อยู่ เฉพาะ ใน ระบบ เป้าหมาย. นี้ อาจ รวม ถึง การ เปลี่ยน makefiles ติด ตั้ง โปรแกรม ลง ใน ไดเรกทอรี ที่ เหมาะสม หรือ การ แก้ไข ความ ขัดแย้ง ข้าม แพลตฟอร์ม. ปรับปรุง สร้าง สิ่งแวดล้อม ที่ จำเป็น สำหรับ การ รวบรวม ที่ เหมาะสม.

3) ข้อกำหนด File – ไฟล์ ข้อกำหนด คือ หัวใจ ของ การ สร้าง RPM package. มัน มี ข้อมูล ที่ จำเป็น โดย RPM สร้าง แพค เก จ รวม ทั้ง คำ แนะนำ บอก RPM วิธี การ สร้าง มัน. ไฟล์ ข้อกำหนด ยัง dictates ว่า ไฟล์ ต่างๆ เป็น ส่วน หนึ่ง ของ แพ็ก เก จ และ ที่ พวก เขา ควร จะ ติด ตั้ง.

** ข้อกำหนด File ~ แบ่ง ใน 8 ส่วน ที่ แสดง ด้าน ล่าง

a) คำนำ ~ มี ข้อมูล ที่ จะ ปรากฏ เมื่อ ผู้ ใช้ ขอ ข้อมูล เกี่ยว กับ แพค เก จ. นี้ จะ รวม ถึง ราย ละเอียด ของ งาน ชุด ของ หมายเลข รุ่น ของ ซอฟต์แวร์ อื่น ๆ

b) Preparation ~ ที่ ทำงาน จริง ของ อาคาร package starts. เป็น ชื่อ นัย ส่วน นี้ เป็น ที่ ที่ จำเป็น ต้อง มี การ เตรียม การ ก่อน ที่ จะ ทำ อาคาร จริง ของ ซอฟต์แวร์. โดย ทั่วไป หาก สิ่ง ใด ต้อง ทำ ถึง แหล่ง ที่ มา ก่อน ที่ จะ สร้าง ซอฟต์แวร์ ที่ จะ ต้อง เกิด ขึ้น ใน ส่วน การ จัด เตรียม. เนื้อหา ใน ส่วน นี้ เป็น สคริปต์ เชลล์ สามัญ. แต่ RPM ไม่ ให้ สอง macros เพื่อ ให้ ชีวิต ง่าย ขึ้น. หนึ่ง แมโคร สามารถ แตก ไฟล์ บีบ อัด น้ำมัน และ cd เป็น ไดเรกทอรี ที่ มา. มาโคร อื่น ๆ ได้ อย่าง ง่ายดาย กับ แพ ท ช์ ไป มา จำนวน มาก ๆ.

c) สร้าง ~ ส่วน นี้ ประกอบด้วย สคริปต์ เปลือก. มี การ ใช้ การ คำ สั่ง ใด จะ ต้อง จริง รวบรวม แหล่ง ที่ มา เช่น เดียว ทำให้ คำ สั่ง หรือ มี ความ ซับซ้อน มาก ขึ้น หาก สร้าง กระบวนการ ต้อง เป็น. มี macros ไม่มี ใน ส่วน นี้ เป็น.

d) ติด ตั้ง ~ ส่วน นี้ ยัง มี สคริปต์ เปลือก ให้ การ ติด ตั้ง ส่วน ที่ จะ ใช้ ใน การ ดำเนิน การ คำ สั่ง จริง ต้อง ติด ตั้ง ซอฟต์แวร์.

e) ติด ตั้ง และ ยกเลิก การ ติด ตั้ง สคริปต์ ~ ประกอบด้วย สคริปต์ ที่ จะ ทำงาน ใน ระบบ ของ ผู้ ใช้ เมื่อ แพค เก จ ติด ตั้ง จริง หรือ ลบ. RPM สามารถ รัน สคริปต์ ก่อน การ ติด ตั้ง โพ ส ต์ / / ลบ package.

f) ~ ตรวจ สอบ สคริปต์ สคริปต์ ที่ รัน ใน ระบบ ของ ผู้ ใช้. จะ รัน เมื่อ RPM ยืนยัน การ ติด ตั้ง แพค เก จ ที่ เหมาะสม ของ.

g) Clean Section ~ สคริปต์ ที่ สามารถ ทำความ สะอาด สิ่ง ขึ้น หลังจาก การ สร้าง. สคริปต์ นี้ ใช้ ไม่ บ่อย เนื่องจาก RPM ปกติ ไม่ ได้ งาน ที่ ดี สะอาด ขึ้น ใน ที่สุด การ สร้าง สภาพ แวดล้อม.

h) List File ~ ประกอบด้วย ราย ชื่อ ของ ไฟล์ ที่ จะ ประกอบด้วย package. นอกจาก นี้ จำนวน macros สามารถ ใช้ การ ควบคุม คุณลักษณะ ของ แฟ้ม การ ติด ตั้ง เมื่อ รวม ทั้ง เพื่อ แสดง ว่า ไฟล์ ที่ เป็น เอกสาร และ ที่ มี ข้อมูล การ กำหนด ค่า. ราย ชื่อ แฟ้ม เป็น สิ่ง สำคัญ.

ต้องการ *** RPM เพื่อ สร้าง สภาพ แวดล้อม ~

A] RPM ต้อง ใช้ ชุด ของ ไดเรกทอรี เพื่อ ดำเนิน การ สร้าง. ขณะ ที่ ตั้ง ไดเรกทอรี และ ชื่อ สามารถ เปลี่ยน. รูป แบบ ที่ ตั้ง อยู่ ด้าน ล่าง —

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

drwxr-xr-x 2 root root 4096 Aug 25  2007 SOURCES    => มี แหล่ง เดิม ที่ ปรับปรุง และ ไฟล์ ไอคอน
drwxr-xr-x 2 root root 4096 Aug 25  2007 SPECS         =>  มี ไฟล์ ข้อกำหนด
drwxr-xr-x 2 root root 4096 Aug 25  2007 BUILD        => Directory ที่ มา เป็น จำนวน มาก ๆ, และ ซอฟต์แวร์ ที่ ถูก สร้าง ขึ้น
drwxr-xr-x 8 root root 4096 May 28  2008 RPMS         => มี แพค เก จ ไบนารี ไฟล์ ที่ สร้าง ขึ้น โดย การ สร้าง กระบวนการ
drwxr-xr-x 2 root root 4096 Aug 25  2007 SRPMS         => มี ชุด มา ไฟล์ ที่ สร้าง ขึ้น โดย การ สร้าง กระบวนการ

root@arunsb:~#

B] เพื่อ ต้องการ ส่ง ออก ทั่ว โลก ไม่ กี่ ตัวแปร ใช้ RPM —

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

ขั้น ที่ 1] สร้าง ข้อกำหนด (ข้อมูล จำเพาะ) File ~

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

….
…..

Checking for unpackaged file(s): /usr/lib/rpm/check-files %{buildroot}
Wrote: /usr/src/redhat/SRPMS/openlsm-0.99-r45.src.rpm
Wrote: /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 Dec  2 17:50 /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 Dec  2 17:50 /usr/src/redhat/RPMS/i386/openlsm-0.99-r45.i386.rpm
root@arunsb:/usr/src/redhat/SPECS#

* แหล่ง ที่ มา และ แพค เก จ ไบนารี สร้าง ขึ้น แล้ว!

** มา ดู สิ่ง ที่ เกิด ขึ้น ใน “/usr/src/redhat/” directory –

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                                        <== สกัด ที่ นี่ เป็น ส่วน หนึ่ง ของ การ สร้าง คำ แนะนำ จาก เช่น ไฟล์ ข้อกำหนด “openlsm.spec”
root@arunsb:/usr/src/redhat# ls SOURCES/
openlsm-0.99-r45.tar.gz                                 <== ต้นฉบับ ‘openlsm-0.99-r45.tar.gz’  แฟ้ม คัด ลอก จาก ฉัน
root@arunsb:/usr/src/redhat# ls RPMS/
athlon  i386  i486  i586  i686  noarch
root@arunsb:/usr/src/redhat# ls RPMS/i386/
openlsm-0.99-r45.i386.rpm                               <== แพค เก จ RPM Binary สร้าง ขึ้น แล้ว
root@arunsb:/usr/src/redhat# ls SRPMS/
openlsm-0.99-r45.src.rpm                                <== แพค เก จ รอบ ต่อ นาที ที่ มา สร้าง ขึ้น แล้ว
root@arunsb:/usr/src/redhat#

ขั้น ที่ 3] ตอน นี้ แพ็คเกจ การ ติด ตั้ง และ ทดสอบ ~

root@arunsb:/usr/src/redhat# cp RPMS/i386/openlsm-0.99-r45.i386.rpm  /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  include  lib  sbin  scripts  share  var
root@arunsb:~#

** เริ่ม ต้น เซิร์ฟเวอร์ openlsm ~

root@arunsb:~# /usr/local/openlsm/contrib/openlsm-redhat  start
* Starting openlsm admin server: openlsm
.                                                         [  OK  ]
root@arunsb:~#
root@arunsb:~# /usr/local/openlsm/contrib/openlsm-redhat  status
openlsm (pid 21607) is running…
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: (not relocatable)
Version     : 0.99                              Vendor: IndianGNU.org & openlsm
Release     : r45                           Build Date: Wed 02 Dec 2009 05:50:54 PM IST
Install Date: Wed 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
Size        : 14877918                         License: GPL
Signature   : (none)
Packager    : IndianGNU.org (http://www.indiangnu.org)
URL         : http://openlsm.sourceforge.net/
Summary     : openlsm Admin Server
Description :
openlsm Admin Server is free & open source web based control panel for Linux,Unix systems.
root@arunsb:~#

** หมายเหตุ ~ บทความ นี้ ไม่มี ข้อมูล เกี่ยว กับ การ กำหนด micros วิธี การ สำเนา เอกสาร หน้า มนุษย์ เริ่ม สถาน ที่ วิธี การ ตั้ง permision เป็นต้น เจ้าของ ฉัน จะ ครอบคลุม เรื่อง นี้ ใน บทความ ต่อ ไป ใน RPM.

** โปรด ดู ที่ บทความ ภาษา อังกฤษ ~ http://www.indiangnu.org/2009/how-to-create-or-build-rpm-package/

ความ นับถือ,
Arun Bagul

เข้ารหัส อีเมล ของ คุณ กับ GPG และ ปลั๊กอิน Enigmail Thunderbird

เข้ารหัส อีเมล ของ คุณ กับ GPG และ ปลั๊กอิน Enigmail Thunderbird

Introduction ~

GNU Privacy Guard (GnuPG หรือ GPG) เป็น แหล่ง เปิด / เข้ารหัส ซอฟต์แวร์ ฟรี และ เครื่องมือ เข้า, ทาง เลือก ที่ น่า รัก Good Privacy (PGP) ชุด ซอฟต์แวร์ Cryptographic. Enigmail เป็น ส่วน เสริม สำหรับ Mozilla Thunderbird Mozilla และ โปรแกรม อื่น ๆ. มัน มี การ เข้ารหัส คีย์ สาธารณะ e-mail. การ ทำงาน Cryptographic จริง จะ ดำเนิน การ โดย GNU Privacy Guard (GnuPG, GPG).

ขั้น ที่ 1] การ ติด ตั้ง Gnupg หรือ GPG —

* อู บุ น ตู / Debian ~

root @ อรุณ: ~ # ฉลาด-รับ ติด ตั้ง gnupg gnupg2

* RedHat / Fedora ~

root @ อรุณ: ~ yum # ติด ตั้ง gnupg gnupg2

ขั้น ที่ 2] วิธี การ ติด ตั้ง Enigmail?

ผม ถือว่า Mozilla Thunderbird ติด ตั้ง แล้ว ใน ระบบ ของ คุณ. ติด ตั้ง “Enigmail” ตาม ขั้น ตอน ต่อ ไป

a) Enigmail “ดาวน์โหลด” จาก url “http://enigmail.mozdev.org/download/”

หมายเหตุ ~ OS เลือก และ รุ่น Thunderbird ถูก.

b) ใน แถบ เมนู ของ หน้าต่าง Thunderbird หลัก คุณ จะ เห็น “Tools”. เลือก นี้ แล้ว “Add-ons ตัว เลือก”. นี้ จะ นำ ขึ้น หน้าต่าง ใหม่ รายการ ทั้งหมด plug-ins ของ Thunderbird. ใน มุม ล่าง ซ้าย มือ ของ หน้าต่าง ใหม่ นี้ คุณ จะ เห็น ปุ่ม เครื่องหมาย “Install”. คลิก ปุ่ม นี้. บอก Thunderbird ที่ คุณ บันทึก Enigmail. ไฟล์ XPI. และ เพียง กล่าว “ติด ตั้ง” นั่น มัน!

* เมื่อ ‘Enigmail’ ติด ตั้ง รี สตาร์ท Thunderbird. แล้ว คุณ จะ เห็น “OpenPGP แท็ บ” ใน เมนู หลัก ของ Thunderbird.

ขั้น ที่ 3] การ ตั้ง ค่า ส่วนตัว / คีย์ สาธารณะ ~

การ อ่าน รหัส Enigmail ใช้ คีย์ สาธารณะ เพื่อ ให้ ความ เป็น ส่วนตัว ระหว่าง คุณ และ คุณ correspondents. เพื่อ สร้าง สาธารณะ / คีย์ ส่วนตัว ที่ มี สอง วิธี ทั้ง สร้าง พวก เขา ด้วย ความ ช่วยเหลือ ของ “gpg” เครื่องมือ บรรทัด คำ สั่ง หรือ ใช้ enigmail “” ….

* เรา จะ สร้าง เอกชน / คีย์ Cryptographic ประชาชน ด้วย ความ ช่วยเหลือ ของ enigmail “” เป็น ที่ แสดง ด้าน ล่าง ….

a) คลิก ที่ “OpenPGP” ใน แถบ เมนู ของ หน้าต่าง หลัก Thunderbird. เลือก “Key Management”.
b) ใน Enigmail Key Manager ~ คลิก ที่ “สร้าง แท็ บ” ใน แถบ เมนู และ เลือก “New คีย์ คู่”.
c) ที่ มาก ด้าน บน ของ หน้าต่าง ที่ คุณ จะ เห็น กล่อง วง ดนตรี ผสม แสดง ทั้งหมด ที่ อยู่ อีเมล ของ คุณ. GnuPG จะ เชื่อม โยง คีย์ ใหม่ ด้วย ที่ อยู่ อีเมล.
Enigmail เป็น เพียง ขอ ให้ ท่าน ที่ อยู่ ที่ คุณ ต้องการ ใช้ สำหรับ คีย์ นี้. เลือก บัญชี ใด จะ ได้ รับ การ เข้ารหัส mail.

บันทึก ~ เรา สามารถ ใช้ คีย์ เดียวกัน หลาย บัญชี.

d) คุณ สามารถ ใช้ passphrase หรือ เพียง ตรวจ สอบ “passphrase No ช่อง” เพื่อ สร้าง คีย์ ไม่ passphrase.
e) จัด ทำ สมุด บันทึก “ยกเลิก ใบรับรอง” …

arunsb @ อรุณ: ~ $ mkdir / home / arunsb .gpg_key / /

f) คลิก ที่ “สร้าง ปุ่ม” สำคัญ ใน การ สร้าง คีย์. เสร็จ ..

เพื่อ คีย์ ร่วม กัน ได้ อย่าง ง่ายดาย คุณ สามารถ เผยแพร่ กุญแจ ของ คุณ กับ keyserver.

a) ใน “Key Management หน้าต่าง” เลือก กุญแจ ของ คุณ แล้ว คลิก ที่ แท็ บ ‘Keyserver ใน เมนู หลัก และ คลิก ที่ “อัพโหลด มหาชน คีย์”
หมายเหตุ ~ ตรวจ สอบ เพื่อ ตรวจ สอบ “แสดง ทุก คีย์ โดย เริ่ม ต้น ใน ช่อง” (ราย ชื่อ คีย์ ทั้งหมด)

ขั้น ที่ 4] เขียน mail และ ลง นาม ~

เขียน จดหมาย และ บอก Enigmail ลง ได้. ด้าน บน ของ หน้าต่าง เขียน จดหมาย ของ คุณ คุณ จะ เห็น การ อ่าน ปุ่ม “OpenPGP”. คลิก ที่ นี้. ตรวจ สอบ ว่า “ตัว เลือก เข้า สู่” และ เฉพาะ ที่ เป็น checked. สุดท้าย “ส่ง” จดหมาย! (คุณ จะ ขอ passphrase ของ คุณ. เมื่อ คุณ ใส่ มัน Enigmail จะ เข้า สู่ อีเมล ของ คุณ และ ส่ง หาก คุณ ได้ สร้าง คีย์ ด้วย passphrase อื่น จะ ไม่ ขอ)
/ pgp_enigmail-แต่ง

สนุก!!

ความ นับถือ,
Arun Bagul