Jinal Desai

My thoughts and learnings

Linux Server Administration

Linux Server Administration
  1. Introduction to Linux
  2. Getting Started with Linux
  3. Linux File System
  4. Users, Groups, and Permissions
  5. Linux Processes and Services
  6. Package Management in Linux
  7. Text Editors in Linux
  8. Shell Scripting Basics
  9. Linux Networking Fundamentals
  10. File and Data Backup
  11. System Administration Tasks
  12. Security in Linux
  13. Advanced Linux Shell Scripting
  14. Advanced Linux Networking
  15. Linux Server Administration
  16. Linux Virtualization and Containers
  17. Linux Cloud Services and Hosting
  18. Linux in DevOps: Empowering Modern Development Practices
  19. Mastering Linux Troubleshooting: Solving Common Challenges
  20. Mastering Linux: Advanced Tips and Tricks for Ultimate Productivity

Welcome to the fifteenth article in our Linux Fundamentals series! In this installment, we will explore the critical realm of Linux Server Administration. Effective server administration is vital for managing and maintaining Linux servers, whether you’re setting up a web server, configuring a database server, establishing a file server, or managing services and scheduled tasks. In this comprehensive guide, we’ll delve deeply into these topics, providing you with the knowledge needed to effectively administer Linux servers. 

Introduction

Linux server administration is the art and science of configuring, securing, and optimizing Linux servers to ensure they perform their designated tasks efficiently and reliably. Whether you’re a system administrator or a DevOps engineer, these skills are crucial for building and maintaining robust server environments.

Setting Up a Web Server (Apache or Nginx)

Installing Apache (httpd)

To set up the Apache web server on a Linux system, you can use your package manager. For example, on CentOS/RHEL:

sudo yum install httpd

On Debian/Ubuntu:

sudo apt install apache2

Configuring Apache

After installing Apache, you can start and enable it to run at boot:

sudo systemctl start httpd     # Start Apache
sudo systemctl enable httpd    # Enable Apache to start on boot

Creating a Simple HTML Page

Create a basic HTML file in the document root (e.g., `/var/www/html/index.html`):

<!DOCTYPE html>
<html>
<head>
    <title>Welcome to My Website</title>
</head>
<body>
    <h1>Hello, World!</h1>
</body>
</html>

Nginx Configuration

If you prefer Nginx:

– Install Nginx with your package manager.
– Start and enable Nginx: `sudo systemctl start nginx` and `sudo systemctl enable nginx`.

Configuring a Database Server (MySQL or PostgreSQL)

MySQL Installation

To install MySQL (or MariaDB) on CentOS/RHEL:

sudo yum install mariadb-server mariadb

On Debian/Ubuntu systems:

sudo apt install mariadb-server mariadb-client

PostgreSQL Installation

For PostgreSQL on CentOS/RHEL:

sudo yum install postgresql-server postgresql

On Debian/Ubuntu:

sudo apt install postgresql postgresql-client

Database Configuration

– Start the database service: `sudo systemctl start mariadb` or `sudo systemctl start postgresql`.
– Enable it to start on boot: `sudo systemctl enable mariadb` or `sudo systemctl enable postgresql`.

Database Security

Use the security scripts (`mysql_secure_installation` for MySQL or PostgreSQL’s built-in tools) to secure your database server.

Setting Up a File Server (Samba)

Samba Installation

Install Samba for file sharing:

sudo apt install samba

Creating a Shared Folder

Create a directory to be shared, e.g., `/srv/share`:

sudo mkdir -p /srv/share

Samba Configuration

Edit the Samba configuration file (`/etc/samba/smb.conf`) to define shares:

[srv]
   comment = Shared Folder
   path = /srv/share
   browseable = yes
   read only = no
   guest ok = yes

Restart Samba

Restart the Samba service:

sudo systemctl restart smbd

Managing Services and Cron Jobs

Managing Services

– Start a service: `sudo systemctl start service_name`.
– Stop a service: `sudo systemctl stop service_name`.
– Enable a service at boot: `sudo systemctl enable service_name`.
– Disable a service at boot: `sudo systemctl disable service_name`.

Cron Jobs

Edit the crontab file for scheduling tasks:

crontab -e

For example, to run a script every day at 2 AM:

0 2 * * * /path/to/script.sh

Conclusion

Linux Server Administration is a foundational skill for anyone managing Linux servers. In this article, we’ve covered the essential tasks, including Setting Up a Web Server (Apache or Nginx), Configuring a Database Server (MySQL or PostgreSQL), Setting Up a File Server (Samba), and Managing Services and Cron Jobs. These skills are vital for creating, maintaining, securing, and optimizing Linux servers, ensuring they perform their designated tasks efficiently and reliably.

By mastering Linux server administration, you’ll gain the ability to create versatile and robust server environments, whether for hosting websites, managing databases, or providing file sharing services. Stay tuned for more enlightening articles in our Linux Fundamentals series, where we continue to explore essential topics for Linux users and administrators, empowering you to excel in the Linux ecosystem.

Leave a Reply

Your email address will not be published. Required fields are marked *