Установите Apache, MariaDB, PHP (стек LAMP) в CentOS 8.
Стек LAMP представляет собой комбинацию Linux, Aвеб-сервера pache, MySQL/M<ariaDB, PHP. В этом пошаговом руководстве объясняется, как установить Apache, MariaDB, PHP (стек LAMP) на минимальный сервер CentOS 8. Стек LAMP используется для развертывания веб-приложений и размещения динамических веб-сайтов. Я тестировал это руководство на CentOS 8, однако приведенные ниже шаги должны работать и на сервере RHEL 8. Давайте начнем.
Установите Apache, MariaDB, PHP (стек LAMP) в CentOS 8.
Вот подробности моей тестовой машины:
- Операционная система - минимальный сервер CentOS 8 (8.1.1911 (Core))
- IP-адрес - 192.168.225.52/24.
- Имя хоста — centos8.ostechnix.lan
Все приведенные ниже команды следует запускать от имени пользователя root. Если вы входите в систему как обычный пользователь, используйте «sudo» перед каждой командой. Символ # означает, что я выполняю команды как пользователь root.
Примечание:
Одним из основных обновлений CentOS 8 является то, что менеджер пакетов по умолчанию был перенесен с YUM на DNF. Тем не менее, вы все равно можете использовать YUM на CentOS 8, если привыкнете к этому. Использование DNF точно такое же, как и YUM. Я составил список примеров команд DNF для начинающих. Если вам интересно узнать, как использовать DNF, перейдите по следующей ссылке.
- Примеры команд DNF для начинающих
1. Установите веб-сервер Apache на CentOS 8.
Чтобы установить Apache на CentOS 8, выполните следующую команду от имени пользователя root:
dnf install httpd
После установки Apache включите и запустите службу Apache с помощью команды:
systemctl enable httpd
systemctl start httpd
Альтернативно вы можете использовать следующую однострочную команду, чтобы включить и запустить службу Apache за один раз.
systemctl enable --now httpd
Проверьте, запущена ли служба Apache, с помощью команды:
systemctl status httpd
Пример вывода:
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2020-02-07 12:25:08 IST; 39min ago
Docs: man:httpd.service(8)
Main PID: 1736 (httpd)
Status: "Total requests: 6; Idle/Busy workers 100/0;Requests/sec: 0.00253; Bytes served/sec: 13>
Tasks: 213 (limit: 11501)
Memory: 25.7M
CGroup: /system.slice/httpd.service
├─1736 /usr/sbin/httpd -DFOREGROUND
├─1873 /usr/sbin/httpd -DFOREGROUND
├─1874 /usr/sbin/httpd -DFOREGROUND
├─1875 /usr/sbin/httpd -DFOREGROUND
└─1876 /usr/sbin/httpd -DFOREGROUND
Feb 07 12:25:08 centos8.ostechnix.lan systemd[1]: Starting The Apache HTTP Server...
Feb 07 12:25:08 centos8.ostechnix.lan systemd[1]: Started The Apache HTTP Server.
Feb 07 12:25:08 centos8.ostechnix.lan httpd[1736]: Server configured, listening on: port 80
Как видите, служба Apache загружена и работает. И он прослушивает порт 80. Чтобы узнать, какая служба прослушивает тот или иной порт, обратитесь к этому руководству.
Проверьте версию Apache:
# httpd -v
Server version: Apache/2.4.37 (centos)
Server built: Dec 23 2019 20:45:34
Затем все порты сервера Apache по умолчанию 80 и 443 через брандмауэр и маршрутизатор.
Чтобы разрешить http-порт 80 через брандмауэр, выполните:
firewall-cmd --permanent --add-service=http
Чтобы разрешить https-порт 443:
firewall-cmd --permanent --add-service=https
Перезапустите брандмауэр, чтобы применить изменения, используя команду:
systemctl restart firewalld
1.1. Тестирование веб-сервера Apache
Мы только что завершили все необходимые шаги для развертывания веб-сервера Apache. Давайте продолжим и проверим, действительно ли это работает или нет. Для этого откройте веб-браузер (на любой удаленной системе в сети, поскольку это минимальный сервер без графического интерфейса) и перейдите по адресу — http://ip-address. Если в вашей системе CentOS установлен графический интерфейс, вы можете перейти по адресу http://localhost, http://ip-address/ или http:/. /имя-домена.
Если все в порядке, вы увидите следующую тестовую страницу в своем браузере.
Итак, веб-сервер Apache работает!
Следующим шагом в настройке LAMP является установка сервера базы данных.
2. Установите сервер базы данных MariaDB на CentOS 8.
Запустите следующую команду из терминала, чтобы установить MariaDB на CentOS 8:
dnf install mariadb-server mariadb
После установки MariaDB включите и запустите службу MariaDB с помощью команд:
systemctl enable mariadb
systemctl start mariadb
Альтернативно, используйте следующую однострочную команду, чтобы сразу включить и запустить службу mariadb:
systemctl enable --now mariadb
Чтобы проверить, запущена ли служба mariadb, запустите:
systemctl status mariadb
Пример вывода:
● mariadb.service - MariaDB 10.3 database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2020-02-07 14:16:59 IST; 16s ago
Docs: man:mysqld(8)
https://mariadb.com/kb/en/library/systemd/
Process: 5447 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, status=0/SUCCESS)
Process: 5312 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mariadb.service (code=exited, statu>
Process: 5288 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
Main PID: 5415 (mysqld)
Status: "Taking your SQL requests now..."
Tasks: 30 (limit: 11501)
Memory: 84.6M
CGroup: /system.slice/mariadb.service
└─5415 /usr/libexec/mysqld --basedir=/usr
Feb 07 14:16:59 centos8.ostechnix.lan mysql-prepare-db-dir[5312]: Please report any problems at ht>
Feb 07 14:16:59 centos8.ostechnix.lan mysql-prepare-db-dir[5312]: The latest information about Mar>
Feb 07 14:16:59 centos8.ostechnix.lan mysql-prepare-db-dir[5312]: You can find additional informat>
Feb 07 14:16:59 centos8.ostechnix.lan mysql-prepare-db-dir[5312]: http://dev.mysql.com
Feb 07 14:16:59 centos8.ostechnix.lan mysql-prepare-db-dir[5312]: Consider joining MariaDB's stron>
Feb 07 14:16:59 centos8.ostechnix.lan mysql-prepare-db-dir[5312]: https://mariadb.org/get-involved/
Feb 07 14:16:59 centos8.ostechnix.lan mysqld[5415]: 2020-02-07 14:16:59 0 [Note] /usr/libexec/mysq>
Feb 07 14:16:59 centos8.ostechnix.lan mysqld[5415]: 2020-02-07 14:16:59 0 [Warning] Could not incr>
Feb 07 14:16:59 centos8.ostechnix.lan mysqld[5415]: 2020-02-07 14:16:59 0 [Warning] Changed limits>
Feb 07 14:16:59 centos8.ostechnix.lan systemd[1]: Started MariaDB 10.3 database server
Сервис Mariadb загружен и активен!
Проверьте установку версии MariaDB:
# mysql -V
mysql Ver 15.1 Distrib 10.3.17-MariaDB, for Linux (x86_64) using readline 5.1
2.1. Установите пароль пользователя root (администратора) базы данных.
По умолчанию пароль пользователя root базы данных пуст. Чтобы защитить сервер базы данных, нам необходимо установить пароль для пользователя root. Для этого запустите скрипт mysql_secure_installation:
mysql_secure_installation
Вам зададут пару вопросов. Прочитайте и ответьте на них соответственно. Сначала вам будет предложено ввести текущий пароль для пользователя root. Поскольку по умолчанию пароль пуст, просто нажмите клавишу ENTER, чтобы продолжить. Далее вам будет предложено ответить на следующие вопросы:
- Установить пароль root? — введите y, чтобы установить пароль, и введите его дважды.
- Удалить анонимных пользователей? - введите y, чтобы удалить анонимного пользователя. По умолчанию анонимный пользователь предоставляется для целей тестирования. Вам следует удалить анонимного пользователя в производстве.
- Запретить удаленный вход в систему root? — введите y, чтобы запретить пользователю root доступ к серверу базы данных из любых удаленных систем.
- Удалить тестовую базу данных и доступ к ней? - Введите y, чтобы удалить тестовую базу данных.
- Обновить таблицы привилегий сейчас? - Введите y, чтобы все внесенные изменения вступили в силу.
Пример вывода:
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none): #Press ENTER
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y #Type y and press ENTER
New password: #Enter password
Re-enter new password: #Re-enter password
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB 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? [Y/n] y #Type y and press ENTER
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y #Type y and ress ENTER
... Success!
By default, MariaDB 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? [Y/n] y #Type y and press ENTER
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y #Type y and press ENTER
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
Теперь мы обеспечили установку MariaDB.
2.2. Вход в оболочку MariaDB
Выполните следующую команду, чтобы войти в оболочку mariadb от имени пользователя root:
# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 16
Server version: 10.3.17-MariaDB MariaDB Server
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)]>
Чтобы выйти из оболочки mariadb, просто запустите:
exit;
3. Установите PHP на CentOS 8.
PHP — последний компонент в стеке LAMP. Чтобы установить php вместе со всеми другими необходимыми модулями php, выполните следующую команду от имени пользователя root:
dnf install php php-fpm php-mysqlnd php-opcache php-gd php-xml php-mbstring
3.1. Настройте Apache с помощью PHP-FPM
Одним из наиболее распространенных известных способов запуска PHP с Apache является модуль mod_php. Однако PHP-FPM (менеджер процессов FastCGI) имеет несколько преимуществ перед mod_php. Для тех, кому интересно: PHP-FPM — это реализация PHP FastCGI. PHP-FPM работает как автономный сервер FastCGI и значительно повышает производительность вашей среды PHP.
У нас уже установлен php-fpm, поэтому давайте включим и запустим службу php-fpm с помощью команд:
systemctl enable php-fpm
systemctl start php-fpm
Альтернативно, используйте следующую однострочную команду, чтобы сразу включить и запустить службу php-fpm:
systemctl enable --now php-fpm
Чтобы проверить, запущена ли служба php-fpm или нет, запустите:
systemctl status php-fpm
Пример вывода:
● php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2020-02-07 17:24:44 IST; 8s ago
Main PID: 6053 (php-fpm)
Status: "Ready to handle connections"
Tasks: 6 (limit: 11501)
Memory: 22.6M
CGroup: /system.slice/php-fpm.service
├─6053 php-fpm: master process (/etc/php-fpm.conf)
├─6054 php-fpm: pool www
├─6055 php-fpm: pool www
├─6056 php-fpm: pool www
├─6057 php-fpm: pool www
└─6058 php-fpm: pool www
Feb 07 17:24:44 centos8.ostechnix.lan systemd[1]: Starting The PHP FastCGI Process Manager...
Feb 07 17:24:44 centos8.ostechnix.lan systemd[1]: Started The PHP FastCGI Process Manager.
Итак, служба php-fpm загружена и активна.
3.2. Тестирование PHP
Чтобы проверить, правильно ли работает PHP, создайте образец файла с именем “info.php” в корневой папке веб-сайта:
vi /var/www/html/info.php
Добавьте следующие строки:
<?php
phpinfo();
?>
Перезапустите службу Apache, чтобы изменения вступили в силу:
systemctl restart httpd
Теперь откройте веб-браузер и перейдите по адресу http://IP_Address/info.php.
Вы увидите следующую страницу PHP, на которой перечислены все установленные модули и другие сведения, такие как версия PHP, дата сборки, команды и т. д.
Поздравляю! На этом этапе у вас должен быть полностью функционирующий стек LAMP на сервере CentOS 8.
Мы уже публиковали информацию об установке стека LAMP на разных платформах Linux. Перейдите по следующей ссылке, чтобы узнать, как настроить LAMP в различных дистрибутивах Linux.
- Направляющие для LAMP