Що таке LAMP? Переваги і недоліки. Спеціальні образи Хмарних VDS для швидкого розгортання серверів LAMP Взаємодія елементів MVC

Головна / Google Play

Під стеком web-додатків ми матимемо на увазі безліч програмних продуктів з відкритим вихідним кодом: операційна система, web-сервер, сервер БД та середовище виконуваного коду. Найбільш відомим і звичайним стеком є ​​LAMP. Це акронім для стека веб-додатків на основі безкоштовних рішень з відкритим вихідним кодом.

LAMP-акронім, що позначає набір (комплекс) серверного програмного забезпечення, що широко використовується у Всесвітній павутині. LAMP названий за першими літерами компонентів, що входять до його складу:

    L inux-операційна система Linux;

    A pache-Веб-сервер;

    M ariaDB/ M ySQL-СУБД;

    P HP-мова програмування, що використовується для створення веб-додатків (крім PHP можуть розумітися інші мови, такі як Perl і Python).

Акронім LAMP може використовуватися для позначення:

    Інфраструктури веб-сервера

    Парадигми програмування

    Пакет програм

Хоча спочатку ці програмні продуктине розроблялися спеціально для роботи один з одним, така зв'язка стала дуже популярною через свою гнучкість, продуктивність і низьку вартість (всі її складові є відкритими і можуть бути безкоштовно завантажені з Інтернету). Набір LAMP входить до складу більшості дистрибутивів Linux і надається багатьомихостинговими компаніями.

Лінукс забезпечує прийом/передачу запитів (контролює залізо) та є ядром для всього вищого – сервер, СУБД, підтримка мови.

Установка на Ubuntu

Необхідно встановити такі пакети:

Після виконання команди apt-get update для оновлення локального списку пакетів, ви зможете встановити ці пакети за допомогою однієї команди apt-get install:

Після виконання наведеної вище команди вам буде запропоновано встановити ці пакети та деякі інші залежності. Натисніть «y», а потім натисніть клавішу ENTER, щоб продовжити, і дотримуйтеся інших вказівок щодо встановлення адміністративного пароля для MySQL.

Це дозволить вам встановити мінімальний набір розширень PHP, необхідний використання PHP з MySQL.

Особливості та переваги ос Лінукс

Безкоштовність.

Надійність.Коректна робота апаратної частини вашого ПК, дозволить Linux'у працювати роки без перезавантаження та зависань. А кнопка Reset взагалі ніколи не знадобиться.

Безпека.У Linux практично немає вірусів. Сама побудова операційної системи виключає роботу шкідливих програм.

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

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

Гнучкість СУБД MySQLзабезпечується підтримкою великої кількості типів таблиць: користувачі можуть вибрати як таблиці типу MyISAM, що підтримують повнотекстовий пошук, так і таблиці InnoDB, що підтримують транзакції лише на рівні окремих записів. Більше того, СУБД MySQL поставляється зі спеціальним типом таблиць EXAMPLE, що демонструє принципи створення нових типів таблиць. Завдяки відкритій архітектурі та GPL-ліцензування, в СУБД MySQL постійно з'являються нові типи таблиць.

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

Під стеком web-додатків ми матимемо на увазі безліч програмних продуктів з відкритим вихідним кодом: операційна система, web-сервер, сервер БД та середовище виконуваного коду. Найбільш відомим і звичайним стеком є ​​LAMP. Це акронім для стека веб-додатків на основі безкоштовних рішень з відкритим вихідним кодом.

LAMP- акронім, що позначає набір (комплекс) серверного програмного забезпечення, що широко використовується у Всесвітньому павутинні. LAMP названий за першими літерами компонентів, що входять до його складу:

· L inux - операційна система Linux

;

· A pache- Веб-сервер;

· M ariaDB / M ySQL – СУБД;

· P HP - мова програмування, що використовується для створення веб-додатків (крім PHP можуть мати на увазі інші мови, такі як Perl і Python).

Акронім LAMP може використовуватися для позначення:

1. Інфраструктури веб-сервера

2. Парадигми програмування

3. Пакет програм

Хоча спочатку ці програмні продукти не розроблялися спеціально для роботи один з одним, така зв'язка стала дуже популярною через свою гнучкість, продуктивність і низьку вартість (всі її складові є відкритими і можуть бути безкоштовно завантажені з Інтернету). Набір LAMP входить до складу більшості дистрибутивів Linux та надається багатьма хостинговими компаніями.

Лінукс забезпечує прийом/передачу запитів (контролює залізо) та є ядром для всього вищого – сервер, СУБД, підтримка мови.

Установка на Ubuntu

Необхідно встановити такі пакети:

Після виконання команди apt-get update для оновлення локального списку пакетів, ви зможете встановити ці пакети за допомогою однієї команди apt-get install:

Після виконання наведеної вище команди вам буде запропоновано встановити ці пакети та деякі інші залежності. Натисніть «y», а потім натисніть клавішу ENTER, щоб продовжити, і дотримуйтеся інших вказівок щодо встановлення адміністративного пароля для MySQL.

Це дозволить вам встановити мінімальний набір розширень PHP, необхідний використання PHP з MySQL.



Особливості та переваги ОС Лінукс

Безкоштовність.

Надійність. Коректна роботаапаратної частини вашого ПК, дозволить Linux'у працювати роки без перезавантаження та зависань. А кнопка Reset взагалі ніколи не знадобиться.

Безпека. У Linux практично немає вірусів. Сама побудова операційної системи виключає роботу шкідливих програм.

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

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

Гнучкість СУБД MySQL забезпечується підтримкою великої кількості типів таблиць: користувачі можуть вибрати як таблиці типу MyISAM, що підтримують повнотекстовий пошук, так і таблиці InnoDB, що підтримують транзакції лише на рівні окремих записів. Більше того, СУБД MySQL поставляється зі спеціальним типом таблиць EXAMPLE, що демонструє принципи створення нових типів таблиць. Завдяки відкритій архітектурі та GPL-ліцензування, в СУБД MySQL постійно з'являються нові типи таблиць.

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

3. Web-додаток. Шаблон проектування «Модель-Подання-Контролер».

Шаблон проектування (Design Pattern) - архітектурна конструкція, що представляє собою вирішення проблеми проектування в рамках деякого контексту, що часто виникає. Традиційно в ООП показують відносини та взаємодії між класами чи об'єктами, без визначення того, які кінцеві класи чи об'єкти програми будуть використовуватись.

Model-View-Controller. Шаблон проектування MVC передбачає поділ даних програми, інтерфейсу користувача і керуючої логіки на три окремих компоненти: Модель, Подання та Контролер - таким чином, що модифікація кожного компонента може здійснюватися незалежно. Вперше цей шаблон був застосований у фреймворку, що розробляється для мови Smalltalk наприкінці 1970-х років. З цього моменту він відіграє основну роль у більшості фреймфорків з інтерфейсом користувача. Він докорінно змінив погляд на проектування додатків.

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

●збереження, видалення, оновлення даних програми (CRUD або зовнішні веб-сервіси);

●інкапсуляція всієї логіки програми (необхідно уникати «товстих» контролерів, т. е. не можна частину бізнес-логіки виносити в контролер чи уявлення).

CRUD - Сreate, Read, Update, Delete.

Модель Описує дані та управління ними і нерідко називається також бізнес-логікою прикладної програми, тобто. її серцевиною. Подання Описує те, що користувач бачить і з чим він може взаємодіяти в прикладної програми. Контролер Служить як посередник між моделлю та поданням.
Основним механізмом, що реалізує View-частину шаблону (але не тотожним!) є шаблонизатор (Template Engine).

Взаємодія елементів MVC

Кожен елемент шаблону MVC спілкується з іншими дуже специфічними способами. Комуніцювання реалізується послідовністю подій, які зазвичай запускаються взаємодією користувача з програмою. Послідовність подій виглядає так:

  1. Користувач взаємодіє з елементом інтерфейсу (наприклад, натискає кнопку у Представленні).
  2. Подання надсилає подію натискання Контролеру, щоб вирішити, як це натискання обробити.
  3. Контролер змінює модель на основі того, що він вирішив щодо натискання кнопки.
  4. Модель повідомляє Уявлення про те, що стан Моделі змінився.
  5. Подання читає інформацію про стан у Моделі та самостійно видозмінюється.

4. Web-додаток. Шаблонізатор.

Шаблонізатор (в web) - це програмне забезпеченнядозволяє використовувати html-шаблони для генерації кінцевих html-сторінок. Основна мета використання шаблонизаторів - це відокремлення уявлення даних від виконуваного коду. Часто це необхідно для забезпечення можливості паралельної роботи програміста та дизайнера-верстальника. Використання шаблонизаторів часто покращує читаність коду та внесення змін до зовнішній вигляд, коли проект повністю виконує одна людина.

Використання шаблонизаторів часто ототожнюють із парадигмою MVC. Ці поняття пов'язані, але з тотожні.

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

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

· По-перше, чистота коду. Програмний код не містить HTML коду, тому легко читається. У той же час, шаблон містить тільки HTML-код, в якому видно, де і які дані вставляються (для цього давайте осмислені імена псевдозмінним).

· По-друге, поділ програмного та HTML-коду дає можливість незалежної розробки двигуна та дизайну. Щоб щось змінити у зовнішньому вигляді готового сайту, достатньо внести зміни до відповідного шаблону, при цьому не потрібно володіти навичками програмування.

· Сайт може мати декілька дизайнів. Щоб повністю змінити дизайн сайту, достатньо просто змінити шлях до папки з шаблонами.

Переваги:

· Повне поділ виведення від логіки додатку;

· Режим «пісочниці»;

· акуратний зовнішній вигляд блоків логіки або операторів виведення;

· Перенесення між платформами (мовами) - тобто. парсер шаблонів можна написати на будь-чому;

· Мова шаблону зрозумілий «верстальник»;

Про переваги

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

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

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

5. Web-додаток. Реляційні бази даних

Реляційна база даних - це сукупність взаємозалежних таблиць, кожна з яких містить інформацію про об'єкти певного типу. Рядок таблиці містить дані про один об'єкт (наприклад, товар, клієнт), а стовпці таблиці описують різні характеристикицих об'єктів – атрибутів (наприклад, найменування, код товару, відомості про клієнта). Записи, тобто рядки таблиці мають однакову структуру - вони складаються з полів, що зберігають атрибути об'єкта. Кожне поле, тобто стовпець, описує лише одну характеристику об'єкта і має певний тип даних. Усі записи мають одні й самі поля, лише у яких відображаються різні інформаційні властивості об'єкта.

У реляційній базі даних кожна таблиця повинна мати первинний ключ - поле чи комбінацію полів, які єдиним чином ідентифікують кожен рядок таблиці. Якщо ключ складається з кількох полів, він називається складовим. Ключ має бути унікальним та однозначно визначати запис. За значенням ключа можна знайти єдину запис. Ключі служать також упорядкування інформації у БД.

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

Нехай створено таблицю Студент, що містить такі поля: № групи, ПІБ, № заліковки, дата народження, назва спеціальності, назва факультету. Така організація зберігання інформації матиме низку недоліків:

· дублювання інформації (найменування спеціальності та факультету повторюються для кожного студента), отже, збільшиться обсяг БД;

· Процедура оновлення інформації в таблиці не може через необхідність редагування кожного запису таблиці.

Нормалізація таблиць призначена для усунення цих недоліків. Є три нормальні форми відносин.

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

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

Третя нормальна форма. Таблиця знаходиться у третій нормальній формі, якщо вона задовольняє вимогам другої нормальної форми, жодне з її неключових полів не залежить функціонально від будь-якого іншого неключового поля. Наприклад, у таблиці Студент (№ групи, ПІБ, № залікової книжки, Дата народження, Староста) три поля – № залікової книжки, № групи, Староста перебувають у транзитивній залежності. № групи залежить від № залікової книжки, а Староста залежить від № групи. Для усунення транзитивної залежності необхідно частину полів таблиці Студент перенести до іншої таблиці Група. Таблиці набудуть наступного вигляду: Студент (№ групи, ПІБ, № залікової книжки, Дата народження), Група (№ групи, Староста).

Над реляційними таблицями можливі такі операції:

· Об'єднання таблиць з однаковою структурою. Результат- загальна таблиця: спочатку перша, потім друга (конкатенація).

· Перетин таблиць з однаковою структурою. Результат - вибираються ті записи, які у обох таблицях.

· Віднімання таблиць з однаковою структурою. Результат - вибираються ті записи, яких немає у вирахуваному.

· Вибірка (горизонтальне підмножина). Результат – вибираються записи, що відповідають певним умовам.

· Проекція (вертикальне підмножина). Результат - відношення, що містить частину полів із вихідних таблиць.

· Декартове твір двох таблиць Записи результуючої таблиці виходять шляхом об'єднання кожного запису першої таблиці з кожним записом іншої таблиці.

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

Існують такі типи інформаційних зв'язків:

· один до одного;

· Один-до-багатьом;

· Багато-багатьом.

Web-додаток. NoSQL.

Одне з значень терміна "NoSQL" - це відхід від реляційної моделі на користь більш специфічних (або узагальнених) моделей даних. Наприклад, традиційно успішними NoSQL-системами є системи зберігання пар "ключ-значення", такі як Redis або Memcache. Їхня модель даних гранично проста - це по суті асоціативний масив, де ключі мають рядковий тип, а значення можуть містити будь-які дані. Як і будь-який асоціативний масив, такі системи підтримують обмежений набір операцій з даними - прочитати значення ключа, встановити значення ключа, видалити ключ і пов'язане з ним значення. Операція “отримати список ключів” може не підтримуватись у таких системах.

Інший приклад успішних NoSQL-систем – це документні сховища. Об'єкти в таких сховищах зазвичай є асоціативними масивами вільної структури, тобто в одній і тій самій “таблиці” можуть зберігатися різні насправді об'єкти. Приклади систем такого класу – MongoDB та Cassandra. Залежно від цього, які реально дані зберігаються у конкретній основі, її продуктивність може сильно змінюватись. Наприклад, якщо оптимізувати таку “таблицю”, зберігаючи у ній однотипні об'єкти.

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

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

7. Web-додаток. Можливості JavaScript.

JavaScript є мовою програмування, що інтерпретується, з об'єктно-орієнтованими можливостями.

Можливості

Вихідний код цією мовою можна запустити не тільки в браузері, але й на стороні сервера або командного рядкаПроте ми будемо розглядати застосування JavaScript для веб-сторінок. Сучасний JavaScript - це "безпечна" мова програмування загального призначення. Він не надає низькорівневих засобів роботи з пам'яттю, процесором, оскільки спочатку був орієнтований на браузери, в яких це не потрібно.

Що ж до інших можливостей – вони залежить від оточення, у якому запущений JavaScript. У браузері JavaScript вміє робити все, що стосується маніпуляції зі сторінкою, взаємодії з відвідувачем і, певною мірою, з сервером:

· Додавати різні ефекти анімації

· Реагувати на події - обробляти переміщення вказівника миші, натискання клавіш з клавіатури

· Здійснювати перевірку введення даних у поля форми до відправки на сервер, що у свою чергу знімає додаткове навантаження із сервера

· Створювати та зчитувати cookie, витягувати дані про комп'ютер відвідувача

· Визначати браузер та залежно від браузера - завантажувати потрібну сторінкуспеціально призначену для цього браузера

· Змінювати вміст HTML-елементів, додавати нові теги, змінювати стилі

Обмеження

· JavaScript не може закривати вікна та вкладки, які не були відкриті за його допомогою

· Не може захистити вихідний код сторінки та заборонити копіювання тексту або зображень зі сторінки

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

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

Загалом можна сказати, що він розроблений таким чином, щоб утруднити виконання шкідливого коду.

8. Web-додаток. Середовище виконання. Web-сервер встановлення та налаштування.

Apache server - кросплатформний веб-сервер, на сьогоднішній день є найпоширенішим, т.к. встановлений на більшості хостингів і більш простий у налаштуванні ніж, наприклад, web сервер nginx.

Так само сервер apacheпоставляється в таких збірках, як denwer і xampp, тому php apache є дуже популярною збіркою. Встановлення apache windows, linuxнижче за посиланнями:

· Встановлення apache linux

· Встановлення apache windows

Як працює Apache server:

· Циклічно приймає запити

· Обробляє запити

· Генерує контент

· Віддає користувачеві контент

Apache web має механізм віртуальних хостів, за допомогою якого можна розподілити кілька доменних назв на одну IP адресу. До кожного доменному іменіможна застосовувати свої налаштування, apache налаштування проводиться у файлі.htaccess, який необхідно розташувати у кореневій директорії вашого сайту.

Apache port, що використовується за замовчуванням, 80. Можуть виникнути проблеми з деякими програмами, зокрема зі skype. Для вирішення проблеми необхідно вимкнути використання 80 порту в skype. Якщо ж використовується apache port 80 зайнятий, то можна змінити це значення налаштуваннях webсервера.

На apache сайт з великою кількістюстатики(зображення) працює повільніше, ніж сайт на nginx. Іноді розглядається така зв'язка, як apache server + nginx, nginx використовують для віддачі статики.

Для програмування на PHP вам необхідно встановити наступні компоненти:

· apacheчи інший web-сервер;

· MySQL (+ phpmyadmin для роботи з MySQL через web-інтерфейс).

Є два варіанти встановлення даних компонентів:

· Встановлення готового пакету (xampp, denwer і т.д.)

· Встановлення всіх пакетів окремо

У першому випадку все дуже просто, завантажуєте пакет та встановлюєте. Але за ручної установки немає проблем із оновленням версій, т.к. ви вже знатимете як воно працює і як встановлюється. Також менше шанс, що у вас будуть проблеми з пакетами.

Ручне встановлення:

· Качаємо і встановлюємо apacheпо засланні

· Качаємо і встановлюємо mysql по у зв'язку

· як доповнення можна встановити phpmyadminдля роботи з mysql через web-інтерфейс

Після встановлення, як і після внесення будь-яких змін, необхідно перезавантажити apache. Переходимо в "пуск - напіль управління - адміністрування - служби" і знаходимо там Apache, тиснемо правою кнопкою і в контекстному менювибираємо перезавантажити.

Для роботи необхідно додати віртуальний хост, як це можна прочитати тут.

Середовище виконання

Програма eTBManager є додатком сервера JBOSS, що працює з даними, що знаходяться під керуванням сервера баз даних MySQL. Користувачі працюють з програмою з Інтернет-браузера (IE, FireFox, Crhome і т.д.).

Програма встановлюється однією фізичному сервері (комп'ютері). Операційна система Windows 2008 сервер з усіма встановленими SP.

Для забезпечення роботи програми на сервер слід встановити та налаштувати програмне забезпечення у зазначеній послідовності:

1. База даних

1. MySQL сервер управління базами даних.

2. Базу даних eTBManager.

2. Додаток

1. JBOSS Java Application server для виконання програми eTBManager.

2. Програмне забезпечення eTBManager.

3. Веб-сервер

1. Apache HTTPD для прийому та обробки веб-запитів від користувачів.

2. Конектор mod_jk для забезпечення взаємодії Apache HTTPD та JBOSS.

Все необхідне для встановлення програми, включаючи останню версіюпрограмного забезпечення та тренувальну базу даних можна отримати з адреси ftp:.ua анонімний доступ. Оскільки використовується вільне програмне забезпечення, останні версії можна отримати з сайтів виробників. Останні версії містять виправлення помилок і можуть працювати більш стабільно, але ми не перевірялися на сумісність.

9. Розвиток Web-технологій. Web 1.0, Web 2.0.

Web 1.0 - перше покоління "Всесвітньої Павутини", яка використовувала протоколи Інтернету TPC/IP. Якщо в доінтернетівську епоху, здійснювався лише двоточковий лінійний зв'язок, то з приходом Web (інформаційної Павутини) утворилася мережева морфологія, що дозволяє здійснювати користувачеві безперешкодний "серфінг" по інформаційних просторах, отримуючи будь-яку інформацію, накопичену в ресурсах мережі Web 1.0.

Цей період розвитку Павутини характеризується створенням статичних сайтів із HTML-гіпертекстовими зв'язками, пасивною передачею інформації із серверів клієнту, односпрямованим характером потоків інформації:

· Потік ручного збору інформації від творців ресурсів до сервера;

· Потік пасивної роздачі інформації з сервера клієнтам.

Це період виникнення та бурхливого розвитку електронних бібліотек, інформаційних каталогів Інтернет

Web 2.0 - це інтерактивна "синтаксична" павутина, коли набули масового поширення діалогові системи ресурс - користувач, клієнт - сервер.

Це сервіс-орієнтований Web, в якому розвинувся інтерактивний інформаційний процес між користувачем та сервером, пошукові системи та електронна комерція.

Генерацію інформаційного потоку було віддано до рук самих користувачів, а власники сайтів в основному обмежилися створенням та підтримкою інфраструктури.

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

10. Розвиток Web-технологій. Web 3.0, семантична павутина.

Web 3.0 – це семантична Павутина (Semantic Web) – «частина глобальної концепції розвитку мережі Інтернет, метою якої є реалізація можливості машинної обробки інформації, доступної у Всесвітньому павутинні. Основний акцент концепції робиться на роботі з метаданими, що однозначно характеризують властивості та зміст ресурсів. Всесвітньої павутинизамість використовуваного в даний час текстового аналізудокументів». Тобто - це якась мережа над Мережею, яка містить метадані про ресурси Всесвітньої павутини і існує паралельно з ними. На базі автоматизованих інформаційних процесівміж серверами.

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

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

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

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

Крім внутрішніх міжсерверних інтерфейсів, з'являються нелюдські інтерфейси з фізичним світом: автоматичний збір мультимедійної інформації, робот-програмний аналіз інформації зовнішнього світу, поглинання цієї інформації гіпер-серверами павутиння. Роботи переходять у стадію активної модерації контенту, цензорів, що визначають що можна публікувати в Web 3.0, а що – не можна.

11. Розвиток Web-технологій. Web-сервіси.

Веб-служба, веб-сервіс (англ. web service) - ідентифікована веб-адресою програмна системазі стандартизованими інтерфейсами. Веб-служби можуть взаємодіяти один з одним і з сторонніми додаткамиза допомогою повідомлень, заснованих на певних протоколах (SOAP, XML-RPC, REST тощо). Веб-служба є одиницею модульності при використанні сервіс-орієнтованої архітектури програми.

В побуті веб-сервісами називають послуги, що надаються в Інтернеті. У цьому вживанні термін вимагає уточнення, чи йдеться про пошук, веб-пошту, зберігання документів, файлів, закладок тощо. Такими веб-сервісами можна користуватися незалежно від комп'ютера, браузера чи місця доступу до Інтернету.

REST (Representational state transfer) – це стиль архітектури програмного забезпечення для розподілених систем, таких як World Wide Web, який зазвичай використовується для побудови веб-служб. Термін REST був запроваджений у 2000 році Роєм Філдінгом, одним із авторів HTTP-протоколу. Системи, що підтримують REST, називають RESTful-системами.

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

Використання REST для побудови Web-сервісів.

Як відомо, web-сервіс - це додаток, що працює в World Wide Web і доступ до якого надається по HTTP-протоколу, а обмін інформації йде за допомогою формату XML. Отже, формат даних, що передаються в тілі запиту буде завжди XML.

Для кожної одиниці інформації визначається 5 дій. А саме:

GET /info/ (Index)- Отримує список всіх об'єктів.

GET /info/(id) (View)- Отримує повну інформаціюпро об'єкт.

PUT /info/або POST /info/ (Create)- Створює новий об'єкт.

DELETE /info/(id) (Delete)– видаляє дані із ідентифікатором (id).
Як видно, архітектура REST дуже проста в плані використання. На вигляд запиту відразу можна визначити, що він робить, не розбираючись у форматах (на відміну від SOAP, XML-RPC). Дані передаються без застосування додаткових шарів, тому REST вважається менш ресурсомістким, оскільки не треба парсити запит, щоб зрозуміти, що він повинен зробити і не треба перекладати дані з одного формату в інший.

12. Протокол HTTP. Структура гіпертекстового документа Основні стандарти.

HTTP - широко поширений протокол передачі, спочатку призначений передачі гіпертекстових документів (тобто документів, які можуть містити посилання, дозволяють організувати перехід до інших документів).

Протокол HTTP передбачає використання клієнт-серверної структури передачі. Клієнтська програма формує запит і надсилає його на сервер, після чого серверне програмне забезпечення обробляє даний запит, Формує відповідь і передає його назад клієнту. Після цього клієнтська програма може продовжити надсилати інші запити, які будуть оброблені аналогічним чином.

Структура гіпертекстового документа

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

Почнемо із структури HTML документа. У простому вигляді можна записати її в наступному вигляді:







Зберігаємо документ під ім'ям index.html та відкриваємо його у браузері. Що ми бачимо? Нічого – порожня сторінка. Розберемо цей приклад та почнемо її заповнення.

Елементи HTML є теги. Теги - це ключові слова, укладені в кутові дужки. Теги можуть бути одинарними (наприклад, горизонтальна характеристика


) або парними. У другому випадку елемент складається з тега, що відкривається (наприклад, ) і тега, що закривається (). Дія елемента поширюється на область між тегом, що відкривається і закривається.

Весь гіпертекстовий документ полягає усередині елемента html(тобто між і). Усередині цього елемента міститься ще два елементи - заголовок документа (елемент head), який містить службову інформацію про документ та тіло документа (елемент ), яке містить інформацію, що відображається у вікні браузера.

Наведеної структури достатньо для створення простих HTMLдокументів для особистих цілей, але вона не відповідає стандарту. Головна помилка полягає в тому, що не вказано, в якому стандарті представлений документ. Стандарт прописується першим рядком до тега . Подивимося, які основні стандарти існують.

Для HTML 4.01

Для XHTML 1.0

Для XHTML 1.1

Strict, Transitional, Frameset - означають строгу (верстка не повинна містити відхилень від стандарту) специфікацію, перехідну (помилки ігноруються, для чайників) та для сайтів, які використовують фрейми (а такі ще є?). Вказівка ​​типу документа чутлива до регістру, тому краще копіювати її з наведених тут прикладів для уникнення помилок.

Існують інші стандарти, для створення шаблону зупинимося на першій зі списку (ми легко зможете модифікувати шаблон під свій тип документа).

Перейдемо до розділу заголовка. У ньому вказується заголовок сторінки (елемент title), META-дані та інша службова інформація. Тут ми зупинимося тільки на заголовку, інші елементи розглянемо у відповідних темах (зазначимо лише два елементи, які відповідають за кодування та CSS).

Додамо всередині елемента head рядок Структура документата відкриємо сторінку у браузері. У верхньому верхньому рядку браузера ми бачимо те, що вказали всередині елемента title. Крім того, ця інформація використовується браузером для позначення посилань, коли ви додаєте сторінку до закладок.

Для правильного відображення сторінки ми повинні задати в якому кодуванні написано наш документ. Для цього додає рядок

Тут ми вказуємо стандартне виндоуз-кодування windows-1251. Звичайно, вказати це мало, необхідно, щоб сам документ був набраний у цьому кодуванні. Також стандартним є кодування utf-8 (унікод, що підтримує розширений набір символів).

Також вкажемо формат для каскадних таблиць стилів за допомогою рядка

Тіло документа (елемент body) містить візуальну інформацію, тобто. ту, що безпосередньо відображатиметься у вікні браузера. Додамо рядок "Код документа містить правильну структуру".

Отже, остаточний суворий варіант (який ми можемо використовувати як шаблон для інших документів) наступний:

Структура документа Код документа містить правильну структуру

У результаті ми отримали шаблон документа для обраного стандарту.

HTML5: Для всіх документів.

HTML 4.01: Суворий синтаксис HTML. Перехідний синтаксис HTML. У HTML-документі використовуються кадри.

XHTML 1.0: Суворий синтаксис XHTML. Перехідний синтаксис XHTML Документ написано на XHTML і містить кадри. XHTML мобільного профілю додає специфічні елементи для мобільних телефонів.

XHTML 1.1: Жодного поділу на види це визначення не має, синтаксис один і підпорядковується чітким правилам.

Елемент призначений для вказівки типу поточного документа – DTD (document type definition, опис типу документа). Це необхідно, щоб браузер розумів, як слід інтерпретувати поточну веб-сторінку, оскільки HTML існує в декількох версіях, крім того, є XHTML (Extensible HyperText Markup Language, розширена мова розмітки гіпертексту), схожий на HTML, але різниться з ним за синтаксисом. Щоб браузер «не плутався» і розумів, згідно з яким стандартом відображати веб-сторінку і необхідно в першому рядку коду задавати .

Говорячи про Apache, MySQL і PHP, більшість адмінів мають на увазі стек LAMP, що передбачає встановлення цього набору софту в один із численних дистрибутивів Linux. Тим часом вибір FreeBSD у цьому випадку може виявитися більш підходящим.

У цій статті я розповім про всі кроки, які необхідно виконати для того, щоб підняти FreeBSD разом зі стеком (L)AMP та кількома інструментами адміністрування на абсолютно голому сервері та зробити так, щоб усе це працювало разом без збоїв та непередбачених ситуацій.

Крок 1. Встановлюємо FreeBSD

Спочатку нам знадобиться сама операційна система. Ідемо на офіційну сторінку FreeBSD(www.freebsd.org), тиснемо за посиланням «Get FreeBSD Now», далі вибираємо версію ОС (на момент написання статті доступні були дві версії: 8.2-RELEASE та 7.4-RELEASE), архітектуру (amd64 або i386), натискаємо на посилання та бачимо список доступних образів. Усього їх п'ять: bootonly - завантажувальний образ для установки по мережі, disk1 - ISO образдля запису на CD, dvd1 - образ для запису на DVD, livefs - LiveCD без графічного інтерфейсу, memstick для запису на USB-брелок. У нашому випадку підходящими будуть тільки перший і другий, а якщо в мережі немає DHCP-сервера, то тільки другий (DVD-образ качати сенсу немає, тому що CD містить нам все необхідне).

Отже, скачуємо ISO-образ, нарізаємо його на болванку, вставляємо сервер сервера і скидаємо/включаємо його. Чекаємо, поки ОС завантажиться. Після закінчення завантаження на екрані з'явиться вікно вибору країни та меню інсталятора sysinstall, що складається з дванадцяти пунктів. Нас цікавить лише один з них: «Express», він дозволяє встановити операційну систему максимально швидко, пропустивши багато попереджувальних повідомлень, питань та налаштувань. Вибираємо його, тиснемо .

Відобразиться вікно програми для розбивки диска. Тут можна або просто натиснути для використання всього диска, або , щоб створити новий розділ у вільній області. Однак, май на увазі, що FreeBSD використовує дворівневу схему розмітки диска при якій один стадартний DOS-розділ (у термінології FreeBSD іменований слайсом) може містити декілька BSD-розділів, тому на цьому кроці знадобиться створити тільки один розділ. Після закінчення натискаємо , щоб вийти із програми.

Наступне вікно: питання про встановлення завантажувача, просто тиснемо щоб встановити завантажувач у MBR. Відразу після нього з'явиться вікно розмітника створеного розділу на BSD-розділи. Тут можна поекспериментувати, але я рекомендував би просто натиснути щоб програма сама розмітила диск. Далі тиснемо , щоб підтвердити зміни.

Наступне вікно: вибір джерела інсталяції. По дефолту як джерело використовується CD/DVD, тому просто тиснемо . Підтверджуємо вибір натисканням у наступному вікні. Тепер почнеться процес копіювання файлів, після якого на екран буде виведено повідомлення з питанням про повернення в головне меню інсталятора. Натискаємо , далі , «Yes» та . Операційна система має перезавантажитись. Не забуваємо вийняти диск з приводу, щоб ОС завантажилася з жорсткого диска.

Після закінчення завантаження вводимо ім'я користувача root та отримуємо доступ до командного інтерпретатора.

Крок 2. Налаштування

Ми тільки що встановили FreeBSD, але вона ще не готова виконувати роль повноцінного сервера: мережа не працює, root не має пароля, в системі тільки один користувач. Виправимо це. Насамперед, встановимо користувачеві пароль:

На екрані з'являться питання, на більшість з яких можна не давати відповіді (тиснути ), важливими є лише ім'я користувача, дефолтовий командний інтерпретатор (краще вибрати tcsh) та пароль. Наприкінці команда виведе на екран список налаштувань користувача, у відповідь на який слід ввести слово «yes», і у відповідь на наступне запитання ввести «no».

Щоб користувач зміг отримувати права root, додамо його до групи wheel:

# pw groupmod wheel -m username

Виправимо файл /etc/fstab так, щоб ніхто не зміг запускати файли, розташовані на розділах /tmp та /var. Для цього додамо прапори "noexec" у полі Options кожного з цих розділів.

Встановимо більш жорсткі обмеження на доступ до системних файлів:

# chmod 0600 /etc/syslog.conf

chmod 0600 /etc/rc.conf

chmod 0600 /etc/newsyslog.conf

chmod 0600 /etc/hosts.allow

chmod 0600 /etc/login.conf

Тепер нам потрібно налаштувати мережеве з'єднання. У FreeBSD всі глобальні налаштування зберігаються у файлі /etc/rc.conf, тому відкриваємо його за допомогою редактора та додаємо наступні рядки:

# ee /etc/rc.conf
hostname="host.com"
ifconfig_em0="inet 1.2.3.4 netmask 0xffffffff"
defaultrouter="5.6.7.8"

Тут em0 в другому рядку - це ім'я мережного інтерфейсу, що налаштовується. Список доступних мережних інтерфейсів можна отримати за допомогою команди ifconfig. Як значення опції можна вказати DHCP, тоді конфігурування інтерфейсу буде використаний dhclient. Також одразу додамо кілька важливих для нас опцій:

# ee /etc/rc.conf

Вимикаємо переадресацію пакетів та

реєструємо всі спроби переадресації

icmp_drop_redirect="YES"
icmp_log_redirect="YES"

Забороняємо відповіді на широкомовні ping-запити

icmp_bmcastecho="NO"

Очищаємо каталог /tmp при кожному завантаженні

clear_tmp_enable="YES"

Забороняємо оновлення файлу /etc/motd під час кожного завантаження

update_motd="NO"

Не приймаємо пакети з одночасно встановленими

прапорами SYN та FIN

tcp_drop_synfin="YES"

Вимикаємо sendmail

sendmail_enable="NO"
sendmail_submit_enable="NO"

Включаємо SSH

sshd_enable="YES"

Щоб вийти з редактора, натискаємо і двічі . Додамо адресу DNS-сервера в /etc/resolv.conf:

# ee /etc/resolv.conf
nameserver 8.8.8.8

Щоб налаштувати мережеві налаштування, виконуємо наступну команду:

# /etc/rc.d/netif retstart

Перевіряємо доступність мережі:

# ping execbit.ru

Додамо кілька корисних рядків у файл /etc/sysctl.conf:

# ee /etc/sysctl.conf

Не відповідати на спроби підключення до закритих портів

(врятує від деяких видів DoS-атак і ускладнить

сканування портів)

net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1

Дозволяється дивитися список всіх процесів тільки root

kern.ps_showallprocs=0

Захистимо SSH-сервер від брутфорс-атак:

# echo "MaxStartups 5:50:10" >> /etc/ssh/sshd_config

/etc/rc.d/sshd restart

Тепер SSH-сервер відкидатиме 50% нових підключень у разі, якщо буде зроблено п'ять неправильних реєстрацій. Коли їх буде десять, сервер перестане відповідати зовсім.

При використанні експрес-установки система портів (фреймворк для установки стороннього ПЗ в ОС) не встановлюється у FreeBSD автоматично, тому нам треба зробити це вручну (це добре, тому що так ми отримаємо найсвіжіший зріз портів, що не містить застарілого дірявого ПЗ):

# portsnap fetch extract

Також можна оновити базову систему, але це робити не обов'язково:

# freebsd-update fetch

freebsd-update install

shutdown -r now

Після того, як порти будуть оновлені, встановимо в систему інструмент rkhunter, необхідний для вилову руткітів, які можуть бути встановлені в систему в майбутньому:

# cd /usr/ports/security/rkhunter

make install clean

Відредагуємо конфігураційний файл /usr/local/etc/rkhunter.conf так, щоб опція MAIL-ON-WARNING містила email, на який слід надсилати повідомлення про виявлені аномалії.

Змусимо інструмент перевірити себе на оновлення:

# rkhunter --update

Після цього створимо знімок системних файлів, який буде використовуватися як зразок під час пошуку руткітів:

# echo "daily_rkhunter_update_enable="YES"" > /etc/periodic.conf

echo "daily_rkhunter_check_enable="YES"" > /etc/periodic.conf

Все, тепер усі повідомлення про підозрілу системну активність будуть розміщуватися в лог /var/log/rkhunter.log і надсилатися на вказаний в конфігураційному файлі email.

# crontab -e 0 2 * * * root /usr/local/sbin/ntpdate pool.ntp.org

Нарешті, встановимо і Webmin, web-орієнтований інтерфейс для віддаленого керування сервером (ті, хто вважає за краще використовувати для адміністрування SSH, можуть пропустити цей крок):

# cd /usr/ports/sysutils/webmin

make install clean

echo "webmin_enable="YES"" >> /etc/rc.conf

# /usr/local/lib/webmin/setup.sh

На запитання можна відповідати натисканням Однак, коли справа дійде до введення пароля (рядок "Login password:"), слід ввести пароль на доступ до Webmin (краще, якщо він буде відрізнятися від інших паролів). Далі можна запустити Webmin:

# /usr/local/etc/rc.d/webmin start

І протестувати його роботу, ввівши адресу "https://host.com:10000/" в адресний рядок найближчого браузера.

AMP

Тепер настав час встановити стек AMP, тобто веб-сервер Apache, базу даних MySQL та інтерпретатор PHP. Спочатку займемося Apache. Ідемо в порти та встановлюємо останню версію:

# cd /usr/ports/www/apache22

make confi g install clean

На екрані має з'явитися вікно конфігуратора, за допомогою якого ви можете вибрати установку опціональних компонентів сервера. Що-небудь змінювати тут сенсу немає, тому можеш сміливо тиснути . Після закінчення складання та встановлення не забудь додати сервер до автозапуску (якщо підтримка SSL не потрібна, другий рядок можна пропустити):

# echo "apache22_enable="YES"" >> /etc/rc.conf

echo "apache22ssl_enable="YES"" >> /etc/rc.conf

Також до конфігураційного файлу слід додати інструкцію для завантаження модуля accf_http, який буферизуватиме HTTP-з'єднання, що розвантажить сервер і допоможе у боротьбі з SYN-флудом:

# echo "accf_http_ready="YES"" >> /etc/rc.conf

kldload accf_http

# cd /usr/ports/lang/php5

make config install clean

Переконайтеся, що опцію "Build Apache module" вибрано. Плюс кілька розширень щодо нього:

# cd /usr/ports/lang/php5-extensions

make config install clean

Важливо, щоб на кроці конфігурування PHP ти не забував відзначити пункт MySQL database support, що примушує систему портів до встановлення модуля PHP для роботи з MySQL. Без нього нічого не запрацює.

Тепер відкриваємо конфігураційний файл Apache у текстовому редакторі (у FreeBSD він захований далеко: /usr/local/etc/apache22/ httpd.conf) і змінюємо в ньому наступне:

1. Після рядків LoadModule додаємо наступні два рядки:

AddType application/x-httpd-php.php
AddType application/x-httpd-php-source.phps

2. Знаходимо опцію ServerAdmin і прописуємо як її значення свою поштову адресу:

ServerAdmin [email protected]

3. У опції DocumentRoot вказуємо каталог, в якому зберігатимуться всі файли нашого веб-сайту:

DocumentRoot "/home/www/data"

Не забуваймо створити цей каталог:

# mkdir /home/www

mkdir /home/www/data

mkdir /home/www/cgi-bin

Я віддаю перевагу використати як кореневий каталог /home/www так як, по-перше, каталог /home зазвичай знаходиться на найбільшому розділі (автоконфігуратор розділів, який ми використовували в ході установки, відводить під /home більшу частину простору), а по- по-друге, з ним простіше працювати, ніж з якимось /usr/local/www/apache22/data, захованим у безліч підкаталогів.

4. Знаходимо наступний рядок:

І змінюємо її так, щоб як каталог було вказано DocumentRoot:

5. Змінюємо наступні рядки:


DirectoryIndex index.html


DirectoryIndex index.php index.html

6. Усередині директиви замінюємо рядок:

ScriptAlias ​​/cgi-bin/ "/usr/local/www/apache22/cgi-bin/"

Ось цієї:

ScriptAlias ​​/cgi-bin/ "/home/www/cgi-bin/"

7. Наступний рядок:

Замінюємо цією:

Зберігаємо файл та створюємо файл налаштувань PHP:

# cp /usr/local/etc/php.ini-recommended /usr/local/etc/php.ini

Цього буде достатньо для нормальної роботи Apache разом із PHP. Тепер можна розпочати встановлення MySQL. Ідемо в порти і робимо таке:

# cd /usr/ports/databases/mysql50-server

make WITH_OPENSSL=yes install clean

Створимо рудиментарний конфігураційний файл, якого вистачить спочатку:

# ee /etc/my.cnf
port=29912
port=29912
bind-address=127.0.0.1

Додамо MySQL в автозавантаження і запустимо сервер:

# echo "mysql_enable="YES""<< /etc/rc.conf

/usr/local/etc/rc.d/mysql-server start

Встановимо пароль на доступ до бази даних:

# mysqladmin -u root password пароль

mysql -u root -p

Тепер MySQL повинна нормально функціонувати, але керувати базами даних вручну не дуже зручно, до того ж, для деяких це буде перший досвід встановлення MySQL, а наскоку розібратися з нею не так просто. Тому встановимо веб-інтерфейс керування MySQL під назвою PHPMyAdmin:

# cd /usr/ports/databases/phpmyadmin

make install clean

Виправимо конфігураційний файл PHPMyAdmin, вказавши пароль на доступ до web-інтерфейсу:

# cd /usr/local/www/phpMyAdmin

cp config.sample.inc.php config.inc.php

ee config.inc.php

$cfg["blowfi sh_secret"] = "пароль";

Тепер знову відкриваємо конфігураційний файл Apache і робимо таке:

1. У секцію додаємо наступний рядок:

Alias ​​/phpmyadmin /usr/local/www/phpMyAdmin

2. Наприкінці секції додаємо наступні рядки:


Order allow,deny
Allow from all

Тут замість "Allow from all" можна додати щось на кшталт "Allow from 123.456.789.0/12", щоб дозволити доступ до PHPMyAdmin тільки з певної підмережі. Перезапускаємо Apache:

Це все, тепер (L)AMP має працювати.

HTTPS

PHPMyAdmin для коректної роботи потребує підтримки HTTPS, і цілком можливо, що в майбутньому тобі знадобиться цей протокол для встановлення безпечного зашифрованого з'єднання між клієнтом та сайтом. Тому зробимо так, щоб Apache його розумів.

Для початку виправимо конфігураційний файл OpenSSL (/etc/ssl/openssl.cnf), додавши до нього наступні рядки:

# Каталог для зберігання сертифікатів
dir = /root/sslCA

Термін дії сертифікату (~10 років)

default_days = 3650

Тепер підготуємо каталог та створимо сертифікати для власного центру сертифікації:

mkdir sslCA

chmod 700 sslCA

chmod 700 sslCA

mkdir private

cd sslCA

openssl req -new -x509 -days 3650 -extensions v3_ca

Keyout private/cakey.pem -out cacert.pem
-config /etc/ssl/openssl.cnf

Перевіримо, що сертифікати були створені успішно:

# ls -l cacert.pem private/cakey.pem

Згенеруємо сертифікати для Apache і помістимо їх у каталог /etc/ssl:

# cd /root/sslCA

openssl req -new -nodes -out имя_хоста-req.pem

Keyout private/ім'я_хоста-key.pem -config /etc/ssl/openssl.cnf

openssl ca -confi g /etc/ssl/openssl.cnf -out

ім'я хоста-cert.pem -infiles ім'яхоста-req.pem

cp /root/sslCA/ім'я_хоста-cert.pem /etc/ssl/crt

cp /root/sslCA/private/ім'я_хоста-key.pem /etc/ssl/key

Знову відкриваємо конфігураційний файл Apache, знаходимо наступний рядок та розкоментуємо його:

# ee /usr/local/etc/apache22/httpd.conf

Include etc/apache22/extra/httpd-ssl.conf

Вносимо такі зміни до файлу /usr/local/etc/apache22/extra/http-ssl.conf:

# ee /usr/local/etc/apache22/extra/http-ssl.conf

Ім'я сервера HTTPS

ServerName ssl.host.com

Шлях до файлу, що містить сертифікат та ключ

SSLCertificateFile /etc/ssl/crt/yourhostname-cert.pem
SSLCertificateKeyFile /etc/ssl/key/yourhostname-key.pem

Те саме, що й у головному конфізі

DocumentRoot "/home/www/data"

Куди писати логі

ErrorLog "/var/log/httpd-error.log"
TransferLog "/var/log/httpd-access.log"

Перезапускаємо Apache:

# /usr/local/etc/rc.d/apache22 restart

Що далі?

У цій статті я показав, як підняти повністю працездатний стек (L)AMP на базі FreeBSD (так що це швидше за FAMP), і все, що тобі тепер потрібно зробити, це завантажити свій улюблений сайтовий движок і розгорнути його в каталог /home/www /data (не забувши покласти скрипти в /home/www/cgi-bin). Решта візьме він (L)AMP.

LAMP stack is the foundation for Linux hosted website is the Linux, Apache, MySQL and PHP (LAMP) software stack.

LAMP Stand for:-

  1. L (Linex OS)
  2. A (Apache [ Local Client Server])
  3. M (MySQL Database)
  4. P (PHP)

A LAMP Stack є набором Open-source software, який може бути використаний для створення веб-сайтів і веб-застосунків. LAMP є акронімом, і ці резерви типово містяться в Linux operating system, Apache HTTP Server, MySQL relative database management system, and PHP programming language.

    Linux: Operating system (OS) надходять до нашого першого року. Linux натисніть на foundation for stack model. Всі інші літери йдуть на верхній частині цього літера. Linux is the lowest-level layer and provides the operating system. Linux наразі runs є на всіх інших компонентах. Ви не є specifically limited to Linux, however; Ви можете скористатися всіма іншими компонентами на Microsoft®; Windows®;, Mac OS X, або UNIX®, якщо вам потрібно.

    Apache:Вже два роки містять веб-сервер-сервер, типово Apache Web Server. Цей матеріал перебуває на верхній частині Linux літера. Web servers є відповідальними для передачі від веб-браузерів до своїх правильних веб-сайтів. Apache забезпечує техніку для отримання Web page to a user. Apache є стабільним, mission-critical-capable server, і його несуть більше ніж 65 відсотків всіх веб-сайтів на Інтернеті. Це PHP компоненти, що працюють в даний момент в Apache, і ви використовуєте Apache і PHP разом з тим, щоб створити свої dynamickі сторінки.

    MySQL:Цей тридцятирічний аркуш є в якому databases live. MySQL stores details that can be queried by scripting to construct a website. MySQL зазвичай розміщені на верхній частині Linux-літера за Apache/layer 2. У високих налаштуваннях, MySQL може бути offloaded до окремого host server. MySQL забезпечується data-storage side of the LAMP system. З MySQL, ви маєте додатковий доступ до дуже сприятливого database suitable for running large and complex sites. Зі свого веб-застосування, всі ваші дані, продукція, аккаунт, і інші типи інформації буде залишатися в цьому документі в форматі, який ви можете використовувати з SQL Language.

    PHP:Зображення на верхній частині їх є всі чотири і останніх років. Підписані літери містять PHP і/або інші подібні програмні програми для англійської мови. Websites and Web Applications run within this layer. PHP є простим і ефективним програмуванням мови, що забезпечує glue для всіх інших частин системи LAMP. Ви використовуєте PHP для отримання Dynamic content capable of accessing the data in the MySQL database and some of the features that Linux provides.


Стек LAMP (Linux/apache/mysql/php) є найбільш напівлярним серед розробників набором технологій створення сайтів. Виходячи з досвіду, який ми маємо, ми розробили кілька готових образів VDS для швидкого розгортання на них міні хостингу, орієнтованого на роботу в LAMP. Загальним принципом при розробці цих образів було забезпечення однотипності налаштувань, щоб сайти, розміщені на одному VDS легко переміщалися на інший VDS, навіть базується на іншому образі (іншому наборі базового ПЗ) і всі основні завдання адміністрування будь-якого з VDS на базі будь-якого з пропонованих образів виконувалися однотипно. Ми також вирішили, що дуже важливо, щоб додавання нових сайтів на сервер було не складніше, ніж просто створення папки з ім'ям сайту. У результаті ми створили на базі дистрибутивів Debian Wheezy, Ubuntu Precise Pangolin та Ubuntu Trusty Tahr з наступним набором:

  • Nginx + Apache2 + PHP 5.4 (FastCGI) + MariaDB 5.5 + phpMyAdmin + sftp
  • Nginx + Apache2 + PHP 5.4 (mod_php) + MariaDB 5.5 + phpMyAdmin + sftp
  • Nginx + PHP 5.4 (php-fpm) + MariaDB 5.5 + phpMyAdmin + sftp

1. Загальний опис готових образів

Всі образи побудовані виходячи з того, щоб головним та єдиним користувачем у системі, від імені якого працюють скрипти та виконуються всі інші дії, був користувач web. Аналогічно прийнятому в Ubuntu порядку речей, в образах на базі Debian пряма робота від імені root не вітається (заблокована) і натомість користувачеві web через sudo надано можливість виконувати будь-які команди з привілеями суперкористувача. Таким чином, для входу на новостворений VDS з ssh необхідно виконати команду:

$ssh [email protected]

Крім входу по ssh також підтримується протокол sftp. Підключення здійснюється з тим же логіном web і паролем, який був згенерований при створенні VDS, або за допомогою ключа, так само вказаного при створенні VDS.

Після входу в систему ви опинитеся в папці /var/www/web, яка є основною для наших образів VDS. Тут ви знайдете папку sites - це папка, в якій розміщуватимуться ваші сайти. Щоб додати новий сайт, достатньо всередині папки sites створити підпапку з ім'ям нового сайту без префікса www. . Докладніше про це нижче.

Логи відвідування розміщених у вас сайтів apache буде писати до папки /var/log/apache2 , а nginx, якщо встановлено, до папки /var/log/nginx . У випадку, якщо у PHP-скриптів виникнуть помилки в роботі, інформація про них писатиметься у файл /var/www/web/php-errors.log

2. Додавання сайтів

Додавання сайтів- найчастіше потрібна операція для масового віртуального хостингу, тому ми постаралися максимально її спростити. Для додавання нового сайту mycompany.ru на ваш сервер вам потрібно зробити дві прості дії:

  1. У папці /var/www/web/sites потрібно створити підпапку з ім'ям mycompany.ru , тобто з ім'ям домену без www. . У цій папці надалі потрібно буде викладати скрипти, що стосуються цього сайту.
  2. Через редактор DNS у вашого провайдера, що надає вам послугу паркування домену в DNS, необхідно буде додати A-записи, що вказують на ip-адресу вашого VDS: одну для імені mycompany.ru, іншу для www.mycompany.ru.

Додавання аліасу(альтернативне ім'я для вашого сайту) є не менш простою операцією. Якщо до сайту mycompany.ru потрібно додати аліас www.mycompany.ru, то знадобиться всього дві дії:

  1. Створити символьне посилання (symlink): cd /var/www/web/sites & ln -s mycompany.ru www.mycompany.ru
  2. Створити A-записи в DNS, що вказують на IP-адресу вашого сервера: для імені c www. та без www.

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

3. Робота з MySQL (MariaDB)

Для новостворених VDS пароль доступу користувачем root MySQL генерується випадковим чином. Дізнатися пароль можна командою

Sudo cat /root/.my.cnf

Якщо ж ви хочете попрацювати з MySQL з консолі, достатньо буде запустити команду sudo -H mysql без параметрів і ви відразу потрапите в консоль MySQL без необхідності вводити пароль. Якщо така настройка системи вас не влаштовує, можете сміливо видалити файл.my.cnf , попередньо зберігши собі записаний у ньому пароль.

Файл налаштувань MySQL розташований у стандартному місці, але для його редагування вам знадобляться права суперкористувача:

Sudo nano /etc/mysql/my.cnf

Щоб зміни набули чинності, необхідно перезапустити MySQL:

Sudo service mysql restart

4. Налаштування PHP та встановлення розширень

Оскільки в системі встановлено стандартний PHP з репозиторіїв Debian/Ubuntu, налаштування PHP та встановлення розширень проводиться стандартним для debian based дистрибутивів чином. Файл php.ini збирається з кількох складових частин: з основного php.ini та вмісту директорії conf.d . Для FastCGI версії PHP установки беруться з папки /etc/php5/cgi , для mod_php - з папки /etc/php5/apache2 , для CLI версії (це /usr/bin/php , тобто та версія php, яка використовується для завдань cron та інших завдань, що виконуються в консолі) - /etc/php5/cli. Версія php-fpm відповідно використовує php.ini з папки /etc/php5/fpm .

Ви можете легко переглянути які розширення php встановлені у вашій системі, виконавши в консолі сервера команду:

$dpkg-l | grep php

Переглянути список доступних розширень php ви можете за командою:

$ apt-cache search php5

Перед першим викликом команд apt-cache/apt-get на новій системі не забудьте виконати sudo apt-get update .

Встановити потрібне розширення зі списку дуже просто. Допустимо, ми хочемо додати до системи акселератор XCache. Відповідний пакет буде називатися php5-xcache , а команда по його установці, що вимагає привілеїв суперкористувача, буде така:

$ sudo apt-get install php5-xcache

Оскільки php, починаючи з версії 5.4, вимагає явної вказівки тимчасової зони в налаштуваннях (date.timezone), за замовчуванням встановлюється тимчасова зона UTC . Ця установка задається у файлі /etc/php5/apache2/conf.d/local.ini . Вам необхідно змінити її відповідно до своїх уподобань.

У будь-якому випадку, якщо у вас виникають питання щодо роботи вашої системи на базі наших готових образів, ви завжди можете звернутися до нашої технічної підтримки.

5. Запуск Django за допомогою uWSGI

Django (Джанго) це вільний фреймворк, що дозволяє швидко та якісно розробляти динамічні веб-додатки мовою Python.

    Установка виконується таким чином, щоб не порушувати роботу сайтів, розміщених у /var/www/

    Дії сервера виконуються від імені користувача root.

Показати інструкції з встановлення

5.1 Встановлення пакетів та запуск uWSGI

Встановимо необхідні для роботи пакети, а також виберемо версію uwsgi з pip як версію за замовчуванням:

Apt-get update && apt-get install -y python-pip python-dev uwsgi-plugin-python uwsgi && pip install virtualenv virtualenvwrapper uwsgi && update-alternatives --install /usr/bin/uwsgi uwsgi uwsgi 80

На установку потрібно 2-3 хвилини і встановлені пакети займуть близько 300 Мб на диску.

Створимо користувача в системі, переключимося на нього, а також додамо змінні його системний профіль

Useradd -s /bin/bash -m -p $(pwgen -1 -N 1) project1 && su - project1 -c "echo "export WORKON_HOME=~/Env" >> ~/.bashrc && echo "source /usr/ local/bin/virtualenvwrapper.sh" >> ~/.bashrc" && su - project1

Створимо віртуальне оточення, встановимо в ньому django та створимо наш проект

Cd ~ && mkvirtualenv firstsite && pip install django && django-admin.py startproject firstsite

Для зручності перечитування проекту створимо файл

Touch ~/firstsite/touch_reload

Надалі достатньо буде виконати цю команду від імені користувача project1 щоб передати команду uwsgi перечитати конфігурацію проекту. Це може бути дуже зручно, коли розробкою проекту займається окремий фахівець без root доступу до сервера – адміністратору сервера не потрібно буде щоразу заходити від користувача root для перезапуску uwsgi.

Повернімося до сесії користувача root скориставшись поєднанням клавіш Ctrl+D.

Тепер створимо конфігураційний файл uwsgi для нашого проекту

Mcedit /etc/uwsgi/apps-enabled/firstsite.ini

І скопіюємо в нього (вносити зміни до скопійованого тексту не потрібно):

Project = firstsite userhomedir = /home/project1 chdir = %(userhomedir)/%(project) home = %(userhomedir)/Env/%(project) module = %(project).wsgi:application processes = 4 threads = 2 chown -socket = www-data uid = project1 gid = project1 vacuum = true touch-reload = %(userhomedir)/%(project)/touch_reload buffer-size = 8192 listen = 128 harakiri = 300

Для збереження в mcedit достатньо натиснути F2 на клавіатурі.

Запустимо uwsgi сервер

/etc/init.d/uwsgi start

5.2 Створення конфігураційного файлу для nginx

Нам потрібно буде з'ясувати IP-адресу сервера. Його можна подивитися виконавши команду

Hostname -I

Створимо сам конфігураційний файл для nginx

Mcedit /etc/nginx/sites-available/firstsite

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

Server ( listen serverip:80; server_name sitenameru; location = /favicon.ico ( access_log on; log_not_found off; ) location /static/ ( root /home/project1/firstsite; ) location / ( include uwsgi_params; uwsgi_pass un run/uwsgi/app/firstsite/socket; ) )

У цьому конфігураційному файлі потрібно змінити serverip на ip адресу Вашого сервера, а sitename - на ім'я домену, за яким відкриватиметься ваш проект.

Активуємо щойно створений конфігураційний файл і передамо сигнал nginx для перечитування конфігурації

Ln -s /etc/nginx/sites-available/firstsite /etc/nginx/sites-enabled/ && nginx -s reload

Готово! Якщо запис DNS для домену sitenameru вказує на IP адресу сервера, то ваш проект вже повинен бути доступний за адресою sitenameru .

5.3 Оптимізація відображення статичних файлів

Коли проект буде завантажений і потрібно оптимізувати статичні файли, достатньо буде виконати команди

Su - project1 workon firstsite

Додамо до кінця файлу firstsite/firstsite/settings.py згадку про розташування статичних файлів

Echo "STATIC_ROOT = os.path.join(BASE_DIR, "static/")" | tee -a ~/firstsite/firstsite/settings.py

Запустимо скрипт збору статичних файлів

~/firstsite/manage.py collectstatic

Для початку роботи скрипта потрібно надрукувати yes.

© 2023 androidas.ru - Все про Android