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