Налаштування виділеного сервера для роботи сайту під керуванням 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.
Замість ув'язнення
Хардкорна конфа за С++. Ми запрошуємо лише профі.