How to Install Apache Web Server on Amazon Linux 2
Dear Reader, I hope you are doing good. Today, I am here to help you install apache web server on amazon Linux 2.
Linux 2: Linux 2 is a very very popular linux AMI provided by AWS itself and also free tier eligible.
Apache Web Server: Apache web server is one of the most used web server when it comes to serving web content online. It is open source and easy to setup.
Although it is easy to setup, being a beginner, we do face problem in even smallest thing when it comes to cloud environment. That’s why, I will guide you in a step by manner on how you can install an apache web server, customize it with our own code and view it locally on your browser.
Steps to Install Apache Web Server on Amazon Linux 2
- Launch an EC2 Instance(Linux 2)
- Connect to your Linux 2 Instance
- Install Apache Web Server
- Configure Security group of instance to allow port 80 and 443
- Verify the Installation
- Customize the web page
- View Customized Web page
Let’s get started …
Step 1: Launch an EC2 Instance(Linux 2)
Before we install apache web server on the EC2 instance, we will need an EC2 instance up and running. You can refer my previous tutorial to launch a Linux 2 instance in AWS.
Link to tutorial: How to Launch EC2 Instance Step by Step in AWS
Step 2: Connect to your Linux 2 instance
Once your instance is up and running, you need to connect to your instance. I will be using EC2 instance connect feature for this as it allows to SSH into instance from browser itself.
However, if you want to usual SSH, feel free to use below command from your terminal.
ssh -i /path/my-key-pair.pem ec2-user@instance-public-ip
To SSH from browser using Instance connect, follow below steps.
- Select your instance and click connect as highlighted below
2. Once, you click Connect, you will see a screen with default username for a Linux 2 instance
verify that ec2-user is showing in username field and click Connect.
A new browser window will open and you will be connected into your instance like below.
Now you are ready to run commands on your EC2 instance. Let’s move to the installation part in next step
Step 3: Install Apache Web Server
Now, we need to run below set of commands one by one, to install apache web server on our instance. Please note that we will use sudo(root privilege ) to run all these command. The reason is, whenever you try to install, remove or change any software, you must have root privilege to do such tasks.
sudo yum update -y sudo yum install -y httpd.x86_64 sudo systemctl start httpd.service sudo systemctl enable httpd.service
Explanation of commands
- Update latest package available on the system
It’s a best practice to update al the packages to latest before installing anything new.
sudo yum update -y
2. Install Apache Web Server
sudo yum install -y httpd.x86_64
3. Start Apache Server
Above command will install apache web server but it will not start it. You need to explicitly start the server using below command
sudo systemctl start httpd.service
4. Configure Apache to run on system boot
It is your web server and you always would like it to auto start on system boot. Isn’t it?
You can do so by below command
sudo systemctl enable httpd.service
At this moment, your apache web server is already installed and started in your Linux 2 instance. But, you can’t access it right now. if you try to hit the public IP you will get error like This site can’t be reached.
Because, our EC2 instance doesn’t allow web traffic yet.
On the security group, only SSH is allowed as of now.
Let’s change that.
Step 4: Change Security Group of instance to allow port 80 and 443
Let’s allow web traffic on port 80 and 443(Internet traffic for http and https).
Click on your instance Id to see the instance details. Scroll down and click on Security Tab and you should see security group like below.
Click on Security Group id link -> Click on Edit Inbound Rule
Use Add rule button to add more rule one by one.
Specify rules for HTTP and HTTPS Web traffic from anywhere like above.
Step 5: Verify the Installation
We have installed and started the apache web server.
Our instance allows web traffic now, it’s time to grab the public IP or public dns of the instance.
Click on open address and you should be able to see the tomcat default page like below.
Note: You can see change in IP in above and below screen. The reason is, I stopped and started my instance so public IP changed. For you both of this should remain same.
Feel free to ask me in comment if you have questions.
Step 6: Customize the web page
We have seen the default apache page served by apache. Lets modify that.
We will create our own index.html in the Document Root folder which is /var/www/html in our case.
DocumentRoot: Document Root is the directory from which apache looks for and serves web files on your request. So we will create an index.html in /var/www/html folder
You can use various command to create and put content into index.html inside folder. You can check this tutorial
For example- one of the simplest option is to use:
sudo echo “Hello World from $(hostname -f)” > /var/www/html/index.html
But ‘>’ creates a problem and the the above command ends up running as ec2-user instead of root resulting in permission denied like below.
-bash: /var/www/html/index.html: Permission denied
It will work if you switch your user as root using sudo su or sudo sh but I wanted to avoid that.
You might ask me, why?
Well, it is advisable to stick to
sudo when performing tasks that require root privileges. By doing so, the current user is only granted privileged for the specified command. On the other hand,
su switches to the root user completely and every commnad runs as root which is not secured.
What worked for me?
I used sudo nano command to create the file and put content into it.
sudo nano /var/www/html/index.html
Once, file opens up, paste below content into the file
<!DOCTYPE html> <html> <body> <h1>Hello World !!</h1> <p>Welcome to CloudKatha</p> </body> </html>
Save and close the file.
Step 7: View the customized web page
This time when you enter public ip or dns into the browser, you will see your customized page like below.
You have installed and customized apache web server on Linux 2.
Other important commands:
Here are few more commands that you might find useful during your journey with apache web server.
1. Restarts Apache Web server
sudo systemctl restart httpd.service
2. Stop Apache Web Server
sudo systemctl stop httpd.service
3. Prevent Apache from loading on system boot
sudo systemctl disable httpd.service
4. Force Apache Web Server to refresh configuration files
sudo systemctl reload httpd.service
In this post we learnt to Install Apache Web Server on Amazon Linux 2 Instance. We learnt a bit about Linux 2 and Apache Web Server. Then, we connected to EC2 instance using browser based connect and we used a set of commands to install apache web server.
We also modified the security group of instance to allow web traffic using port 80 and 443. Finally we customized the apache default page with our own code and we reviewed the modified page.
Feel free to drop a comment in case you face any issue or just to share the feedback.
Enjoyed the content?
Subscribe to our newsletter below to get awesome AWS learning materials delivered straight to your inbox.
Don’t forget to motivate me by-
- Adding a comment below on what you liked and what can be improved.
- Follow us on
- Share this post with your friends