Каждый компонент должен быть установлен отдельно и в определенном порядке. В этом руководстве мы рассмотрим все этапы установки LAMP Stack на Debian 10.
Для целей этого руководства мы предполагаем, что у вас есть сервер, установленный и настроенный с:
- SSH-доступ как root
- Debian 10 или 11
- Доступ к терминалу/командной строке
Установка сервера Apache
Apache — популярный веб-сервер с открытым исходным кодом, который можно использовать в сочетании с PHP. Apache имеет отличную документацию в Интернете и был одним из лидеров на протяжении большей части истории Интернета. Серверы Apache широко используются на всех типах хостинга. Для начала убедитесь, что ваш кэш apt обновлен с помощью:sudo apt update
sudo apt install apache2
http://<your_server_ip>
Как найти публичный IP-адрес вашего сервера:ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
Введите адрес в браузере, и вы увидите стандартную веб-страницу Apache, которая предназначена для информационных и тестовых целей. Она должна выглядеть примерно так:
Если эта страница отображается, ваш веб-сервер установлен правильно и доступен в Интернете.
Установка MySQL MariaDB
После запуска веб-сервера пришло время установить MariaDB, сервер базы данных. Этот сервер будет организовывать и предоставлять доступ к базам данных, в которых ваш веб-сайт может хранить информацию. Для установки MariaDB мы снова воспользуемся apt:sudo apt install mariadb-server
Эта команда также отобразит список пакетов, которые будут установлены, а также объем дискового пространства, которое они займут. Введите Y, а затем ENTER, чтобы подтвердить и продолжить.
После завершения установки запустите скрипт безопасности, который поставляется с MySQL, который удалит некоторые опасные настройки по умолчанию и заблокирует доступ к системе баз данных. Запустите скрипт через консоль и следуйте инструкциям на экране:
sudo mysql_secure_installation
sudo mariadb
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 74
Server version: 10.3.15-MariaDB-1 Debian 10
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
Обратите внимание, что вам не нужно было вводить пароль для входа в систему как root. Это работает, потому что метод аутентификации по умолчанию для пользователя root MariaDB осуществляется через unix_socket, а не через пароль. Хотя на первый взгляд это может показаться проблемой безопасности, на самом деле это делает сервер базы данных более безопасным, поскольку единственными пользователями, которым разрешено входить в систему как пользователь root MariaDB, являются системные пользователи с привилегиями sudo, которые входят в систему с терминала или через приложение, работающее с этими привилегиями.
Роль пользователя root является исключительно административной, поэтому вы не можете подключить свое приложение PHP.
Для повышения безопасности мы настроим выделенные учетные записи пользователей с соответствующими привилегиями для каждой базы данных. Чтобы продемонстрировать эту настройку, мы создадим базу данных с именем example_database и пользователя с именем example_user. Вы можете заменить эти имена любыми другими.
Чтобы создать новую базу данных, выполните следующую команду из консоли MariaDB:
CREATE DATABASE example_database;
Теперь мы создадим нового пользователя и предоставим ему полные привилегии на созданной нами базе данных. Следующая команда устанавливает пароль этого пользователя как PASSWORD, но вам следует заменить это значение безопасным и надежным паролем:
GRANT ALL ON example_database.* TO 'example_user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
Эта команда предоставит пользователю example_user полные права на базу данных example_database, но не позволит ему создавать или изменять другие базы данных на сервере.
Вы можете проверить права, чтобы убедиться, что они сохранены и доступны без перезапуска:
FLUSH PRIVILEGES;
Затем вы можете выйти из MariaDB:
exit
Вы можете проверить, имеет ли новый пользователь соответствующие права, войдя обратно в консоль MariaDB с помощью имени пользователя и пароля, которые вы ввели ранее:
mariadb -u example_user -p
Примечание: Использование -p в этой команде вызовет запрос пароля, который вы выбрали при создании пользователя example_user. После входа в консоль MariaDB убедитесь, что у вас есть доступ к базе данных example_database:
SHOW DATABASES;
Вы получите следующий результат:
+--------------------+
| Database |
+--------------------+
| example_database |
| information_schema |
+--------------------+
2 rows in set (0.000 sec)
Чтобы выйти из MariaDB, введите:
exit
На этом настройка системы базы данных завершена, и вы можете перейти к установке PHP, последнего компонента сервера LAMP.
Установка PHP на LAMP
PHP — это язык программирования для отображения динамических веб-сайтов. Он может запускать скрипты, подключаться к базам данных MariaDB для получения и отправки информации с веб-сервера и обратно, а также отображать ее пользователю. Мы снова воспользуемся apt для установки PHP, а также нескольких других пакетов, которые обеспечат возможность запуска кода PHP на сервере Apache и взаимодействия с базой данных MariaDB:sudo apt install php libapache2-mod-php php-mysql
Это должно установить PHP без каких-либо проблем, но мы проверим, что все работает правильно.
В большинстве случаев рекомендуется изменить настройки Apache, чтобы файл index.php был доступен в первую очередь, а не index.html. В настоящее время, если пользователь запрашивает каталог с сервера, Apache сначала ищет файл с именем index.html. Мы хотим, чтобы веб-сервер отдавал предпочтение файлам PHP перед другими, поэтому нам нужно настроить Apache на поиск файла index.php.
Для этого введите следующую команду, чтобы открыть файл dir.conf в текстовом редакторе с правами root:
sudo nano /etc/apache2/mods-enabled/dir.conf
Файл будет выглядеть следующим образом:
<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>
Переместите файл index.php (выделенный выше) на первую позицию после DirectoryIndex, как показано ниже:
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>
Наконец, сохраните файл. Если вы используете nano, вы можете сделать это, нажав CTRL + X, а затем Y и ENTER для подтверждения.
Теперь перезагрузите Apache с помощью:
sudo systemctl reload apache2
Вы можете проверить статус apache2:
sudo systemctl status apache2
apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2019-07-08 12:58:31 UTC; 8s ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 11948 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 11954 (apache2)
Tasks: 6 (limit: 4719)
Memory: 11.5M
CGroup: /system.slice/apache2.service
├─11954 /usr/sbin/apache2 -k start
├─11955 /usr/sbin/apache2 -k start
├─11956 /usr/sbin/apache2 -k start
├─11957 /usr/sbin/apache2 -k start
├─11958 /usr/sbin/apache2 -k start
└─11959 /usr/sbin/apache2 -k start
На этом настройка вашего сервера LAMP завершена. Теперь вы можете заняться остальными настройками, такими как vhosts.