Menu

Prerequisite Software for qTest OnPremise Spring 2018 for Linux (non-Docker)

 

Overview

Use this article to install and configure prerequisite applications before you install qTest OnPremise (Spring 2018 release) on a native Linux (CentOS or Ubuntu) machine, non-Docker. These prerequisite applications apply both to a single server or load balancing server.

There are 5 required prerequisites:

  • PostgreSQL 9.5
  • Redis 2.8.19
  • Erlang 17.5
  • RabbitMQ 3.5.4
  • MongoDB 3.4 (needed for Parameters, Scenario, and Pulse)

Important: We provide a range of supported versions for the prerequisite components so that OnPremise customers can easily maintain qTest OnPremise over time. This reduces the need for you to upgrade every prerequisite component each time you upgrade qTest to the most recent version.

Ports

Please note, that you must open the ports below prior to any self/assisted installation or upgrade. 

Prerequisite Applications

Product  Port
RabbitMQ 5672/61613
Redis  6379
Postgres 5432
Network Drive 2049
MongoDB 27017

Please note, that the example installations below, provide the recommended install version. However, you can use a prerequisite version different than these examples as long as the prerequisite version falls within the range of supported versions listed abo

Install PostgreSQL on CentOS

  IMPORTANT: All commands need to be executed under Root user

Install

Follow this article to install PostgreSQL v9.5 on your CentOS server using YUM installation.

Please note to use the following command to install both postgres server and extension rather than only the server as in the guide.

# yum install postgresql95-server postgresql95-contrib
		

Enable Remote Access

After you have finished install PostgreSQL, enable remote access to PostgreSQL database server:

  1. Search for file pg_hba.conf in Postgresql's installation directory.

    Typically stored at /var/lib/pgsql/x.y/data

    Example: /var/lib/pgsql/9.5/data
    # find /etc -name "pg_hba.conf" or find /var -name "pg_hba.conf"
    		
  2. Edit the file and append the following line, specify the IP of the server which will remotely connect to your PostgreSQL. This should be the servers where qTest packages are installed

    If you want to allow connection from multiple client machines on a specific network, specify the network address here in the CIDR-address format: [IP Address]/[Netmask in bits]

    If you want your PostgreSQL to accept all incoming connections regardless of the source IP address, use 0.0.0.0/0 as the IP address. 

    host all all [IP address]/[Netmask in bits] md5
    		


    You can define your specific PGSQL database host by running the ifconfig command on the PGSQL host on the appropriate network interface note the inet address which is IPV4 such as 192.168.0.255 and the netmask such as 255.255.255.0 (this is for the netmask calculation below.

    Calculation: An octet is any value between 0 - 255 of an IP address or a netmask that represents one of 4 possible decimal places in an IP or netmask such as 255.255.255.0. Note where each octet is 255. So in our example for each octet in the netmask that has 255, let that represent the value 8, which represents the number of bits in the netmask. In our example we have 3 octets that are full octets so they will represent the full 8 bits so our netmask in bits will represent 24. For our example the CIDR format will look like: 192.168.0.255/24

    Warning: netmask calculations can quickly become complicated if the netmask has values other than 0 or 255. If your network interface has any values between 0 and 255, consult with your network team to determine the CIDR format for you PGSQL host.

  3. Search for file postgresql.conf in Postgresql's installation directory typically the same directory as pg_hba.conf
    # find /etc -name "postgresql.conf" or find /var -name "postgresql.conf"
    		
  4. Edit the above file. Search for property listen_address and modify it to (remove # at the beginning of the line if it is there)
    listen_addresses = '*' 
    		

Change postgres User's Password

Run the following commands to change his password:

# sudo -u postgres psql

postgres=# \password
Enter new password:
Enter it again:

Install PostgreSQL on Ubuntu

  IMPORTANT: All commands need to be executed under Root user

PostgreSQL is available in all Ubuntu versions by default. However, Ubuntu "snapshots" a specific version of PostgreSQL that is then supported throughout the lifetime of that Ubuntu version. Other versions of PostgreSQL are available through the PostgreSQL apt repository.

If the version included in your Ubuntu server is not v9.5, please refer to http://www.postgresql.org/download/linux/ubuntu/ to set the PostgreSQL Apt Repository.

Install

  1. From the terminal, run the following command to install PostgreSQL
    # apt-get update
    # apt-get install postgresql postgresql-contrib
    		
  2. Check for PostgreSQL's service name in your machine by the following command
    # chkconfig
    		
  3. From the command's output, search for postgresql to get its full name
    ...
    postgresql on //this is the full service name
    ...
    		
  4. Initialize the database using the PostgreSQL's service name you have found above
    # chkconfig postgresql on
    # service postgresql initdb
    		

Enable Remote Access

After you have finished the install for PostgreSQL, enable remote access to PostgreSQL database server:

  1. Search for file pg_hba.conf in Postgresql's installation directory
    # find /etc -name "pg_hba.conf" or find /var -name "pg_hba.conf"
    		
  2. Edit the file and append the following line, specify the IP of the server which will remotely connect to your PostgreSQL. This should be the servers where qTest packages are installed

    If you want to allow connection from multiple client machines on a specific network, specify the network address here in the CIDR-address format [IP Address]/[Netmask in bits]

    If you want your PostgreSQL to accept all incoming connections regardless of the source IP address, use 0.0.0.0/0 as the IP address. 

    host all all [IP address]/[Netmask in bits] md5
    		


    You can define your specific PGSQL database host by running the ifconfig command on the PGSQL host on the appropriate network interface note the inet address which is IPV4 such as 192.168.0.255 and the netmask such as 255.255.255.0 (this is for the netmask calculation below.

    Calculation: An octet is any value between 0 - 255 of an IP address or a netmask that represents one of 4 possible decimal places in an IP or netmask such as 255.255.255.0. Note where each octet is 255. So in our example for each octet in the netmask that has 255, let that represent the value 8, which represents the number of bits in the netmask. In our example we have 3 octets that are full octets so they will represent the full 8 bits so our netmask in bits will represent 24. For our example the CIDR format will look like: 192.168.0.255/24

    Warning: netmask calculations can quickly become complicated if the netmask has values other than 0 or 255. If your network interface has any values between 0 and 255, consult with your network team to determine the CIDR format for you PGSQL host.

  3. Search for file postgresql.conf in Postgresql's installation directory typically the same directory as pg_hba.conf
    # find /etc -name "postgresql.conf" or find /var -name "postgresql.conf"
    		
  4. Edit the above file. Search for property listen_address and modify it to (remove # at the beginning of the line if it is there)
    listen_addresses = '*' 
    		

Change postgres User's Password

Run the following commands to change his password:

# sudo -u postgres psql

postgres=# \password
Enter new password:
Enter it again:

Install Redis on CentOS

  IMPORTANT:

  • All commands need to be executed under Root user
  • The installation guide below is a reference from this article in Redis' website
  1. Download and compile Redis v2.8.19 by the following commands
    # wget http://download.redis.io/releases/redis-2.8.19.tar.gz
    # tar xvzf redis-2.8.19.tar.gz
    # cd redis-2.8.19.tar.gz
    # make
    		
  2. At this point you can try if your build works correctly by typing make test, but this is an optional step

    Hint: You may need to install tcl, a dependency for the make test command.

    # yum install tcl 
    # make test
  3. Copy the following files to under /usr/local/bin/. Remember to check if /usr/local/bin/ has been added to your PATH environment variable. If not, please add it
    # cp src/redis-server /usr/local/bin/
    # cp src/redis-cli /usr/local/bin/
    		
  4. Create directories where to store your Redis config files and your data
    # mkdir /etc/redis
    # mkdir /var/redis
    		
  5. Copy the init script under the utils directory into /etc/init.d. We suggest calling it with the name of the port where you are running this instance of Redis (the default port is 6379)
    # cp utils/redis_init_script /etc/init.d/redis_6379
    		
  6. View the file /etc/init.d/redis_6379 and perform the following updates:
    • Check if REDISPORT matches with the port number you will be using. Both the pid file path and the configuration file name depend on the port number
      #!/bin/sh
      #
      # Simple Redis init.d script conceived to work on Linux systems
      # as it does use of the /proc filesystem.
      
      REDISPORT=6379
      EXEC=/usr/local/bin/redis-server
      CLIEXEC=/usr/local/bin/redis-cli
      
      PIDFILE=/var/run/redis_${REDISPORT}.pid
      CONF="/etc/redis/${REDISPORT}.conf"
      				
    • Add the following lines at the top
      #!/bin/sh
      #
      # Simple Redis init.d script conceived to work on Linux systems
      # as it does use of the /proc filesystem.
      #
      # chkconfig:   - 85 15
      # description:  Redis is a persistent key-value database
      # processname: redis_6379
      				
  7. Create a directory inside /var/redis that will work as data and working directory for this Redis instance using the port number as the directory name
    mkdir /var/redis/6379
    		
  8. Copy the template configuration file under the Redis distribution's root directory into /etc/redis/ using the port number as the file name (eg: 6379.conf)
    # cp redis.conf /etc/redis/6379.conf
    		
  9. Edit the configuration file (6379.conf) and make the following changes
    1. Set daemonize to yes (by default it is set to no)
    2. Set pidfile to /var/run/redis_6379.pid (modify the port if needed)
    3. Set port accordingly. In our example it is not needed as the default port is already 6379
    4. Set logfile to /var/log/redis_6379.log
    5. Set dir to /var/redis/6379 (very important step!)
  10. Finally add the new Redis init script to all the default runlevels
    # chkconfig --add redis_6379
    		
  11. Now you can try running your Redis instance
    service redis_6379 start
    		

To make sure that your Redis instance is working as expected:

    • Try pinging your instance with redis-cli ping. Redis will response with PONG
      # redis-cli ping
      PONG
      		
    • Do a test save:
      # redis-cli save
      		

      Check that the dump file called dump.rdb is correctly stored into /var/redis/6379/ and check that your Redis instance is correctly logging inside of the file with a text editor.

 

Install Redis on Ubuntu

  IMPORTANT:

  • All commands need to be executed under Root user
  • The installation guide below is a reference from this article in Redis' website
  1. Download and compile Redis v2.8.19 by the following commands
    # wget http://download.redis.io/releases/redis-2.8.19.tar.gz
    # tar xvzf redis-2.8.19.tar.gz
    # cd redis-2.8.19
    # make
    		
  2. At this point you can try if your build works correctly by typing make test, but this is an optional step

    Hint: You may need to install tcl, a dependency for the make test command.

    # yum install tcl
    # make test
  3. Copy the following files to under /usr/local/bin/. Remember to check if /usr/local/bin/ has been added to your PATH environment variable. If not, please add it
    # cp src/redis-server /usr/local/bin/
    # cp src/redis-cli /usr/local/bin/
    		
  4. Create directories where to store your Redis config files and your data
    # mkdir /etc/redis
    # mkdir /var/redis
    		
  5. Copy the init script under the utils directory into /etc/init.d. We suggest calling it with the name of the port where you are running this instance of Redis (the default port is 6379)
    # cp utils/redis_init_script /etc/init.d/redis_6379
    		
  6. View the file /etc/init.d/redis_6379 and check if REDISPORT matches with the port number you will be using. Both the pid file path and the configuration file name depend on the port number
    #!/bin/sh
    #
    # Simple Redis init.d script conceived to work on Linux systems
    # as it does use of the /proc filesystem.
    
    REDISPORT=6379
    EXEC=/usr/local/bin/redis-server
    CLIEXEC=/usr/local/bin/redis-cli
    
    PIDFILE=/var/run/redis_${REDISPORT}.pid
    CONF="/etc/redis/${REDISPORT}.conf"
    
    		
  7. Create a directory inside /var/redis that will work as data and working directory for this Redis instance using the port number as the directory name
    mkdir /var/redis/6379
    		
  8. Copy the template configuration file under the Redis distribution's root directory into /etc/redis/ using the port number as the file name (eg: 6379.conf)
    # cp redis.conf /etc/redis/6379.conf
    		
  9. Edit the configuration file (6379.conf) and make the following changes
    1. Set daemonize to yes (by default it is set to no)
    2. Set pidfile to /var/run/redis_6379.pid (modify the port if needed)
    3. Set port accordingly. In our example it is not needed as the default port is already 6379
    4. Set logfile to /var/log/redis_6379.log
    5. Set dir to /var/redis/6379 (very important step!)
  10. Finally add the new Redis init script to all the default runlevels
    # update-rc.d redis_6379 defaults
    		
  11. Now you can try running your Redis instance
    # /etc/init.d/redis_6379 start
    		

To make sure that your Redis instance is working as expected:

    • Try pinging your instance with redis-cli ping. Redis will response with PONG
      # redis-cli ping
      PONG
      		
    • Do a test save with:
      # redis-cli save
      
      		

      Check that the dump file called dump.rdb is correctly stored into /var/redis/6379/ and check that your Redis instance is correctly logging inside of the file with a text editor.

Install Erlang 17.5

Erlang is a dependency of RabbitMQ. Download and install Erlang by following this article. Make sure to download the correct version of Erlang that corresponds to your RabbitMQ version. For more info, check out: Which Erlang?

Install RabbitMQ

  IMPORTANT:

  • All commands need to be executed under Root user
  • Please follow this instruction and install RabbitMQ v3.5.4

Configure RabbitMQ

  1. After you have installed RabbitMQ successfully, run the following commands to configure it
    rabbitmq-plugins enable rabbitmq_stomp
    rabbitmq-plugins enable rabbitmq_management
    rabbitmqctl add_user qtest [qtest_password]//to create user qtest, specify his password
    rabbitmqctl add_user rabbitmqadmin [rabbitmqadmin_password]//to create user rabbitmqadmin, specify his password
    rabbitmqctl set_user_tags rabbitmqadmin administrator
    rabbitmqctl add_vhost qtest-onpremise //to create a virtual host named qtest-onpremise
    rabbitmqctl set_permissions -p qtest-onpremise qtest ".*" ".*" ".*" //grant user qtest the access to virtual host qtest-onpremise 
    		
  2. Execute the command below to view amqp port and stomp port. You will need to use these ports while installing qTest Manager
    sudo rabbitmqctl status | grep "amqp\|stomp"
    		

Install MongoDB 3.4 on Ubuntu

  1. Import the public key used by the package management system. The Ubuntu package management tools (i.e. dpkg and apt) ensure package consistency and authenticity by requiring that distributors sign packages with GPG keys. Issue the following command to import the MongoDB public GPG Key:
    # sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
  2. Create the /etc/apt/sources.list.d/mongodb-org-3.4.list list file using the command appropriate for your version of Ubuntu:
    • Ubuntu 12.04
      # echo "deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu precise/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
    • Ubuntu 14.04
      # echo "deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
    • Ubuntu 16.04
      # echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
  3. Issue the following command to reload the local package database:
    # sudo apt-get update
  4. Install the latest stable version of MongoDB. Issue the following command:
    # sudo apt-get install -y mongodb-org

Install MongoDB 3.4 on CentOS

  1. Create a /etc/yum.repos.d/mongodb-org-3.4.repo file to hold the following configuration information for the MongoDB 3.4 repository. The file’s content is as below:
    [mongodb-org-3.4]
    name=MongoDB 3.4 Repository
    baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
    gpgcheck=1
    enabled=1
    gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
  2. Install the MongoDB packages. Issue the following command:
    # sudo yum install -y mongodb-org

Configure MongoDB

Initialize replicaSet

Start MongoDB with the following command:
Note: if your path includes spaces, enclose the entire path with double quotes.
# mongod --dbpath [PATH/TO/DB/FOLDER] --replSet "rs0"

Example:

  • Ubuntu
    # mongod --dbpath /var/lib/mongodb --replSet "rs0"
  • CentOS
    # mongod --dbpath /var/lib/mongo --replSet "rs0"

Create Root User

Open the second Terminal, and execute the commands below to create a root user:

mongo
rs.initiate()
use admin
db.createUser ({
    user: "[USER_NAME]",
    pwd: "[PASSWORD]",
    roles: ["root"]
})

Example:

mongo
rs.initiate()
use admin
db.createUser ({
    user: "tdm",
    pwd: "password",
    roles: ["root"]
})

Close the second Terminal, and press Ctrl+C on the first Terminal to stop MongoDB service.

Start MongoDB as a Service

  1. Edit /etc/mongod.conf file using following command:
    • Ubuntu
      # vim /etc/mongod.conf
    • CentOS
      # vi /etc/mongod.conf
  2. Now you can start to edit mongod.conf. Remove the net(port, bindIp) section, and edit the other sections as following:
    systemLog:
      destination: file
      path: [/PATH/TO/LOG/FOLDER]
    storage:
      dbPath: [/PATH/TO/DB/FOLDER]
    replication:
      replSetName: rs0
    security:
      authorization: enabled
    Example:
    • Ubuntu
      systemLog:
        destination: file
        path: /var/log/mongodb/mongod.log
      storage:
      dbPath: /var/lib/mongodb
      replication:
      replSetName: rs0
      security:
    • CentOS 
      systemLog:
        destination: file
        path: /var/log/mongodb/mongod.log
      storage:
        dbPath: /var/lib/mongo
      replication:
        replSetName: rs0
      security:
        authorization: enabled
  3. Make sure the data and log folders have appropriate permissions by executing following commands:
    # sudo chown -R [MONGODB_USER] [PATH/TO/DB/FOLDER]
    # sudo chown -R [MONGODB_USER] [PATH/TO/LOG/FOLDER]
    Example:
    • Ubuntu
      # sudo chown -R mongodb:mongodb /var/lib/mongodb
      # sudo chown -R mongodb:mongodb /var/log/mongodb
    • CentOS
      # sudo chown -R mongod:mongod /var/lib/mongo
      # sudo chown -R mongod:mongod /var/log/mongodb
  4. Start the MongoDB service by running following command:
    # sudo service mongod start
  5. You can verify that the mongod process has started successfully by checking the content of the log file at /var/log/mongodb/mongod.log for a line like below:
    [initandlisten] waiting for connections on port <port>
    Notes: If you would like to stop the MongoDB service as needed, run the following command:
    # sudo service mongod stop
Subscribe To Our Blog
Powered by Zendesk