Install OrangeScrum Centos 7

First you will need to install LAMP (Linux, Apache, Mysql, PHP) on a fresh Dedicated standalone server! (Do not install on a VPS)

Here is a good online tutorial about deploying LAMP on CentOS

Disable SeLinux?

Edit the /etc/selinux/config file to set the  SELINUX parameter to  disabled, and then reboot the server.

I have noticed after turning back “on” SeLinux after the full installation bellow, that the server is holding!

Still a lot of testing to do but! Working 😉

Install Apache

# sudo yum install httpd

Once installed, you can start Apache

# sudo systemctl start httpd.service

The last thing you will want to do is enable Apache to start on boot. Use the following command to do so:

# sudo systemctl enable httpd.service

How To Find your Server Public IP

If you do not know what your server’s public IP address is, there are a number of ways you can find it. Usually, this is the address you use to connect to your server through SSH.

From the command line get your IP address by typing:

# curl https://ipinfo.io/ip

I suppose you already have proper DNS Server setup!

If you don’t have proper DNS just use your server local IP by running the following command:

# ip a

Install MySQL (MariaDB)

# sudo yum install mariadb-server mariadb

When the installation is complete, we need to start MariaDB with the following command:

# sudo systemctl start mariadb

Now that our MySQL database is running, we want to run a simple security script that will remove some dangerous defaults and lock down access to our database system a little bit. Start the interactive script by running:

# sudo mysql_secure_installation

The prompt will ask you for your current root password. Since you just installed MySQL, you most likely won’t have one, so leave it blank by pressing enter. Then the prompt will ask you if you want to set a root password. Go ahead and enter Y, and follow the instructions:

Enter current password for root (enter for none):
OK, successfully used password, moving on…

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorization.

New password: password
Re-enter new password: password
Password updated successfully!
Reloading privilege tables..
… Success!

For the rest of the questions, you should simply hit the “ENTER” key through each prompt to accept the default values. This will remove some sample users and databases, disable remote root logins, and load these new rules so that MySQL immediately respects the changes we have made.

The last thing you will want to do is enable MariaDB to start on boot. Use the following command to do so:

# sudo systemctl enable mariadb.service

Install PHP

We can once again leverage the yum system to install our components. We’re going to include the php-mysql package as well:

# sudo yum install php php-mysql

This should install PHP without any problems. We need to restart the Apache web server in order for it to work with PHP. You can do this by typing this:

# yum search php-

If you are running a firewall, run the following commands to allow HTTP and HTTPS traffic: At the same time let’s open port 3000 for Node.js!

# sudo firewall-cmd –zone=public –add-port=80/tcp –permanent

# sudo firewall-cmd –zone=public –add-port=443/tcp –permanent

# sudo firewall-cmd –zone=public –add-port=3000/tcp –permanent

# sudo firewall-cmd –reload


INSTALL NODE JS ON CENTOS 7

Login to your Server via SSH

# yum update

Update the system and install necessary packages

# yum install curl sudo

Install Node.js and npm from the NodeSource repository
We will install Node.js v6 LTS and npm from the NodeSource repository which depends on the EPEL repository being available.

To enable the EPEL repository on your CentOS 7, issue the following command:

# sudo yum install epel-release

Once the EPEL repository is enabled run the following command to add the Node.js v6 LTS repository:

# curl –silent –location https://rpm.nodesource.com/setup_6.x | sudo bash –

If you want to enable the Node.js v8 repository instead of the command above run the following command:

# curl –silent –location https://rpm.nodesource.com/setup_8.x | sudo bash –

Once the NodeSource repository is enabled we can proceed with the Node.js v6 LTS and npm installation:

# sudo yum install nodejs

Install the Node.js and NPM build tools

To compile and install native add-on from the npm repository we also need to install build tools:

# sudo yum install gcc-c++ make

To verify if the Node.js installation was successful, issue the following command:

# node -v

The output should be like the following:

v6.11.5

Verify npm installation
To verify if the npm installation was successful, issue the following command:

# npm -v

The output should be like the following:

3.10.10

Test the installation
If you want to test the installation, create a test file:
nano hello_world.js

and then add the following content:

const http = require(‘http’);
const port = 3000;
const ip = ‘0.0.0.0’;

http.createServer(function (req, res) {
res.writeHead(200, {‘Content-Type’: ‘text/plain’});
res.end(‘Hello World’);
}).listen(port, ip);

console.log(server is running on ${ip}:${port});

Start the node web server by issuing the following command:

# node hello_world.js

the output should be like the following:

server is running on your_server_IP:3000

Test the installation

If you now visit http://your_server_IP:3000 from your browser, you will see ‘Hello World’.

Note: You must open the port 3000 in your firewall

Now enable the “NODEJS_HOST” with your server details under ‘define(“NODEJS_HOST’,”);'[ex: http://your IP:3000/]
on ‘app/Config/constants.php


INSTALL FOREVER ON CENTOS

If you have nodejs and npm installed on CentOS, you should be able to install forever by calling:

# npm install forever -g


INSTALL ORANGESCRUM ON CENTOS

First let’s start by ensuring your system is up-to-date.

# yum clean all

# yum -y update

Install required PHP modules

# yum -y install epel-release

# yum -y install php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mssql php-snmp php-soap php-tidy curl curl-devel

Installing Orangescrum

# wget https://github.com/Orangescrum/orangescrum/archive/master.zip

After downloading Orangescrum you will need to unzip master.zip. To do this, run:

# yum install unzip

# unzip master.zip

# mv orangescrum-master /var/www/html/

We will need to change some folders permissions:

# chown apache:apache -R /var/www/html/

I am still missing something here for the 0777

Configuring MariaDB for Orangescrum

By default, MariaDB is not hardened. You can secure MariaDB using the mysql_secure_installation script. You should read each steps below carefully which will set root password, remove anonymous user, disallow remote root login, and remove the test database in your MariaDB (MySQL) Server:

# mysql_secure_installation

Configure it like this:

  • Set root password? [Y/n] y
  • Remove anonymous users? [Y/n] y
  • Disallow root login remotely? [Y/n] y
  • Remove test database and access to it? [Y/n] y
  • Reload privilege tables now? [Y/n] y

Next we will need to log in to the MariaDB console and create a database for the Orangescrum. Run the following command:

# mysql -u root -p

This will prompt you for a password, so enter your MariaDB root password and hit Enter. Once you are logged in to your database server you need to create a database for Orangescrum installation:

CREATE DATABASE orangescrum;
CREATE USER ‘orangescrumuser’@’localhost’ IDENTIFIED BY ‘PASSWORD’;
GRANT ALL PRIVILEGES ON orangescrum.* TO ‘orangescrumuser’@’localhost’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;
FLUSH PRIVILEGES;

Username : orangescrumuser
Password : PASSWORD *CAP is important here!~
Database : orangescrum

Next you need to import the data from the database.sql file located in the /var/www/html/ directory:

# cd /var/www/html/

# mysql -u orangescrum -p password < database.sql

Next, By default STRICT mode is set to on in MySQL. You will need to disable it:

# nano /etc/my.cnf

Find and change or add the line from:

sql_mode=”STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”

To:

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

Next step, Now you need to change the post_max_size and upload_max_filesize to 200M in the php.ini file:

# nano /etc/php.ini

Find and change those values

post_max_size=200M

upload_max_filesize=200M

You may use those commands:

cp /etc/php.ini /etc/php.ini.bak sudo sed -i "s/post_max_size = 8M/post_max_size = 200M/" /etc/php.ini sudo sed -i "s/upload_max_filesize =2M/upload_max_filesize = 200M/" /etc/php.ini

Configuring Apache web server for Orangescrum

We will create Apache virtual host for your Orangescrum website. First create ‘/etc/httpd/conf.d/vhosts.conf’ file with using a text editor of your choice:

# nano /etc/httpd/conf.d/vhosts.conf

Add this value

IncludeOptional vhosts.d/*.conf

Next, create the virtual host:

# mkdir /etc/httpd/vhosts.d/

# nano /etc/httpd/vhosts.d/yourdomain.com.conf

Add the following lines:


ServerAdmin webmaster@yourdomain.com
DocumentRoot “/var/www/html/”
ServerName yourdomain.com
ServerAlias www.yourdomain.com
ErrorLog “/var/log/httpd/error_log”
CustomLog “/var/log/httpd/access_log” combined
DirectoryIndex index.html index.php Options FollowSymLinks AllowOverride All Require all granted

Save and close the file. Restart the apache service for the changes to take effects:

# systemctl restart httpd.service

Configure Orangescrum

Now you need to edit the database.php file to update the database connection details:

# nano /var/www/html/app/Config/database.php

Change the file as shown below, Save and close the file when you are finished:

class DATABASE_CONFIG {

public $default = array(
        'datasource' => 'Database/Mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'orangescrumuser',
        'password' => 'PASSWORD',
        'database' => 'orangescrum',
        'prefix' => '',
        'encoding' => 'utf8',
);

Next, you need to provide your valid email address and password for SMTP, and update the FROM_EMAIL_NOTIFY and SUPPORT_EMAIL configurations in the constants.php file:

# nano /var/www/html/app/Config/constants.php

Change the following lines as per your need:

//Gmail SMTP
define(“SMTP_HOST”, “ssl://smtp.example.com”);
define(“SMTP_PORT”, “465”);
define(“SMTP_UNAME”, “email@example.com”);
define(“SMTP_PWORD”, “[Your email password]”);

define(‘FROM_EMAIL_NOTIFY’, ’email@example.com’); //(REQUIRED)
define(‘SUPPORT_EMAIL’, ‘ email@example.com ‘); //(REQUIRED) From Email
define(“DEV_EMAIL”, ’email@example.com’); // Developer Email ID to report the application error

define(‘SUB_FOLDER’, ‘/’);

Save and close the file when you are finished.

Have fun!

[print-me]

NOTES: This post is not finish yet! Still in trial and error phase. 1-16-2019 

# mysql -u root -p orangescrum < /var/www/html/database.sql

# nano /var/www/html/app/Config/database.php