Site icon BDWEBIT Blog

How to Create a Web Server in Linux Terminal? Step-by-Step guide

How to Create a Web Server in Linux Terminal

How to create a web server in linux terminal? Creating a web server in Linux via the terminal is a fundamental task for developers and system administrators who want to host web applications or static websites. This guide will walk you through the process of setting up a simple web server using Linux commands and tools such as Nginx and Apache. Whether you’re new to Linux or looking to enhance your skills, this tutorial provides clear, step-by-step instructions to get your server up and running.

Why Use Linux for Web Servers?

Linux is one of the most popular operating systems for hosting web servers due to its flexibility, security, and cost-effectiveness. It’s widely supported by powerful server software such as Apache, Nginx, and Lighttpd. Linux’s command-line interface (CLI) allows users to have granular control over their server, making it an ideal choice for developers who prefer a hands-on approach.

Prerequisites

Before you start setting up your web server, you will need:

If you’re new to Linux or unsure how to access your terminal, this guide assumes you have either a desktop Linux installation or access to a VPS (Virtual Private Server) through SSH.

Step 1: Update Your System

Before installing any software, it’s important to ensure your system is up to date. Run the following commands to update your package manager and install any pending updates:

bash   Copy code
sudo apt update
sudo apt upgrade

For distributions like CentOS, use:

bash   Copy code
sudo yum update

This will ensure that your system has the latest security patches and software packages.

Step 2: Install Apache or Nginx

You have two primary options when setting up a web server: Apache and Nginx. Both are popular, but the choice depends on your project requirements.

Installing Apache

Apache is one of the most famous web server applications. To install it, run:

bash   Copy code
sudo apt install apache2

Once installed, you can begin the Apache service:

bash   Copy code
sudo systemctl start apache2

To make sure it starts on boot, enable the service:

bash   Copy code
sudo systemctl enable apache2

Verify that Apache is running:

bash   Copy code
sudo systemctl status apache2

If you see “active (running)” in the output, Apache is successfully installed.

Installing Nginx

Nginx is another excellent choice for a web server, known for handling high-traffic sites more efficiently. To install Nginx, run:

bash   Copy code
sudo apt install nginx

Start the Nginx service:

bash   Copy code
sudo systemctl start nginx

Enable the service to start on boot:

bash   Copy code
sudo systemctl enable nginx

Check the service status to confirm it is running:

bash   Copy code
sudo systemctl status nginx

Once your web server (Apache or Nginx) is installed and running, you should be able to access the default web page by typing your server’s IP address in a web browser.

Step 3: Allow Web Traffic Through the Firewall

If you’re running a firewall on your server, you need to allow HTTP (port 80) and HTTPS (port 443) traffic.

For UFW (Uncomplicated Firewall), use these commands to allow traffic:

bash   Copy code
sudo ufw allow 'Apache Full'

Or, for Nginx:

bash   Copy code
sudo ufw allow 'Nginx Full'

You can then check the firewall status with:

bash   Copy code
sudo ufw status

This ensures that your web server can be accessed from the outside world.

Step 4: Test Your Web Server

To confirm that your web server is working, open a web browser and enter your server’s IP address. You should see the default “It works!” page for Apache or welcome page for Nginx.

To find your server’s IP address, run:

bash   Copy code
ip addr

Look for the line starting with inet under your network interface (usually eth0 or ens3).

Step 5: Hosting Your Website

Now that your server is running, you can serve your own content. The default directory for website files is located at:

You can replace the default index file with your own HTML file. For example:

bash   Copy code
sudo nano /var/www/html/index.html

Add your HTML code, save, and exit. Refresh your browser, and you should see your custom webpage.

Step 6: Configuring Virtual Hosts (Optional)

If you plan to host multiple websites on the same server, you need to configure virtual hosts (Apache) or server blocks (Nginx).

Apache Virtual Hosts
To set up a virtual host for a domain (e.g., example.com), create a configuration file:

bash   Copy code
sudo nano /etc/apache2/sites-available/example.com.conf

Add the following configuration:

apache   Copy code
<VirtualHost *:80>
ServerAdmin admin@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Save the file and enable the virtual host:

bash   Copy code
sudo a2ensite example.com.conf
sudo systemctl reload apache2

Nginx Server Blocks

For Nginx, create a server block configuration:

bash   Copy code
sudo nano /etc/nginx/sites-available/example.com

Add this configuration:

nginx   Copy code
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/public_html;
index index.html;
}

Save the file, then enable the server block:

bash   Copy code
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo systemctl reload nginx

Step 7: Secure Your Web Server with SSL (Optional)

It’s highly recommended to secure your web server using HTTPS. Let’s Encrypt offers free SSL certificates that you can easily install using Certbot.

To install Certbot for Apache:

bash   Copy code
sudo apt install certbot python3-certbot-apache
sudo certbot --apache

For Nginx:

bash   Copy code
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx

Follow the prompts to install and configure your SSL certificate.

Conclusion

How to create a web server in linux terminal? By following these steps, you now have a fully functioning web server running on Linux. Whether you use Apache or Nginx, you can host websites, serve applications, and even expand your server’s capabilities with virtual hosts or server blocks.

Exit mobile version