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

Что такое LAMP — стек?

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

В последние годы набирают популярность разные вариации LAMP-стека, например, вместо языка программирования PHP используют Python или Perl, а вместо СУБД MySQL используют PostgreSQL.

На виртуальных серверах ServerSpace операционная система семейства Linux, а именно Ubuntu 18.04, уже установлена, поэтому в инструкции будет описана установка остальных компонентов.

Установка LAMP

И так, переходим к установке всех необходимых пакетов. Устанавливать мы будем вместо MYSQL MariaDB, благо, она имеется в репозиториях обоих дистрибутивов. Переходим в терминал и устанавливаем необходимые пакеты данной командой:

sudo apt install apache2 mariadb-server php libapache2-mod-php php-mysql

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

После установки пакетов, можно проверить работоспособность стека “LAMP” введя в браузере IP адрес сервера. IP адрес можно узнать набрав команду в терминале:

ip a

В результате в браузере вы должны увидеть стартовую страницу “apache2”:

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

sudo mysql_secure_installation

Данный скрипт задаст вам несколько вопросов, первый из которых запросит пароль root пользователя. Так как мы запускаем скрипт впервые, пароль у нас отсутствует. По этому просто нажимаем “Enter”:

Далее скрипт попросит задать пароль для “root” пользователя, вписываем букву “y” затем нажимаем “Enter”. После чего придумываем надежный пароль и вписываем его:

При этом вводимый пароль отображаться не будет. После чего нажимаем “Enter”, затем подтверждаем пароль введя его еще раз. Далее отвечаем на вопросы, вводя да- y или нет-n, на данном этапе задерживаться не будем. Обычно я просто нажимаем “Enter” и все, так как меня все устраивает по умолчанию :

1. Установка пакетов с помощью tasksel

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

sudo apt install tasksel

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

sudo tasksel install lamp-server

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

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

2. Как установить Lamp в Ubuntu вручную

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

sudo apt install apache2

Установка базы данных MariaDB из репозиториев:

sudo apt install mariadb-server

Или вы можете установить MySQL:

sudo apt install mysql-server

Установка интерпретатора языка программирования PHP 7.2 и расширений, необходимых для его работы с Apache и MySQL:

sudo apt install php7.2 libapache2-mod-php7.2 php-mysql

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

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

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

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

sudo ufw allow in 80/tcp

4. Проверка работы LAMP

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

Работает, теперь давайте проверим, правильно ли работает PHP. Создайте файл в директории /var/www/html со следующим содержимым:

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

 

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

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

Готово, дальше идёт в основном настройка LAMP в Ubuntu 18.04.

5. Установка веб-сервера Apache

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

Установка выполняется в один шаг:

  • Ubuntu и Debian:

    apt update && apt -y install apache2

  • CentOS:

    yum -y install httpd

После установки нужно проверить, корректно ли запустился веб-сервер:

  • Ubuntu и Debian:

    systemctl status apache2

  • CentOS:

    systemctl status httpd

На Ubuntu и Debian службы после установки запускаются и добавляются в автозапуск автоматически, на Centos это нужно сделать вручную. Запустить веб-сервер и настроить его автоматический старт после загрузки системы можно следующим образом:

  • Ubuntu и Debian:

    systemctl start apache2 && systemctl enable apache2

  • CentOS:

    systemctl start httpd && systemctl enable httpd

На CentOS после установки нужно отредактировать настройки встроенного фаервола:

firewall-cmd —permanent —zone=public —add-service=http —add-service=https firewall-cmd —reload

Проверить, что настройки успешно применились, можно с помощью команды:

firewall-cmd —list-all

В блоке Services в списке должны отображаться http и https.

Теперь можно открыть IP-адрес вашего сервера в браузере — откроется стартовая страница веб-сервера (при работе с CentOS 7; на CentOS 8 Apache по умолчанию не имеет приветственной страницы):

На Debian и Ubuntu можно сразу ввести IP-адрес вашего сервера в адресную строку браузера — откроется приветственная страница веб-сервера, размещённая в директории /var/www/html

Расширенные настройки веб-сервера доступны в конфигурационном файле:

  • Ubuntu и Debian:

    /etc/apache2/apache2.conf

  • CentOS:

    /etc/httpd/conf/httpd.conf

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

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

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

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

short_open_tag = On

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

error_reporting = E_ALL
display_errors = On

Или для записи ошибок в файл вы можете добавить такую строку:

error_log = php-errors.log

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

sudo systemctl restart apache2

Тест PHP в командной строке

После завершения установки пакета мы можем протестировать PHP в командной строке.

php -version

Если PHP установлен правильно, вы должны увидеть нечто подобное:

PHP 7.4.3 (cli) (built: Mar 26 2020 20:24:23) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

Тест PHP для Apache

Теперь давайте протестируем PHP для Apache.

Создайте новый файл с именем info.php в корневом каталоге документа.

sudonano /var/www/html/info.php

После открытия редактора nano введите следующий PHP-код:

/var/www/html / info.РНР

Сохраните и закройте файл. Перезапустите службу nginx:

[root@server ~]# /etc/init.d/nginx restart

Перейдите в браузере по адресу http://server-ip-address/testphp.php. Вы должны увидеть страницу с подробной информацией об установленной версии php.

тестовая страница PHP

Если вы хотите установить модули php, введите команду yum install php* и перезапустите службу nginx. Для верификации модулей откройте веб-браузер и перейдите по адресу http://server-ip-address/testphp.php. Вы увидите список всех установленных модулей php.

Шаг 4. Настройка Nginx для работы с PHP

Для настройки Nginx откроем для редактирования файл серверных настроек:

sudo nano /etc/nginx/sites-available/default

В данном файле нам нужно внести несколько изменений:

  • добавить в директиву «index» значение «index.php» первым в списке (чтобы PHP файлы имели приоритет в обработке веб-сервером перед HTML);
  • установить директиву «server_name» в значение IP адреса (или доменного имени) нашего сервера;
  • раскомментировать секцию, которая описывает настройки обработки PHP.

Результирующий файл серверных настроек представлен ниже:

server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name IP_адрес_сервера_или_доменное_имя;
location / {
try_files $uri $uri/ =404;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
}

Сохраните отредактированный файл («Ctrl + o») и выйдите из редактора («Ctrl + x»).

Чтобы изменения вступили в силу,  перезапустим Nginx:

sudo systemctl restart nginx

Настройка Nginx

Откройте файл /etc/nginx/nginx.conf и установите значение параметра worker_processes (то есть количество процессоров в вашей системе). Чтобы узнать количество процессоров, воспользуйтесь командой «lscpu». В моем случае это 1.

[root@server ~]# vi /etc/nginx/nginx.conf worker_processes 1;

Сохраните и закройте файл. Откройте «/etc/nginx/conf.d/default.conf» и отредактируйте его, как показано ниже.

[root@server ~]# vi /etc/nginx/conf.d/default.conf # # The default server # server { listen 80; server_name server.unixmen.com; #charset koi8-r; #access_log logs/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; } error_page 404 /404.html; location = /404.html { root /usr/share/nginx/html; } # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ .php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 ## Uncomment or Add the following lines location ~ .php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # deny access to .htaccess files, if Apache’s document root # concurs with nginx’s one # #location ~ /.ht { # deny all; #} }

Сохраните и закройте файл. Перезапустите службу nginx.

[root@server ~]# /etc/init.d/nginx restart

Шаг 5. Создание тестовой веб-страницы

Последним шагом создадим тестовую веб-страницу, которая сгенерирует и выведет информацию о сервере. Создадим в корневой директории веб-сервера файл «phpinfo.php»:

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

В открывшемся редакторе вставим следующий PHP-код:

 

Затем сохранить и выйти.

Затем перейдите в браузере по следующей ссылке, указав IP-адрес вашего сервера: http://<ip-адрес_сервера>/info.php
Например: http://5.101.77.24/info.php

Ожидаемый результат:

 

PHP

</ip-адрес_сервера>

Установка tasksel

По умолчанию tasksel обычно установлен, но если это не так, то вы можете установить tasksel командой

apt-get install tasksel

По зависимостям установится также пакет tasksel-data, включающий официальные задачи для установки. Дополнительно можно установить следующие пакеты:

education-tasks — Задачи для Debian Edu, включающие серверную часть и часть для тонких клиентов или рабочих станций

games-tasks — Задачи Debian Games, включающие большое количество игр, разделенных по жанрам, а также задачи для установки эмуляторов, лучших игр и разработки игр

gis-tasks — Задачи Debian GIS, включающие программы для работы с OpenStreetMap, GPS и другие программы, связанные с географической информацией

junior-tasks — Задачи Debian Jr. и Doudou Linux, включающие игры и обучающие программы, программы для видео, обучения печати и другие

и так далее. Полный список пакетов с заданиями можно посмотреть при помощи команды

apt-cache search tasksel

Использование tasksel

Программа tasksel может работать как в режиме командной строки, так и в интерактивном режиме. Если никакие параметры командной строки не указаны, программа будет работать в интерактивном режиме, будет показано меню с конфигурациями, вам только надо будет проставить флажки и затем нажать кнопку «OK».
tasksel001

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

—list-tasks Вывести список всех существующих задач
install задача Установить пакеты, определенные в задаче
remove задача Удалить пакеты, определенные в задаче
-t, —test Тестовый режим. Не удалять и не устанавливать пакеты на самом деле
—task-packages задача Вывести список пакетов, которые относятся к задаче и доступны в данный момент
—task-desc задача Вывести описание задачи
—new-install Автоматически выбрать задачи без отображения их пользователю. Используется при новой инсталляции Debian
—debconf-apt-progress опции Передать указанные опции команде debconf-apt-progress, которую запускает tasksel

Заключение

После чего в браузере пишем название свое доменное имя, или же можно “ip” адрес, либо “localhost”, в результате вы должный увидеть вывод информации php:

Теперь можно закидывать например тот же wordpress и устанавливать его на ваш только что созданный веб север. При необходимости можно установить необходимые те же php пакеты. После чего данный сервер нужно еще настроить правильно для того что бы он нормально функционировал.

[spoiler title=»Источники»]
  • https://serverspace.ru/support/help/ustanovka-lamp-steka-na-ubutu-18-04/
  • https://cyber-x.ru/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%B0%D0%B2%D0%BB%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC-%D1%81%D1%82%D0%B5%D0%BA-lamp-%D0%B2-ubuntu-20-04-%D0%B8-debian-10/
  • https://losst.ru/ustanovka-lamp-ubuntu-18-04
  • https://FirstVDS.ru/technology/lamp-install
  • https://timeweb.com/ru/community/articles/kak-ustanovit-stek-lamp-na-ubuntu-20-04
  • https://1cloud.ru/help/linux/ustanovka-lemp-steka-linux-nginx-mysql-php
  • https://community.vscale.io/hc/ru/community/posts/208340569-%D0%9A%D0%B0%D0%BA-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C-%D0%B8-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B8%D1%82%D1%8C-LEMP-Linux-Nginx-MySQL-PHP-%D0%BD%D0%B0-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B5-%D1%81-Ubuntu-16-04
  • https://FirstVDS.ru/technology/lemp-install
  • http://rus-linux.net/MyLDP/server/lemp.html
  • https://serverspace.by/support/help/ustanovka-lemp-steka-na-centos-7/
  • https://maddot.ru/kak-ustanovit-lemp-v-ubuntu-20-04.html
  • https://mnorin.com/ustanovka-programm-v-debian-pri-pomoshhi-tasksel.html
[/spoiler]