
Installing and Configuring Linux on a Server
The book gradually begins with installing the operating system and becomes progressively more complex from chapter to chapter. The first chapter is dedicated to installing Linux. This is such a well-worn topic and an operation I have performed many times that I did not add anything to my notes from the first chapter. The installation is demonstrated using Astra and Ubuntu as examples.
Next, there are several chapters dedicated to getting familiar with Linux using system login as an example. Some attention is given to graphical shells, dark themes, and other visual aspects. Interestingly, quite a bit of focus is placed on customizing the OS appearance to match macOS styling: installing wallpapers, changing button designs, icons, cursors, menus, and other elements. The difference between hibernation and sleep modes is also mentioned, along with shutting down and rebooting via the console, as well as scheduled shutdowns. The author demonstrates how to install audio and video codecs, manage packages, and update the system.
Chapter 4 is dedicated to the command line and basic commands, such as viewing file contents, output redirection, creating, copying, and moving files and directories, searching files, comparing, replacing, and formatting. There are many commands, some of which I did not know and did not remember. Most of them are simply listed without in-depth explanations, so it's better to refer to other sources for details. The author mentioned graphical interfaces in the previous chapter but did not discuss different types of command-line shells. As in any Linux book, the distinction between regular users and superusers, as well as the symbols for hash (#) and dollar ($), is covered. A small section of the chapter is also dedicated to graphical editors—both built-in and those that need to be installed separately.
Chapter 5 covers configuring network interfaces. This primarily discusses physical setup: adapters, switches, twisted-pair cables, RJ-45 connectors. The author also mentions the tool for crimping twisted-pair cables and provides a crimping diagram. From the theoretical side, there are a few words about the ifconfig command and the DHCP server, which will be discussed in more detail later.
Basic Server Configuration
Chapter 6 covers routing and firewall configuration. I must admit that routing tables, commands for configuring them, and working with packets did not stick well in my memory. Perhaps because I am not a system administrator, and in backend or frontend development, you don't deal with this directly. The firewall is examined using iptables and ufw as examples.
Chapter 7 is dedicated to the SSH protocol. The author discusses the algorithms supported by OpenSSH (used in Linux): Blowfish, 3DES (Data Encryption Standard), IDEA (International Data Encryption Algorithm), and RSA (Rivest-Shamir-Adleman algorithm). Then, the SSH configuration file is analyzed with available comments. Remembering all the parameters is difficult and probably unnecessary. The chapter concludes with examples of copying files over SSH, as well as optimization and performance improvement.
Chapter 8 covers general web server administration topics. Here, the author takes a break from technical details and provides some theory, which I found important and interesting. He thoroughly explains the differences between physical, virtual, and dedicated servers and when each option is preferable. Spoiler: you most likely do not need a physical server. The pros and cons of each type are listed. For example, a physical server requires a second internet line, room ventilation, and security. The second part of the chapter focuses on server selection criteria. Here are a few items from the list:
- Tier certification level
- FSTEC licenses availability
- Physical server location (Federal Law 152)
- Basic internet channel speed
- Disk subsystem speed
- Billing and payments
- What a virtual kernel represents
Chapter 9 covers working with FTP. Before installing an FTP server, you need to choose the appropriate option. The author suggests: wu-ftpd (old but reliable), vsftpd (lightweight), pure-ftpd (compact), and proftpd (flexible and universal). Then, the installation of proftpd and its configuration analysis follow. The chapter concludes with a few words on FTP server optimization and acceleration.
Chapter 10 explains how DNS works. The author then configures a caching DNS server using BIND9 and unbound as examples. Configuration files are analyzed with comments.
Chapter 11 provides a more detailed explanation of the DHCP server, its purpose, and areas of application.
Chapter 12 covers Linux integration into a Windows infrastructure. Since I do not work with this, I did not add much to my notes.
Chapter 13 focuses on backup. Interesting points: The author clearly describes what needs to be backed up and in which cases. He mentions automated systems (Amanda, Bacula) but personally suggests a script that creates a backup and sends it via SSH.
Chapter 14 is dedicated to server security. It covers: local security (seals, BIOS protection), protection against network attacks, service protection (using fail2ban as an example), data encryption (e.g., eCryptfs). Different types of DDoS attacks (Smurf, ICMP-flood, UDP-flood) are also listed with a brief history of their emergence.
Dedicated Web Server Based on Linux
Chapter 15 focuses on setting up a web server. It does not cover Nginx but instead discusses Apache. In addition to Apache, the author also covers the setup and configuration of the MySQL database system, PHP (with all essential libraries), and, as an example, installs the Magento CMS.
Then comes the most interesting part: the author categorizes Apache directives into groups (a total of 11 groups) and briefly describes their purpose. Here are a few examples:
- Logging directives: ErrorLog, TransferLog, HostnameLookups.
- Access restriction directives: AllowOverride, Options, Limit.
- Performance management directives: StartServers, MaxSpareServers, MinSpareServers, as well as CacheNegotiatedDocs.
- Persistent connection directives: Timeout, KeepAlive, KeepAliveTimeout.
At the end of the chapter, there is a brief section on Apache server security. Since it's quite concise, only a small amount of information made it into my notes.
Chapter 16 covers SSL certificates. One interesting part is the different types of SSL certificates, which I hadn’t thought much about before: DV (Domain Validation), OV (Organization Validation), and EV (Extended Validation). The chapter explains what these certificates are, the formats they are stored in (PEM, DER, PKCS #7 / P7B, etc.), and how to convert them from one format to another. Additionally, Let's Encrypt is discussed as the simplest way to create a certificate.
Chapter 17 is about choosing and installing a server control panel. Both paid and popular panels (cPanel, DirectAdmin, ISPManager, Plesk) and free ones (Webmin, VestaCP, ISPConfig, Ajenti) are considered. Webmin is examined in more detail.
Chapter 18 is dedicated to improving server performance. It provides a clear checklist highlighting key areas to focus on when experiencing performance issues:
- Number of clients and server configuration
- Apache settings
- PHP version
- memory_limit directive
- max_execution_time directive
- Compression and caching settings
- Enabling server-side caching (using Memcached)
- CMS optimization
Each point is, of course, discussed in more detail.
Chapter 19 focuses on setting up email on a web server. The author installs the ssmtp package, registers an email account on Gmail, and configures the SMTP server.
Chapter 20 deals with common troubleshooting. The author first recommends installing Zabbix or at least Yandex.Metrica for monitoring statistics. Then, the most common errors are analyzed, including:
- Running out of disk space/inodes.
- Lack of other resources (memory, CPU, etc.).
- Incorrect server configuration.
This chapter also discusses log files and provides a list of utilities for monitoring various server metrics—from htop and atop to apachetop and jnettop.
In the final two chapters, aside from the author's financial calculations and philosophical discussions about whether a virtual or physical server is more cost-effective, one notable topic is creating your own Zoom-like service by installing and configuring the BigBlueButton application for online conferences.
Conclusion
Overall, I really liked the book—it is well-structured and easy to read. It contains many illustrations, comments, and explanations. It is suitable for both backend and frontend developers who want to gain deeper knowledge of system administration using Linux, following the author's journey from OS installation to server configuration and software setup.
The only downside is the sheer volume of information, which, unfortunately, is difficult to fully retain without hands-on practice.