Налаштування веб-сервера на Centos 7 (Apache PHP 5

Про встановлення та первинне налаштування Centos 7 можна прочитати у статті «Встановлення та налаштування CentOS 7». Або можна замовити готовий віртуальний сервер на будь-якому хостингу з уже встановленим шаблоном «чистий Centos 7», я рекомендую хостинг ruweb.net.

Сервер конфігуруємо таким чином, щоб на 80 порту висів nginx і віддавав всю статику, а запити на динаміку віддавав апачу, який буде знаходитися на порту 8080. Як сервер MySQL будемо використовувати MariaDB, це повністю сумісний аналог MySQL, але за деякими операціями MariaDB десятки разів продуктивніше.

Початкові налаштування Centos 7

Підключаємо репозиторій EPEL

Список підключених репозиторіїв можемо переглянути командою:

Для спостереження за завантаженням та продуктивністю сервера встановлюємо ATOP (викликається командоюatop ):

Встановлення Apache на Centos 7

Apache ми будемо використовуватися для віддачі динамічного вмісту, безпосередньо з клієнтом буде спілкуватися nginx.

Встановлення apache з репозиторію:

У файлі конфігураціїhttpd.conf, який знаходиться на шляху/etc/nginx, змінюємо порт на 8080

Запускаємо сервіс та налаштовуємо його для автозапуску

Установка PHP 5.6 з оптимізацією opcache

Встановлюємо PHP 5.6 c opcache та модулем для роботи з mysqlnd

Для перевірки роботи Apache та PHP тимчасово відкриваємо порт 8080 для зовнішніх підключень (після перезавантаження він буде знову закритий). У Centos 7 замість звичної всім IPtables встановлено більш сучасну службу файрвола Firewalld.

У папці /var/www/html створюємо файл phpinfo.php з таким вмістом.

Установка MySQL (MariaDB)на Centos 7

MariaDB є повністю сумісним і продуктивнішим аналогом MySQL, тому я на своїх серверах встановлюю саме її і проблем поки не зустрічав.

Для налаштування безпеки MySQL запускаємо відповідний скрипт

У процесі виконання скрипту Вам буде поставлено кілька простих питань та будуть зроблені основні налаштування безпеки.

Установка nginx на Centos 7

Дописуємо до конфігураційного файлу/etc/nginx/nginx.conf у секціїlocation наступні рядки

Запускаємо nginx та налаштовуємо його автозапуск

Тепер нам необхідно на файрволі відкрити 80 порт (http), щоб наш сервер став доступним зовні.

Ключ—permanent вказує на те, що порт відкривається на постійній основі і після перезавантаження залишиться відкритим.

Налаштування SELinux

У Centos 7 багато зроблено для підвищення безпеки, проте це іноді додає головного болю. Зокрема, Centos 7 за замовчуванням включений SELinux. Швидше за все, сервер буде працювати якось не так і у файлі/var/log/nginx/error.log видавати помилку:

Для простоти SELinux можна просто вимкнути. Для цього знаходимо файл/etc/sysconfig/selinux, виправляємо в ньому відповідний рядок наSELINUX=disabled і перезавантажуємося.

Але чинити таким варварським способом я вважаю неправильно. Краще не порушувати безпеку та використовувати політики SELinux для nginx:

Важливо:У будь-якій незрозумілій ситуації, коли все має працювати, але не працює спробуйте відключити SELinux, можливо проблема в ньому.

Налаштування сервера apache+nginx для обслуговування веб-домену

Налаштування нашого сервера для обслуговування веб-домену складається з двох простих кроків:

  • написання конфігураційногофала apache для домену
  • написання конфігураційного фалу nginx для домену

Припустимо, нам необхідно зробити, щоб сервер обслуговував доменmsadmin.ru. У папці/etc/httpd/conf.d створюємо файлmsadmin.ru.conf з таким вмістом:

У папці/etc/nginx/conf.d створюємо файл з таким же ім'ямmsadmin.ru.conf з таким вмістом:

Створюємо папку/var/www/msadmin.ru і розташовуємо в ній файли нашого сайту. Після створення або внесення змін до файлів конфігурації необхідно перезапустити сервіси.

Вітаємо, налаштування сервера завершено!

Установка phpMyAdmin

Після встановлення phpMyAdmin доступний тільки для локальної роботи, для зручності необхідно дозволити йому працювати із зовнішньою мережею. Для цього вносимо наступні зміни до конфігураційного файлу/etc/httpd/conf.d/phpMyAdmin.conf :

Не забуваємо перезапустити apache і дозволити доступ до порту 8080 на постійній основі (бо apache у нас встановлений на порту 8080):