Wednesday, August 21, 2013

How to install bacula on centos6 step by step

Bacula is an open source, network backup software, used to allow the System Administrators to manage backup, recovery and send the verification of data’s from any systems in any location across the network.
Install Bacula
In this how-to i am using MySQL for database, you can use either PostgreSQL or MySQL. My Backup server hostname and IP Address are “server.unixmen.local” and “192.168.1.101/24″ respectively. Change the values as per your scenario. This how-to was tested on CentOS 6.5, although it should work with RHEL, Scientific Linux 6.x versions too.
First let us install Bacual and mysql server using command:
# yum install bacula-director-mysql bacula-console bacula-client bacula-storage-mysql mysql-server mysql-devel -y
Start MySQL service and create root password for mysql.
Note: In this tutorial, i am using password as “centos” wherever i need to setup password . Define your own.
# service mysqld start
# chkconfig mysqld on
# mysqladmin -u root password centos
Next run the following commands one by one to create database and necessary tables for Bacula. Here “-u root” means that login with root account and “-p” means prompt for mysql root password i.e “centos” in my case.
# /usr/libexec/bacula/grant_mysql_privileges -u root -p
# /usr/libexec/bacula/create_mysql_database -u root -p
# /usr/libexec/bacula/make_mysql_tables -u root -p
# /usr/libexec/bacula/grant_bacula_privileges -u root -p
Now set bacula user password on MySQL. To do that, log in to your MySQL server with command:
# mysql -u root -p
And set password as shown below:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 67
Server version: 5.5.35 MySQL Community Server (GPL) by Remi

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> UPDATE mysql.user SET password=PASSWORD("centos") WHERE user='bacula';
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2  Changed: 2  Warnings: 0

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql> exit
Bye
Now update all Bacula configuration files with new password and addresses as shown below.
Update Bacula Director
Edit file /etc/bacula/bacula-dir.conf,
# vi /etc/bacula/bacula-dir.conf
Update Bacula server hostname, bacula mysql user password, Bacula console password, Bacula file daemon password etc. Be mindful that you should use a fully qualified domain name for adding clients or simply use the IP address instead.
[...]
Director {                            # define myself
  Name = bacula-dir
  DIRport = 9101                # where we listen for UA connections
  QueryFile = "/usr/libexec/bacula/query.sql"
  WorkingDirectory = "/var/spool/bacula"
  PidDirectory = "/var/run"
  Maximum Concurrent Jobs = 1
  Password = "centos"         # Console password
  Messages = Daemon

[...]

# Client (File Services) to backup
Client {
  Name = bacula-fd
  Address = 192.168.1.101
  FDPort = 9102
  Catalog = MyCatalog
  Password = "centos"          # password for FileDaemon
  File Retention = 30 days            # 30 days
  Job Retention = 6 months            # six months
  AutoPrune = yes                     # Prune expired Jobs/Files
}

[...]
# Definition of file storage device
Storage {
  Name = File
# Do not use "localhost" here
  Address = 192.168.1.101                # N.B. Use a fully qualified name here
  SDPort = 9103
  Password = "centos"
  Device = FileStorage
  Media Type = File
}

[...]
# Generic catalog service
Catalog {
  Name = MyCatalog
# Uncomment the following line if you want the dbi driver
# dbdriver = "dbi:sqlite3"; dbaddress = 127.0.0.1; dbport =
  dbname = "bacula"; dbuser = "bacula"; dbpassword = "centos"
}

[...]

Console {
  Name = bacula-mon
  Password = "centos"
  CommandACL = status, .status
}
Update Bacula Console
Edit file /etc/bacula/bconsole.conf,
# vi /etc/bacula/bconsole.conf
Change the console password:
Director {
  Name = bacula-dir
  DIRport = 9101
  address = localhost
  Password = "centos"
}
Update Storage Daemon
Edit file /etc/bacula/bacula-sd.conf,
# vi /etc/bacula/bacula-sd.conf
Update the password, Find the red lines and delete them, do not uncomment them. Also set your Archive device path.
[...]
Director {
  Name = bacula-dir
  Password = "centos"
}

##Delete the following lines (Do not uncomment). As i installed centos minimal server, i don't have a GUI mode, so that i deleted the following section##

# Restricted Director, used by tray-monitor to get the
#   status of the storage daemon
#
Director {
  Name = bacula-mon
  Password = "@@MON_SD_PASSWORD@@"
  Monitor = yes
}

[...]

Device {
  Name = FileStorage
  Media Type = File
  Archive Device = /mybackup
  LabelMedia = yes;                   # lets Bacula label unlabeled media
  Random Access = Yes;
  AutomaticMount = yes;               # when device opened, read it
  RemovableMedia = no;
  AlwaysOpen = no;
}
[...]
Update file daemon
Edit file /etc/bacula/bacula-fd.conf,
# vi /etc/bacula/bacula-fd.conf
Update the password and delete the lines shown in red colour.
# List Directors who are permitted to contact this File daemon
#
Director {
Name = bacula-dir
Password = "centos"
}

##Delete (do not uncomment) these lines if you only using CUI mode in Backup server ##

# Restricted Director, used by tray-monitor to get the
#   status of the storage daemon
#
Director {
Name = bacula-mon
Password = "@@MON_SD_PASSWORD@@"
Monitor = yes
}
As i mentioned in the above configuration, my archive device path is “/mybackup”. So let me create a directory called “mybackup”.
# mkdir /mybackup
# chown bacula /mybackup
Now we finished all passwords and address modifications. Next restart all bacula daemons and make them to start automatically on every reboot.
# service bacula-dir start
# service bacula-fd start
# service bacula-sd start
# chkconfig bacula-dir on
# chkconfig bacula-fd on
# chkconfig bacula-sd on
Bacula has been successfully installed and configured. You can now add clients, jobs and volumes by updating the bacula config files. Alternatively you can use webmin to make the work more simple. It is quite easier then updating the config files manually.
Manage Bacula With Webmin
Webmin is a web-based interface for system administration for Unix. Using any modern web browser, you can setup user accounts, Apache, DNS, file sharing and much more.
# wget http://sourceforge.net/projects/webadmin/files/webmin/1.660/webmin-1.660-1.noarch.rpm
# rpm -Uvh webmin-1.660-1.noarch.rpm
# service webmin start
# chkconfig webmin on
Adjust Firewall/Router
If you want to access the bacula server through from a remote system, allow the webmin port “10000″ and bacula ports “9101″, “9102″, “9103″ through your firewall or router.
Edit file /etc/sysconfig/iptables,
# vi /etc/sysconfig/iptables
Add these following lines in your iptables config file.
[...]
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10000 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9101 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9102 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9103 -j ACCEPT
[...]
Restart iptables:
# service iptables restart
Access Webmin
Now you can login through webmin by “//http://server-ip-address:10000″ or “http://domain-name:10000/”.
Login to webmin using your root user and its password.
You will find the Bacula Backup System in the left pane of webmin console under System -> Bacula Backup System. If not is found there, try in the “unused modules” section.

Click on the “Bacula Backup System” link. Initially the Bacula server won’t start automatically. To start Bacula server click on “Module Configuration” link on the right of the “Bacula Backup System” page.
Select the database i.e “MySQL” in this case and enter the bacula database user password. Then click save.

Now you will get the window like shown below.
That’s it. From here you can add Backup clients, Volumes and schedule jobs etc.




Tuesday, August 20, 2013

install RHEL EPEL repository on Centos 5.x or 6.x

The following article will describe how to configure a CentOS 5.x-based or Centos 6.x-based system to use Fedora Epel repos and third party remi package repos. These package repositories are not officially supported by CentOS, but they provide much more current versions of popular applications like PHP or MYSQL.

Install the extra repositories

The first step requires downloading some RPM files that contain the additional YUM repository definitions. The instructions below point to the 64-bit versions that work with our Cloud Server instances.

Centos 5.x

wget http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
sudo rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm

Centos 6.x

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
sudo rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm
Once installed you should see some additional repo definitions under the /etc/yum.repos.d directory.
$ ls -1 /etc/yum.repos.d/epel* /etc/yum.repos.d/remi.repo
/etc/yum.repos.d/epel.repo
/etc/yum.repos.d/epel-testing.repo
/etc/yum.repos.d/remi.repo

Enable the remi repository

The remi repository provides a variety of up-to-date packages that are useful or are a requirement for many popular web-based services. That means it generally is not a bad idea to enable the remi repositories by default.
First, open the /etc/yum.repos.d/remi.repo repository file using a text editor of your choice:
sudo vim /etc/yum.repos.d/remi.repo
Edit the [remi] portion of the file so that the enabled option is set to 1. This will enable the remi repository.
name=Les RPM de remi pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
failovermethod=priority
You will now have a larger array of yum repositories from which to install.

Sunday, August 18, 2013

Configure linux dns server step by step guide (Master Slave DNS Server)

The DNS ( Domain Name System ) is a distributed system, used for transalate domain names to IP and vice a versa. This article will help you to How to Setup Master Slave DNS Server on CentOS 6 and RHEL Systems.
Network Scenario for this Setup:
  • Master DNS Server IP: 10.3.150.14 ( ns1.linuxadmin.net )
  • Slave DNS Server IP: 10.3.150.15 ( ns2.linuxadmin.net )
  • Domain Name : demolinuxadmin.net ( For Testing Purpose )
  • Domain IP : 10.3.150.16 ( For Testing Purpose )
Step 1: Install Required RPMS ( at Master and Slave Both )
Install bind packages at both Master and Slave dns servers using following commands.
# yum install bind bind-chroot
Step 2: Setup Master (NS1) DNS Server
There are two types of configuration files in DNS.
  • One is main dns configuration files named “named.conf”
  • Another type of configuration file are called zone file. Which is individually created for all domains. named.conf keeps an entry for all zone files.
2.1 Configure named.conf using below configuration
# vim /var/named/chroot/etc/named.conf
Content of named.conf:
// /var/named/chroot/etc/named.conf
options {
listen-on port 53 { 127.0.0.1; 192.168.1.0/24; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; 192.168.1.0/24; };
recursion yes;

dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;

/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";

managed-keys-directory "/var/named/dynamic";
};

logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};

zone "." IN {
type hint;
file "named.ca";
};

zone "demolinuxadmin.net" IN {
type master;
file "/var/named/demolinuxadmin.net.db";
allow-update { none; };
};

include "/etc/named.rfc1912.zones";
2.2 Create a zone file for you domain “demolinuxadmin.net”
# vim /var/named/chroot/var/named/demolinuxadmin.net.db
Content of zone file:
; Zone file for demolinuxadmin.net
$TTL 14400
@ 86400 IN SOA ns1.linuxadmin.net. webmaster.linuxadmin.net. (
3215040200 ; serial, todays date+todays
86400 ; refresh, seconds
7200 ; retry, seconds
3600000 ; expire, seconds
86400 ) ; minimum, seconds

demolinuxadmin.net. 86400 IN NS ns1.linuxadmin.net.
demolinuxadmin.net. 86400 IN NS ns2.linuxadmin.net.
demolinuxadmin.net. IN A 10.3.150.16
demolinuxadmin.net. IN MX 0 demolinuxadmin.net.
mail IN CNAME demolinuxadmin.net.
www IN CNAME demolinuxadmin.net.
2.3 Add more domains in dns server.
To add more domains in dns, create zone files individually for all domain as above. After that add any entry for all zones in named.conf like below. Change demolinuxadmin.net with your domain name.
zone "demolinuxadmin.net" IN {
type master;
file "/var/named/demolinuxadmin.net.db";
allow-update { none; };
};
Step 2.4: Start named service .
Start named (bind) service using following command and setup auto start on system boot.
# /etc/init.d/named restart
# chkconfig named on
Step 3: Setup Slave (NS2) DNS Server
At slave dns server you need to update named.conf file only. All zone files will automatically synced from master dns server. Any changes done on Master will reflect on slave after a specified time interval.
3.1 Configure named.conf using below configuration
# vim /var/named/chroot/etc/named.conf
Content of named.conf:
// /var/named/chroot/etc/named.conf
options {
listen-on port 53 { 127.0.0.1; 192.168.1.0/24; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; 192.168.1.0/24; };
recursion yes;

dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;

/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";

managed-keys-directory "/var/named/dynamic";
};

logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};

zone "." IN {
type hint;
file "named.ca";
};

zone "demolinuxadmin.net" IN {
type slave;
file "slaves/demolinuxadmin.net.db";
masters { 10.3.150.14; };
};

include "/etc/named.rfc1912.zones";
Step 3.2: Start named Service
Start named (bind) service using below command.
# /etc/init.d/named restart
# chkconfig named on
After restarting named service, Check zone files on slave dns server at /var/named/chroot/var/named/slaves/.
Step 4: Finally Test Your DNS Setup.
Query to your Master and Slave DNS Server directly using following commands, You will get the same resonse from both servers.
Syntax: nslookup <domainname.com> <dns server name/ip>
Query to Master DNS Server:
# nslookup demolinuxadmin.net 10.3.150.14

Server: 10.3.150.14
Address: 10.3.150.14#53

Name: demolinuxadmin.net
Address: 10.3.150.16
Query to Slave DNS Server:
# nslookup demolinuxadmin.net 10.3.150.15

Server: 10.3.150.15
Address: 10.3.150.15#53

Name: demolinuxadmin.net
Address: 10.3.150.16
Above outputs is showing that dns server has successfully resolved domain demolinuxadmin.net from master and slave dns servers.

Configration of SVN Server on CentOS/RHEL 5/6, Fedora (Subversion)


Subversion (SVN) is an open source version control system. It helps you keep track of a collection of files and folders. Any time you change, add or delete a file or folder that you manage with Subversion, you commit these changes to your Subversion repository, which creates a new revision in your repository reflecting these changes. You can always go back, look at and get the contents of previous revisions.
This article will help you for step by step installing SVN server.
Step 1: Install Apache/PHP Packages
You need to install apache web server to access svn server using http urls.
# yum install httpd php php-devel php-cli php-pear
Start Apache web server and setup to auto start on system boot
# service httpd restart
# chkconfig httpd on
Step 2: Install Subversion Using Yum
Use following command to install subversion and mod_dav_svn packages.
# yum install mod_dav_svn subversion
Step 3: Configure Subversion with Apache
Subversion creates an apache configuration file, we just need to make necessary changes to it.
# vim /etc/httpd/conf.d/subversion.conf
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

<Location /svn>
DAV svn
SVNParentPath /var/www/svn
AuthType Basic
AuthName "Subversion User Authentication "
AuthUserFile /etc/svn-users
Require valid-user
</Location>
Step 4: Create First SVN Repository
Use following command to create your fist svn repository.
# cd /var/www/svn
# svnadmin create svnrepo
# chown -R apache.apache svnrepo
Step 5: Add SVN Users
Following commands will add two users for svn. It will prompt for users password to be assigned.
# htpasswd -cm /etc/svn-users user1
# htpasswd -m /etc/svn-users user2
Step 6: Access Your Repository in Browser
Use http urls to access your repository in browser. It will prompt for authentication. Use login credentials created in Step 5.
http://svn.linuxadmin.in/svn/svnrepo/

enter user name and password in brower.
Step 5: Adding Files to Your Repository
This step is for testing that repository is working properly. Use following commands to add few files to your svn repository.
# svn co http://svn.linuxadmin.in/svn/svnrepo/
# cd svnrepo
# touch file1.txt file2.txt
# svn add file1.txt file2.txt
# svn ci file1.txt file2.txt -m "initial commit"
Again checkhttp://svn.linuxadmin.in/svn/svnrepo/ url in browser. You will see your new files there.