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.4 to 9.6.6
- Redis 2.8.19
- Erlang 17.5
- RabbitMQ 3.5.4
- MongoDB 3.2 to 3.6 (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 |
Install PostgreSQL on CentOS
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 above.
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:
- 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"
- 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. - 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"
- 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
- From the terminal, run the following command to install PostgreSQL
# apt-get update # apt-get install postgresql postgresql-contrib
- Check for PostgreSQL's service name in your machine by the following command
# chkconfig
- From the command's output, search for postgresql to get its full name
... postgresql on //this is the full service name ...
- 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:
- Search for file pg_hba.conf in Postgresql's installation directory
# find /etc -name "pg_hba.conf" or find /var -name "pg_hba.conf"
- 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. - 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"
- 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
- 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
- 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 - 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/
- Create directories where to store your Redis config files and your data
# mkdir /etc/redis # mkdir /var/redis
- 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
- 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
- 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
- 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
- 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
- Edit the configuration file (6379.conf) and make the following changes
- Set daemonize to yes (by default it is set to no)
- Set pidfile to /var/run/redis_6379.pid (modify the port if needed)
- Set port accordingly. In our example it is not needed as the default port is already 6379
- Set logfile to /var/log/redis_6379.log
- Set dir to /var/redis/6379 (very important step!)
- Finally add the new Redis init script to all the default runlevels
# chkconfig --add redis_6379
- 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
- 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
- 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 - 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/
- Create directories where to store your Redis config files and your data
# mkdir /etc/redis # mkdir /var/redis
- 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
- 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"
- 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
- 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
- Edit the configuration file (6379.conf) and make the following changes
- Set daemonize to yes (by default it is set to no)
- Set pidfile to /var/run/redis_6379.pid (modify the port if needed)
- Set port accordingly. In our example it is not needed as the default port is already 6379
- Set logfile to /var/log/redis_6379.log
- Set dir to /var/redis/6379 (very important step!)
- Finally add the new Redis init script to all the default runlevels
# update-rc.d redis_6379 defaults
- 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
- 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
- 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
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 above.
- 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
- 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
- Ubuntu 12.04
- Issue the following command to reload the local package database:
# sudo apt-get update
- Install the latest stable version of MongoDB. Issue the following command:
# sudo apt-get install -y mongodb-org
Install MongoDB 3.4 on CentOS
- 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 - 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
- Edit /etc/mongod.conf file using following command:
- Ubuntu
# vim /etc/mongod.conf
- CentOS
# vi /etc/mongod.conf
- Ubuntu
- 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
- Ubuntu
- Make sure the data and log folders have appropriate permissions by executing the 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
- Ubuntu
- Start the MongoDB service by running following command:
# sudo service mongod start
- You can verify that the mongodb 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