How to Install Jenkins Automation Server with Apache on Ubuntu 18.04

Jenkins is an automation server forked from the Hudson project. Jenkins is a server-based application running in a Java servlet container, it has support for many SCM (Source Control Management) software systems including Git, SVN, and Mercurial. Jenkins provides hundreds of plugins to automate your project. Jenkins created by Kohsuke Kawaguchi, first released in 2011 under MIT License, and it's a free software.

In this tutorial, I will show you how to install the latest stable Jenkins version on Ubuntu Server 18.04 LTS (Bionic Beaver). We will run Jenkins on our own domain name, and we will install and configure Jenkins to run under the Apache web server reverse proxy.

Prerequisites

  • Ubuntu 18.04
  • Root privileges

What we will do?

  1. Install Java
  2. Install Jenkins
  3. Install and Configure Apache2 as a Reverse Proxy for Jenkins
  4. Configure UFW Firewall
  5. Configure Jenkins
  6. Jenkins Security
  7. Testing

Step 1 - Install Java

Jenkins is a Java-based application, so we need to install Java OpenJDK on the server. In this step, we will install Java 8 from a PPA repository which we will add first.

Install software-properties-common packages, then add the java OpenJDK PPA repository.

sudo apt install software-properties-common apt-transport-https -y
sudo add-apt-repository ppa:openjdk-r/ppa -y

Install Java

Now install the Java 8 using apt command.

sudo apt install openjdk-8-jdk -y

When the installation is complete, check the java version installed on the system.

java -version

And you will get the Java OpenJDK 1.8 is now installed on the Ubuntu 18.04 system.

Java OpenJDK 1.8 is now installed on the Ubuntu 18.04

Note:

  • If you have multiple java version on your system, change the default java version using the command below.

sudo update-alternatives --config java

Step 2 - Install Jenkins

Jenkins provides an Ubuntu repository for the installation packages and we will install Jenkins from this repository.

Add Jenkins key and repository to the system with the command below.

wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
echo 'deb https://pkg.jenkins.io/debian-stable binary/' | tee -a /etc/apt/sources.list

Now update the repository and install Jenkins.

sudo apt update
sudo apt install jenkins -y

Install Jenkins on Ubuntu

When the installation is complete, start the Jenkins service and add it to the boot time.

systemctl start jenkins
systemctl enable jenkins

Jenkins is now up and running on Ubuntu 18.04 server, running on the default port '8080'. Check it using netstat as below.

netstat -plntu

And you will get the result as below.

Jenkins server enabled and started

Step 3 - Install and Configure Apache2 as a Reverse proxy for Jenkins

In this tutorial we will run Jenkins behind an Apache web server, we will configure apache as the reverse proxy for Jenkins.

First we will install Apache and enable some require modules, and then we will create the virtual host file with domain name jenkins.hakase-labs.io for Jenkins. Please use your own domain name here and replace it in all config files wherever it appears.

Install apache2 web server from Ubuntu repository.

sudo apt install apache2 -y

When the installation is complete, enable the proxy and proxy_http modules so we can configure apache as frontend server/reverse proxy for Jenkins.

a2enmod proxy
a2enmod proxy_http

Next, create a new virtual host file for Jenkins in the sites-available directory.

cd /etc/apache2/sites-available/
vim jenkins.conf

Paste virtual host configuration below.

<Virtualhost *:80>
    ServerName        jenkins.hakase-labs.io
    ProxyRequests     Off
    ProxyPreserveHost On
    AllowEncodedSlashes NoDecode
 
    <Proxy http://localhost:8080/*>
      Order deny,allow
      Allow from all
    </Proxy>
 
    ProxyPass         /  http://localhost:8080/ nocanon
    ProxyPassReverse  /  http://localhost:8080/
    ProxyPassReverse  /  http://jenkins.hakase-labs.io/
</Virtualhost>

Save and exit, then activate the Jenkins virtual host with the a2ensite command.

a2ensite jenkins

Restart Apache and Jenkins services.

systemctl restart apache2
systemctl restart jenkins

The apache2 installation and configuration as a reverse proxy for Jenkins has been completed.

Apache as reverse proxy for jenkins

Step 4 - Configure UFW Firewall

Before enabling the UFW firewall on the Ubuntu server, we need to add the basic services port such as SSH, HTTP, and HTTPS.

Add SSH, HTTP, and HTTPS services to the ufw firewall.

ufw allow ssh
ufw allow http
ufw allow https

Now start and enable the ufw firewall.

ufw enable

type 'y' and press Enter.

Configure UFW firewall

The UFW firewall is now enabled, and the HTTP port has been added.

Step 5 - Configure Jenkins

Jenkins is running on the domain name 'http://jenkins.hakase-labs.io'. Open your web browser and type in the URL.

You will get the screen that requests you to enter the initial admin password. A password has been generated by Jenkins already, so we just need to show and copy the results to the password box.

Show initial admin password Jenkins with the cat command.

cat /var/lib/jenkins/secrets/initialAdminPassword

Configure jenkins

Paste the results to the screen and click 'Continue'.

Unlock Jenkins

Now we should install some plugins in Jenkins to get a good foundation for later use. Choose 'Install Suggested Plugins', click on it.

Customize Jenkins

Jenkins plugins installations in progress.

Jenkins getting started

After the plugins installation is complete, we need to create a new admin password. Type in your admin username, password, email etc. and click on 'Save and Continue'.

Create admin user

For the instance configuration, type the Jenkins domain name 'http://jenkins.hakase-labs.io' and click 'Save and Finish' button.

Instance configuration

Now click the 'Start using Jenkins' button.

Jenkins is ready

And you will be redirected to the Jenkins admin dashboard.

Welcome to Jenkins

Jenkins installation and Configuration has been completed successfully

Step 6 - Jenkins Security

From the Jenkins admin dashboard, we need to configure the standard security settings for Jenkins, click on 'Manage Jenkins' and then 'Configure Global Security'.

Manage Jenkins

Jenkins provides several authorization methods in the 'Access Control' section. We will be using the 'Matrix-based Security', so we can control all user privileges.

Add the 'hakase' user at the box 'User/Group' and click add.

Give the 'hakase' user all privileges by checking all options, and click 'Save' button.

Jenkins settings

You will be redirected to the dashboard, and if there is login option, just type your admin user and password.

Login as admin

Step 7 - Testing

In this section, we want to create a simple job for the Jenkins server. We will create a simple job for testing Jenkins and to find out the server load with the top command.

From the Jenkins admin dashboard, click 'Create New Job'.

Create Job in Jenkins

Type the job name. We'll use 'Checking System' here, select 'Freestyle Project' and click 'OK'.

Jenkins jobs

Go to the 'Build' tab. On the 'Add build step', select the option 'Execute shell'.

Type in the command below into the box.

top -b -n 1 | head -n 5

Click 'Save'.

Build Jenkins job

Now you are on the job page of the job 'Project checking system'. Click 'Build Now' to execute the job 'checking system'.

Project checking system

After the job has been executed, you will see the 'Build History', click on the first job to see the results.

Here are the results from the job executed by Jenkins.

Result of Jenkins job run

Jenkins automation tool installation and configuration with Apache2 as a reverse proxy on Ubuntu 18.04 has completed successfully.

References

Share this page:

Suggested articles

0 Comment(s)

Add comment