Установка Web-сервера на Ubuntu 20.04 работающей под WSL2 на Windows 10. Все команды выполняются от имени пользователя, который создавался при установке Ubuntu WSL
Обновляем систему
sudo apt update
sudo apt upgrade
Установка Apache2
sudo apt install apache2
Редактируем файл
sudo nano /etc/apache2/ports.conf
Вместо Listen 80 пишем Listen 127.0.0.1:80 (или Listen 0.0.0.0:80), таким образом Apache будет прослушивать 80 порт по TCPv4
Стартуем Apache, и проверяем в браузере Windows хост 127.0.0.1, должна отобразиться страница по умолчанию для Apache
sudo service apache2 start
Установка MariaDB
sudo apt install mariadb-server
Стартуем сервис
sudo service mysql start
Настраиваем MySQL с помощью скрипта
sudo mysql_secure_installation
Сначала скрипт попросит ввести пароль root для подключения к базе данных, так как базу мы только что установили, то пароль пустой, поэтому просто нажимаем Enter
Далее скрипт настройки спросит, хотим ли мы установить пароль пользователю root - соглашаемся
Вводим пароль пользователя root (нужно придумать - например sqlpass) и подтверждаем его
Далее будут следующие вопросы:
Remove anonymous users? [Y/n]
Соглашаемся
Disallow root login remotely? [Y/n]
Тут желательно ответить да, но для упрощения подключения к базе лучше ответить нет, так как в данном примере будем подключаться из Windows с помощью программы HeidiSQL, и управлять пользователями удобнее из нее, иначе придется создавать базы данных из командной строки
Remove test database and access to it? [Y/n]
Тут можно ответить на Ваше усмотрение
Reload privilege tables now? [Y/n]
Соглашаемся
Подключаемся из консоли к MariaDB, и разрешаем вход пользователю 'root'@'localhost'
sudo mariadb
ALTER USER 'root'@'localhost' IDENTIFIED BY 'sqlpass';
\q
Проверяем подключение программой HeidiSQL
После нажатия кнопки Open должно произойти подключение к серверу баз данных, и мы должны стандартные для MySQL базы данных
MariaDB успешно установлена
Дополнение:
Заметил что при старте службы возникают ошибки
sudo service mysql start
* Starting MariaDB database server mysqld
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
Сервер mysql запускается, но при проверке статуса, возникает та-же ошибка, т.к. используется mysqladmin, а он по умолчанию пытается подключиться без пароля
sudo service mysql status
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
*
Т.к. сервер у нас локальный, можно сделать пароль root пустым и таких проблем не будет, так-же останется возможность подключения через HeidiSQL, но с пустым паролем
Установка пустого пароля выполняется командой
sudo mysqladmin -p password ""
При выполнении команды необходимо будет ввести пароль root сервера MySQL, который мы устанавливали ранее
Попробуем проверить статус mysql сервера
Команда успешно отработала
Создание тестового сайта в домашней директории
Так-как в домашней папке WSL слишком много файлов, с которыми неудобно работать из Windows создадим отдельную директорию для работы, и сразу папку для сайтов
mkdir work
mkdir work/www
Папку work добавим на панель быстрого доступа проводника Windows
Создадим папку сайта testsite.local, и папку для публичных файлов. Обычно папку для публикации называется public_html
mkdir work/www/testsite.local
mkdir work/www/testsite.local/public_html
Создадим конфиг нашего сайта
sudo nano /etc/apache2/sites-available/testsite.local.conf
Вставим в него следующие настройки
<VirtualHost *:80>
ServerName testsite.local
ServerAdmin webmaster@localhost
DocumentRoot /home/anykey/work/www/testsite.local/public_html/
ErrorLog ${APACHE_LOG_DIR}/testsite.error.log
CustomLog ${APACHE_LOG_DIR}/testsite.access.log combined
</VirtualHost>
Отредактируем конфигурацию Apache
sudo nano /etc/apache2/apache2.conf
В настройках необходимо найти секции Directory и добавить еще одну секцию
<Directory /home/anykey/work/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Активируем наш тестовый сайт
sudo a2ensite testsite.local
Перезапустим Apache
sudo service apache2 reload
В публичной папке сайта создадим файл index.html
nano work/www/testsite.local/public_html/index.html
И вставим в него тестовое содержимое
<h1>Hello World!</h1>
<p>This is the landing page of <strong>testsite.local</strong>.</p>
Отредактируем файл hosts Windows, для этого откроем Блокнот от имени администратора и откроем файл "C:\Windows\System32\drivers\etc\hosts", добавим в него следующую строчку
127.0.0.1 testsite.local
Проверим наш тестовый сайт в браузере, для этого в адресной строке введем http://testsite.local/, должно получиться следующее
Тестовый сайт работает
Установка PHP
sudo apt install php libapache2-mod-php php-mysql
Проверим версию
Перезапустим Apache
sudo service apache2 restart
Проверим работу PHP
В публичной папке с тестовым сайтом создадим index.php
nano work/www/testsite.local/public_html/index.php
Вставим в него следующее содержимое
<?php
phpinfo();
Проверим работу PHP в браузере, откроем страницу http://testsite.local/index.php
Должно отобразиться следующее содержимое
PHP на сервере Apache2 работает
Теги: #wsl #ubuntu #lamp #mariadb #apache #php