Певні системи управління контентом не працюють зі зв'язкою nginx і php-fpm , і вимагають саме веб-сервера apache з модулем php. Найчастіше причина цього - необхідність використання модуля rewrite для роботи сайту.
Однією командою встановіть базові компоненти. Залежно будуть встановлені автоматично.
# Aptitude install apache2-mpm-itk libapache2-mod-php5 php5-curl php5-mysqlnd php5-gd
Зміст статті:
- Настраиваем apache 1 Налаштовуємо apache
- Создание виртуального хоста 2 Створення віртуального хоста
- Тестирование настроенной связки 3 Тестування налаштованої зв'язки
налаштовуємо apache
Насамперед включите mod_rewrite. Він обов'язково знадобиться, якщо ваш сайт буде використовувати ЧПУ.
# A2enmod rewrite
Включати mod_php не буде потрібно, оскільки при установці він буде включений автоматично.
Також я рекомендую відключити наступні модулі, якщо вони вам не потрібні:
# A2dismod -f autoindex deflate setenvif status
Це дозволить вам скоротити витрату пам'яті.
Відкрийте файл /etc/apache2/conf-available/charset.conf і розкоментуйте наступний рядок:
AddDefaultCharset UTF-8
Дана директива вказує, що кодуванням за замовчуванням буде UTF-8. Якщо ваші сайти використовують іншу систему кодування, наприклад, CP-1251, то необхідно вказати її або відразу, або в параметрах віртуального хоста.
Збережіть зміни.
Відкрийте файл /etc/apache2/conf-available/security.conf і перетворіть рядок ServerTokens OS
в ServerTokens Prod
. Це приховає версію apache для клієнтів.
Рядок ServerSignature On
перетворіть в ServerSignature Off
.
Збережіть зміни.
Відкрийте для редагування файл /etc/apache2/apache2.conf і знайдіть параметр KeepAlive On
. Якщо після налаштування apache ви встановите nginx і будете проксіровать від нього запити, то цей параметр потрібно перетворити в KeepAlive Off
, оскільки цю функцію (підтримка з'єднання з клієнтом) буде виконувати nginx. Якщо ви плануєте використовувати apache в якості основного веб-сервера, цю функцію слід налаштувати.
MaxKeepAliveRequests
- максимальна кількість запитів на підтримку постійного з'єднання. Для більшої продуктивності рекомендується задати більшу. Для початку підійде значення за замовчуванням - 100.
KeepAliveTimeout
- час в секундах для очікування наступного запиту від того ж самого клієнта.
Збережіть зміни і запустіть apache.
Відкрийте файл /etc/apache2/mods-available/mpm_prefork.conf.
Параметри в цьому файлі слід вказувати в залежності від відвідуваності сайту і ресурсів сервера. Для початку спробуйте запустити сайт з мінімальною конфігурацією і поспостерігати за його роботою. Якщо виявиться, що ресурсів недостатньо, збільште їх.
Наведіть значення за умовчанням до такого виду:
StartServers 2 MinSpareServers 2 MaxSpareServers 6 MaxRequestWorkers 32 MaxConnectionsPerChild 0
StartServers
- кількість дочірніх процесів сервера, що створюються при запуску.
MinSpareServers
- мінімальна кількість простоюють процесів.
MaxSpareServers
- максимальна кількість простоюють процесів.
MaxRequestWorkers
- максимальна кількість з'єднань, які будуть оброблятися одночасно.
MaxConnectionsPerChild
- максимальна кількість з'єднань, обробивши які, дочірній процес буде завершений. Може бути корисний в боротьбі з витоками пам'яті.
Також збережіть зміни і перезапустити apache: service apache2 restart.
Створення віртуального хоста
Віртуальним хостом називається група конфігураційних параметрів для певного сайту. Вона включає в себе допустимий домен, email адміністратора, шляхи до лог-файлів, підключення оброблювачів php і т.д.
Мені подобається розміщувати конфігурації віртуальних хостів в одному файлі - apache2.conf. Якщо буде потрібно масово замінити якесь значення для всіх сайтів, то не потрібно буде відкривати по черзі всі конфігураційні файли віртуальних хостів.
В першу чергу вимкніть default site.
# A2dissite 000-default
В кінці файлу /etc/apache2/apache2.conf пропишіть наступну директиву:
<VirtualHost *: 80> </ VirtualHost>
У цій директиві групуються всі параметри сайту. Саме вона є віртуальним хостом. Наступні параметри прописуємо всередині цієї директиви.
ServerName
- ваш домен без www. (Наприклад, example.com.)
ServerAlias
- домен з www (www.example.com)
DocumentRoot
- каталог, де розташовуються файли вашого сайту. Наприклад, / var / www /.
ServerAdmin
- email адміністратора сайту.
ErrorLog
- місце розташування лог-файлу помилок. Як правило, вони розташовуються в каталозі / var / log / apache2 /. Для нього служить алиас $ {APACHE_LOG_DIR}. приклад:
ErrorLog $ {APACHE_LOG_DIR} / example.com .error.log
LogLevel warn
. Нічого не змінюємо, прописуємо так. Задає рівень логування помилок.
CustomLog
- Розташування і тип access-балки сайту. За замовчуванням тип - combined. Хоча існують і інші типи. приклад:
CustomLog $ {APACHE_LOG_DIR} /example.com.access.log combined
В обох прикладах example.com замінюємо на ваш домен без www.
Додаємо настройки для mpm-itk, оскільки справили установку саме цього модуля. Що він дає? Дозволяє обробляти php-скрипти від імені користувача - власника сайту.
<IfModule mpm_itk_module> AssignUserId user group </ IfModule>
Тут потрібно замінити user на ім'я користувача і group на ім'я групи, в чиїй домашній папці розміщені сайти.
Визначаємо настройки для директорій.
<Directory /> Options + FollowSymLinks AllowOverride None Require all granted </ Directory> <Directory / var / www> Options -Indexes + FollowSymLinks AllowOverride All Order allow, deny allow from all </ Directory>
Директорію / var / www замініть на ту, де розміщені ваші сайти.
Підключаємо обробник php-скриптів.
<IfModule mod_php5.c> php_admin_flag engine on php_admin_value open_basedir "/ var / www: / tmp / sessions: / tmp / upload_tmp" php_admin_value upload_tmp_dir / tmp / sessions php_admin_value session.safe_path / tmp / upload_tmp php_admin_value sendmail_path "/ usr / sbin / sendmail -t -i -fmail@example.com" </ IfModule>
open_basedir
як значення вказуємо через двокрапку каталоги, куди php матиме доступ: каталог з сайтом, каталог для зберігання файлів сесій, каталог для завантаження тимчасових файлів.
upload_tmp_dir
- каталог для зберігання тимчасових файлів. Коли ви завантажуєте картинку (або щось ще) на сайт, долучення спочатку поміщається в цей каталог, а потім в кінцеве місце розташування.
session.safe_path
- каталог для зберігання сесій.
З міркувань безпеки, ці два каталоги не слід тримати в загальнодоступному місці. Створіть їх в домашньому каталозі користувача, де розміщуються ваші сайти. Дозвольте доступ до них тільки цьому користувачеві (права 0750).
sendmail_path
- шлях до sendmail і параметри. Як правило, sendmail розташовується в каталозі / usr / sbin. Після параметра -f слід вказати email, не розділяючи пробілом.
Зберігаємо конфігураційний файл apache2.conf, перезапускаємо apache:
service apache2 restart
Тестування налаштованої зв'язки
В каталозі сайту створіть файл index.php. Пропишіть в ньому код:
<? Php phpinfo (); ?>
Після чого відкрийте ваш сайт в браузері і подивіться, чи відображається інформація про php. Якщо так, то сервер успішно налаштований і можна розмістити сайт в призначеному для нього каталозі.
В іншому випадку слід проаналізувати логи помилок, перевірити настройки в конфігураційних файлах.
Дякуємо. Мене звати Сергій. 65 років. уч. лікар. СПб. Завів VDS хостинг. На ньому встановився сайт: egmontgroup.ru
За Вашої статті: php7. Також postgreSQL 9.4 і Apache 2.4
В принципі нормально. На локальному комп'ютері Debian 8.6 jessey (на VDS те ж саме). Встановив все таке ж. Але вже дні і ночі не можу запустити Apache. В логах незрозуміло мені, на VDS нічого такого не було.
А як з VDS хостингу (там тільки ssh (я користуюся putty).) Скопіювати які - то конфіги, та й взагалі. ?
З повагою. Дякуємо. Мій мейл sergeygsd@yandex.ru
ще сподобалася перемикання роботи між версіями php.
Список це просто файли - копіюйте їх куди завгодно без проблем