С чего начать: Базовая настройка CentOS 7
Представь, что ты только что получил чистый сервер с CentOS 7. Давай разберем, что нужно сделать в первую очередь, чтобы подготовить его к работе. Базовая настройка сервера CentOS 7 — это фундамент, на котором строится всё остальное.
1. Обновление системы и установка базовых утилит
Первым делом обновим репозитории и установим последние обновления безопасности.
sudo yum update -y
sudo yum install -y epel-release
sudo yum install -y wget curl vim htop net-tools
2. Настройка сетевого интерфейса и hostname
Для статического IP отредактируем конфиг сетевого интерфейса.
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
Пример конфигурации для статического IP:
TYPE="Ethernet"
BOOTPROTO="static"
DEFROUTE="yes"
NAME="eth0"
DEVICE="eth0"
ONBOOT="yes"
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=1.1.1.1
sudo systemctl restart network.
Установка и настройка веб-сервера Apache
Теперь перейдем к установке Apache на CentOS. Apache (httpd) — один из самых популярных веб-серверов в мире.
Пошаговая установка Apache
# Установка Apache
sudo yum install -y httpd
# Запуск и добавление в автозагрузку
sudo systemctl start httpd
sudo systemctl enable httpd
# Проверка статуса
sudo systemctl status httpd
Базовая конфигурация Apache
Основной конфигурационный файл находится в /etc/httpd/conf/httpd.conf. Давай настроим основные параметры.
# Открываем конфиг для редактирования
sudo vi /etc/httpd/conf/httpd.conf
# Пример изменений:
ServerAdmin admin@your-domain.com
ServerName your-server-ip:80
# Ограничим доступ к системным директориям
<Directory "/">
Options FollowSymLinks
AllowOverride None
</Directory>
# Настройки для основной директории
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
sudo firewall-cmd --permanent --add-service=http && sudo firewall-cmd --reload.
Установка и настройка PostgreSQL на CentOS
Установка PostgreSQL на CentOS — следующий важный шаг для развертывания приложений, требующих базы данных.
Установка PostgreSQL из официального репозитория
# Добавляем официальный репозиторий PostgreSQL
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# Устанавливаем PostgreSQL 13 (можно выбрать другую версию)
sudo yum install -y postgresql13-server postgresql13-contrib
# Инициализируем базу данных
sudo /usr/pgsql-13/bin/postgresql-13-setup initdb
# Запускаем и добавляем в автозагрузку
sudo systemctl start postgresql-13
sudo systemctl enable postgresql-13
Базовая настройка безопасности PostgreSQL
По умолчанию PostgreSQL использует peer-аутентификацию. Давай настроим пароль для пользователя postgres и разрешим удаленные подключения.
# Переключаемся на пользователя postgres
sudo -i -u postgres
# Заходим в psql
psql
# Меняем пароль для пользователя postgres
ALTER USER postgres WITH PASSWORD 'YourStrongPassword123!';
\q
exit
Теперь настроим удаленный доступ, отредактировав два файла:
# 1. Редактируем pg_hba.conf
sudo vi /var/lib/pgsql/13/data/pg_hba.conf
# Добавляем строку для MD5 аутентификации
# TYPE DATABASE USER ADDRESS METHOD
host all all 0.0.0.0/0 md5
# 2. Редактируем postgresql.conf
sudo vi /var/lib/pgsql/13/data/postgresql.conf
# Раскомментируем и меняем строку:
listen_addresses = '*'
sudo systemctl restart postgresql-13. И не забудь добавить правило в firewall для порта 5432.
Настройка TFTP-сервера на CentOS 7
CentOS 7 настройка TFTP сервера часто требуется для загрузки сетевых устройств, PXE-загрузки или обновления прошивок.
Установка и настройка TFTP-сервера
# Устанавливаем tftp-server и клиент
sudo yum install -y tftp-server tftp xinetd
# Копируем конфигурационный файл xinetd для TFTP
sudo cp /usr/lib/systemd/system/tftp.service /etc/xinetd.d/tftp
# Редактируем конфигурацию
sudo vi /etc/xinetd.d/tftp
В конфигурационном файле убедись, что установлены следующие параметры:
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot -c
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
Создание директории и настройка прав
# Создаем директорию для файлов TFTP
sudo mkdir -p /var/lib/tftpboot
sudo chmod -R 777 /var/lib/tftpboot
sudo chown -R nobody:nobody /var/lib/tftpboot
# Запускаем и включаем службы
sudo systemctl start xinetd
sudo systemctl enable xinetd
sudo systemctl start tftp
sudo systemctl enable tftp
# Открываем порт 69 в firewall
sudo firewall-cmd --permanent --add-port=69/udp
sudo firewall-cmd --reload
Оптимизация и безопасность сервера CentOS
После установки основных сервисов важно обеспечить безопасность и производительность системы.
Настройка брандмауэра (firewalld)
| Сервис | Порт | Команда для открытия |
|---|---|---|
| SSH | 22/tcp | firewall-cmd --permanent --add-service=ssh |
| HTTP | 80/tcp | firewall-cmd --permanent --add-service=http |
| HTTPS | 443/tcp | firewall-cmd --permanent --add-service=https |
| PostgreSQL | 5432/tcp | firewall-cmd --permanent --add-port=5432/tcp |
После добавления всех правил выполни:
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
Настройка SELinux для сервисов
SELinux может блокировать работу сервисов. Вот основные команды для диагностики и настройки:
- Проверить статус SELinux:
sestatus - Посмотреть логи нарушений:
sudo ausearch -m avc -ts recent - Для Apache:
sudo setsebool -P httpd_can_network_connect 1 - Для PostgreSQL:
sudo setsebool -P httpd_can_network_connect_db 1
Часто задаваемые вопросы (FAQ)
Как проверить, что Apache работает правильно?
Создай тестовый файл в директории /var/www/html/index.html и открой в браузере IP-адрес сервера. Также проверь логи: sudo tail -f /var/log/httpd/access_log и sudo tail -f /var/log/httpd/error_log.
PostgreSQL не принимает удаленные подключения, что делать?
1. Убедись, что в postgresql.conf установлено listen_addresses = '*'. 2. Проверь pg_hba.conf — должна быть строка разрешающая подключения с нужных адресов. 3. Убедись, что firewall разрешает порт 5432. 4. Перезапусти PostgreSQL: sudo systemctl restart postgresql-13.
TFTP-сервер не отвечает на запросы
1. Проверь, что службы xinetd и tftp запущены. 2. Убедись, что порт 69/udp открыт в firewall. 3. Проверь права на директорию /var/lib/tftpboot — они должны быть 777. 4. Посмотри логи: sudo journalctl -u xinetd и sudo tail -f /var/log/messages.
Как автоматизировать настройку серверов CentOS?
Для автоматизации используй Ansible, Chef или Puppet. Например, простой Ansible playbook может установить все необходимые пакеты, настроить конфиги и запустить службы. Это особенно полезно при настройке серверов CentOS в больших количествах.
Заключение
Мы рассмотрели полный цикл настройки сервера CentOS 7 — от базовой конфигурации до развертывания ключевых сервисов: веб-сервера Apache, СУБД PostgreSQL и TFTP-сервера для сетевой загрузки.
Ключевые моменты, которые нужно запомнить:
- Всегда начинай с обновления системы и настройки базовых параметров безопасности
- При установке Apache на CentOS не забудь настроить firewall и SELinux
- При установке PostgreSQL на CentOS удели особое внимание настройке аутентификации и удаленного доступа
- CentOS 7 настройка TFTP сервера требует внимания к правам доступа к директории и настройкам xinetd
- Регулярно проверяй логи и обновляй систему
Эти знания — фундамент для построения надежной и безопасной серверной инфраструктуры. Экспериментируй с настройками в тестовой среде, прежде чем применять их на production-серверах.