Статьи

Налаштовуємо веб-сервер на базі Apache в Debian / Ubuntu Server

  1. установка Apache
  2. установка PHP
  3. установка MySQL

Веб-сервер Apache без перебільшення можна назвати стандартом де-факто в інтернет Веб-сервер Apache без перебільшення можна назвати стандартом де-факто в інтернет. Більшість популярних систем управління сайтами та інших веб-додатків розробляються таким чином, щоб працювати з даними веб-сервером "з коробки". Тому, якщо вам потрібен веб-сервер широкого застосування, то Apache буде кращим вибором. У даній статті ми розповімо, як встановити та налаштувати повноцінний веб-сервер на базі Debian / Ubuntu Server.

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

Крім самого веб-сервера нам знадобиться система управління базами даних, в даній галузі стандартом де-факто давно є MySQL, і один з скриптових мов для роботи веб-додатків, на сьогоднішній день пальму першості впевнено тримає PHP. Всі разом утворює класичну зв'язку, іменовану ще LAMP-сервер, абревіатура розшифровується як: Linux - Apache - MySQL - PHP.

Для установки ми будемо використовувати платформу Debian / Ubuntu. Системи, в залежності від релізу, відрізняються набором ПО, але все викладене нижче буде однаково можна застосувати до будь-якої з них. Існуючі відмінності будуть обговорені окремо. На момент написання статті актуальні наступні релізи систем і версії ПЗ:

  • Debian 8 Jessie: Apache 2.4.10, PHP 5.6.7, MySQL 5.5.43
  • Debian 7 Squeeze: Apache 2.2.22, PHP 5.4.39, MySQL 5.5.43
  • Ubuntu Server 14.04 LTS: Apache 2.4.7, PHP 5.5.9, MySQL 5.5.43
  • Ubuntu 12.04 LTS: Apache 2.2.22, PHP 5.3.10, MySQL 5.5.43

Всі вищевказані випуски містять відносно сучасні версії ПЗ, але є деякі особливості. Так що входить до складу Ubuntu 14.04 і Debian 8, Apache 2.4 має досить серйозні відмінності від Apache 2.2 і не всі CMS (системи управління контентом, "движки") і веб-додатки вміють працювати з ним, особливо це стосується старих версій. Так, наприклад, ви не зможете використовувати Apache 2.4 для веб-доступу до баз 1С: Підприємство. Тому, якщо ви вирішили вибрати версію 2.4 - уточніть сумісність з нею всіх запланованих до розміщення CMS і веб-додатків.

Крім того, MySQL зі складу Ubuntu Server 12.04 / 14.04 не працює всередині контейнерів OpenVZ, які широко використовуються для надання послуги VPS. Проблема вирішується заміною MySQL зі сховищ на версію від MySQL Community (розробники) або один з ФОРКОМ, наприклад, MariaDB.

З урахуванням вищесказаного оптимальним вибором нам представляється використання в якості платформи веб-сервера Debian 7, як найбільш сумісну з існуючими веб-додатками і не має серйозних проблем.

Ми не будемо зупинятися на установці і підготовці серверної ОС, більш докладно ви можете ознайомитися з цим процесом в наших статтях для Debian і Ubuntu Server . Також не забудьте правильно налаштувати Мова та регіональні стандарти системи. Всі наведені нижче дії слід виконувати з правами суперкористувача, наприклад, за допомогою команди sudo.

установка Apache

Установка веб-сервера гранично проста:

apt-get install apache2

Для перевірки його роботи наберіть в браузері IP-адреса сервера, і ви побачите стандартну сторінку заглушку:

Для Apache 2 Для Apache 2.4 вона виглядає дещо інакше, але сенс від цього не змінюється.

Налаштування сервера містяться в /etc/apache2/apache2.conf, до якого підключаються додаткові файли з директорій mods-enabled і sites-enabled. При цьому ніхто не заважає вам внести всі зазначені налаштування безпосередньо в apache2.conf - все буде працювати, але це різко знижує зручність адміністрування, так як вимагає постійної правки основного файлу конфігурації, в той час як настройки в зовнішніх файлах легко включаються і відключаються за допомогою спеціальних інструментів.

З цією метою каталоги mods-enabled і sites-enabled не містять файлів конфігурації, а тільки символічні посилання на директорії mods-available і sites-available, де слід розташовувати самі файли. Як зрозуміло з назв, в даних каталогах знаходяться налаштування модулів і віртуальних хостів. Якщо з модулями раз доводиться мати рідко, то управляти таким чином віртуальними хостами, тобто сайтами, дуже зручно.

Детально про віртуальних хостах і розташуванні вмісту сайту ми вже писали в статті по Lighttpd , Все сказане там справедливо і для нашого випадку. Ви вільні вибрати будь схему розміщення даних, ми ж вважаємо за краще зберігати вміст сайтів всередині / var / www в папках з ім'ям домена.

Наступне питання, яке слід вирішити, це права доступу до файлів і папок сайту. За замовчуванням їх власником повинен бути веб-сервер (користувач і група www-data), в іншому випадку скрипти можуть працювати несподіваним чином чи не працювати взагалі. Більш зручно і безпечно запускати вміст сайтів від імені користувача, а не веб-сервера. Для цього встановимо наступний пакет:

apt-get install apache2-mpm-itk

В Ubuntu 14.04 при установці даного пакету ви можете зіткнутися з помилкою:

dpkg: error processing package apache2-mpm-itk (--configure):
проблеми залежностей - залишати не налаштованим

це відомий баг , Для його виправлення виконайте:

a2dismod mpm_event
apt-get install -f

Якщо ми заглянемо в папку sites-enabled, то побачимо там вже готову конфігурацію для сайту за замовчуванням, тобто того, що буде показано при наборі IP-адреси сервера. Дана настройка вказує на папку / var / www або / var / www / html для Apache 2.4, де розташована сторінка заглушка. Після того як ви додасте свої сайти, виводитися буде перший за списком сайт.

Припустимо ми хочемо розмістити на нашому сервері вміст сайту example.com, спочатку створимо необхідні директорії і зробимо їх власником користувача, який буде працювати з сайтом:

mkdir /var/www/example.com
chown andrey: andrey /var/www/example.com

Тепер створимо файл віртуального хоста і приступимо до його заповнення:

touch /etc/apache2/sites-available/example.com

Для Apache 2.4 файли конфігурації обов'язково повинні мати розширення .conf, тому команда буде виглядати наступним чином.

touch /etc/apache2/sites-available/example.com.conf

Усередині розмістіть наступний текст:

<VirtualHost 1.2.3.4:80>
ServerName example.com
ServerAdmin [email protected]
ServerAlias ​​www.example.com
DocumentRoot /var/www/example.com
CustomLog $ {APACHE_LOG_DIR} /example.com.access.log combined
ErrorLog $ {APACHE_LOG_DIR} /example.com.error.log
AssignUserID andrey andrey
<Directory /var/www/example.com>
Options -Includes -Indexes -ExecCGI
AllowOverride All
</ Directory>
</ VirtualHost>

Розберемо вміст більш докладно. Починається секція віртуального хоста з її визначення <VirtualHost 1.2.3.4:80>, де вказується IP-адреса і порт, на якому даний хост працює, якщо ви хочете приймати з'єднання на всіх мережеві інтерфейси, то замість адреси поставте "зірочку" - *. Всередині секції розташовуються такі директиви:

  • ServerName - ім'я віртуального хоста, повинен мати значення повного доменного імені (FQDN), в нашому випадку example.com, визначає, яке доменне ім'я обслуговує даний віртуальний хост.
  • ServerAdmin - контактна адреса електронної пошти адміністратора домену, включається в повідомлення про помилки веб-сервера, рекомендується завести для цих цілей окремий ящик.
  • ServerAlias - алиас імені хоста, обов'язково значення www.example.com, щоб ваш сайт працював як з www, так і без.
  • DocumentRoot - коренева папка віртуального хоста, вказуємо директорію розміщення сайту, тобто /var/www/example.com
  • CustomLog - ім'я та розташування балки доступу, змінна $ {APACHE_LOG_DIR} вказує на стандартну директорію логів веб-сервера, це дозволяє використовувати стандартний механізм ротації логів для всіх сайтів, в імені балки рекомендуємо вказувати ім'я хоста, щоб відразу було зрозуміло де який лог. Не забудьте в кінці опцію combined, дана опція вказує формат балки і задається в apache2.conf.
  • ErrorLog - ім'я та розташування балки помилок, повністю аналогічний балці доступу, але не потрібно вказувати формат журналу.
  • AssignUserID - ім'я і група користувача (через пробіл) від імені яких буде працювати даний віртуальний хост, задається тільки якщо встановлений apache2-mpm-itk, в іншому випадку ця директива не потрібна.

Всередині секції віртуального хоста розміщуємо ще одну секцію <Directory /var/www/example.com>, яка включає директиви, що застосовуються ні до хосту, а до каталогу, в нашому випадку до кореневого каталогу віртуального хоста. Там розташовується директива Options, яка містить наступні опції (перед кожною з яких ставиться + або -, дозволяючи або забороняючи опцію):

  • ± Includes - дозволяє / забороняє SSI (Server Side Includes - включення на стороні сервера), в нашому випадку вимкнено з метою безпеки. Має сенс включати тільки в тому випадку, якщо ваш сайт явно вимагає даної опції.
  • ± Indexes - дозволяє / забороняє показувати вміст каталогу при відсутності індексного файлу, відключено в цілях безпеки.
  • ± ExecCGI - дозволяє / забороняє виконання сценаріїв CGI, відключаємо в цілях безпеки.

За нею йде директива AllowOverride, яка встановлює використання директив з файлів .htaccess, за замовчуванням сервер встановлює для / var / www дану директиву в None, що забороняє використовувати директиви .htaccess у всіх вкладених директоріях. Для того щоб дозволити використання директив .htaccess встановіть цю директиву в All, що дозволить використовувати в .htaccess будь директиви.

Цим список доступних опцій (як і директив) не вичерпується, але їх розгляд виходить за рамки цієї статті і буде розглянуто в окремому матеріалі. Ви можете самостійно ознайомитися з ними в офіційної документації .

Закриваємо відкриті секції: </ Directory> і </ VirtualHost>, потім зберігаємо файл. Конфігурація віртуального хоста готова.

Щоб включити сайт необхідно зробити символьне посилання на файл конфігурації в каталозі sites-enabled, а, щоб вимкнути - видалити це посилання. Це можна зробити вручну, за допомогою команди ln -s, або використовувати спеціальну утиліту apache:

a2ensite example.com

Дана команда включить сайт, для виключення введіть:

a2dissite example.com

В якості опції configure приймає ім'я конфігураційного файлу з sites-available, в разі Apache 2.4 без розширення. Після кожного такого дії веб-сервер необхідно перезапустити:

service apache2 reload

Щоб перевірити роботу віртуального хоста розмістіть в його кореневої директорії будь html-файл і зверніться до сервера по імені домена (при цьому А-запис домена повинна бути налаштована і вказувати на ваш веб-сервер).

Наприклад, створимо індексний файл:

touch /var/www/examlpe.com/index.html

І розмістимо в ньому рядок:

<Body> <h1> OK! </ H1> </ body>

У підсумку в браузері ви повинні побачити наступне:

установка PHP

Якщо веб-сервер був потрібен вам для розміщення статичного вмісту або сторонніх веб-додатків, наприклад, публікації баз 1С: Підприємства, то далі можна не читати. Але якщо ви збираєтеся створити сайт на основі популярних CMS - вам буде потрібна підтримка скриптового мови PHP, на базі якого розроблено більшість сучасних "двигунів".

Важливо! У сучасних дистрибутивах використовується більш нова версія PHP7, щоб працювати з новою версією мови замість php5 в наведених нижче командах слід вказувати php7.0, наприклад, замість php5-imagick потрібно набрати php7.0-imagick

Виконаємо команду:

apt-get install php5

Буде встановлено сам інтерпретатор і необхідні для роботи з веб-сервером модулі. Модулі дозволяють гнучко змінювати функціональність PHP, управління модулями здійснюється аналогічно Apache, коли конфігурації модулів розташовуються в одній директорії, а для їх підключення робиться символьне посилання в іншу.

За замовчуванням PHP встановлюється з базовим набором модулів, який задовольняє більшість потреб, однак застосовується вами CMS може вимагати додаткових модулів, які потрібно буде встановити окремо.

Наприклад, для роботи з графікою вам буде потрібна підтримка графічної бібліотеки GD2, тому встановимо відповідний модуль:

apt-get install php5-gd

Після чого не забудьте перезапустити веб-сервер:

service apache2 reload

До речі, GD2, на наш погляд не найкращий вибір, в актив бібліотеки можна записати низьке споживання ресурсів і високу швидкість роботи, але за якістю роботи з зображеннями вона поступається альтернативної утиліті imagemagick, іноді значно. Тому має сенс встановити обидві утиліти і вибрати ту, робота якої найбільш вам підійде. Якщо ресурси сервера дозволяють, то переважно використовувати imagemagick.

Встановимо утиліту і модуль PHP для неї:

apt-get install imagemagick php5-imagick

Для перевірки роботи PHP створимо в кореневій директорії сайту спеціальний скрипт:

touch /var/www/examlpe.com/info.php

І внесемо в нього наступний текст:

<? Php
phpinfo ();
?>

Тепер наберемо в браузері http://example.com/info.php, в результаті роботи даного скрипта ви побачите стандартну сторінку з інформацією про PHP, встановлених модулях, настройках і т.д.

д

установка MySQL

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

Встановимо сервер баз даних і модуль PHP для роботи з ним:

apt-get install mysql-server php5-mysql

В процесі установки вам буде запропоновано ввести пароль для суперкористувача MySQL (root), якого не слід плутати з суперкористувачем системи.

Для зручного управління базами даних має сенс встановити phpMyAdmin - зручну веб-утиліту для управління сервером MySQL: Для зручного управління базами даних має сенс встановити phpMyAdmin - зручну веб-утиліту для управління сервером MySQL:

apt-get install phpmyadmin

Інсталятор утиліти вміє автоматично налаштовувати популярні веб-сервера Apache і Lighttpd, потрібний сервер слід вказати при установці:

Веб-інтерфейс утиліти буде доступний за адресою http://example.com/phpmyadmin, для входу слід використовувати облікові дані користувача MySQL, в нашому випадку це root (інших ще немає) з паролем, який ми вказали під час установки MySQL.

В Ubuntu 14.04 ми зіткнулися з невеликою проблемою, утиліта повідомила нам, що розширення mcrypt, не знайдено, хоча відповідний модуль PHP був встановлений серед залежностей.

04 ми зіткнулися з невеликою проблемою, утиліта повідомила нам, що розширення mcrypt, не знайдено, хоча відповідний модуль PHP був встановлений серед залежностей

Перевіримо. У /etc/php5/apache2/conf.d посилання на даний модуль відсутня, в той час як в / etc / php5 / mods-available потрібний файл є. Отже, модуль встановлений, але, з якоїсь причини, не підключений. Можливо це пов'язано з Apache 2.4 і тоді подібна ситуація може мати місце і в Debian 8.

Однак нічого страшного не сталося, все що нам потрібно - це підключити модуль, створивши символьне посилання:

ln -s /etc/php5/mods-available/mcrypt.ini /etc/php5/apache2/conf.d/20-mcrypt.ini

ini

Ніяких додаткових налаштувань MySQL сервер не вимагає, благо кодування UTF-8 стала стандартом де-факто. В принципі на цьому можна закінчити, але всі бази даних розміщуються на сервері будуть працювати з правами суперкористувача MySQL, що небезпечно. Тому слід створити користувачів сервера баз даних з обмеженими правами, щоб вони могли управляти тільки своїми базами.

Відкриємо phpMyAdmin і перейдемо на сторінку Привілеї (Користувачі), де виберемо Додати нового користувача.

Тепер прокрутимо сторінку трохи нижче і встановимо опцію Надати повні привілеї на бази даних підпадають під шаблон (ім'я користувача \ _%) Тепер прокрутимо сторінку трохи нижче і встановимо опцію Надати повні привілеї на бази даних підпадають під шаблон (ім'я користувача \ _%)

Тепер прокрутимо сторінку трохи нижче і встановимо опцію Надати повні привілеї на бази даних підпадають під шаблон (ім'я користувача \ _%)

Це дозволить зайвий раз не відволікатися на установку прав, а просто створювати бази з іменами виду ivanov_base1 або petrov_base2, надаючи відповідним користувачам повні права на них, а також швидко визначати приналежність баз даних. У той же час дана установка не є догмою, ви можете надходити на свій розсуд. Інші параметри залишаємо за замовчуванням.

Для перевірки створимо базу даних phpMyAdmin - Бази даних - Нова база даних.

При створенні БД звертайте увагу на кодування При створенні БД звертайте увагу на кодування. Сьогодні більшість двигунів і веб-додатків працюють з UTF-8 (utf8_general_ci), проте старі версії двигунів можуть використовувати національні кодування, тому потрібно буде правильно вказати їх ще на стадії створення бази, в іншому випадку, заливши в базу, створену в UTF-8 дамп в кодуванні Windows -1252 замість російських букв на сайті виявляться "крякозяблікі".

Сьогодні більшість двигунів і веб-додатків працюють з UTF-8 (utf8_general_ci), проте старі версії двигунів можуть використовувати національні кодування, тому потрібно буде правильно вказати їх ще на стадії створення бази, в іншому випадку, заливши в базу, створену в UTF-8 дамп в кодуванні Windows -1252 замість російських букв на сайті виявляться крякозяблікі

Створивши базу, перевіримо її привілеї, натиснувши однойменну посилання поруч з ім'ям бази.

Створивши базу, перевіримо її привілеї, натиснувши однойменну посилання поруч з ім'ям бази

Як бачимо, все правильно, повні права на базу має зазначений в імені користувач і привілейований користувач root, хоча ніяких налаштувань доступу при створенні бази ми не вказували.

На цьому настройку можна вважати закінченою і приступати до експлуатації сервера. Незважаючи на те, що описана конфігурація є базовою, її можливостей цілком достатньо для розміщення і нормальної роботи практично будь-якої сучасної CMS масового застосування і ми будемо використовувати цей сервер як еталонний для наших наступних матеріалів по даній темі.

Новости