In this lab, we set up a back end for the existing front end of a web application. We do this by creating a proper folder that will hold the code of our back end. Then we proceed to create a systemd file which will be used to start, stop, and get the status of this process at any given time. In addition to this, we will daemonize the process in this manner.
In general, we might ask ourselves what does this have to do with Apache web server? If we have a front-end web application served to us via the Apache web server, there likely exists a back end that will fetch the content to be presented by the front end. In addition to this, Apache web server doesn’t necessarily need to be configured to serve websites. It can also serve as a reverse proxy for various API’s and serve pretty much any content imaginable. Therefore, it stands to reason we should know how to configure Apache web server to interact not only with the user, website, or front end, but the back end as well.
Learning Objectives
Successfully complete this lab by achieving the following learning objectives:
- Create a New Directory for the Back End and Move `app.py` to the Newly-Created Directory
mkdir /home/cloud_user/Backend
sudo mv /home/cloud_user/HardeningApache-master/app.py /home/cloud_user/Backend/
sudo chown cloud_user:cloud_user /home/cloud_user/Backend/app.py
- Install Dependencies: python36.x86_64, python36-devel.x86_64, “Development Tools”, python36-pip, Flask, flask-cors, psutil, and tcpdump, then Open Port 65535 with `firewalld`
sudo yum install epel-release
sudo yum update
sudo yum install python36
sudo yum install python36-devel
sudo yum groupinstall "Development Tools"
sudo yum install python36-pip
ln -s /usr/local/bin/pip3 /usr/bin/pip3
sudo pip3 install Flask
sudo pip3 install flask-cors
sudo pip3 install psutil
sudo yum install tcpdump
sudo firewall-cmd --permanent --add-port=65535/tcp
sudo firewall-cmd --reload
- Create a systemd File for Our Back End Called “flaskapp.service” in `/etc/systemd/system/`
sudo vim /etc/systemd/system/flaskapp.service
[Unit] Description=API_Backend After=network.target [Service] User=root Group=root WorkingDirectory=/home/cloud_user/Backend Environment=FLASK_ENV=development Environment=FLASK_APP=/home/cloud_user/Backend/app.py ExecStart=/usr/local/bin/flask run -h 0.0.0.0 -p 65535 Restart=always [Install] WantedBy=multi-user.target
Save and Close
sudo systemctl daemon-reload
sudo systemctl start flaskapp
sudo systemctl enable flaskapp
- Configure the Front End to Be Able to Access the Back End and Test If the Back End Works
vim /var/www/html/index.html
Insert the Server Public IP address here
var base_url = 'http://<Server_Public_IP>:65535';
Save and close
ESC :wq ENTER
Test if it works
curl http://<Server_Public_IP>:65535/log_messages