Главная » Различные проблемы » Lamp стек описание его компонентов. Что такое LAMP? Преимущества и недостатки. регистрируем все попытки переадресации

Lamp стек описание его компонентов. Что такое LAMP? Преимущества и недостатки. регистрируем все попытки переадресации

The LAMP stack is the foundation for Linux hosted websites 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 is a set of open-source software that can be used to create websites and web applications. LAMP is an acronym, and these stacks typically consist of the Linux operating system, the Apache HTTP Server, the MySQL relational database management system, and the PHP programming language.

    Linux: The operating system (OS) makes up our first layer. Linux sets the foundation for the stack model. All other layers run on top of this layer. Linux is the lowest-level layer and provides the operating system. Linux actually runs each of the other components. You are not specifically limited to Linux, however; you can easily run each of the other components on Microsoft®; Windows®;, Mac OS X, or UNIX® if you need to.

    Apache: The second layer consists of web server software, typically Apache Web Server. This layer resides on top of the Linux layer. Web servers are responsible for translating from web browsers to their correct website. Apache provides the mechanics for getting a Web page to a user. Apache is a stable, mission-critical-capable server, and it runs more than 65 percent of all Web sites on the Internet. The PHP component actually sits inside Apache, and you use Apache and PHP together to create your dynamic pages.

    MySQL: Our third layer is where databases live. MySQL stores details that can be queried by scripting to construct a website. MySQL usually sits on top of the Linux layer alongside Apache/layer 2. In high-end configurations, MySQL can be offloaded to a separate host server. MySQL provides the data-storage side of the LAMP system. With MySQL, you have access to a very capable database suitable for running large and complex sites. Within your Web application, all your data, products, accounts, and other types of information will reside in this database in a format that you can easily query with the SQL language.

    PHP: Sitting on top of them all is our fourth and final layer. The scripting layer consists of PHP and/or other similar web programming languages. Websites and Web Applications run within this layer. PHP is a simple and efficient programming language that provides the glue for all the other parts of the LAMP system. You use PHP to write dynamic content capable of accessing the data in the MySQL database and some of the features that Linux provides.

Под стеком web-приложений мы будем подразумевать множество программных продуктов с открытым исходным кодом: операционная система, web -сервер, сервер БД и среду исполняемого кода. Наиболее известным и обыденным стеком является LAMP. Это акроним для стека web-приложений на базе бесплатных решений с открытым исходным кодом.

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», а затем клавишу ВВОД, чтобы продолжить, и следуйте остальным указаниям по установке административного пароля для 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, cемантическая паутина.

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.

Для каждой единицы информации (info) определяется 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 не имеет пароля, в системе только один пользователь. Исправим это. Перво-наперво, установим пользователю root пароль:

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

Чтобы пользователь смог получать права root, добавим его в группу wheel:

# pw groupmod wheel -m имя_пользователя

Исправим файл /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.

Предлагают своим пользователям большие возможности для создания веб-сайтов, их хранения на сервере и тестирования. Многие наверняка слышали, что правильная настройка Apache и MySQL позволяет удобно работать с серверами. Пора познакомиться и с LAMP, которая их всех объединяет, а также понять, как установить и настроить LAMP-сервер в Ubuntu.

Установка LAMP позволяет создать web-сервер.

LAMP - это не программа, как можно подумать сперва, и не сервер. За этой аббревиатурой скрывается стек или комплекс программ серверного назначения: Apache, MySQL, PHP. Отсюда и название - первые буквы каждой из этих программ. Первая буква взята от Linux.

Подробнее о компонентах.

  • Apache - это свободный HTTP-сервер.
  • MySQL - мощная, также бесплатная система управления базами данных. Используется на многих сайтах.
  • PHP - язык программирования. На нём очень часто пишут различные веб-приложения.

Всё это ПО полезно и практически незаменимо для размещения веб-сайтов в сети . Осталось научиться устанавливать его и пользоваться.

Установка LAMP

ЛАМП устанавливается несколькими способами. Так как это комплекс программ, то можно загрузить каждую из них по отдельности, но удобнее сделать это вместе. Для этого проще воспользоваться Tasksel:

sudo tasksel install lamp-server

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

Удаление

Удалить стек полностью также можно одной командой:

sudo tasksel remove lamp-server

Произойдёт установка всех компонентов: PHP 7, Apache, MySQL. Для более удобной работы программы добавляются в автозагрузку. Если вы хотите это изменить, сделайте это через настройки: Система - Параметры - Запускаемые приложения. Там просто удалите компоненты ЛАМПа.

Установка и настройка

Всё-таки большинству, наверное, хотелось бы сразу же получить хотя бы тестовый, но настроенный рабочий сервер . Тогда следуем дальнейшим инструкциям.


Настраиваем сервер и добавляем веб-сайт

Настройка сервера LAMP - наиболее важная часть, так как установка MySQL, Apache, PHP 7 на Ubuntu не представляет никакой сложности. Далее нужно будет поработать с программным кодом.

sudo ln -s /etc/phpmyadmin /var/www

Открываем, а затем редактируем конфигурацию сервера:

sudo nano /etc/apache2/apache2.conf

Добавляем в конец строку:

ServerName localhost:80

Открываем файл hosts:

Добавляем строку:

Делаем файл конфигурации нового сайта:

‹VirtualHost *:80›
ServerAlias testsite.ru www.testsite.ru
DocumentRoot /home/server/testsite.ru
‹Directory home/server/testsite.ru/›
AllowOverride All
‹/Directory›
‹/VirtualHost›

Помещаем этот файл с root-правами сюда: /etc/apache2/sites-available/

Активируем сайт:

sudo a2ensite testsite.ru

Перезапускаем сервер:

sudo /etc/init.d/apache2 restart

Создание страницы для веб-сайта

Делаем первую страницу - файл index.php в папке с сайтом (home/server/testsite.ru).

Вводим туда:

‹?
echo ‘Привет!!!’;
?›

Вообще, ввести можно что угодно, нужно это лишь для проверки работоспособности сервера.

Открываем через браузер нашу страничку: вводим веб-адрес в строку.

После этого мы должны увидеть заветное «Привет!!!». Если это произошло, то всё настроено правильно. Теперь в этой папке можно расположить полноценный веб-сайт, который будет тестироваться на LAMP. Папку, как и адрес сайта, конечно же, можно менять.

Теперь вы знаете, что установка и настройка MySQL, Apache, PHP (LAMP) на Ubuntu не так уж страшны, как кажутся изначально. Это лишь базовые возможности софта. Со временем вы научитесь использовать всю мощь программ.

LAMP стек — набор программного обеспечения с открытым исходным кодом, которой обычно устанавливается на сервер для отображения динамических веб-сайтов и веб-приложений. Эта аббревиатура обозначает Linux(операционная система) с установленным веб-сервером Apache, MySQL(база данных) для хранения данных и PHP с помощью которого обрабатывается динамический контент.

В данной инструкции будет описан по шагам процесс установки LAMP на VPS сервер с установленной Ubuntu 16.04 server. Ubuntu — подходит для LAMP, так как это операционная система на базе Linux.

Перед тем как продолжить работу, у нас должен быть сервер, виртуальный сервер или VPS с установленным дистрибутивом Ubuntu 16.04 Server, а также возможность подключения к серверу по SSH для пользователя с административными (sudo) привилегиями. Собственно сам пользователь с правами sudo.

Инструкция по настройке LAMP стек (linux, apache, mysql, php) на Ubuntu 16.04 server

Шаг № 1 Установка Apache веб-сервера

Веб сервер Apache самый популярный в настоящее время и более прост в освоении начинающим чем Nginx. Он хорошо описан и в интернете достаточно примеров по его настройке и оптимизации.

Это отличный выбор для хостинга веб-сайтов.

Для установки Apache в Ubuntu 16.04 воспользуемся менеджером пакетов apt. Менеджер пакетов позволит установить большую часть программного обеспечения из репозиториев Ubuntu

Для начала установки выполним команды:

sudo apt update sudo apt install apache2

sudo apt update

sudo apt install apache2

Поскольку мы используем команду sudo , будет запрошен пароль на повышение привилегий пользователя до sudo и команды будут выполняться с привилегиями root.

Настройка глобальной переменной Apache ServerName

После установки нам нужно добавить в файл конфигурации /etc/apache2/apache2.conf для устранения предупреждения о синтаксических ошибка. Настроить переменную ServerName необходимо, что бы не получать предупреждение каждый раз при проверке конфигурации Apache:

Открываем конфигурационный файл командой:

sudo nano /etc/apache2/apache2.conf

Проверяем результат установки набрав в браузере localhost или публичный IP адрес сервера (если это например VPS).

http://домен_или_IP_адрес_сервера

в браузере должна открыться стандартная страница веб сервера Apache, как на примере:

Если вы видите эту страницу, ваш веб-сервер корректно установлен и работает.

Шаг 2 — Установка MySQL

Веб сервере Apache установлен и работает. Устанавливаем MySQL систему управления базами данных. MySQL обеспечит работу и доступ к базам данных в которых будет хранится информация веб сайта.

Установим MySQL следующей командой:

sudo apt install mysql-server

Система запросит пароль root (администратора) MySQL. И предложит включит модуль валидации

VALIDATE PASSWORD PLUGIN can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD plugin?

VALIDATE PASSWORD PLUGIN can be used to test passwords

and improve security . It checks the strength of password

and allows the users to set only those passwords which are

secure enough . Would you like to setup VALIDATE PASSWORD plugin ?

Нажимаем No и пропускаем этот шаг.

Если выбрать Yes пароли, которые не соответствуют указанным критериям, будет отклонены системой MySQL как ошибка. Это вызовет проблемы, если вы используете слабый пароль в программах, которые автоматически настраивают учетные данные пользователя MySQL (например PhpMyAdmin). Безопаснее отключить этот параметр и использовать надёжные уникальные пароли.

Следующим шагом удаляем возможность создания баз данных анонимным пользователем (используется в тестовых средах для продакшин не подходит)

By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) :

By default , a MySQL installation has an anonymous user ,

allowing anyone to log into MySQL without having to have

a user account created for them . This is intended only for

testing , and to make the installation go a bit smoother .

You should remove them before moving into a production

environment .

Remove anonymous users ? (Press y | Y for Yes , any other key for No ) :

Нажимаем Yes

Отключаем возможность подключатся к MySQL пользователем root удаленно.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) :

Disallow root login remotely ? (Press y | Y for Yes , any other key for No ) :

Нажимаем Yes

Удаляем тестовые базы

By default, MySQL comes with a database named "test" that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No) :

By default , MySQL comes with a database named "test" that

anyone can access . This is also intended only for testing ,

and should be removed before moving into a production

environment .

Remove test database and access to it ? (Press y | Y for Yes , any other key for No ) :

Нажимаем Yes

MySQL установлен и выполнены общие настройки безопасности.

Шаг 3 — Установка PHP

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

Для установки PHP выполним следующую команду:

sudo apt install php libapache2-mod-php php-mcrypt php-mysql

Содержимое файла должно выглядеть следующим образом (добавили index.php):

DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm



Предыдущая статья: Следующая статья:

© 2015 .
О сайте | Контакты
| Карта сайта