Налаштування виділеного сервера для роботи сайту під керуванням HostCMS

Перші кроки

Отже, у нас є виділений сервер та дані для доступу до нього через ssh. Правило перше, воно головне, намагайтеся уникати постійної роботи від імені привілейованого користувача. Під час першого ж сеансу створіть власний обліковий запис та встановіть пароль. Наприклад, так:

Подальшу роботу будемо проводити вже від імені щойно створеного користувача.

Встановлення необхідного ПЗ

Як HTTP-сервер буде використовуватисяnginx. Думаю, що представлення він не потребує. Встановлюватимемо його з репозиторію, люб'язно розгорнутого командою розробників. Для цього необхідно отримати ключ, яким підписано інсталяційні пакети:

І оновити список джерел пакетів, додавши у файл/etc/apt/sources.listрядки:

Після цього оновлюємося та встановлюємо nginx:

Щоб задати ліміти на кількість файлів, що відкриваються користувачем http-сервера, потрібно додати в/etc/security/limits.confрядки:

Точні цифри слід вибирати, виходячи з конфігурації вашого сервера. Активується модуль лімітів додаванням наступного рядка/etc/pam.d/common-session:

Перевірити, що ліміти встановилися можна наступною командою:

HostCMS вимагає, щоб були включені такі модулі php: curl, gd, xslt і, природно, mysql. Крім того, зверніть увагу, що пакет php5-json не є віртуальним і його потрібно встановлювати окремо. Також підключимо модуль кешування опкода xcache. Як SAPI (режим запуску інтерпретатора) будемо використовувати PHP-FPM, однак, щоб мати можливість виконувати деякі скрипти за розкладом буде встановлений ще й PHP-CLI.

Установка MySQL досить проста. Кілька разів установникзапросить у вас пароль для root'а сервера баз даних, можете сміливо залишати його порожнім - ми змінимо його пізніше за допомогою утиліти mysql_secure_installation. Під час її запуску дайте відповідь, що хочете змінити пароль root'a, видалити тестову БД та тестових користувачів та оновити права на таблиці службової БД.

Детально почитати про налаштування mysql-сервера можна тут. Стаття добре написана, тому не бачу сенсу дублювати сюди інформацію.

Налаштування завантаження файлів

Як протокол передачі файлів я пропоную використовуватиSSH FTP (SFTP). По-перше, він безпечніший за звичайний ftp, оскільки дані будуть передаватися в зашифрованому вигляді. По-друге, не доведеться встановлювати додаткове програмне забезпечення: все що потрібно — ssh-сервер — у нас вже є. А мінусів ніяких - всі сучасні IDE і клієнти завантаження даних можуть працювати з цим протоколом. Щоб визначити, кому можна підключатися через sftp, створимо додаткову групу користувачів, наприклад,sftp:

І активуємо передачу даних, додавши в кінець файлу/etc/ssh/sshd_configрядки:

Підготовка файлової системи

Традиційно файли, що стосуються веб-сайтів, розміщуються в каталозі/var/www/. І ми не відступатимемо від цього негласного правила. Створимо папку для віртуальних хостів та майбутню точку монтування швидкого кешу:

Потім вкажемо, що при наступному завантаженні в цю папку буде змонтовано tmpfs. Додамо до/etc/fstab:

Налаштування віртуальних хостів

Якщо ви плануєте розгорнути на своєму сервері кілька сайтів під керуванням HostCMS, то описану нижче процедуру доведеться повторити кілька разів. У цьому випадку є сенс спробувати автоматизувати процес запровадження нового хоста. Раджу з цією метою звернутиувагу на невеликий набір скриптів, описаних у цій статті, та «допиляти» їх під себе.

Заклад користувача хоста

З міркувань безпеки всі файли, пов'язані з нашим сайтом, належать спеціально заведеному в системі користувачеві. Підключення по sftp і виконання PHP-скриптів відбуватиметься від його імені. Щоб було простіше, його можна назвати на ім'я свого сайту:

Для коректної роботи chroot'а потрібно зробити root'a власником домашнього каталогу цього користувача:

Заклад пулу PHP-FPM
Створення конфігу віртуального хоста

А потім підключимо його в конфізі віртуального хоста.

Створення бази даних сайту

Зараз майже все готове, залишилося лише розгорнути базу даних та створити користувача, від імені якого здійснюватиметься до неї підключення. Для цього потрібно в консолі mysql виконати декілька простих команд:

Налаштування резервного копіювання та ротації логів

Для здійснення ротації логів нам потрібно лише створити правильний конфіг для утиліти logrotate.

Замість ув'язнення

Хардкорна конфа за С++. Ми запрошуємо лише профі.