Wednesday, 26 July 2017

Wildfly getting started

Introduction

Wildfly is an application server authored by Red Hat. It is written in Java, and implements the Java Platform, Enterprise Edition (Java EE) specification. It runs on multiple platforms.
Wildfly versions earlier than 8.0.0 are available under the name of JBoss Application Server. Indeed in November 2014, JBoss Application Server was renamed WildFly.
WildFly is free and open-source software, subject to the requirements of the GNU Lesser General Public License (LGPL), version 2.1.

Installing Wildfly

In this page you can download all wildfly versions. Unzip (or untar) in a folder (that show you how to WILDFLY_HOME). Wildfly requires the Java SE 8 or later.  Now add in $WILDFLY_HOME/bin/standalone.conf your java settings, for example:
 export JAVA_HOME=/opt/jdk/1.8.0_91
 export PATH=$PATH:$JAVA_HOME/bin
 export CLASSPATH=$JAVA_HOME/lib 
So now you can starting your wildfly
 cd $WILDFLY_FOLDER/bin
 ./standalone.sh
if you want the wildfly process in background and active after your logut from the server so use the following command:
 nohup $WILDFLY_HOME/bin/standalone.sh > $WILDFLY_HOME/standalone/log/nohup.out &
Finally for stop you can kill the java process.

Wildfly Configuration

Memory Configuration

If the wildfly shows the following error during starting:
 Unrecognized VM option 'MetaspaceSize=96M'
 Could not create the Java virtual machine.
so it's needs an update of memory size, in $WILDFLY_HOME/bin/standalone.conf the default memory size is:
JAVA_OPTS="-Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true"
you increase the memory according your needs, for example:
 JAVA_OPTS="-Xms2048m -Xmx2048m -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=512m -Djava.net.preferIPv4Stack=true" 

Enable the remote Access

The Wildfly default configuration in $WILDFLY_HOME/standalone/configuration/standalone.xml file about the interfaces is the following:
<interfaces>
        <interface name="management">
            <inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
        </interface>
        <interface name="public">
            <inet-address value="${jboss.bind.address:127.0.0.1}"/>
        </interface>
</interfaces>
If you want provides the remote access of your Wildfly you need the following replace the configuration in standalone.xml as below:
<interfaces> 
        <interface name="management">
            <inet-address value="${jboss.bind.address.management:0.0.0.0}"/>
        </interface>
        <interface name="public">
            <inet-address value="${jboss.bind.address:0.0.0.0}"/>
        </interface>
        <interface name="unsecure">
            <inet-address value="${jboss.bind.address.unsecure:0.0.0.0}"/>
        </interface>
</interfaces>
After the Wildfly restart, it will be accessible from remote hosts.

Oracle Data Source 

Follow the steps below to install the oracle data source:

  1. Download the ojdbc driver from Oracle. 
  2. Create a subfolder $WILDFLY_HOME/modules/system/layers/base/com/oracle/db/main.
  3. Copy the driver (downloaded in step 1) in folder created in step 2.
  4. Always in this folder, create a file with name module.xml. 
  5. Edit module.xml as the example below. Note: replace <version> according the driver downloaded in step 1.
  6. <?xml version="1.0" encoding="UTF-8"?>
    <module xmlns="urn:jboss:module:1.1" name="com.oracle.db">
        <resources>
            <resource-root path="ojdbc<version>.jar"/>
            <!-- Insert resources here -->
        </resources>
        <dependencies>
            <module name="javax.api"/>
            <module  name="javax.transaction.api"/>
        </dependencies>
    </module>
  7. Add the oracle driver editing $WILDFLY_HOME/standalone/configuration/standalone.xml, xml tag with name <drivers>. 
  8. <driver name="oracle" module="com.oracle.db">
            <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
    </driver>
  9. Always in this file, add the datasource in <datasources>. Replace the highlighted params: 
  10. <datasource jndi-name="java:/[name]" pool-name="[pool-name]" enabled="true" use-java-context="true">
         <connection-url>jdbc:oracle:thin:@[hostname]:1521:[sid]</connection-url>
         <driver>oracle</driver>
         <security>
              <user-name>[your_user]</user-name>
              <password>[password]</password>
         </security>
    </datasource>
    Always in this file, add in <subsystem xmlns="urn:jboss:domain:ee:4.0">
    <global-modules>
         <module name="com.oracle.db" slot="main"/>
    </global-modules>

Enable the CXF logger

Add in $WILDFLY_HOME/standalone/configuration/standalone.xml file (in system-properties xml tag, if the tag is not exist, you can add it as child node of server xml tag) the following system property:
 <system-properties>  
  ....  
  <property name="org.apache.cxf.logging.enabled" value="true"/>  
  ....  
 </system-properties>  
Alternatively you can use the following setting value="pretty" for nicely formatted xml output.
 <system-properties>  
  ....  
  <property name="org.apache.cxf.logging.enabled" value="pretty"/>  
  ....  
 </system-properties>  
Also in this case it is necessary to restart.

GZip


gzip (GNU zip) is a compression utility designed to be a replacement for compress. To improve the performance of a web application you can take advantage of gzip to compress web contents as js, css, etc ...
Add in $WILDFLY_HOME/standalone/configuration/standalone.xml file (in system-properties xml tag, if the tag is not exist, you can add it as child node of server xml tag)  the following system properties:

<system-properties>
        .......
        <property name="org.apache.coyote.http11.Http11Protocol.COMPRESSION" value="on"/>
        <property name="org.apache.coyote.http11.Http11Protocol.COMPRESSION_MIME_TYPES" value="text/javascript,text/css,text/html"/>
        .......
</system-properties>

Deployment Scanner configuration

The deployment scanner is only used in standalone mode. To enable the hot deploy the deployment-scanner subsystem must be to set the auto-deploy-exploded to "true" in $WILDFLY_HOME/standalone/configuration/standalone.xml.

<subsystem xmlns="urn:jboss:domain:deployment-scanner:1.0">
    <deployment-scanner 
        scan-interval="5000"
        relative-to="jboss.server.base.dir" 
        path="deployments"
        auto-deploy-exploded="true" />
</subsystem>
Now copy the package (war, ear, rar, etc..) in $WILDFLY_HOME/standalone/deployments folder and create an empty file with <package_name>.dodeploy:
 cp my-app.war $WILDFLY_HOME/standalone/deployments
 touch my-app.war.dodeploy
When the deployment is done with success,  Wildfly will automatically create the following file:
 my-app.war.deployed

Instead for undeploy, remove the file with suffix ".deployed" and create the file with suffix .skipdeploy, if we want undeploy the package of previus example:

 rm my-app.war.deployed
 touch my-app.war.skipdeploy
When the undeployment is done with success, Wildfly will automatically create the following file:
 my-app.war.undeployed
For previous versions with name JBoss, the undeploy is different. Indeed, you mast create a file with suffix .undeploy. Example:
 rm my-app.war.deployed
touch my-app.war.undeploy
When the undeployment is done with success,  JBoss AS will automatically create the following file:
 my-app.war.undeployed

External Links

Friday, 21 July 2017

Bash commands about Hardaware and Network

Bash is a Unix shell and command language written by Brian Fox for the GNU Project as a free software replacement for the Bourne shell. Bash is a command processor that typically runs in a text window, where the user types commands that cause actions. Bash can also read and execute commands from a file, called a script.

Bash commands about Hardware information

Like for every thing, there are plenty of commands to check information about the hardware of your linux system. The following commands are just a subset of it.

lscpu

The lscpu command reports information about the cpu and processing units.
$ lscpu

lshw

The lshw command reports detailed and brief information about multiple different hardware units such as cpu, memory, disk, usb controllers, network adapters etc...
$ lshw
With -short as option you can display a short report.
$ lshw -short

hwinfo

The hwinfo command is another general purpose hardware probing utility that can report information about multiple different hardware components.
$ hwinfo
With --short as option you can display a short report.
$ hwinfo --short

lsusb

The lsusb command shows the USB controllers and details about devices connected to them.
$ lsusb
Use the verbose option (-v) to print detailed information about each usb port 
$ lsusb -v

lsblk

The lsblk command shows the list out information all block devices, which are the hard drive partitions and other storage devices like optical drives and flash drives.
$ lsblk

df

The df command show a report of various partitions, their mount points and the used and available space on each.
$ df
I suggest to use -h (--human-readable) as option for a better report structure.
$ df -h

fdisk

The fdisk command is a utility to modify partitions on hard drives, and can be used to list out the partition information as well. Use -l as option to show the list. This command required "sudo".
$ sudo fdisk -l

mount

The mount command is used to mount/unmount and view mounted file systems. To view the result in table use the following command:
$ mount | column -t

free (Check RAM)

The command free shows the amount of used, free and total amount of RAM on system.
$ free
Use the options -m or -g to print the results in mega or giga.
$ free -m
$ free -g
If you want see the size of physical RAM allocated your system, so use this command:
$ grep MemTotal /proc/meminfo | awk '{print $2}'

Bash commands about Network

The network commands paragraph collects various tools which can be useful when networking with other computers both within the network and accross the internet, obtaining more information about other computers.

netstat

The netstat command displays contents of /proc/net files. It works with the Linux Network Subsystem, it will tell you what the status of ports are ie. open, closed, waiting, masquerade connections. It will also display various other things. It has many different options. For example you want check the status of  port '8080'. 
$ netstat -an | grep 8080

tcpkill

The tcpkill command kills a connection on a specific port. Example: if you want kill the connection with the port 8080 use the following command:
$ tcpkill -i eth0 port 8080

tcpdump

The tcpdump command is a sniffer, a program that captures packets off a network interface and interprets them for you. It understands all basic internet protocols, and can be used to save entire packets for later inspection. This command required "sudo".
$ sudo tcpdump

ping

The ping command sends echo requests to the host you specify on the command line, and lists the responses received their round trip time.
$ ping myhostname

hostname

The hostname command tells the user the host name of the computer they are logged into.
$ hostname

traceroute

The traceroute command shows the route of a packet. It attempts to list the series of hosts through which your packets travel on their way to a given destination. Also have a look at xtraceroute (one of several graphical equivalents of this program).
$ traceroute <ip>

ifconfig

The ifconfig command is used to configure network interfaces, or to display their current configuration. Use only the command withoud parameters to show the configuration.
$ ifconfig

route

The route command is the tool used to display or modify the routing table. To add a gateway as the default you would type:

$ route add default gw some_server

Internal Links

May be of interest to you:

External Links:

Monday, 17 July 2017

Apache Subversion - Principal concepts and her Architecture

Apache Subversion is an open source version control system. Founded in 2000 and Its development is still ongoing in fact the latest releases (1.8.18 and 1.9.6) were delivered in July (current year).

Principal concepts of Subversion

A best practice of Subversion expects to manage the source code using three main directories: trunk, branches and tags.
  • The "trunk" would be the main body of development, originating from the start of the project until the present.
  • The "branches" directory contains all branches. A branch will be a copy of code derived from a certain point in the trunk that is used for applying major changes to the code while preserving the integrity of the code in the trunk. If the major changes work according to plan, they are usually merged back into the trunk.
  • The "tags" directory, as branches, contains all tags. A tag will be a point in time on the trunk or a branch that you wish to preserve. The two main reasons for preservation would be that either this is a major release of the software, whether alpha, beta, RC or RTM, or this is the most stable point of the software before major revisions on the trunk were applied.

Branch and tag management

A branch or a tag can be created with svn copy command.  A tag is just a snapshot of a project in time. Create a new tag when a software is deliverd represent a best practice. Instead a branch can have one of the following purposes:
  • feature branch: This type of branch is usually created from the trunk or an other branch. The goal of the usage a feature branch is that to develop a new feature but at the risk of instability during the development, then the use of this branch is useful to maintain a stable trunk or branch where the feature branch was created.
  • maintenance branch: this type of branch is usally created from a tag so because the development of this branch starts from a stable point (best practice). The scope is the bug fixing or the development of a precise subset of features. 
A merge operation is to bring changes from a branch to another branch (or trunk). A feature branch is always merged in starting code line (branch or trunk). Instead about the maintenance branch, almost always it is merged on the trunk, the vice versa depends on the cases.
The following picture shows an example of what is described now:
Branch and Tag management

Subversion Architecture

The Subversion Architecture is modular in fact it is composed of more software modules. The pricipal modules are:
  • The CLI (command line client app) and UI Clients (as tortoisesvn) are the clients where an user (as a developer, devOps, etc...) interacts with Subversion system.
  • Client Library provides the interfaces used by clients.
  • Working Copy Management Library collects and manages all features about the interactions between local copies and central repository.
  • Repository Acces (RA): between Client Library and repository  are multiple routes through a RA layer, some of which go across computer networks and through network servers which then access the repository, others of which bypass the network altogether and access the repository directly.
  • Apache HTTP Server: It contains a plug-in module, used to make your repository available to others over a network.
  • svnserveA custom standalone server program, runnable as a daemon process or invokable by SSH; another way to make your repository available to others over a networ.
  • Subversion RepositoryBerkeley DB and FSFS are used to storage systems. 
The following diagram illustrates an overview of Subversion architecture.
Subversion's Architecture

External Links

  1. Apache Subversion - Official Page

Thursday, 13 July 2017

Getting started java project with maven

To begin a development of  java project managed with maven, you need two mandatory requirement: the Java Development Kit (JDK) and Apache Maven tool both installed. An onother optional requirement but I think it indispensable the usage of an Integrated Development Environment (IDE) tool as Eclipse. 

Installing JDK

If you don't already installed the JDK than you can install the Oracle JDK available in this web page

Installing Apache Maven

You can refer the official guide available in this web page. If you use an ubuntu OS as the virtual machine created in previous post than you can install the latest maven version using the following commands:
To get all the available Maven package.
$ apt-cache search maven
To install the latest Maven version.
$ sudo apt-get install maven
Check post installation.
$ mvn -v
If the installation is completed with success the output will be similary as:
Apache Maven 3.3.9
Maven home: /usr/share/maven
Java version: 1.8.0_73, vendor: Oracle Corporation
Java home: /home/user/jdk1.8.0_73/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.8.0-58-generic", arch: "amd64", family: "unix"

Create project by maven archetype

A maven archetype is a Maven project templating toolkit and it helps create Maven project templates for developers, and provides they with the means to generate parameterized versions of those project templates. You can use a simple maven archetype to create a new java project using a single maven command. 
Example:
$ mvn archetype:generate -DgroupId=com.blogspot.informationtechnologyarchive \
-DartifactId=first-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
....
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.0
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: basedir, Value: /home/user/workspace
[INFO] Parameter: package, Value: com.blogspot.informationtechnologyarchive
[INFO] Parameter: groupId, Value: com.blogspot.informationtechnologyarchive
[INFO] Parameter: artifactId, Value: first-app
[INFO] Parameter: packageName, Value: com.blogspot.informationtechnologyarchive
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] project created from Old (1.x) Archetype in dir: /home/user/workspace/first-app
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 15.438 s
[INFO] Finished at: 2017-**********
[INFO] Final Memory: 19M/90M
[INFO] ------------------------------------------------------------------------
If you use a Linux OS you can perform the "tree command" in first-app directory the output will be:
.
├── pom.xml
└── src
    ├── main
    │   └── java
    │       └── com
    │           └── blogspot
    │               └── informationtechnologyarchive
    │                   └── App.java
    └── test
        └── java
            └── com
                └── blogspot
                    └── informationtechnologyarchive
                        └── AppTest.java

11 directories, 3 files
Now to create an executable jar you use the maven command shown below. Maven will create a target directory with the jar called first-app-1.0-SNAPSHOT.jar.
$ mvn package
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ my-app ---
[INFO] Building jar: /home/user/workspace/first-app/target/first-app-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.299 s
[INFO] Finished at: 2017-******
[INFO] Final Memory: 10M/167M
[INFO] ------------------------------------------------------------------------ 
Finally you can run your jar:
$ java -cp target/first-app-1.0-SNAPSHOT.jar com.blogspot.informationtechnologyarchive.App
The output in this case will be:
 Hello World!

Principal maven goals

To start execute the following command to compile your application sources:
$ mvn compile
The first time maven will need to download all the plugins and related dependencies it needs to fulfill the command. If you execute the command again, Maven will now have what it needs, so it won't need to download anything new and will be able to execute the command much more quickly.
After the successfully compiling now you want to compile and execute some unit tests:
$ mvn test
Maven downloads more dependencies this time. These are the dependencies and plugins necessary for executing the tests. Before compiling and executing the tests Maven compiles the main code. If you want only compile the unit tests:
$ mvn test-compile
Making a JAR:
$ mvn package
Maven creates only jar in target folder.
Now you'll want to install the artifact you've generated (the JAR file) in your local repository (${user.home}/.m2/repository is the default location):
$ mvn install
To remove the target directory with all the build data before starting so that it is fresh:
$ mvn clean
You can concatenate more maven goals, for example:
$ mvn clean install
If you use eclipse IDE, use the following command before importing the maven project:
$ mvn eclipse:eclipse
Similarly if you use IDEA:
$ mvn idea:idea

Eclipse IDE 

Installing Eclipse IDE

All Eclipse versions are available in this web page. I used Eclipse Neon in this post but you can use any version of eclipse for java. 
Eclipse Neon

Eclipse Maven Plugin

All commands such as those shown in the previous paragraph can be executed in eclipse through its plugin. This eclipse plugin is installed in all eclipse distributions for java. 
The use is quite intuitive: select your project, right button, select "Run As" -> "Run Configurations...." as shown in screenshot below.
Eclipse Run Configuration Item.
When the "Run Configuration" windows is loaded, you can configure your maven goal, you can see the following screenshot as example of "mvn clean install".
Maven clean install configuration.

Internal Links

May be of interest to you:

External Links

  1. Oracle JDK download page
  2. Installing Apache maven - official page
  3. Eclipse Download - official page

Wednesday, 12 July 2017

Tutorial - Create virtual machine with VirtualBox

Introduction to Virtual Machines

A virtual machine is an operating system that is installed on software, which imitates dedicated hardware. The end user has the same experience on a virtual machine as they would have on dedicated hardware. 
There are more tools to create and execute a virtual machine as: Oracle VirtualBox and VMware. 

Oracle VirtualBox overview

Oracle VirtualBox is a general-purpose full virtualizer for x86 hardware, targeted at server, desktop and embedded use. It is also the only professional solution that is freely available as Open Source Software under the terms of the GNU General Public License (GPL) version 2.   
It runs on Windows, Linux, Macintosh, and Solaris hosts.
VirtualBox is being actively developed with frequent releases and has an ever growing list of features, supported guest operating systems and platforms it runs on. 

Create a first Virtual Machine with VirtualBox

Goal of tutorial

To create a new virtual machine in Oracle VirtualBox. The operating system (OS) where running VirtualBox is Windows 7 and the OS of new virtual machine will be Ubuntu 16.10.

Prerequisites

  • Oracle VirtualBox already installed [1];
  • Daemon Tools Lite already installed [2];
  • Download of Ubuntu iso v16.10 [3].

Instruction Guide

Start VirtualBox and click on "New" button. A new windows will be open so add the Name, the type and the version, in this case as shows the screenshot:
Create Virtual Machine - select operating system
Click on Next. In next windows you can setting the memory size, for example, you can setting 4GB of RAM
Create Virtual Machine - select memory size
After the RAM, the next settings are about the Hard disk:
Create Virtual Machine - select hard disk type
Create Virtual Machine - select storage type


Create Virtual Machine - select file location and size
Now the VM is setted in VirtualBox:
Created Ubuntu Virtual Machine 
Before the start of VM, you must mount the OS image with Daemon Tools Lite and then click on "Start" button from VirtualBox. 
Instead you can install the OS as physical machine. After the installation the image is no longer necessary.
Your Ubuntu virtual machine is ready for use.

Internal Links

May be of interest to you:

External Links

  1. Oracle VirtualBox: www.virtualbox.org
  2. Daemon Tools:  www.daemon-tools.cc
  3. Download Ubuntu: www.ubuntu.com

Tuesday, 11 July 2017

Environment variables in Windows

Overview

The environment variables are a set of dynamic values used during the running processes. They are introduced in first time in Linux OS but they are used in Windows OSs since 30 and more years old.
The following reading explains how to manage the environment variables either through the User Interface or through the prompt.

Manage the environment variables via User Interface

As a first step you open the "System Properties" windows but there are some differences depending on the operating system version, in detail the change takes place between Windows 7 and Windows 8. 
In Windows 8 and Windows 10:
  • From the Desktop, right-click the very bottom left corner of the screen to get the Power User Task Menu.
  • From the Power User Task Menu, click System.
In Windows 2000, Windows XP, Windows Vista and Windows 7
  • From the Desktop, right-click the Computer icon and select Properties. If you don't have a Computer icon on your desktop, click the Start button, right-click the Computer option in the Start menu, and select Properties.
Click the Advanced System Settings link in the left column (valid for all operation system versions).



Then click the Environment Variables button near the bottom of that tab. The windows below manages (add, edit and delete) the "User Variables" and the "System Variables".

Example 1

If you want add a new system variable then click on "New...." button under System variables (as shows the picture):
After the click, will be showed the following window:
You can put the name and the value of new System Variable. Finally click on "OK" button. The System Variable is created.

Example 2

If you want edit an user variable, for example "TEMP" then select it and  click on "Edit..." button under User Variables (as shows the picture):

After the click, will be showed the following window: 
Edit the value and click on "OK" button. 

Manage the environment variables via Prompt

The environment variables in Windows are denoted with percent signs (%) surrounding the name:
 %VAR%
The echo of a variable you can use the commands as below:
 set %VAR%
or
 echo %VAR%
To create or edit a variable, you can use:
 set VAR=value
To append a value to a variable already created:
 set APPEND=value2
 set VAR=%VAR%;%APPEND%
 echo %VAR%
 value;value2
Environment variables set in this way are available for (the rest of) the duration of the Command Prompt process in which they are set, and are available to processes that are started after the variables were set. After the closed of Command Prompt the variables are not present.

Manage permanently  the environment variables

The setx command prompt [1] creates or modifies environment variables in the user or system environment, without requiring programming or scripting. The Setx command also retrieves the values of registry keys and writes them to text files. 
The setx is available in Windows Vista, Windows Server 2008, Windows Server 2012, Windows 8.
The official syntax [2] is:
 setx [/s <Computer> [/u [<Domain>\]<User name> [/p [<Password>]]]] <Variable> <Value> [/m]
 setx [/s <Computer> [/u [<Domain>\]<User name> [/p [<Password>]]]] [<Variable>] /k <Path> [/m]
 setx [/s <Computer> [/u [<Domain>\]<User name> [/p [<Password>]]]] /f <FileName> {[<Variable>] {/a <X>,<Y> | /r <X>,<Y> "<String>"} [/m] | /x} [/d <Delimiters>]

Some examples:

To set the MYVAR environment variable in the local environment to the value ValueA:
 set MYVAR valueA
To set the MYVAR environment variable in the system environment to the value Value A:
 set MYVAR "value A" /m
To set the MYPATH environment variable in the local environment to use the search path defined in the PATH environment variable:
 setx MYPATH %PATH%
To set the MYPATH environment variable in the local environment to use the search path defined in the PATH environment variable after replacing ~ with %:
 setx MYPATH ~PATH~

Internal link

May be of interest to you:

External links

For more detail see the Windows documentation:
[1] https://technet.microsoft.com/en-us/library/cc755104(v=ws.11).aspx
[2] https://technet.microsoft.com/en-us/library/cc771080(v=ws.11).aspx

Monday, 10 July 2017

Security Management in Subversion

Subversion provides the management of user, group and permissions. They are two files authz and passwd in svn/repos/<repository_name>/conf. In the passwd file you need to add some usernames and passwords. Instead the authz file manages the groups and permissions.

How to add a new user

Edit the passwd file and append a new user with password under [users] section.
Example: 
Add a new user with "newuser" as username and "passw0rd@" as password.
[users]
myuser=password!
newuser=passw0rd@

How to assign an user to a group

Edit authz file and update the [groups] section.
Example:
Add newuser in "developers" group.
[groups]
guests = myuser
developers = myuser

How to assign the grants to a group

The grants are configurated in authz file, the path into repo is enclosed in square brackets.
For example, we want to give read permissions to guests group and write and read to developers groups then you can use the following configuration:
[/myrepo]
@guests = r
[/myrepo]
@developers = rw

As just shown is just the basic management indicated for a small repository. Fortunately, for managing large repositories, various security management tools are available as "SVN Access Manager".

Welcome

Hello everybody, Welcome in my blog called "Information technology archive". Obviously the topics will be related to Informatio...