Lamp программа что это

Содержание

Установка LAMP-стека (Linux, Apache, MySQL, PHP) на Ubuntu

В статье мы узнаем, что такое LAMP-стек, как установить LAMP на Ubuntu, а также настроим виртуальные хосты.

Что такое LAMP

LAMP — это стек программного обеспечения, устанавливаемого на сервер и предназначенного для сайтов и веб-приложений. LAMP – это аббревиатура, она расшифровывается как: Linux, Apache, MySQL и PHP.

Рассмотрим каждый элемент LAMP подробнее:

  1. Linux используется в качестве ОС на сервере, часто это различные дистрибутивы Ubuntu и Debian.
  2. Apache — веб-сервер. Он обрабатывает все запросы к страницам сайта и выдает соответствующие ответы.
  3. MySQL — СУБД (система управления базами данных). Иногда в LAMP используется MariaDB. Здесь хранятся все данные сайта.
  4. PHP — скриптовый язык для генерации страниц.

Такой набор самостоятельных по отдельности компонентов стал очень популярен.

Существует множество вариаций LAMP, где какие-либо из компонентов заменяются на другие, например LEMP — вместо Apache в нем используется веб-сервер Nginx.

Подготовка к установке LAMP

Развернуть LAMP можно, например, на облачном сервере, который предварительно нужно создать. Создадим сервер в панели управления Облачной платформой Selectel. Подробно о начислении баланса на счет для доступа к работе в панели и создании облачного сервера можно прочитать в Базе знаний.

Создание облачного сервера

Перейдите в панель управления Облачной платформой, откройте вкладку Серверы и нажмите кнопку Создать сервер.

При создании сервера автоматически выбирается операционная система Ubuntu. Чтобы выбрать другую ОС для сервера, нажмите Выбрать другой источник. В целом, для установки LAMP подойдет любой дистрибутив Linux.

В этой инструкции в качестве операционной системы сервера выберите Ubuntu 18.04 LTS.

Для развертывания LAMP нужно присвоить серверу плавающий адрес. Для этого в разделе Сеть в качестве подсети выберите Новый плавающий IP-адрес. Проверьте стоимость сервера и нажмите Создать.

Созданный Облачный сервер со статусом ACTIVE появится в списке всех серверов. В карточке сервера на вкладке Порты можно посмотреть плавающий IP-адрес — в дальнейшем это пригодится для настройки LAMP.

Подключение к серверу по SSH

Работать с сервером можно во встроенной консоли в панели управления, которая находится на вкладке Консоль в карточке сервера. Но зачастую удобнее подключаться к серверу по протоколу SSH с локальной машины.

Для того чтобы подключиться к серверу по SSH, в терминале введите команду:

server_IP — это плавающий IP-адрес сервера, который был добавлен при его создании.

Терминал при подключении запросит root-пароль, который можно найти на вкладке Консоль в карточке сервера.

Если подключение к серверу прошло успешно, можно начать установку LAMP.

Установка Apache

Команды для установки

Установим первый после операционной системы компонент LAMP — Apache.

Предварительно загрузим списки пакетов обновлений, для этого используется команда:

sudo apt update
sudo apt install apache2

Настройка брандмауэра

Брандмауэр (файервол) должен пропускать HTTP и HTTPS-трафик — то есть должны быть открыты порты 80 и 443.

Для начала нужно установить утилиту для управления правилами файервола UFW (Uncomplicated Firewall) и включить UFW:

sudo apt install ufw
sudo ufw enable

На сервере должны быть доступны профили приложений для Apache. Посмотрим список профилей:

sudo ufw app list

Вывод команды выглядит примерно таким образом:

Available applications: Apache Apache Full Apache Secure OpenSSH

Можем увидеть, что в выводе присутствует профиль Apache Full — именно он открывает нужные порты 80 и 443. Разрешим для него входящий трафик:

sudo ufw allow ‘Apache Full’

Чтобы в дальнейшем продолжать подключение к серверу по SSH, добавим также профиль OpenSSH:

sudo ufw allow ‘OpenSSH’
sudo ufw status

В выводе команды проверим, что UFW активен, нужные профили включены, а, значит, разрешен HTTP и HTTPS-трафик:

Status: active To Action From — —— —- Apache Full ALLOW Anywhere OpenSSH ALLOW Anywhere Apache Full (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6)

Проверка работы Apache

Проверим статус Apache, он должен быть активен (Active в выводе команды):

sudo systemctl status apache2

Чтобы проверить работу Apache, введем публичный IP-адрес сервера в браузерной строке. В нашем случае это подключенный ранее плавающий IP. Если Apache установлен, и к нему разрешен доступ через файервол, то откроется страница с информацией:

Установка MySQL

Команда для установки

После установки и настройки Apache можно устанавливать следующий компонент — СУБД MySQL:

sudo apt install mysql-server

Настройка безопасности БД

Для защиты окружения рекомендуется запустить скрипт безопасности:

sudo mysql_secure_installation

Когда система предложит установить плагин валидации паролей (VALIDATE PASSWORD plugin), введем в терминал y или Y для подтверждения. Установка этого плагина поможет задать пароль с повышенными требованиями к безопасности.

Далее выберем уровень надежности паролей, всего их три:

  • низкий (LOW) — длина такого пароля должна быть больше 8 символов;
  • средний (MEDIUM) — длина пароля больше 8 символов, при этом пароль должен содержать цифры, буквы в верхнем и нижнем регистре, а также специальные символы;
  • сильный (STRONG) — для такого пароля должны быть соблюдены те же условия, что и для среднего уровня надежности, но при этом в пароле не должны использоваться слова, которые могут быть уязвимы при подборе пароля по словарю.

Введем в терминале значение для выбора уровня: 0 для LOW, 1 для MEDIUM или 2 для STRONG.

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

Система определит и выведет значение надежности пароля (Estimated strength of the password).

На дальнейшие вопросы от системы рекомендуем вводить в терминале подтверждение (y или Y) — это настройки удаления анонимных пользователей, удаление открытой тестовой базы и так далее.

Пароль будет создан, когда в терминале будет выведено сообщение «All done!».

Проверка работы MySQL

Проверим статус MySQL, он должен быть активен:

sudo systemctl status mysql

Установка PHP

Команды для установки

Теперь можно перейти к установке последней составляющей стека — PHP.

Установим PHP и специальные модули для работы PHP с Apache и MySQL:

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

При дальнейшей работе с сайтом, возможно, понадобятся и другие модули или расширения. Для настройки LAMP этих модулей достаточно.

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

sudo apt install php7.2

Чтобы узнать версию PHP, которая установлена, используйте команду:

php -v

Проверка установки PHP

Для проверки создадим небольшой PHP-скрипт с любым названием, например test.php, в корневой директории /var/www/html:

sudo nano /var/www/html/test.php

Заполним этот файл таким содержимым:

Сохраним и закроем файл (сочетание клавиш Ctrl+X, а затем Y+Enter).

Такой скрипт вызовет функцию phpinfo(), которая выводит информацию о PHP и список параметров.

Теперь откроем этот файл по URL:

http://server_IP/test.php

Если все настроено корректно, будет доступна информация о PHP:

Настройка виртуальных хостов (опционально)

Apache позволяет запустить на одной машине несколько веб-сайтов — при этом данные каждого сайта будут лежать в разных директориях. Для этого используются конфигурационные файлы — виртуальные хосты.

Допустим, мы хотим разместить на одном сервере два сайта. Сконфигурируем Apache.

Создание директорий

Размещать файлы виртуальных хостов будем внутри директории /var/www/. Для каждого хоста создадим новую отдельную директорию:

sudo mkdir -p /var/www/first_IP
sudo mkdir -p /var/www/second_IP

Обратите внимание, что вместо IP-адреса можно использовать и доменное имя.

Предоставление прав

Сейчас права доступа к директориям есть только у root-пользователя. Настроим права всем пользователям системы, используя переменную среды $USER:

sudo chown -R $USER:$USER /var/www/first_IP
sudo chown -R $USER:$USER /var/www/second_IP

Откроем пользователю доступ на чтение, редактирование и запуск файлов в директории /var/www:

sudo chmod -R 755 /var/www

Создание страниц для тестирования

В дальнейшем нам нужно будет проверить, правильно ли настроены виртуальные хосты. Для этого можно создать для каждого IP-адреса (домена) HTML-страницы, которые будут открываться в браузере при вводе соответствующего IP или домена, например, главные страницы index.html.

Создадим страницу для первого IP:

sudo nano /var/www/first_IP/index.html

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

First IP

Wow! First Site works!

Сохраним и закроем файл.

Выполним то же самое и для второго сайта:

sudo nano /var/www/second_IP/index.html
Second IP

Читайте также:
Aprs что это за программа

Wow! Second Site works!

Создание виртуальных хостов

По умолчанию в Apache используется виртуальный хост 000-default.conf.

Этот файл мы будем использовать как шаблон для создания собственных виртуальных хостов.

Для каждого сайта конфигурационные файлы (виртуальные хосты) хранятся в директории /etc/apache2/sites-available/. Скопируем содержимое виртуального хоста, который используется по умолчанию, в новый файл — мы будем использовать его для настройки первого сайта:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/first_IP.conf

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

sudo nano /etc/apache2/sites-available/first_IP.conf

Изменим значения в файле:

  • ServerAdmin — электронная почта администратора сайта;
  • ServerName — IP-адрес сайта или его доменное имя;
  • DocumentRoot — директория, в которой хранится конфигурационный файл (виртуальный хост).

Сохраним и закроем файл.

Подобным образом создадим конфигурационный файл для второго сайта:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/second_IP.conf
sudo nano /etc/apache2/sites-available/second_IP.conf

Содержимое конфигурационного файла /etc/apache2/sites-available/second_IP.conf:

Активация виртуальных хостов

Активируем виртуальные хосты с помощью a2ensite:

sudo a2ensite first_IP.conf
sudo a2ensite second_IP.conf

Отключим виртуальный хост, который создается по умолчанию:

sudo a2dissite 000-default.conf

Проверим, нет ли ошибок в конфигурационных файлах:

sudo apache2ctl configtest

Если ошибки отсутствуют, то получим результат:

Syntax OK

Перезапустим Apache, чтобы активировать все изменения:

sudo systemctl restart apache2

Теперь Apache должен обслуживать сайты, IP-адреса или домены которых мы прописали в виртуальных хостах. Проверим работу: перейдем в браузере на сайты — должны появиться созданные индексные страницы:

Источник: selectel.ru

Введение в LAMP, LEMP, MEAN, XAMPP, WAMP и стек AMPPS

Введение в LAMP, LEMP, MEAN, XAMPP, WAMP и стек AMPPS

Давайте узнаем о терминологии стека LAMP, LEMP, MEAN, XAMPP, WAMP и AMPPS?

1. LAMP

LAMP — это сокращение для Linux, Apache, MySQL и PHP. Каждый из этих компонентов имеет открытый исходный код и бесплатен в использовании, что способствовало их популярности.

Стек LAMP является, вероятно, наиболее распространенным стеком, используемым для размещения веб-сайтов и веб-приложений, особенно сайтов малого и среднего размера.

СтекLAMP

В стеке LAMP операционная система Linux обеспечивает основу, на которой могут работать все остальные компоненты стека. Apache — это программное обеспечение веб-сервера, которое он получает и обрабатывает все запросы посетителей. Если кто-то запрашивает index.html или JPEG, Apache ищет файл на сервере и отправляет его обратно в браузер посетителя.

P обозначает PHP. Это также может означать Perl или Python, хотя они не так распространены. PHP — это язык программирования для создания динамических веб-страниц. MySQL — это база данных, используемая для хранения данных сайта.

2. LEMP

В стеке LEMP, L обозначает Linux, E обозначает Nginx (engine-x), M обозначает MariaDB или MySQL, а P обозначает PHP, также это может быть Perl или Python. Программный стек LEMP может использоваться для обслуживания динамических веб-страниц и веб-приложений. Он довольно популярен среди сайтов WordPress.

СтекLEMP

Nginx способен обрабатывать огромный трафик, что делает LEMP лучшим выбором для хостинговых компаний. MariaDB используется для базы данных и PHP для загрузки динамических веб-страниц в браузере.

Поскольку все компоненты с открытым исходным кодом, вы можете использовать стек LEMP БЕСПЛАТНО.

3. MEAN

Под стеком MEAN понимается стек MongoDB, Express, Angular, и Node.js

MongoDB — это база данных NoSQL, а Express.js — это веб-фреймворк, работающая на Node.js, Angular — это платформа разработки на стороне клиента, а Node.js — среда выполнения. Вместе они могут быть использованы для создания потрясающих веб-приложений.

MEAN

Стек MEAN более популярен и популярен, чем стек LAMP.

Стек MEAN

Зачем стек MEAN?

  • Единый язык используется во всем приложении
  • Лучшая производительность, быстрее, чем у стека LAMP
  • Поддержка и частое применение использования архитектуры MVC
  • Популярность JavaScript

4. XAMPP

В стеке XAMPP X обозначает кроссплатформенный, A — Apache, M — MariaDB и P — PHP или Perl.

XAMPP является одним из лучших дистрибутивов Apache, который помогает разработчикам создавать локальный веб-сервер для тестирования и развертывания. Оно было разработано, чтобы быть самым простым способом установить и запустить локальный сервер. Поскольку он кроссплатформенный, вы можете использовать его на Windows, MacOS или Linux.

Он получил множество дополнений, таких как Drupal, Joomla, WordPress, Magento, SuiteCRM и т.д., Чтобы начать ваш проект за считанные минуты.

Источник: itgap.ru

И снова о… LAMP и базово защищённый мини-хостинг своими руками

Увидев в очередной раз презренный посыл в Google в ответ на вопрос о том, как развернуть собственную LAMP’у, решил написать данный пост. Чтобы хоть как-то разбавить тонны радостных отчётов об успешной установке из блогов, суть которых сводится к одной команде aptitude install blah-blah.

Нет, ну конечно понятно, PHP самый надёжный язык, а все движки сайтов, на нём написанные, являются живым воплощением непробиваемой защиты от взлома. Тогда да — aptitude install apache2 — и будет вам счастье. Не забудьте оставить phpmyadmin по дефолтному адресу, да поставьте какое-нибудь дырявое FTP решето.

Вообще, как оказалось, многие даже не в курсе, что взломав сайт и получив возможность исполнять свой PHP код, злоумышленник на системе с дефотными настройками сможет как минимум прочитать в вашей системе почти что угодно. Оно и понятно — работая с Linux привыкаешь как-то, что по дефолту безопасность находится на вполне достаточном уровне. А тут такая дыра…

В общем — в этой статье в очередной раз описывается банальщина на тему как развернуть LAMP и дать доступ внешним пользователям к файлам и базам ваших сайтов. Т.е. как быстро сделать мини-хостинг своими руками. Однако, в отличие от, хостинг у нас будет хотя бы базово защищённым.

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

И нет, это не ещё одна статья с описанием установки Linux и выполнением aptitude install apache2. Скорее наоборот: в этой статье я хотел показать фатальную недостаточность данных манипуляций и мягко говоря некомпетентность тех, кто их тиражирует в интернете.

Установка

Всё будет описано на примере Debian.

Для начала нужно установить всё необходимое (кстати, для Ubuntu phpMyAdmin лучше ставить из PPA):

aptitude install apache2 mysql-server libapache2-mod-php5 ssh aptitude install phpmyadmin

При установке phpMyAdmin генерируем произвольный пароль для подключения к БД, в остальном всё очевидно.

Как это будет работать

Все пользователи, которым нужно получить доступ к файлам на сервере, будут иметь локальную учётную запись с возможностью захода только по SFTP и только в папку с принадлежащими им сайтами. При этом будет поддерживаться авторизация как по паролю, так и по ключу. Интерактивный же вход по SSH будет невозможен, хотя если очень надо — его можно будет включить, причём тоже с закрытым доступом к системным файлам.

Никакого FTP не будет, хотя его и возможно легко прикрутить. SFTP надёжней (шифрование, возможность авторизации по ключу), а FTP в данном случае элементарно избыточен и является достаточно большой потенциальной дырой в безопасности.

Каждый сайт будет принадлежать некоему ‘аккаунту’, т.е. под одним ‘аккаунтом’ может быть несколько сайтов. К этим ‘аккаунтам’ привязываются SFTP пользователи, причём никто не мешает к одному ‘аккаунту’ привязать несколько пользователей. Дальше, внутри ‘аккаунта’, всё можно будет разрулить стандартными механизмами прав доступа в Linux.

Пользователи и пароли от БД никак не будут зависеть от системных пользователей, управление БД будет происходить через стандартный phpMyAdmin.

Кроме всего прочего сайты, работающие на вашем сервере, не смогут вылезти за пределы своего рабочего каталога и прочитать или изменить какие-нибудь данные, к ним не относящиеся.

Немного подробней про структуру

Все сайты будут лежать в каталогах вида /var/www/ACCOUNT/sites/SITENAME. ACCOUNT тут не обязательно означает какого-то системного пользователя, просто некий произвольный идентификатор.

У системных пользователей, которые будут подключаться по SFTP для редактирования сайтов, в качестве домашней директории будет установлено /var/www/ACCOUNT/home/USERNAME. Соответственно в зависимости от значения ACCOUNT тот или иной пользователь будет иметь доступ к тому или иному аккаунту. Создание каталога home внутри аккаунта нужно для того, чтобы иметь возможность авторизовывать SFTP пользователей по ключам.

Для всех пользователей SFTP основной группой будет установлена www-data (дефолтная группа Apache2 в deb-based). Кроме этого, все создаваемые как пользователем по SFTP, так и Apache, файлы по умолчанию будут иметь права 0660, а каталоги — 0770. Поскольку у Apache и SFTP пользователя одна и та же группа, то по-умолчанию в любой новый файл или каталог сможет писать как пользователь, так и веб-сервер, вне зависимости от того, кто его создал. Что обычно и требуется.

Базы же будут использовать свой, полностью отдельный механизм авторизации и контроля доступа. Тут всё крайне просто: создаём пользователей и даём им права только на конкретные базы. Поэтому к этому вопросу возвращаться больше не будем.

Создание ‘аккаунтов’ и системных пользователей

Размещение сайта на сервере стоит начать с подготовки места под него и создания пользователя для работы с ним. Как описано выше, для сайта нам нужна папка вида /var/www/ACCOUNT/. В качестве ACCOUNT задействуем для примера 42. Просто 42. Ок, создаём папку:

mkdir /var/www/42

Кроме этого внутри аккаунта нам нужны каталоги home/USERNAME и sites. Создаём их:

mkdir -p /var/www/42/home/marvin mkdir /var/www/42/sites

Для будущей настройки SFTP сразу стоит убедиться, что и /var/www/42/sites, и все нижестоящие папки принадлежат root:root и ни у кого, кроме root, нет прав на запись в них.

Дальше создаём пользователя. Чтобы не путаться с обычными, полноценными пользователями сервера, SFTP пользователей можно перенести в диапазон UID от 901 до 999. Если вам это не надо — уберите соотв. параметры. Если вы хотите авторизовываться только по ключу, то добавьте параметр —disabled-password. В итоге команда такая:

adduser —home /var/www/42/home/marvin —no-create-home —shell /bin/false —firstuid 901 —lastuid 999 —ingroup www-data marvin

Читайте также:
Что за программа инвестиции

Установка шелла в /bin/false гарантирует нам, что пользователь никак не сможет интерактивно зайти в систему.

Настройка SFTP

Настройка SFTP будет заключаться в том, что для всех членов группы www-data мы сделаем так, чтобы при заходе по SFTP они попадали сразу в папку sites ‘аккаунта’, в котором находится их HOME директория, без возможности выбраться выше по дереву каталогов.

Делается это просто. Достаточно в конец файла /etc/ssh/sshd_config дописать код

# Специальный доступ для пользователей из www-data: chroot в их HOME, # установленный umask 007, соответствующий 0660 для файлов и 0770 для каталогов Match Group www-data AllowTCPForwarding no X11Forwarding no ChrootDirectory %h/../../sites ForceCommand internal-sftp -u 0007

И ткнуть sshd для обновления конфигурации:

service ssh reload

Этот кусочек кода для всех пользователей из группы www-data, во-первых, отключает TCP и X11 форвадинг (им незачем иметь доступ в вашу локалку). Во-вторых делает для них при заходе chroot в sites папку их ‘аккаунта’ (именно для этого нам нужно было делать sites папки доступными для записи только для root — иначе не работает chroot). Ну и в третьих меняет им обработчик SFTP на встроенный (которому не нужно полноценное окружение с шеллом и прочим), попутно говоря ему создавать все файлы и папки со значение umask в 007. То есть права по умолчанию на новые файлы будут 0660, а на каталоги — 0770.

Настройка Apache и phpMyAdmin

Как-либо специфично настраивать Apache для обеспечения базовой работы не нужно. Единственное, что в Debian пакет PHP5 идёт с интегрированным патчем Suhosin, повышающим безопасность. Он будет необходим при настройке конфигов сайта, хотя вполне можно обойтись и без него.

А так в целом для Apache нужно лишь изменить umask для создаваемых файлов и папок на такой же, который мы использовали для настройки SFTP. Делается это путём добавления в /etc/apache2/envvars строчек:

# umask 007 для создания файлов с разрешениями 0660 и каталогов с 0770 umask 007

Для минимальной настройки phpMyAdmin нужно лишь поменять адрес, по которому он будет доступен, с неприлично бестолкового your.site/phpmyadmin на что-то другое. Для этого в файле /etc/phpmyadmin/apache.conf нужно заменить строчку

Alias /phpmyadmin /usr/share/phpmyadmin
# А мы немного схитрим! Alias /вдушу_влазер /usr/share/phpmyadmin

Не забывайте перезапускать Apache:

service apache2 restart

Добавление сайтов

Для добавления сайтов на ваш хостинг нужно сделать две вещи — во-первых, разместить файлы сайта с нужными правами на вашем сервере, а во-вторых создать конфиг апача для сайта. Кроме этого чаще всего потребуется создать БД и настроить права доступа к ней — но это тривиальная операция, поэтому рассматривать её не будем.

Для размещения файлов нужно из-под root создать каталог сайта в папке нужного ‘аккаунта’. Например:

mkdir /var/www/42/sites/deep-thought.net

Дальше выставить желаемые права. Как минимум у SFTP пользователя, который будет работать с этим каталогом, должны быть права на запись. К примеру, можно сделать так:

chown marvin:www-data /var/www/42/sites/deep-thought.net chmod 0750 /var/www/42/sites/deep-thought.net

Ок, теперь пользователь может зайти и залить файлы сайта. Осталось настроить апач. Для этого, как всегда, создаём файл настроек в директории /etc/apache2/sites-available. Содержимое этого файла для сайта deep-thought.net с данными в каталоге /var/www/42/sites/deep-thought.net должно быть примерно таким:

Важным тут является только содержимое блока . В нём находятся настройки PHP, которые во-первых, запрещают обращение к файлам вне корневой директории сайта (open_basedir и перенос в temp), во-вторых отключают две крайне опасные возможности PHP (allow_url_include, enable_dl), которые всё ещё присутствую в современных версиях PHP и даже могут быть включены. И наконец в-третьих, запрещают PHP скриптам использовать целый ряд функций взаимодействия с ОС. Например, функций исполнения произвольной команды. Список функций честно выцеплен откуда-то из интернета и не претендует на всеобщий охват, хотя вроде бы является достаточным для обеспечения безопасности.

Немного про temp: поскольку мы запрещаем PHP обращаться к файлам вне корневой директории сайта, то нам нужно указать каталог для сохранения временных файлов (файлов, загружаемых пользователями сайта на сервер через стандартный механизм загрузки из HTML формы) и файлов сессий внутри корня сайта. Каталог этот нужно, естественно, предварительно создать. Кроме этого лучше бы явно закрыть к нему доступ из интернета, что и сделано во втором блоке Directory. Иначе кто-нибудь может невзначай получить сессии ваших пользователей.

Если на сервере не установлен Suhosin, то вместо suhosin.executor.func.blacklist можно использовать стандартную опцию PHP disable_functions. Правда её нужно указывать в php.ini, т.е. она будет действовать на все сайты на вашем сервере.

Кроме этого в приведённых выше настройках не отключена функция eval. Увы, многим сайтам она зачем-то нужна, хотя всё же лучше её отключать. Обратите внимание на опции suhosin.executor.disable_eval и suhosin.executor.disable_emodifier всё того же Suhosin.

После того, как вы подготовите нужный вам конфиг, просто активируйте сайт:

a2ensite deep-thought.net

И не забудьте пнуть апач:

service apache2 reload

Ну и конечно нужно залить файлы и базу данных сайта на сервер — без них вряд ли что-то заработает.

Тюнинг SSH: ключи и интерактивный вход

Для доступа пользователей SFTP по ключам нужно сделать всё тоже, что делается всегда: внутри HOME каталога создать директорию .ssh/, в ней файлик authorized_keys, в который прописать публичный ключи для пользователя.

Кроме этого, можно некоторым пользователям открыть интерактивный доступ на сервер. Для этого нужно, во-первых, подготовить в корневой папке соответствующего ‘аккаунта’ нужное chroot окружение, как минимум с интерпретатором и всеми необходимыми виртуальными ФС. Делается это стандартно и ничего сложно в этом нет.

Дальше можно создать дополнительную группу для интерактивного входа. Например, ssh-interactive:

addgroup —gid 900 ssh-interactive

Добавить в неё нужных пользователей, попутно сменив им SHELL на полноценный bash:

usermod -a -G ssh-interactive —shell /bin/bash marvin

И прописать для этой группы специфические настройки в sshd_config. Для этого нужно модифицировать директиву Match, относящейся к www-data, дописав к ней !ssh-interactive, дабы она не распространялась на пользователей этой группы:

Match Group www-data,!ssh-interactive

И после неё добавить ещё одну директиву Match:

# Интерактивный вход по SSH для доступа к коду сайтов Match Group www-data,ssh-interactive AllowTCPForwarding no X11Forwarding no ChrootDirectory %h/../../

Проблема только в том, что для членов группы ssh-interactive umask больше не будет выставляться в 007. Исправить это можно дописав соответствующий параметр в глобальных настройках подсистемы sftp в sshd_config. Кстати, вряд ли вы захотите перетаскивать компоненты openssh в chroot окружение, так что можно заодно сменить внешний обработчик sftp на внутреннюю реализацию:

Subsystem sftp internal-sftp -u 0007

В заключение

Меня всегда интересовал вопрос — а нет ли где-нибудь на официальных ресурсах полного списка с описанием всех PHP функций, которые так или иначе могут дать доступ скрипту к компонентам и файлам системы. Приведённый выше список честно взят из интернета, так что если кто поделится ссылочкой на списочек функций — буду премного благодарен.

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

Источник: habr.com

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

LAMP — это популярный набор программного обеспечения для работы с веб-сервером. LAMP назван по первым буквам входящих в его состав компонентов: Linux — операционная система, Apache — веб-сервер, MySQL — СУБД, PHP — язык программирования, используемый для создания веб-приложений.

В этой статье мы рассмотрим, как установить LAMP Ubuntu 20.04 несколькими способами: с помощью утилиты tasksel и вручную с помощью пакетного менеджера.

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

1. Установка пакетов LAMP с помощью утилиты tasksel

Утилита tasksel позволяет устанавливать наборы пакетов различных программ буквально в одну команду. Она разработана для Debian, но может использоваться и в Ubuntu. Для её установки выполните в терминале команду:

sudo apt -y install tasksel

Bc4XNM1r6YnAAAAAAElFTkSuQmCC

Далее, чтобы установить Lamp на Ubuntu, достаточно выполнить команду:

sudo tasksel install lamp-server

Установка займёт определенное время, так как утилите необходимо скачать все необходимые пакеты. После завершения установки вы получите полностью работающий стек LAMP.

Если вы не хотите использовать tasksel, вы можете установить все пакеты по отдельности из стандартных репозиториев и настроить их для совместной работы.

Для начала необходимо установить веб-сервер Apache2:

sudo apt -y install apache2

TJzSjVA05hAAAAABJRU5ErkJggg==

На момент написания статьи актуальной версией PHP в официальных репозиториях Ubuntu считалась версия 7.4. Самая же последняя официальная версия PHP от разработчиков 8.0.9 по состоянию на 29 июля 2021 года.

Также необходимо установить дополнительные расширения для языка PHP, которые понадобятся для создания будущих проектов и их дальнейшей публикации на хостинг:

sudo apt -y install php-curl php-json php-cgi php-gd php-zip php-mbstring php-xml php-xmlrpc

wNkX9eKJWu1TwAAAABJRU5ErkJggg==

3. Настройка брандмауэра

По умолчанию брандмауэр закрывает все неразрешённые входящие подключения. Поэтому, чтобы к вашему веб-серверу можно было получить доступ извне, необходимо добавить его порт в исключения:

sudo ufw allow in 80/tcp

Для начала необходимо убедиться, что веб-сервер Apache и СУБД MySQL успешно запустились и при необходимости запустить их. Смотрим статус apache, выполнив команду в терминале:

sudo systemctl status apache2

wGVKwWOGUXuCgAAAABJRU5ErkJggg==

В разделе Active должно быть active (running). Те же самые действия необходимо сделать для проверки MySQL:

sudo systemctl status mysql

9hAwCGMn06AAAAAASUVORK5CYII=

Если в статусах вместо active будет inactive (dead), то сервисы необходимо запустить вручную:

sudo systemctl start apache2
sudo systemctl status mysql

wA48O2IDbnSpwAAAABJRU5ErkJggg= https://losst.pro/wp-content/uploads/2021/07/test-11.png7u507dH+fbAAAAABJRU5ErkJggg==

Для проверки наберите в адресной строке браузера IP-адрес сервера, куда вы устанавливали LAMP, в качестве примера выбран localhost:

Hy9gWjbTL0VeAAAAAElFTkSuQmCC

Если при открытии вы увидели страницу, которая изображена на скриншоте выше, это означает что веб-север apache успешно запущен и работает. Теперь необходимо проверить правильно ли работает PHP. Создайте файл в директории /var/www/html при помощи следующей команды:

Читайте также:
Программа киа финанс что это

sudo vi /var/www/html/phpinfo.php

Вместо vi можно использовать любой другой текстовый редактор на ваш выбор (nano, emacs, gedit и др.).
В файл phpinfo.php впишите следующую команду:

7N681x1+IK33JAAAAAElFTkSuQmCC

Далее откройте адрес localhost/phpinfo.php в браузере. Если всё работает, вы должны увидеть страничку, которая изображена ниже на скриншоте:

Q93yAaPsfVh6fWO5AAAAAElFTkSuQmCC

Также можно проверить, работает ли интеграция с СУБД MySQL. Если расширение PHP для MySQL установлено, то на странице с phpinfo будет размещен блок с информацией:

8HxnoJwek3BpcAAAAAElFTkSuQmCC

На данном этапе процесс проверки пройден успешно. Далее мы перейдем к настройке стека LAMP на Ubuntu 20.04.

5. Настройка Apache

Для обработки запросов будет использоваться модуль mpm_prefork. Данный модуль запускает по отдельному процессу на каждый запрос. Иначе говоря, каждый процесс одновременно обрабатывает только 1 поток на одно соединение. Для начала необходимо выключить mpm_event и mpm_worker и только потом включить модуль mpm_prefork:

sudo a2dismod mpm_event

sudo a2dismod mpm_worker

sudo a2enmod mpm_prefork

Включаем модуль mod_rewrite. Это модуль, предназначенный для преобразования URL адресов. Модуль использует в своей работе правила, которые могут быть описаны как в конфигурации сервера (httpd.conf), так и в файлах .htaccess непосредственно в файловой структуре Вашего сайта.

sudo a2enmod rewrite

Если вы хотите использовать файлы httaccess для настроек, то необходимо в файле /etc/apache2/apache2.conf изменить значение AllowOverride с None на All для нужных местоположений, например, для /var/www.
Откройте файл apache2.conf при помощи любого текстового редактора:

sudo vi /etc/apache2/apache2.conf

Найдите следующий блок:

Options Indexes FollowSymLinks
AllowOverride None
Require all granted

И замените AllowOverride None на AllowOverride All, затем сохраните изменения и закройте файл. Перезапустите apache:

sudo systemctl restart apache2

6. Настройка PHP

По умолчанию короткие теги, обрамляющие скрипты PHP, отключены. Это может привести к тому, что некоторые скрипты, использующие эти теги, могут не выполнятся. Для включения этой возможности откройте файл php.ini при помощи любого текстового редактора:

sudo vi /etc/php/7.4/apache2/php.ini

Найдите short_open_tag = Off и замените на:

AxXQgfbfNA5VAAAAAElFTkSuQmCC

После внесения всех изменений необходимо перезапустить Apache:

sudo systemctl restart apache2

7. Настройка MySQL

По умолчанию MySQL не очень хорошо настроена в плане безопасности. Необходимо задать пароль суперпользователя и удалить гостевой доступ. Для выполнения всех этих задач запустите в терминале следующую команду:

qmAYnT7cTAooBD4f8DFq2yQrp9QFYAAAAASUVORK5CYII https://losst.pro/wp-content/uploads/2021/07/test-19.png+fwRpAkQsDR3tAAAAAElFTkSuQmCC

Во всех следующих вопросах нужно отвечать утвердительно путем ввода y/Y или Yes:

  • Запретить удалённый вход для пользователя root;
  • Запретить гостевой вход;
  • Удалить временные таблицы;
  • Обновить привилегии пользователей.

Введите пароль пользователя root, который вы задали на этапе запуска mysql_secure_installation.
Не перепутайте пароль от пользователя root который присутствует в операционной системе Ubuntu и пользователя root в MySQL. Это разные пользователи, соответственно вы должны вводить пароль именно к учетной записи root, которая присутствует в MySQL.

Чтобы полностью удалить LAMP из системы, достаточно удалить все пакеты, которые вы установили ранее:

sudo apt -y purge apache2 mysql-server php7.4 libapache2-mod-php7.4 php7.4-mysql php-curl php-json php-cgi php-gd php-zip php-mbstring php-xml php-xmlrpc

Команда purge позволяет удалить не только пакеты, но и их конфигурационные файлы. Если вы хотите оставить конфигурационные файлы, используйте команду remove.

Выводы

В этой статье мы разобрали, как выполняется установка LAMP Ubuntu 20.04. Как видите, это не очень сложно и с такой задачей может справиться даже новичок. Если у вас остались вопросы, оставляйте их в комментариях!

Похожие записи

Нет похожих записей.

Оцените статью

(10 оценок, среднее: 4,60 из 5)

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Об авторе

Бывший системный администратор и DevOps инженер. Ныне работаю по направлению DevSecOps. Использую Linux более 5 лет. Помимо Linux интересую языком программирования Python, базами данных и языком SQL а также информационной безопасностью.

Источник: losst.pro

Что такое LAMP (lamp стек)

Что такое LAMP (lamp стек)

19 Января 2022

Для установки, развертывания и отображения динамических веб-сайтов и веб-приложений и сетевого программного обеспечения на серверах используются специальные наборы ПО. К таким наборам программного обеспечения относится стек LAMP.

Что такое LAMP

LAMP — это свободно распространяемый и бесплатный набор ПО, комбинирующий четыре популярные технологии (их также называют «слоями»):

  • Linux — используется в качестве серверной ОС, выполняющая необходимые задачи. Популярная ОС распространена по всему миру и широко используется во всех отраслях, благодаря гибким функциям и возможностям настройки по сравнению с другими операционными системами.
  • Apache — веб-сервер, оснащенный дополнительными модулями, обеспечивающими совместимость веб-сервера со сценариями, написанными на различных языках программирования.
  • MySQL — СУБД, работающая на Unix и Windows, удобная в работе и подходящая для выполнения небольших проектов и также для больших и сложных сайтов.
  • PHP — серверный язык динамических сценариев (в его качестве также могут использоваться Perl или Python). Совместно с Apache помогает создавать динамические веб-страницы.

Иными словами, LAMP представляет собой комплекс, с помощью которого проекты пользователей работают стабильно, быстро и профессионально.

Архитектура LAMP

Архитектура LAMP складывается из нескольких уровней. На первом уровне находится операционная система Linux. Второй уровень занимают Apache и MySQL, на верхнем уровне PHP. Хотя номинально PHP и находится на самом верху (на уровне представления данных), компонент PHP входит в веб-сервер Apache.

Где применяется и какие функции выполняет LAMP

Область применения технологий LAMP достаточно широка и включает следующие задачи:

  • создание сред для веб-разработки и тестирования приложений, написанных под LAMP — как CMS, так и собственных наработок пользователя;
  • создание производительного веб-сервера под хостинг проектов на виртуальных или выделенных серверах;
  • развертывание сервера под систему контроля версий;
  • самообучение систем администрирования.

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

Благодаря особенностям структуры LAMP, корпоративные приложения, для которых она используется, способны максимально долгое время работать безотказно и бесперебойно даже при повышенных нагрузках.

Преимущества и недостатки

К преимуществам LAMP стоит отнести:

  • простоту конфигурации, значительно ускоряющую развертывание приложений;
  • совместимость всех слоев стека с серверами, работающими на Ubuntu;
  • возможность создания на базе стека большого числа приложений с открытым исходным кодом, в том числе систем управления содержимым и управляющих приложений;
  • гибкость в работе с БД, web-серверами и языками сценариев;
  • использование наборов открытого ПО, ускоряющее процессы разработки;
  • возможность использования альтернативных слоев — PostgreSQL и SQLite вместо MySQL, Python, Perl и Ruby вместо PHP, Nginx, Cherokee и Lighttpd как замена Apache;
  • применение Tasksel — инструмента Debian/Ubuntu — для ускорения установки LAMP и объединения нескольких зависимых пакетов в общую серверную задачу.

Однако, несмотря на удобство и практичность LAMP, у этой комбинации есть и ряд недостатков:

  • существует риск снижения производительности и сложностей в определении источника этой проблемы (приложения или БД) из-за использования одних и тех ресурсов сервера;
  • могут возникнуть проблемы с проведением горизонтального масштабирования, с интеграцией с облаком, с переключением между внутренними и внешними инструментами.

Также для LAMP прогнозируется спад востребованности из-за преобладания JavaScript и облачных сред.

Как установить LAMP

Установка и настройка стека LAMP возможна практически на любом сервере, как с использованием утилиты Tasksel, так и вручную (через командную строку).

При этом Apache, MySQL и PHP (для Ubuntu 16.04 и выше) устанавливаются следующим образом:

  • обновляется список доступных пакетов ( sudo apt-get update );
  • проводится установка ( sudo apt-get install apache2 ) и запуск ( sudo service apache start ) Apache.
  • после обновления страницы устанавливается сервер MySQL ( sudo apt-get install mysql-server );
  • после подтверждения согласия и ввода пароля устанавливаются все компоненты для поддержки языка PHP ( sudo apt-get Install php7.2 libapache2-mod-php7.2 phpmysql ) и оболочка phpMyAdmin ( sudo apt-get install phpmyadmin php-mbstring php-gettext ). Затем вводится команда sudo apt-get install php . Настройка базы выполняется при помощи специального конфигуратора.

Используя утилиту Tasksel, для установки LAMP на дистрибутив Ubuntu необходимо ввести команду sudo tasksel install lamp-server .

Для Debian и ему подобных вводится команда sudo systemctl start apache2.service , для CentOS и ее дериватов — sudo systemctl start httpd.service ;

Какие технические стеки еще бывают

Помимо стека LAMP существует еще несколько различных стеков:

  • LEMP — Linux, Nginx (engine-x), MariaDB (MySQL), PHP (Perl,Python). Данный стек применяется для обслуживания динамических веб-страниц и веб-приложений, чаще всего на сайтах WordPress;
  • MEAN — стек, включающий базу данных MongoDB (NoSQL), фреймворк Express.js, пользовательскую платформу разработки Angular и среду выполнения Node.js. Данный стек применяется для разработки веб-приложений;
  • XAMPP — кроссплатформенный стек, комбинирующий Apache, MariaDB и PHP или Perl. Благодаря своей кроссплатформенности он может использоваться на Windows, MacOS или Linux, применяться для установки и запуска локальных серверов для тестирования и развертывания. XAMPP задействуется в таких продуктах, как Drupal, Joomla, WordPress, Magento, SuiteCRM;
  • WAMP — стек, схожий по структуре с LAMP, но работающий на ОС Windows;
  • AMPPS — наиболее сложный по структуре стек, в который входят LAMP, WAMP и MAMP — продукт от Softaculous на базе ОС Macintosh, Apache, MySQL, MongoDB, PHP (также Perl и Python).

Заключение.

LAMP стек можно описать как «стабильный, простой и мощный». Он является одним из первых стеков ПО с открытым исходным кодом для разработки веб-приложений и остается самым популярным способом их доставки. На нем основаны современные веб-приложения, такие как WordPress, Drupal и другие.

Источник: servergate.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru