Введение
LAMP означает Linux, Apache, MySQL и PHP. В этом руководстве мы объясним, как установить LAMP для одного или нескольких сайтов.
Требования
- Сервер с операционной системой Linux CentOS 7.
- Root-доступ
- Инструменты для работы через SSH
- PuTTY для Windows
- OpenSSH в Linux/macOS (доступно по умолчанию)
Шаг 1 — Вход и обновление системы
Прежде чем мы начнем, убедитесь, что в вашем CentOS 7 установлены последние обновления.
yum update -y
Если вы хотите установить LAMP на выделенном или же на облачном сервере, убедитесь, что вы сначала вошли на сервере через SSH, а затем выполните команду выше.
Подключение по SSH в терминале:
ssh root@10.0.0.1
Примечание: в данном примере 10.0.0.1 — IP-адрес вашего сервера
Перед продолжением установки убедитесь, что в CentOS установлены wget
и текстовый редактор nano
. Если это не так, то установите их с помощью следующей команды:
yum install wget nano -y
Шаг 2 — Установка веб-сервера Apache
В CentOS веб-сервер Apache предоставляется пакетом httpd
. Установите его с помощью следующей команды:
yum install httpd -y
После завершения установки необходимо запустить службу httpd с помощью следующей команды:
systemctl start httpd
Теперь откройте IP-адрес сервера в браузере. Если отображается страница apache по умолчанию, установка прошла успешно. Теперь настроим автоматический запуск httpd при старте системы.
systemctl enable httpd
Если httpd не запущен, вы можете проверить, работает ли на вашем сервере другая служба на порту 80 с помощью команды netstat -tulpen | grep 80
.
systemctl status httpd
Пример вывода команды
[root@your_host ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2019-03-14 08:13:10 EDT; 4s ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 15255 (httpd)
Status: "Processing requests..."
CGroup: /system.slice/httpd.service
├─15255 /usr/sbin/httpd -DFOREGROUND
├─15256 /usr/sbin/httpd -DFOREGROUND
├─15257 /usr/sbin/httpd -DFOREGROUND
├─15258 /usr/sbin/httpd -DFOREGROUND
├─15259 /usr/sbin/httpd -DFOREGROUND
└─15260 /usr/sbin/httpd -DFOREGROUND
Mar 14 08:13:09 your_host systemd[1]: Starting The Apache HTTP Server...
Mar 14 08:13:10 your_host systemd[1]: Started The Apache HTTP Server.
Шаг 3 — Установите MySQL
wget https://repo.mysql.com//mysql80-community-release-el7-2.noarch.rpm
yum localinstall mysql80-community-release-el7-2.noarch.rpm
yum install mysql-community-server -y
Нам нужно запустить MySQL и включить его по умолчанию
systemctl start mysqld
systemctl enable mysqld
Пример вывода команды
[root@localhost ~]# systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2019-03-14 08:17:19 EDT; 19s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Main PID: 15425 (mysqld)
Status: "SERVER_OPERATING"
CGroup: /system.slice/mysqld.service
└─15425 /usr/sbin/mysqld
Mar 14 08:17:13 localhost systemd[1]: Starting MySQL Server...
Mar 14 08:17:19 localhost systemd[1]: Started MySQL Server.
Шаг 3.1 — Вход в MySQL
По умолчанию MySQL создаст временный пароль для пользователя root, вы можете узнать его с помощью этой команды:
grep 'temporary password' /var/log/mysqld.log
Чтобы войти в систему, нам нужно запустить:
mysql -uroot -p
Теперь введите временный пароль. После входа в систему, вы можете изменить пароль (рекомендуется), с помощью этой команды (начать с ALTER):
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'holuP455##';
Примечание: 'holuP455##' приведено для примера. Замените его вашим паролем.
Пароль должен содержать уникальные символы, в противном случае он вызовет такую ошибку:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'holuP455';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'holuP455##';
Query OK, 0 rows affected (0.02 sec)
Чтобы выйти из mysql, выполните команду: quit
.
Шаг 4 — Установка PHP
Прежде чем мы установим PHP, нам нужно активировать epel и remi, чтобы убедиться, что мы будем устанавливать версию PHP. Если мы используем репозиторий по умолчанию, то будет установлен PHP версии 5.4 (он слишком стар).
yum install epel-release -y
yum localinstall http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install yum-utils -y
yum-config-manager --enable remi-php72
yum update -y
Теперь запустите эту команду, чтобы установить PHP 7.2 и модуль MySQL:
yum install php72 php72-php-mysqlnd -y
Проверьте версию PHP с помощью команды php -v
:
[root@localhost ~]# php -v
PHP 7.2.16 (cli) (built: Mar 5 2019 14:45:10) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
Если вам нужно больше модулей php, то вы можете поискать их с помощью команды:
yum search php72 | more
Шаг 5 — Установка phpMyAdmin (необязательно)
Вы можете установить phpMyAdmin из пакетов с помощью следующей команды:
yum install phpMyAdmin -y
Вы не можете получить доступ к phpMyAdmin сразу после завершения установки. Сначала нужно отредактировать файл настроек httpd. Выполните команду:
nano /etc/httpd/conf.d/phpMyAdmin.conf
и проверьте настройки. Добавьте "Require all granted".
<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
Require all granted <= add this line for allow all access
</RequireAny>
</IfModule>
Чтобы получить доступ к phpMyAdmin, введите следующий URL-адрес в браузере: http://10.0.0.1/phpmyadmin
Шаг 6 — Настройка нескольких сайтов
Теперь нам нужно настроить виртуальный хост. Это необходимо, если вы будете использовать один сервер для размещения нескольких доменных имен. Например:
- Домен: example.com
- Поддомен: holu.example.com
Шаг 6.1 — Создание каталога
mkdir -p /var/www/html/example.com/public_html
mkdir -p /var/www/html/holu.example.com/public_html
Шаг 6.2 — Пример создания PHP файлов
echo "<?php echo 'This is example.com'; ?>" > /var/www/html/example.com/public_html/index.php
echo "<?php echo 'This is holu.example.com'; ?>" > /var/www/html/holu.example.com/public_html/index.php
Шаг 6.3 — Настройка httpd
Нам нужно создать новые конфигурационные файлы.
Настройки для домена example.com
Откройте конфигурационный файл
nano /etc/httpd/conf.d/example.conf
затем вставьте эти настройки:
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
DocumentRoot /var/www/html/example.com/public_html
ErrorLog /var/www/html/example.com/error.log
</VirtualHost>
Настройки для домена holu.example.com
Откройте конфигурационный файл
nano /etc/httpd/conf.d/holu.example.conf
затем вставьте эти настройки:
<VirtualHost *:80>
ServerName www.holu.example.com
ServerAlias holu.example.com
DocumentRoot /var/www/html/holu.example.com/public_html
ErrorLog /var/www/html/holu.example.com/error.log
</VirtualHost>
Шаг 6.4 — Перезапуск службы httpd
Перезапустить Apache можно с помощью следующей команды:
systemctl restart httpd
Теперь вы можете получить доступ к обоим доменам, example.com и holu.example.com, работающим на одном сервере.
- если вы хотите сохранить все файлы php, html, css или js, убедитесь, что вы сохранили в public_html.
- если вам нужно добавить больше сайтов, просто повторите шаг 6 с другим именем в настройках.
Вывод
Теперь сервер готов к созданию веб-сайтов со статическим или динамическим содержимым. Все это работает на одном сервере с помощью Apache, MySQL и PHP.