Встановлюємо веб-сервер на базі Apache в Linux Debian / Ubuntu Server

Встановлюємо веб-сервер на базі Apache в Linux Debian / Ubuntu Server

Web-сервером можна назвати будь-який комп'ютер, який здатний відгукуватися і обробляти мережеві запити по протоколу HTTP. Для цього на ньому повинен бути встановлений і запущений HTTP-сервер.HTTP-сервер Apache є індустріальним стандартом для застосування в багатьох областях для вирішення завдань, пов'язаних з розгортанням і експлуатацій web-додатків. Він випробуваний в сотнях тисяч проектах і має хорошу сумісність з багатьма популярними прикладними системами і мережевими операційними системами, що надають високонадійні інтернет-сервіси. Хоча HTTP-сервер Apache не є лідером за швидкістю роботи і оптимальності споживання обчислювальних ресурсів, натомість нам пропонуються досить цінні експлуатаційні якості, такі як простота настройки, гнучкість, надійність і низький поріг входження при освоєнні. Практично можна говорити про те, що ми маємо можливість працювати за принципом «один раз налаштував - і забув». Таким чином, якщо Вам не відомі інші альтернативи або Ви не хочете витрачати час на впровадження яких би то ні було інших більш екзотичних HTTP-серверів, наприклад, з якомога вищою швидкістю роботи, але з купою підводних каменів, про існування яких відомо тільки дуже вузькому колу «фанатиків», то Ваш безсумнівний вибір - це HTTP-сервер Apache. Працюючи з цим і продуктом, Ви ніколи не залишитеся наодинці з проблемами, так як є багато хорошої документації і велика спільнота фахівців, які давно працюють з цим перевіреним часом рішенням.

Наступним важливими елементами web-сервера, на якому працюють якісні web-додатки, є система управління базами даних MySQL і «движок» для виконання серверних скриптів - PHP. Даний комплект став настільки поширеним, що для стислості йому присвоїли акронім LAMP-сервер за першими літерами що входять до складу стека програмних продуктів - L inux, A pache, M ySQL, P HP.

Ми розглянемо установку web-сервера на прикладі дистрибутива Debian / Ubuntu операційної системи Linux. У різних версіях платформи є свої правила сумісності між версіями компонент і версіями зовнішніх додатків, запущених поверх. На момент написання статті були такі поєднання версій сумісності між окремими елементами ПО:

· 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, не сумісні з деякими двигунами систем управління контентом і серверами додатків, як в наприклад, сервер додатків 1С: Підприємство. Останній сумісний з версією Apache тільки до версії 2.2 включно. Тому візьміть за правило перед установкою або оновленням версій компонент сервера проводити звірку на предмет сумісності їх версій між собою і планованих до установки веб-додатків.

При роботі в контейнері OpenVZ версію MySQL з дистрибутивів версій Linux Ubuntu Server 12.04 / 14.04 слід замінити на на версію версію від MySQL Community (розробники) або один з ФОРКОМ, наприклад, MariaDB.

Оптимальним рішенням в плані сумісності ми приймемо використання в основі платформи дистрибутив Linux на базі Debian 7. Він містить набір компонент, який має найбільший ступінь сумісності з існуючими прикладними web-додатками.

Всі наведені нижче команди повинні виконуватися від імені суперкористувача і предворяется командою-префіксом sudo.

Установка і настройка Apache.

Робиться це однієї простої командою, по якій відбувається скачування і установка відповідного пакета зі сховищ:

apt-get install apache2

Щоб перевірити установку і факт запуску http-сервера, звертаємося по IP-адресою локального хоста і повинні побачити стандартну сторінку заглушку:

Щоб перевірити установку і факт запуску http-сервера, звертаємося по IP-адресою локального хоста і повинні побачити стандартну сторінку заглушку:

У версії Apache 2.4страніца виглядає дещо інакше, але сенс її появи ідентичний.

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

Розподілимо права доступу до файлів і папок сайту. За замовчуванням його власником є користувач www - data з однойменної групи, що представляє http-сервер Apache. Саме він повинен виконувати бути власником, інакше, результати будуть непередбачувані. Але більш зручно і безпечно виконувати вміст сайту від імені прикладного користувача. Для цього ми використовуємо пакет apache2-mpm-itk:

apt-get install apache2-mpm-itk

В папці sites-enabled зберігається конфігурація сайту за замовчуванням. У ній описується сайт, сторінка-заглушка якого зберігається в папці / 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

Версія Apache2.4храніт настройки віртуального хоста в файлі з розширенням. conf, тому команда прийме відповідний вид:

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

Зміст файлу заповнимо наступним текстом:

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 Options -Includes -Indexes -ExecCGI Розберемо призначення елементів файлу докладніше. Секція вказує на те, з якого IP-адресою і порту доступний даний хост. Якщо потрібно приймати з'єднання на всіх мережеві інтерфейси, то замість адреси вказується «зірочка» - *.

Опишемо призначення внутрішніх директив секції.

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

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

· ± Includes - включає / вимикає доповненні на стороні сервера SSI (Server Side Includes). Ми виключаємо цю опцію з міркувань безпеки. Дана опція може включатися, якщо цього явно вимагає робота сайту.

· ± Indexes - включає / вимикає доступ до висновку вмісту каталогу у вікні браузера, якщо в ньому немає індексного файлу. Опція виключена з метою безпеки.

· ± ExecCGI - включає / вимикає виконання CGI-сценаріїв. Опція виключена з метою безпеки.

Ми торкнулися далеко не всі опції і директиви. Розглядати їх в повному обсяг не є метою нашого статті, але ви можете дізнатися всі подробиці в матеріалах офіційної документації .

Не забуваємо закрити відкриті секції і, зберегти файл. Тепер у нас є конфігурація для віртуального хоста.

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

a2ensite example.com Дана команда включає сайт, відповідний конфігураційного файлу example.com з папки sites-available. Без розширення. conf файл вказується для версії Apache 2.4. Відповідно, вимикання відбувається по команді: a2dissite example.com Щоб зміни вступили в силу, після кожного такого дії необхідно виконати перезапуск Apache: service apache2 reload Перевіримо роботу віртуального хоста, розмістивши в його кореневій папці тестовий html-файл. Потім звернемося в браузері до домену на ім'я. При цьому першим записом про віртуальному хості в конфігурації повинна бути запис про наш сайт. Створюємо індексний файл: touch /var/www/examlpe.com/index.html Заносимо в нього рядок виду: При зверненні в браузері до нашого хосту examlpe. com ми побачимо наступне: a2ensite example Установка і настройка PHP. Якщо Ви плануєте використовувати Ваш http-сервер тільки для розміщення статичного вмісту або сторонніх web-додатків типу сервера додатків 1C: Підприємство для доступу до баз даних, то на даному етапі можна сказати, що у нас все для цього готово і подальший матеріал не актуальний. Але, якщо хочете організувати експлуатацію динамічних web-додатків, наприклад, на базі систем управління контентом, то на сервері необхідна підтримка скриптового мови серверного програмування PHP. Для установки відповідного пакета виконаємо команду: apt-get install php5 В результаті встановлюються інтерпретатор PHP і його додаткові модулі для взаємодії з http-сервером Apache. Гнучкість управління модулями PHP забезпечується аналогічно модулів Apache за рахунок розміщення модулів в одній папці, а в іншій - зберіганням символьних посилань, які створюються або видаляються в разі потреби. У стандартному постачанні набору PHP-модулів задовольняються функціональні потреби для більшості проектів. Але деякі CMS можуть зажадати наявність додаткових модулів, які потрібно буде ставити окремо. Прикладом такого модуля може служити модуль для роботи з графікою на базі графічної бібліотеки GD 2. В цьому випадку ми виконуємо установку відповідного модуля за допомогою такої команди: apt-get install php5-gd Так як цей модуль взаємодіє з http-сервером, то для того, щоб у них виникла між собою взаємна «видимість» необхідно перезапустити Apache за допомогою такої команди: service apache2 reload Хоча бібліотека GD 2 має високу швидкість роботи і низьким споживанням ресурсів, але платою за це є низька якість одержуваних зображень. Альтернативним рішенням є утиліта imagemagick. У практичному плані має сенс встановити обидві утиліти і на конкретних завданнях вибрати найкращий варіант. Якщо у Вас достатньо ресурсів на сервері, то кращим варіантом, безсумнівно, буде використання imagemagick. Наступна команда встановлює пакети для самої утиліти і модуль для взаємодії з PHP: apt-get install imagemagick php5-imagick На цьому етапі ми модем перевірити працездатність PHP і його взаємодію з Apache. Для цього в кореневій папці сайті створимо тестовий скрипт за допомогою команди виду: touch /var/www/examlpe.com/info.php У тексті скрипта напишемо: phpinfo (); ?> Збережемо скрипт і в браузері перейдемо за адресою http://example.com/info.php . Якщо все встановлено правильно, то браузер видасть стандартну сторінку про PHP, його настройках і модулях і т.д. Установка і настройка MySQL. Сервер баз даних MySQL є третім компонентом повноцінного web-сервера. Йому відводиться роль накопичення і зберігання структурованої інформації сайту, частина якої створюється користувачами в процесі користування сайтом, а частина є службовою. Вона формується в процесі настройки сайту і в подальшому керує його властивостями і поведінкою в експлуатації. Таким чином, база даних відіграє ключову роль в роботі динамічних сайтів, зберігаючи в своїх структурах більшу частину їх контенту. Якщо втрачаємо базу, то, по суті, втрачаємо і сам сайт. Як і для інших компонент сервера, ставимо пакет компонента і для додаткового модуля взаємодії між PHP і MySQL: apt-get install mysql-server php5-mysql При установці пакету для MySQL буде запитуватися пароль для суперкористувача з ім'ям root (не плутати з суперкористувачем системи Linux ). Для управління MySQL-сервером і його вмістом існує утиліта phpMyAdmin, яка за певною адресою надає web-інтерфейс у вікні браузера. Встановимо її командою: apt-get install phpmyadmin Інсталятор даної утиліти пропонує варіанти автоматичної настройки для декількох http-серверів: Apache і Lighttpd. У спеціальному діалозі вибираємо потрібний варіант:

В результаті наша web-утиліта управління сервером баз даних стає доступною за адресою http://example.com/phpmyadmin . При зверненні до неї запитуються облікові дані. У нашому випадку - це користувач root і його пароль (інших поки немає). Ми все це вказували при установці MySQL.

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

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

Переконуємося, що в etc / php5 / mods-available потрібний файл є (значить, модуль встановлений), а ось в файлі /etc/php5/apache2/conf.d посилання на даний модуль відсутня. Значить, з якоїсь причини модуль не підключений. Така поведінка помічено в дистрибутивах з 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 і для цього нічого спеціально робити не потрібно.

Залишився одні питання, пов'язане з безпекою роботи з базами даних на нашому сервері, так як всі звернення зараз відбуватимуться від імені суперкористувача root. А це не є безпечним. Вирішимо проблему створенням додаткових користувачів і наділенням їх достатніми правами для управління власними базами.

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

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

Дана установка автоматизує привласнення повних прав користувачам, за умови, що ім'я бази відповідає якомусь шаблоном, наприклад, ivanov_base1 або petrov_base2 означає, що користувач з ім'ям ivanov володіє всіма правами над базою ivanov_base1, користувач petrov над базою petrov_base2 і т.д. . Така схема також дозволяє швидко знаходити «господаря» бази даних. Інші параметри не потребують зміні на даному етапі.

Щоб перевірити працездатність нашого MySQL-сервера, створимо нову базу даних в phpMyAdmin за посиланням Бази даних -> Нова база даних.

Кодування бази задається при створенні. Багато прикладні системи в інтернеті сьогодні за замовчуванням використовують UTF-8 (utf8_general_ci). Однак старі версії все ще можуть користуватися національними версіями кодувань. Тому, якщо дамп з бази, створеної в кодуванні UTF-8 «ляже» на базу системи, яка до цього була створена в кодуванні Windows -1252, то замість російських букв ми побачимо на сторінках сайту ось такий «сміття».

Після створення бази на останньому етапі перевіримо приналежність всіх привілеїв для створених баз даних, натиснувши на однойменну посилання в рядку з ім'ям бази даних.

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

Тепер на даному етапі ми маємо повністю готовий до експлуатації web-сервер, який придатний в якості основи для практично будь-якої сучасної прикладної web-системи будь то система управління контентом або будь-яка інша прикладна система спеціального призначення, побудована за принципом custom-розробки.

Php У тексті скрипта напишемо: phpinfo (); ?

Уважаемые партнеры, если Вас заинтересовала наша продукция, мы готовы с Вами сотрудничать. Вам необходимо заполнить эту форму и отправить нам. Наши менеджеры в оперативном режиме обработают Вашу заявку, свяжутся с Вами и ответят на все интересующее Вас вопросы.

Или позвоните нам по телефонам: (048) 823-25-64

Организация (обязательно) *

Адрес доставки

Объем

Как с вами связаться:

Имя

Телефон (обязательно) *

Мобильный телефон

Ваш E-Mail

Дополнительная информация: