В этом руководстве мы установим стек LAMP (Linux, Apache, MySQL, PHP) на Ubuntu 20.04 и настроим веб-сервер.
Установка Apache
Первый компонент вашего стека LAMP в Ubuntu 20.04 – Apache.
Начните с обновления списков пакетов и установки Apache. Нажмите y и ENTER, когда вас попросят продолжить. Команда:
sudo apt update && sudo apt install apache2
Установка может занять несколько минут.
Настройка брандмауэра
Настоятельно рекомендуется настроить брандмауэр для обеспечения дополнительной безопасности вашего LAMP-стека в Ubuntu 20.04.
Мы начнем с добавления правила брандмауэра для SSH. Вы же не хотите получить блокировку при включении брандмауэра, когда настраиваете сервер удаленно?
sudo ufw allow OpenSSH
Сообщение об ошибке «ERROR: could find a profile matching openSSH» означает, что вы не настраиваете сервер удаленно. Можно игнорировать.
Теперь мы можем добавить правила брандмауэра для Apache:
sudo ufw allow in "Apache Full"
Теперь включите брандмауэр:
sudo ufw enable
Нажмите y, если вы видите сообщение «Command may disrupt existing ssh connections».
Если брандмауэр был активирован правильно, вы должны увидеть сообщение «Брандмауэр активен и включен при запуске системы».
Вы также можете проверить текущее состояние брандмауэра с помощью:
sudo ufw status
Ниже мы видим, что брандмауэр активен и имеет два правила для каждой службы. v6 это сокращение от IPv6.
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Apache Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Apache Full (v6) ALLOW Anywhere (v6)
Тестовый Apache
Чтобы узнать, правильно ли установлен Apache на Ubuntu 20.04, мы можем проверить текущее состояние службы:
sudo service apache2 status
Если он включен и работает, вы должны увидеть зеленое активное состояние.
Если вы получаете следующую ошибку о полном доменном имени, вы можете игнорировать ее:
apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Sat 2020-03-31 08:44:04 CEST; 15min ago
Main PID: 5727 (apache2)
Tasks: 55 (limit: 4915)
CGroup: /system.slice/apache2.service
├─5727 /usr/sbin/apache2 -k start
├─5728 /usr/sbin/apache2 -k start
└─5729 /usr/sbin/apache2 -k start
Mar 31 08:44:04 ubuntu2004 systemd[1]: Starting The Apache HTTP Server...
Mar 31 08:44:04 ubuntu2004 apachectl[5675]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1.
Mar 31 08:44:04 ubuntu2004 systemd[1]: Started The Apache HTTP Server.
Возможно, вам придется нажать кнопку q для выхода из проверки состояния сервера при использовании SSH-клиента.
Теперь, когда служба Apache запущена, вы имеете возможность просмотреть тестовую веб-страницу Apache через свой веб-браузер.
Введите IP-адрес вашего сервера в адресную строку и нажмите ENTER.
Все готово! Вы можете найти страницу приветствия Apache в папке /var/www/html. Чтобы отредактировать этот файл, необходимо ввести:
sudo nano /var/www/html/index.html
Нажмите CTRL+X, чтобы выйти из текстового редактора nano.
Если у вас есть доменное имя, вы можете указать его в IP-адресе вашего сервера без дальнейшей настройки, так как Apache должен загрузить эту страницу по умолчанию. Но если вы хотите разместить несколько доменов на своем сервере или настроить SSL-сертификаты с помощью Let's Encrypt, вам следует настроить виртуальный хост (инструкция будет в конце этого руководства).
Установка MySQL
Следующий компонент вашего стека LAMP на Ubuntu 20.04 – MySQL.
Начните с обновления репозиториев и установки пакета MySQL. Нажмите y и ENTER при появлении запроса на установку.
sudo apt update && sudo apt install mysql-server
После завершения установки пакета мы можем проверить, работает ли служба MySQL:
sudo service mysql status
При запуске вы увидите зеленый активный статус:
mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2020-04-02 02:40:59 CEST; 2min 47s ago
Main PID: 18476 (mysqld)
Status: "Server is operational"
Tasks: 27 (limit: 4915)
CGroup: /system.slice/mysql.service
└─18476 /usr/sbin/mysqld
Apr 02 02:40:59 ubuntu2004 systemd[1]: Starting MySQL Community Server...
Apr 02 02:40:59 ubuntu2004 systemd[1]: Started MySQL Community Server.
Возможно, вам придется нажать кнопку q, чтобы выйти из состояния службы, если вы используете SSH-клиент.
Настройка безопасности MySQL
Теперь вы должны запустить mysql_secure_installation, чтобы настроить безопасность для вашего сервера MySQL на Ubuntu 20.04.
sudo mysql_secure_installation
Компонент проверки пароля (необязательно)
Вас спросят, хотите ли вы настроить плагин проверки пароля. Если вы по какой-то причине не хотите применять строгую политику паролей, эта настройка не нужна.
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD COMPONENT can be used to test passwords
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 component?
Press y|Y for Yes, any other key for No:
Нажмите ENTER, если не хотите настраивать плагин проверки пароля.
Создать пароль root
Если вы еще не создали пароль root для MySQL, вы должны создать его сейчас.
Please set the password for root here.
New password:
Re-enter new password:
Создайте надежный пароль и введите его. Обратите внимание, что при вводе паролей в Linux ничего не отображается (никаких звездочек или точек тоже не будет).
Удаление анонимных пользователей
Далее вам будет предложено удалить анонимных пользователей.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL 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? (Press y|Y for Yes, any other key for No) :
Нажмите y и ENTER, чтобы удалить анонимных пользователей.
Отключить удаленный корневой вход в систему
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? (Press y|Y for Yes, any other key for No) :
Нажмите y и ENTER, чтобы удаленно запретить вход в систему root.
Удалить тестовую базу данных
By default, MySQL 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? (Press y|Y for Yes, any other key for No) :
Нажмите y и ENTER, чтобы удалить тестовую базу данных.
Перезагрузить таблицы привилегий
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) :
Нажмите y и ENTER, чтобы перезагрузить таблицы привилегий.
Все готово! Основная настройка MySQL завершена.
Тестовый сервис MySQL
Компонент MySQL вашего стека LAMP на Ubuntu 20.04 готов к работе.
Вы должны войти в систему сервера MySQL, чтобы убедиться, что она работает правильно. Поскольку вы запускаете эту команду как sudo, она автоматически войдет в MySQL, используя корневую учетную запись. Если вам будет предложено ввести пароль, введите пароль своей учетной записи Linux, а не MySQL.
sudo mysql
Вы увидите подобную информацию:
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 15 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 и нажмите ENTER.
exit
Вы успешно установили и настроили MySQL для вашего стека-«фонаря» на Ubuntu 20.04!
Установка PHP
Последним компонентом вашего стека LAMP на Ubuntu 20.04 является PHP.
Начните с обновления репозитория и установки пакета PHP. Мы также установим пакеты libapache2-mod-php и php-mysql, которые позволят PHP взаимодействовать с базой данных MySQL.
Нажмите y и ENTER при появлении запроса на установку пакета PHP.
sudo apt update && sudo apt install php libapache2-mod-php php-mysql
Тест 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 в корневом каталоге документа.
sudo nano /var/www/html/info.php
После открытия редактора nano введите следующий PHP-код:
/var/www/html / info.РНР <?php phpinfo();
Нужно сохранить и выйти из документа (нажмите CTRL+X, Y и затем ENTER).
Теперь мы можем загрузить этот файл в браузере, перейдя по http://your_ip/info.php или http://example.com/info.php.
Ниже мы видим, что страница info.php работает правильно.
После того как вы подтвердили, что PHP работает правильно, важно удалить info.php, поскольку он содержит информацию, которая может быть полезна хакерам.
sudo rm /var/www/html/info.php
Если вы планируете загружать файлы размером более 2 Мб через WordPress или аналогичный движок, нужно будет изменить файл конфигурации PHP и установить максимальный размер загрузки.
Установка стека LAMP на Ubuntu 20.04 завершена! Если вы хотите настроить виртуальные хосты или дополнительную конфигурацию для Apache, читайте далее.
Мало кто знает, но LAMP на VDS можно установить автоматически. Такую услугу предоставляет хостинг-провайдер Timeweb. Все просто:
- Выберите тариф VDS.
- Оплатите его.
- При настройке сервера отметьте Ubuntu 20.04 и стек LAMP.
Через пару минут ваш сервер будет полностью готов к работе!
Настройка виртуального узла (необязательно)
Если вы хотите разместить несколько доменов на своем ламповом сервере Ubuntu 20.04 или настроить SSL-сертификаты с помощью Let's Encrypt, вам понадобится виртуальный хост.
Если у вас пока нет доменного имени, вы можете обмануть свою ОС (Linux/Mac/Windows), чтобы разрешить перенаправление домена на IP-адрес вашего сервера с Ubuntu 20.04. Подробнее об этом поговорим далее
Создать каталог и index.html
Создайте новый каталог /var/www/ для вашего домена (замените mydomain.com на собственный).
sudo mkdir -p /var/www/mydomain.com/public_html
Создайте index.html файл для тестирования:
sudo nano /var/www/mydomain.com/public_html/index.html
Введите следующее:
<html> <head> <title>Welcome!</title> </head> <body> <h1>Welcome to mydomain.com!</h2> </body> </html>
Сохраняем изменения и выходим (нажмите CTRL+X, Y и затем ENTER).
Создание виртуального хоста
Чтобы создать файл конфигурации виртуального хоста, замените mydomain.com на собственный домен.
sudo nano /etc/apache2/sites-available/mydomain.com.conf
Введите замену mydomain.com:
<VirtualHost *:80> ServerAdmin webmaster@mydomain.com ServerName mydomain.com ServerAlias www.mydomain.com DocumentRoot /var/www/mydomain.com/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Сохраняем и выходим (CTRL+X, Y и ENTER)
Проверим наличие ошибок:
apachectl configtest
Вы можете игнорировать любую ошибку, в которой присутствует подобное сообщение: «Не удалось надежно определить полное доменное имя сервера».
Включите замену виртуального хоста mydomain.com (снова нужно указать собственный домен):
sudo a2ensite mydomain.com.conf
Отключите Apache по умолчанию, иначе он переопределит ваш виртуальный хост:
sudo a2dissite 000-default
Далее надо перезапустить Apache.
sudo systemctl reload apache2
Тестовый виртуальный хост
Если у вас нет зарегистрированного доменного имени, вы можете перейти к следующему шагу, чтобы обмануть ОС и перенаправить любой URL на ваш сервер.
Теперь вам нужно перейти в настройки DNS вашего регистратора домена и указать А-запись для домена на IP-адрес вашего сервера Ubuntu 20.04 с LAMP. Как только запись станет активной (обычно это занимает от 24 до 48 часов), вы сможете увидеть тестовую страницу в браузере.
Чтобы добавить больше доменов, просто повторите шаги, указанные выше.
Редактировать файл hosts (необязательно)
Если у вас нет ни одного зарегистрированного домена и вы просто хотите загрузить mydomain.com (или другой адрес) в вашем браузере в качестве теста, можно отредактировать файл hosts в операционной системе, чтобы перенаправить этот домен на ваш сервер Ubuntu 20.04 с LAMP.
Чтобы отредактировать файл hosts в Linux или Mac, запустите sudo nano /etc/hosts в терминале. Как только файлы hosts будут открыты, введите IP-адрес вашего сервера Ubuntu 20.04, а затем доменное имя, которое вы хотите разрешить для этого IP.
x.x.x.x mytest1.com
Замените x.x.x.x на IP-адрес вашего веб-сервера.
Узнать IP-адрес вашего сервера можно с помощью команды:
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
После сохранения файла hosts в браузере откроется доступ к вашему серверу по адресу mydomain.com (или иному URL).
Настройка Apache (необязательно)
Теперь, когда у вас есть Apache, обслуживающий веб-страницы на вашем Ubuntu 20.04, могут потребоваться дополнительные настройки конфигурации.
Отключить список каталогов и включить AllowOverride
Apache по умолчанию будет перечислять содержимое ваших каталогов без индексов (index.html, index.РНР). Это угроза безопасности, поскольку она позволяет хакерам просматривать ваш веб-сервер в поисках сценариев.
Вы также обнаружите, что .htaccess по умолчанию в Apache будет игнорироваться. Если понадобится .htaccess, вы можете включить его, изменив файл конфигурации Apache.
Откройте файл конфигурации:
sudo nano /etc/apache2/apache2.conf
Нажмите CTRL + W и найдите <Directory /var/www/>.
Блок должен выглядеть примерно так:
<Directory /var/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>
Удалите Indexes, чтобы остановить список каталогов Apache, и измените AllowOverride None на AllowOverride All, чтобы включить .htaccess. Теперь это должно выглядеть так:
<Directory /var/www/>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Сохраняем и выходим (CTRL+X, Y, ENTER).
Далее перезапускаем Apache.
sudo systemctl restart apache2
Включить mod_rewrite
Если вы хотите настроить некоторые правила .htaccess, вам, скорее всего, придется включить mod_rewrite.
sudo a2enmod rewrite
Далее нужно перезапустить Apache.
sudo systemctl restart apache2
На этом полная установка и настройка стека LAMP завершена.
В скором времени ждите материал по установке phpMyAdmin. Всех с наступающим!
Комментарии