VIM - Basic usage and commands
vim is the bestest editor ever. you must know commands to do it right. this is the commands that i use most times.
:w
write file to disk but don't quit
:q!
quit vim but don't write file to disk
:wq
write file to disk and quit
/
search for a word or search phrase in a file. example: to search for VirtualHost in an httpd.conf file, type: /VirtualHost
i
enter insert mode
a
enter insert mode after the current cursor position
r
replace the character under the cursor with a new character. example: if your cursor is on a 6 and you want to change the 6 to a 7, type: r7
This is useful for quickly incrementing the serial number in bind's lookup files.
d
deletes a character. To delete 9 characters, type: d9
to delete from the cursor position to the end of the line, type: d$
to delete an entire line and move everything subsequent line up one line, type: dd
to delete a word, type: dw
/
search for a word or search phrase in a file. example: to search for VirtualHost in an httpd.conf file, type: /VirtualHost
n
finds the next match
shift+n
finds the previous match
yy
copies the entire line
3yw
copies 3 words start from left of cursor
p
if a line was copied pastes below cursor
if a word was copied it pastes to the right of cursor
shift+p
if a line was copied pastes above cursor
if a word was copied pastes to the left of cursor
:s/dog/cat/
swithes the first word dog to cat on the line that the cursor is on
:s/dog/cat/g
all dog ->cat on current line
:%s/dog/cat/g
all dog ->cat in whole file
:!ls
executes a command (ls in this case)
:split someotherfile
if you want to do a lot of copying and pasting from one file to another you can open the second file
and then switch between them by hitting ctrl+w twice
Sunday, March 16, 2008
Installing MyDNS And The MyDNSConfig Control Panel On Fedora 8
In this tutorial I will describe how to install and configure MyDNS and MyDNSConfig on Fedora 8. MyDNS is a DNS server that uses a MySQL database as backend instead of configuration files like, for example, Bind or djbdns. The advantage is that MyDNS simply reads the records from the database, and it does not have to be restarted/reloaded when DNS records change or zones are created/edited/deleted. A secondary nameserver can be easily set up by installing a second instance of MyDNS that accesses the same database or, to be more redundant, uses the MySQL master / slave replication features to replicate the data to the secondary nameserver.
MyDNSConfig is an easy to use web-based interface to MyDNS. MyDNSConfig can create all types of DNS records that are available in MyDNS and adds features like user management and access privileges.
I do not issue any guarantee that this will work for you!
1 Preliminary Note
In this tutorial I use the hostname server1.example.com with the IP address 192.168.0.100. These settings might differ for you, so you have to replace them where appropriate.
2 Installing The Prerequisites
MyDNSConfig is a web-based interface to MyDNS written in PHP. This requires a webserver with PHP enabled and the MySQL database server. If you have already Apache, PHP and MySQL installed, you may skip this step. We also install phpMyAdmin here so that you have a web interface to the MySQL database in case you need it:
yum install httpd mysql-server php php-mysql php-mbstring phpMyAdmin
Start MySQL:
chkconfig --levels 235 mysqld on
/etc/init.d/mysqld start
Then set passwords for the MySQL root account:
mysqladmin -u root password yourrootsqlpassword
mysqladmin -h server1.example.com -u root password yourrootsqlpassword
Now we configure phpMyAdmin. We change the Apache configuration so that phpMyAdmin allows connections not just from localhost (by commenting out the
vi /etc/httpd/conf.d/phpMyAdmin.conf
# phpMyAdmin - Web based MySQL browser written in php
#
# Allows only localhost by default
#
# But allowing phpMyAdmin to anyone other than localhost should be considered
# dangerous unless properly secured by SSL
Alias /phpMyAdmin /usr/share/phpMyAdmin
#
# order deny,allow
# deny from all
# allow from 127.0.0.1
#
# This directory does not require access over HTTP - taken from the original
# phpMyAdmin upstream tarball
#
Order Deny,Allow
Deny from All
Allow from None
# This configuration prevents mod_security at phpMyAdmin directories from
# filtering SQL etc. This may break your mod_security implementation.
#
#
#
# SecFilterInheritance Off
#
Then we create the system startup links for Apache and start it:
chkconfig --levels 235 httpd on
/etc/init.d/httpd start
Now you can direct your browser to http://server1.example.com/phpMyAdmin/ or http://192.168.0.100/phpMyAdmin/ and log in with the user name root and your new root MySQL password.
3 Installing MyDNSConfig
Log in to MySQL and create the database:
mysql -u root -p
CREATE DATABASE mydns;
GRANT SELECT, INSERT, UPDATE, DELETE ON mydns.* TO 'mydns'@'localhost' IDENTIFIED BY 'mydnspassword';
GRANT SELECT, INSERT, UPDATE, DELETE ON mydns.* TO 'mydns'@'localhost.localdomain' IDENTIFIED BY 'mydnspassword';
FLUSH PRIVILEGES;
quit;
Replace the word mydnspassword in the above commands with a password of your choice.
Download MyDNSConfig:
cd /tmp
wget http://mesh.dl.sourceforge.net/sourceforge/mydnsconfig/MyDNSConfig-1.1.0.tar.gz
tar xvfz MyDNSConfig-1.1.0.tar.gz
cd MyDNSConfig-1.1.0
Install MyDNSConfig:
mkdir /usr/share/mydnsconfig
cp -rf interface/* /usr/share/mydnsconfig/
ln -s /usr/share/mydnsconfig/web/ /var/www/html/mydnsconfig
Install the MyDNSConfig MySQL Database:
mysql -u root -p mydns <>
The command above asks for a password, please enter the password of the MySQL root user.
Edit the MyDNSConfig configuration; please make sure you fill in the correct database settings:
vi /usr/share/mydnsconfig/lib/config.inc.php
/*
Copyright (c) 2005, Till Brehm, Falko Timme, projektfarm Gmbh
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of ISPConfig nor the names of its contributors
may be used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
ini_set('register_globals',0);
$conf["app_title"] = "MyDNSConfig";
$conf["app_version"] = "1.1.0";
$conf["rootpath"] = "/usr/share/mydnsconfig";
$conf["fs_div"] = "/"; // File system divider, \\ on windows and / on linux and unix
$conf["classpath"] = $conf["rootpath"].$conf["fs_div"]."lib".$conf["fs_div"]."classes";
$conf["temppath"] = $conf["rootpath"].$conf["fs_div"]."temp";
/*
Database Settings
*/
$conf["db_type"] = 'mysql';
$conf["db_host"] = 'localhost';
$conf["db_database"] = 'mydns';
$conf["db_user"] = 'mydns';
$conf["db_password"] = 'mydnspassword';
/*
External programs
*/
$conf["programs"]["wput"] = $conf["rootpath"]."/tools/wput/wput";
/*
Themes
*/
$conf["theme"] = 'grey';
$conf["html_content_encoding"] = 'text/html; charset=iso-8859-1';
$conf["logo"] = 'themes/default/images/mydnsconfig_logo.gif';
/*
Default Language
*/
$conf["language"] = 'en';
/*
Auto Load Modules
*/
$conf["start_db"] = true;
$conf["start_session"] = true;
/*
DNS Settings
*/
$conf["auto_create_ptr"] = 1; // Automatically create PTR records?
$conf["default_ns"] = 'ns1.example.com.'; // must be set if $conf['auto_create_ptr'] is 1. Don't forget the trailing dot!
$conf["default_mbox"] = 'admin.example.com.'; // Admin email address. Must be set if $conf['auto_create_ptr'] is 1. Replace "@" with ".". Don't forget the trailing dot!
$conf["default_ttl"] = 86400;
$conf["default_refresh"] = 28800;
$conf["default_retry"] = 7200;
$conf["default_expire"] = 604800;
$conf["default_minimum_ttl"] = 86400;
?>
#
Afterwards, remove the MyDNSConfig installer from the /tmp directory:
cd /tmp
rm -rf MyDNSConfig-1.1.0/
rm -f MyDNSConfig-1.1.0.tar.gz
Thursday, March 13, 2008
Install mysql-devel package in debian
When you install ISPconfig, it requires the library of mysql-devel, I have been looked many forum to get exactly the package name.
let's run command:
apt-get install libmysqlclient15-dev
Saturday, March 08, 2008
How To Set Up Mailman With Debian And ISPConfig
This short tutorial shows how you can set up Mailman with the ISPConfig devel version (> 2.3.3) on Debian Etch.
First of all you will have to install mailman:
apt-get install mailman
Then you can proceed with the ISPConfig Installation. Make sure to answer yes when asked about Mailman during the installation process:
Do you want to use Mailman together with ISPConfig? [y/n]
After your ISPConfig installation is finished, log in. Then go to Managment and in the left frame under Server choose the sub-menu Settings. In the main frame choose EMail and set the Mailman Domain as shown in the screenshot below.
All the mails for this domain will be handled by Mailman. So you should use a dedicated domain, list.mydomain.com is a good choice.
Now you should be ready to add a new Mailing List in ISP Manager -> Sites -> mydomain.com. Afterwards you should see Mailing Lists:Disk Based Backups With Amanda On Debian Etch
This document describes how to set up Amanda (The Advanced Maryland Automatic Network Disk Archiver) on Debian Etch. For this tutorial I chose Ubuntu v7.04 as a backup-client. The resulting system provides a flexible backup-system with many features. It will be able to back up multiple hosts via network to various devices. I chose the disk based backup for this howto.
This howto is meant as a practical guide; it does not cover the theoretical backgrounds. They are treated in a lot of other documents in the web.
This document comes without warranty of any kind! I want to say that this is not the only way of setting up such a system. There are many ways of achieving this goal but this is the way I take. I do not issue any guarantee that this will work for you!
1 Preparation
Set up a basic Debian system and a basic Ubuntu system - update both.
The Debian system will be the backup-host: server1.example.com.
The Ubuntu system will be the backup-client: server2.example.com.
2 Needed Packages On The Backup-Host
apt-get install amanda-server xinetd gawk gnuplot readline-common
3 Backup-Host Configuration
Note: I'm using the standard configuration DailySet1 in this howto.
3.1 Amanda.conf
We customize the amanda.conf for DailySet1 to our needs:
vi /etc/amanda/DailySet1/amanda.conf
Edit the following, existing lines, so that they look like this:
tapecycle 6 tapes
tapetype DISK
tpchanger "chg-disk"
changerfile "/etc/amanda/DailySet1/changer"
tapedev "file:/dumps/amandatapes/DailySet1"
Now add the tapetype definition for the virtual tapedevice. In this example I chose a size of 3GB for each virtual tape - resulting in a required space of 18GB for all six virtual tapes. Adjust it to your needs.
define tapetype DISK {
comment "Backup to HD"
length 3072 mbytes
} Next we have to add a dumptype where we define the settings for the backups. But of course you can use the existing dumptypes. Make sure that you use/create one with the entry program "GNUTAR". All possible settings are well commented in the amanda.conf.
define dumptype example {
global
comment "example dumptype"
compress client fast
program "GNUTAR"
strategy standard
priority high
}
3.2 Virtual Tapedevice
First we have to prepare a directory-tree for amanda where the backups will be stored temporarily (the holding disk):
mkdir -p /dumps/amanda
Now we have to create a directory for the virtual tapedevice:
mkdir -p /dumps/amandatapes/DailySet1
In the next step we have to create the directories for the virtual tapes. In this example we create six virtual tapes:
for i in 1 2 3 4 5 6; do mkdir /dumps/amandatapes/DailySet1/slot${i}; done
Create the info file:
touch /dumps/amandatapes/DailySet1/info
Time to initialize the tapedevice by inserting the first virtual tape into the tapedevice:
ln -s /dumps/amandatapes/DailySet1/slot1 /dumps/amandatapes/DailySet1/data
Now we have to pass the ownership to the amanda-user:
chown -R backup:backup /dumps/
Next we switch to the user backup:
su backup
Note: All amanda-commands, except amrestore, have to be executed as user backup.
Create the tapelist file:
touch /etc/amanda/DailySet1/tapelist
We have to label the virtual tapes to make them usable for amanda:
for i in 1 2 3 4 5 6; do /usr/sbin/amlabel DailySet1 DailySet1-${i} slot ${i}; done
3.3 The Disklist
The disklist brings all together. Here we define what has to be backed up from what server with which settings. A complete entry for a server consists of the fqdn, the path (e.g. /var) or device (e.g. sda1) that shall be backed up and the dumptype.
vi /etc/amanda/DailySet1/disklist
server2.example.com /home example
Note: Don't forget to add the backup-client to /etc/hosts if you are using this setup in a LAN without an own DNS.
3.4 Amandahosts
Finally we have to edit the amandahosts file:
vi /etc/amandahosts
server1.example.com backup
server1.example.com root
server2.example.com root
4 Needed Packages On the Backup-Client
sudo apt-get install amanda-client xinetd openssh-server
5 Amandahosts On The Backup-Client
Add the backup-host to the amandahosts file.
sudo vi /etc/amandahosts
server1.example.com backupNote: Don't forget to add the backup-host to /etc/hosts if you are using this setup in a LAN without an own DNS.
6 Scheduled Backups
Modify the existing crontab (crontab.amanda) in /etc/amanda on the backup-host to your needs.
7 Testing The Configuration On The Backup Host
/usr/sbin/amcheck DailySet1
should look like:
Amanda Tape Server Host Check
-----------------------------
Holding disk /dumps/amanda: 25063520 KB disk space available, using 24961120 KB
slot 1: read label `DailySet1-1', date `20070911'
NOTE: skipping tape-writable test
Tape DailySet1-1 label ok
Server check took 0.254 seconds
Amanda Backup Client Hosts Check
--------------------------------
Client check: 1 host checked in 0.354 seconds, 0 problems found
(brought to you by Amanda 2.5.1p1)
8 Manual Backup
For testing purposes or special reasons you can make a backup manually of course:
/usr/sbin/amdump DailySet1
Note: Depending on the size of the data this could take a while.
9 Restore Backups
Switch to a directory on the backup-host where you (temporarily) want to restore the backup file(s):
cd /tmp/
9.1 Select The Virtual Tape
Insert the virtual tape from which you want to restore the backup(s):
/usr/sbin/amtape $configuration slot $x
e.g.
/usr/sbin/amtape DailySet1 slot 1
9.2 Rewind The Virtual Tape
No joke, you have to rewind your HD. :)
/usr/sbin/ammt -t file:/dumps/amandatapes/$configuration rewind
e.g.
/usr/sbin/ammt -t file:/dumps/amandatapes/DailySet1 rewind
9.3 Restore Backup(s) From The Virtual Tape
To get all backups from the tape:
/usr/sbin/amrestore file:/dumps/amandatapes/$configuration
e.g.
/usr/sbin/amrestore file:/dumps/amandatapes/DailySet1
To get a single backup from the tape:
/usr/sbin/amrestore file:/dumps/amandatapes/$configuration $host $backed_path_or_device
e.g.
/usr/sbin/amrestore file:/dumps/amandatapes/DailySet1 server2.example.com '/home$'
or
/usr/sbin/amrestore file:/dumps/amandatapes/DailySet1 server2.example.com sda1
9.4 Transfer The Backup-File To The Client Host
I chose scp for this.
scp -C $backup_file $user@$backup-client:$destination_file
e.g.
scp -C server2.example.com._home.20070911.0 administrator@server2.example.com:/tmp/backup
9.5 Uncompress The Transfered Backup On The Client-Host
cd /tmp/
sudo tar xvf backup
How To Check If Your Server Is Infected With The Linux/Rst-B Backdoor (Debian Etch)
Linux Rst-B is a backdoor that can be used to add your server to botnets (see http://www.heise.de/newsticker/meldung/103563 (in German)). This short guide explains how you can install and use the Sophos Linux/RST-B detection tool to check your Debian Etch server and find out if it is infected with Linux Rst-B.
I do not issue any guarantee that this will work for you!
1 Download And Install The Sophos Linux/RST-B Detection Tool
I want to install the Linux/RST-B detection tool in the /usr/local/sbin directory (so that the detection tool is in our PATH later on):
cd /usr/local/sbin
wget http://www.sophos.com/support/cleaners/detection_tool.tar.gz
tar xvfz detection_tool.tar.gz
You should then find the contents of the tar.gz file in the /usr/local/sbin/detection_tool directory.
There are two ways of installing the detection tool: you can either use the pre-compiled binary that you can find in the /usr/local/sbin/detection_tool/pre-compiled directory, or you compile it yourself. I'll show both ways now.
1.1 Use The Pre-Compiled Binary
To use the pre-compiled binary, we can either simply create a symlink called rst_detection_tool from the /usr/local/sbin directory to detection_tool/pre-compiled/detection_tool:
cd /usr/local/sbin
ln -s detection_tool/pre-compiled/detection_tool rst_detection_tool
Or we move detection_tool/pre-compiled/detection_tool to /usr/local/sbin and rename it to rst_detection_tool:
cd /usr/local/sbin
mv detection_tool/pre-compiled/detection_tool rst_detection_tool
1.2 Build The Detection Tool From The Sources
To compile the detection tool from the sources, we first install the package build-essential:
apt-get install build-essential
Afterwards we build the detection tool as follows:
cd /usr/local/sbin/detection_tool
make
This creates the program /usr/local/sbin/detection_tool/detection_tool. I want to have it directly in the /usr/local/sbin directory and name it rst_detection_tool, so we can either create a symlink:
cd /usr/local/sbin
ln -s detection_tool/detection_tool rst_detection_tool
Or we move detection_tool/detection_tool to /usr/local/sbin and rename it to rst_detection_tool:
cd /usr/local/sbin
mv detection_tool/detection_tool rst_detection_tool
2 Use The Linux/RST-B Detection Tool
Now we can use the detection tool as follows:
Outside the /usr/local/sbin directory:
rst_detection_tool [-v]
Inside the /usr/local/sbin directory we must prepend ./:
./rst_detection_tool [-v]
So if you want to scan your whole file system, you'd simply use:
rst_detection_tool /
or
./rst_detection_tool /
if you are in /usr/local/sbin.
On a clean system the output looks as follows:
server2:/usr/local/sbin# ./rst_detection_tool /
Sophos Rst-B Detection Tool
---------------------------
Copyright (c) 2008 Sophos Plc. All rights reserved.
Scanned 43134 files, found 0 infections of Linux/Rst-B.
End of scan.
server2:/usr/local/sbin#
How To Configure Custom Postfix Bounce Messages
How To Configure Custom Postfix Bounce Messages
Version 1.0
Author: Falko Timme
Last edited 02/26/2008
Since Postfix version 2.3, Postfix supports custom bounce messages. This guide shows how to configure custom Postfix bounce messages.
I do not issue any guarantee that this will work for you!
1 Postfix Version
First you should find out about your Postfix version to make sure it supports custom bounce messages:
postconf -d | grep mail_version
server2:~# postconf -d | grep mail_version
mail_version = 2.3.8
milter_macro_v = $mail_name $mail_version
server2:~#
If your Postfix is 2.3 or newer, then you're good to go.
2 Set maximal_queue_lifetime And delay_warning_time
From http://www.postfix.org/postconf.5.html:
maximal_queue_lifetime: The maximal time a message is queued before it is sent back as undeliverable.
delay_warning_time: The time after which the sender receives the message headers of mail that is still queued.
The postconf -n command shows the settings that are currently configured in /etc/postfix/main.cf, whereas the postconf -d command shows the default settings that are valid unless something else is set in /etc/postfix/main.cf.
Monitoring Multiple Systems With munin (Debian Etch)
n this article I will describe how you can monitor multiple systems with munin. munin produces nifty little graphics about nearly every aspect of your server (load average, memory usage, CPU usage, MySQL throughput, eth0 traffic, etc.) without much configuration. I will install the munin client on all systems that are to be monitored (including the munin server itself); the munin clients will then report to the munin server.
This tutorial was written for Debian Etch, but the configuration should apply to other distributions with little changes as well.
I want to say first that this is not the only way of setting up such a system. There are many ways of achieving this goal but this is the way I take. I do not issue any guarantee that this will work for you!
2 Install And Configure munin On The Server
To install the munin client and server on Debian Etch, we do this:
apt-get install munin munin-node
Next, we must edit the munin configuration file /etc/munin/munin.conf. We want munin to put its output into the directory /var/www/www.example.com/web/monitoring, therefore we change the value of htmldir, and we want it to use the name server1.example.com instead of localhost.localdomain in the HTML output, therefore we replace localhost.localdomain with server1.example.com. With this configuration, the munin server is able to monitor itself. Without the comments, the changed file looks like this:
vi /etc/munin/munin.conf
dbdir /var/lib/munin |
Next we create the directory /var/www/www.example.com/web/monitoring and change its ownership to the user and group munin, otherwise munin cannot place its output in that directory. Then we restart munin:
mkdir -p /var/www/www.example.com/web/monitoring
chown munin:munin /var/www/www.example.com/web/monitoring
/etc/init.d/munin-node restart
Now wait a few minutes so that munin can produce its first output, and then go to http://www.example.com/monitoring/ in your browser, and you see the first statistics. After a few days this could look like this:
(This is just a small excerpt of the many graphics that munin produces...)
3 Password-Protect The munin Output Directory On The munin Server (Optional)
munin server (server1.example.com):
Now it is a good idea to password-protect the directory /var/www/www.example.com/web/monitoring unless you want everybody to be able to see every little statistic about your server.
To do this, we create an .htaccess file in /var/www/www.example.com/web/monitoring:
vi /var/www/www.example.com/web/monitoring/.htaccess
AuthType Basic |
Then we must create the password file /var/www/www.example.com/.htpasswd. We want to log in with the username admin, so we do this:
htpasswd -c /var/www/www.example.com/.htpasswd admin
Enter a password for admin, and you're done!
4 Install And Configure munin On The Client
munin client (server2.example.com):
On the client system, we only have to install the munin client package which is called munin-node:
apt-get install munin-node
Next we must tell the munin client that our munin server server1.example.com with the IP address 192.168.0.100 is allowed to connect to retrieve details from the client. To do this, we open /etc/munin/munin-node.conf and add the line allow ^192\.168\.0\.100$ at the bottom of it. Afterwards, the file should look like this:
vi /etc/munin/munin-node.conf
# |
Finally, we restart the munin client:
/etc/init.d/munin-node restart
5 Update The munin Server Configuration
munin server (server1.example.com):
Now we must tell the munin server that there's another system to monitor (server2.example.com with the IP address 192.168.0.101). To do this, we open /etc/munin/munin.conf and add a stanza for server2.example.com so that the file looks like this:
vi /etc/munin/munin.conf
dbdir /var/lib/munin |
Next, we restart munin:
/etc/init.d/munin-node restart
After a few minutes, you should find a link for server2.example.com on the munin page (http://www.example.com/monitoring/):
When you click on that link, you will see the graphs for server2.example.com.
Wednesday, March 05, 2008
Quên mật khẩu root của MySQL
First things first. Log in as root and stop the mysql daemon. Now lets start up the mysql daemon and skip the grant tables which store the passwords.
mysqld_safe --skip-grant-tables
You should see mysqld start up successfully. If not, well you have bigger issues. Now you should be able to connect to mysql without a password.
mysql --user=root mysql
update user set Password=PASSWORD('new-password');
flush privileges;
exit;
Now kill your running mysqld, then restart it normally. You should be good to go. Try not to forget your password again.
Saturday, March 01, 2008
SCRUM- Một phương pháp luận cho quy trình phát triển phần mềm.
SCRUM là một phương pháp luận để quản lý quá trình phát triển một sản phẩm từ khâu thiết kế đến khâu hoàn thiện. Scrum nhắm tới các trở ngại chung của các quy trình điển hình khác như
- Sự thay đổi yêu cầu người dùng: Trên thực tế hoặc trong quá trình làm việc hằng ngày, chúng ta nhận thấy yêu cầu của người dùng trong một dự án thay đổi thường xuyên và thậm chí thay đổi hoàn toàn trong quá trình phát triển từ khâu thiết kế đến khi kết thúc. Trong khi với hầu hết các quy trình khác thì tất cả thiết kế được hình thành từ ngay lúc đầu và không cho phép thay đổi khi yêu cầu thay đổi.
- Ước lượng thời gian, chi phí và chất lượng không thực tế: Người quản lý dự án và các developer thường có khuynh hướng đáng giá không đúng mức thời gian cũng như các tài nguyên cần thiết, và số lượng chức năng cần phải xây dựng với các ràng buộc của nó. Điều này không thể dự đoán chính xác ngay bước đầu tiên của dự án.
SCRUM đã thành công với hàng trăm công ty với các lĩnh vực khác nhau với nhiều kết quả đáng chú ý.
Có nhiều điểm tương đồng giữa SCRUM và XP, tuy nhiên sự khác biệt chính là SCRUM là tập các chỉ dẫn chung để quản lý một quy trình sản xuất một sản phẩm. Vì vậy nó thường được sử dụng như một wrapper của các phương pháp khác như XP hoặc CMM.
SCRUM có 3 pha chính
1. Planning: Trong pha này sẽ thiết kế dự án ở mức trừu tượng cao nhất
2. Chu trình