How to setup robust and secure server for web applications? This is the question. Most of the tutorials focus only on installation of basic tools with default repositiories - Apache, PHP, MySQL. There are lot more to take care about:)
In this series we are going through bunch of aspects of server. We are using CentOS 7 on all our servers and therefore this guide is mostly for CentOS users.
We have dedicated Ansible repository for purpose of this project. You can find it on GitHub. If you don't know what Ansible is, but you want to manage your server like a pro, read our tutorial about it here.
List of articles
Choosing the server
Tips for choosing the right server for your web application - should you use Cloud or not? What to pay attention to when you are choosing server for your application? Couple of links to tested server providers.
Configuration of CentOS
CentOS 7 is our OS of choice. There are couple of tutorials covering important aspects of configuration.
Mastering YUM - Yum is package manager on CentOS. First thing that you should do is to get rid of unnecessary packages from your system. What can be safely deleted and what can be safely updated. How to speed installing packages up and some nice commands.
Managing groups, users and sudoers - How to remove and create groups explained. Adding new user that will replace root account and make system more secure. For this user we will create SSH keys and we will add him to sudoers groups.
Setting up secure SSH - How to configure SSH daemon to be more bulletproof against hacker attacks.
Setting up iptables - How to configure iptables and block common attacks by creating strong ruleset.
Disabling transparent huge pages - How to disable Transparent Huge Pages (THP) on CentOS
NTP configuration
Timezone and NTP server - how to set timezone on your server and why it should be UTC? How to configure Chrony as your NTP server
Git installation
Install Git - install latest version of Git on your server
Apache HTTPD
Install and configure Apache httpd - guide how to install and configure latest version of Apache httpd. Security tips and performance tuning.
MySQL Community server
How to install MySQL on CentOS - full guide about MySQL and CentOS. How to install latest version. How to configure it and optimize for performance. How to create users and databases.