Найти в Дзене

Устанавливаем LAMP

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

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

Перед тем как начать установку , вам нужно было настроить отдельную от "рута" учётную запись с правами администратора и возможностью использования команды "
sudo"
А так же произвести первичную настройку UFW фаервола.

Брандмауэр UFW поможет нам разрешить подключения только определённым службам.

После установки приложений, они могут регистрировать свои профили в UFW, например OpenSSH - служба позволяющая нам подключаться по
ssh, как в данном случае.
Эта служба имеет профиль зарегистрированный в нашем UFW

Для того чтобы это увидеть, мы можем ввести команду в терминале

Bash:
$ ufw app list


И увидеть следующее:

Bash:
Output
Available applications:
OpenSSH


Нам нужно убедиться что фаервол разрешает нам подключение по ssh, для того чтобы мы зашли в следующий раз.
Для того чтобы разрешить подключение по ssh нужно ввести команду:

Bash:
$ ufw allow OpenSSH

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

Bash:
$ ufw enable


введите
Y и нажмите ENTER

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

Bash:
$ ufw status

Видим:


Bash:Output
Status: active

To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH ( v6) ALLOW Anywhere ( v6)

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

Вернемся к установке
LAMP
Рекомендую делать перезагрузку сервера после установки каждого компонента установили Apache - перезагрузили сервер, установили MySQL - аналогично и тд.
Это можно сделать с помощью команды:

Bash:
$ sudo reboot

Установка и обновление Apache
Для того чтоб установить Apache необходимо изначально обновить репозитории с помощью команды:

Bash:
$ sudo apt update

Если это первое использование sudo в этом сеансе , необходимо будет ввести пароль.
После приступаем к установке:

Bash:
$ sudo apt install apache2

Чтоб подтвердить установку введите Y , а затем ENTER

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

Bash:
$ sudo ufw app list

Мы увидим:

Код:
Output
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH

-Apache : этот профиль открывает только порт 80 (нормальный веб-трафик без шифрования).
-Apache Full : этот профиль открывает порт 80 (нормальный веб-трафик без шифрования) и порт 443 (трафик с шифрованием TLS/SSL).
-Apache Secure : этот профиль открывает только порт 443 (трафик с шифрованием TLS/SSL).
Поскольку у нас ещё нет сертификата TLS/SSL и не можем использовать HTTPS , мы разрешим доступ только 80 порту.
Чтоб это сделать вводим команду :

Bash:
$ sudo ufw allow in "Apache"

Проверяем с помощью:

Bash:
$ sudo ufw status

Bash:
Output
Status: active

To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache ALLOW Anywhere
OpenSSH ( v6) ALLOW Anywhere ( v6) Apache ( v6) ALLOW Anywhere ( v6)
Теперь фаервол пропускает входящий трафик с 80 порта. 
Вы можете ввести ip вашего сервера в браузерную строку и перейти 
http://ip_server 
Если вы видите картинку выше, значит всё хорошо и можно идти дальше.
Теперь фаервол пропускает входящий трафик с 80 порта. Вы можете ввести ip вашего сервера в браузерную строку и перейти http://ip_server Если вы видите картинку выше, значит всё хорошо и можно идти дальше.

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

Bash:
$ sudo apt install mysql-server

Вводим Y и подтверждаем кнопкой ENTER

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

Bash:
$ sudo mysql_secure_installation

В первую очередь вам предложит настроить плагин "VALIDATE PASSWORD PLUGIN" Если мы его активируем он нам не разрешит поставить лёгкий пароль для базы данных.

Bash:
VALIDATE PASSWORD PLUGIN can be used to test passwords[ /B] 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?


Press y| Y for Yes, any other key for No:

Вводим NO и жмём ENTER
Не зависит от того что вы тут выберите дальше вам предложит ввести пароль для root пользователя базы данных.
Придумайте пароль и не перепутайте его с паролям от root пользователя вашего хоста.
После того как вы подтвердите пароль на все остальные вопросы нужно отвечать Y и нажимать ENTER
Это удалит анонимных пользователей, тестовую базу данных и закроет доступ к учётной записи root из вне.

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

Bash:
$ sudo mysql

В результате мы должны будем зайти в нашу базу данных с пользователя root и увидить следующее:

Bash:
Output
Welcome to the MySQL monitor. Commands end with ; or \ g.
Your MySQL connection id is 22 Server version: 8.0 .19-0ubuntu5 ( Ubuntu)
Copyright ( c) 2000 , 2020 , Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c ' to clear the current input statement.

mysql>

Для выхода из консоли mysql введите коменду

Код:
exit

По сколько мы разрешили подключение пользователю root только из под lokalhost , пароль для входа от нас не требовало, это может показаться не безопасным, но поскольку мы защитили свой сервер и подключение к нему возможно только по rsa ключам, это только повысит нашу безопасность, поскольку из вне к нашей Базе данных подключиться будет не возможно.
Рекомендуется делать несколько пользователей внутри нашей базы данных, с более ограниченными правами.


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

Bash:
$ sudo apt install php libapache2-mod-php php-mysql

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

Bash:
$ sudo php -v

Мы должны увидеть:

Код:
Output

PHP 7.4.2 (cli) (built: Oct 3 2021 12:57:21) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.3.3, Copyright (c), by Zend Technologies

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

Виртуальный хост для сайта:
При использовании Apache, мы можем использоваться виртуальные хосты для инкапсуляции данных конфигурации и размещения на одном сервере нескольких сайтов\доменов.
Я буду настраивать
my_site вы замените на удобное для вас имя, рекомендую название делать такое же как ваш сайт, чтоб удобней было работать и не запутаться.
Если у вашего сайта домен
my-site.com, разумно будет использовать имя каталога для нашего хоста my_site.
Поехали:
По умолчанию
Apache обслуживает 1 блок /var/www/html вместо того чтоб изменять var/www/html , мы создадим внутри var/www/ новый каталог для нашего сайта my_site , оставив /var/www/html по умолчанию в качестве каталога для вывода в случае если запросу клиента не соответствуют никакие другие сайты.

Создаём каталог:

Bash:
$ sudo mkdir /var/www/my_site

Затем необходимо назначить права владения для директории с помощью переменной среды $USER, которая будет использоваться для текущего системного пользователя:

Bash:
$ sudo chown -R $USER : $USER /var/www/my_site

После открываем файл конфигурации в директории Apache sites-available с помощью редактора "nano":

Bash:
$ sudo nano /etc/apache2/sites-available/my_site.conf

В созданном файле вставляем следующую конфигурацию :

Код:
<VirtualHost *:80>
ServerName /my_site.com
ServerAlias www./my_site.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www//my_site
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Данная конфигурация указывает Apache обслуживать "my_site", используя /var/www/my_site в качестве корневого каталога.
Если мы хотим протестировать Apache без доменного имени, нам нужно закомментировать строки "ServerName" и "ServerAlias" поставив в начале строк опций "# "
Для того чтоб сохранить файл нажимаем "CTRL + O" а после закрываем командой "CTRL+X"

Для активации нового виртуального вводим команду :

Bash:
$ sudo a2ensite my_site

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

Bash:
$ sudo a2dissite 000-default

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

Bash:
$ sudo apache2ctl configtest

Теперь перезагружаем Apache для того чтоб изменения вступили в силу:

Bash:
$ sudo systemctl reload apache2


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

$ sudo reboot

Наш новый сайт теперь активен , но корневой веб-каталог /var/www/my_site пуст.
Создадим файл index.html для того чтоб убедится что всё работает как нужно.
Создаём с помощью команды :

Bash:
$ nano /var/www/your_domain/index.html

Вносим следующее:

Код:
<h1>Hello World!</h1>

<p>Eror 404 <strong>my_site</strong>.</p>

После сохраняем документ командой "CTRL+O" и закрываем командой "CTRL+X"
Далее переходим по своему домену или ip адресу:
http://my_site или IP
Должна будет открыться белая страница с надписью "Hello World"
Если всё так и случилось значит наш Apache работает корректно и мы можем перейти к следующему шагу.

Для начала удалим файл что мы создавали с помощью команды:

Bash:
$ sudo rm /var/www/my_site/index.html

Теперь мы сделаем скрипт PHP для тестирования корректной работы PHP
Убедимся в том что Apache способен обрабатывать запросы для файлов php
Создаём новый файл
info.php c Помощью команды :

Код:
$ nano /var/www/my_site/info.php[/CODE
Необходимо вставить в фаил следующее:
[CODE]<?php
phpinfo();

Сохраняем с помощью команды "CTRL + O " и закрываем с помощью "CTRL + X"

Для того чтоб протестировать вводим имя нашего сервера IP или домен, а дальше название нашего скрипта /info.php

http://ip/info.php

Если всё хорошо , вы должны увидеть что то типо картинки сверху.
Если всё хорошо , вы должны увидеть что то типо картинки сверху.

На этой странице содержится информация о вашем сервере , с точки зрения PHP. Полезный скрипт для откладки, в случае если эта информация понадобится снова, вы всегда сможете создать этот скрипт заново, а сейчас если всё сработало его можно удалить так же как это делали с index.html в этом случае с помощью команды :

Bash:
$ sudo rm /var/www/my_site/info.php

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