Благодаря WSL вы получите мощную платформу, где легко сможете заниматься разработкой веб-проектов. Вам больше не нужно думать, где и какие программы скачать для создания локального сервера на вашей рабочей машине, не нужно тратить время на поиск и установку. Microsoft сделала большой шаг для удобства разработчиков, представив подсистему Linux в Windows 10 WSL 2.
В новой подсистеме WSL2 доступ к полной оболочке Linux занимает не более секунды. Это означает, что теперь вы можете работать над проектами на основе Linux внутри Windows с высокой скоростью.
В данном руководстве рассмотрим, как в подсистеме Windows для Linux (WSL) можно настроить веб-сервер LAMP (Apache, MySQL, PHP) для локальной разработки ваших веб-проектов.
- Windows — выступает как основная ОС, в ней будут работать такие программы как VScode, PhpStorm, SublimeText3, браузеры, консоль и т.д.
- Ubuntu — как web-сервер и другое программное обеспечение (PHP, Apache, mysql, git и т.д.), управляется консолью Windows 10.
Между этими двумя ОС будут общие файлы, папки, которые мы можем легко редактировать в Windows.
Включение подсистемы Windows для Linux.
Для включения компонента «Подсистема Windows для Linux» в Windows 10 необходимо выполнить следующие действия:
Шаг 1: С помощью команды: optionalfeatures в диалоговом окне «Выполнить» откройте «Компоненты Windows».
Шаг 2: Включите опцию «Подсистема Windows для Linux».
Шаг 3: Перейдите в Microsoft Store загрузите и установите приложение Ubuntu для Windows.
Шаг 4: C помощью меню «Пуск» запустите Ubuntu. В окне терминала, при первом запуске нужно будет ввести новое имя UNIX пользователя (username) и пароль (password).
Подробней как это сделать, мы рассмотрели в руководствах:
- Как установить WSL 2 подсистему Windows для Linux в Windows 10
- Как установить Wsl 1 подсистему Windows для Linux.
- Официальная инструкция от microsoft.
Создание директории для веб-проекта.
При использовании WSL 1 желательно помещать файлы проекта на диски файловой системы Windows — C, D, E. Если вы будете использовать WSL 2, вы можете также использовать локальные диски или создать директорию для сайта в файловой системе Linux.
Шаг 5: Создайте в Проводнике Windows 10, директорию для сайта (проекта) test.local:
С:\Projects\test.local\public_html
Если вы будете использовать WSL 2 рекомендуется создать директорию для сайта в файловой системе Linux. В этом случае папку проекта поместим сюда: \home\main\projects\test.local\public_html
Для этого выполним команду:
sudo mkdir -p /home/main
/projects/test.local/public_html
Где замените «main
» на имя UNIX пользователя созданного при первом запуске wsl.
Во избежание проблем с доступом выполните команду:
sudo chmod -R 777 /home/main
Здесь также замените «main
» на ваше имя пользователя UNIX.
Это избавит от ошибок и обеспечит максимальную производительность.
Шаг 6: Как получить доступ к файлам WSL Linux из проводника Windows 10.
Находясь в каталоге Linux FS, введите:
explorer.exe .
Откроется окно проводника, расположенное внутри вашего дистрибутива Linux.
Подробнее в нашей статье: Доступ к файлам WSL Linux с помощью Проводника Windows 10
Также, чтобы удобно было работать с каталогами файловой системой Linux вы можете установить в Ubuntu, например, «Midnight Commander»:
sudo apt install mc
Запуск Midnight Commander осуществляется посредством ввода команды:
mc
Установка необходимых программ в Ubuntu для Windows 10.
Шаг 7: C помощью меню «Пуск» запустите Ubuntu.
Шаг 8: Обновите локальный индекс apt пакетов в Ubuntu выполнив команду:
sudo apt update
Шаг 9: После чего необходимо обновить установленное программное обеспечение:
sudo apt upgrade
На запрос «Do you want to continue? [Y/n]» нажмите клавишу Y.
Установка Apache.
Веб-сервер Apache используют более половины всех действующих веб-сайтов. Это очень мощный и гибкий инструмент.
Шаг 10: Установим Apache выполнив команду:
sudo apt install apache2
Вы увидите список пакетов, которые будут установлены, а также объём места на диске которое они займут. Нажмите Y для продолжения установки.
Установка MySQL сервера.
MySQL — система управления базами данных. Она организует и обеспечит доступ к базам данных, где сайт может хранить информацию.
Шаг 11: Установим MySQL сервер:
sudo apt install mysql-server
Нажмите Y для продолжения установки. После завершения установки нам потребуется выполнить некоторые дополнительные команды, чтобы настроить наше окружение MySQL
Шаг 12: Установим php и другие пакеты, необходимые для веб-разработки:
PHP это компонент, отвечающий за обработку кода для отображения динамического контента.
sudo apt install php libapache2-mod-php php-mysql php-xml php-curl
Примечание: Если необходимо установить определенную версию php, например 7.4.x, необходимо выполнить команду:
sudo apt install php7.4 libapache2-mod-php7.4 php7.4-mysql php7.4-xml php7.4-curl
Включим модуль Mod rewrite в Apache:
Коротко, mod_rewrite — это модуль для веб-сервера Apache, выполняющий функцию преобразования URL.
Шаг 13: Выполните команду:
sudo a2enmod rewrite
Изменение метода аутентификации MySQL пользователя root.
Необходимо изменить метод аутентификации MySQL для пользователя root выполнив следующие действия:
Шаг 14: Запустим службу mysql.
sudo service mysql start
Шаг 15: Подключимся к серверу MySQL под стандартным пользователем root, который был создан при установке MySQL на ваш компьютер:
sudo mysql -uroot -p
Шаг 16: При запросе пароля нажмите Enter, т.к. по умолчанию пользователь root, созданный при установке, не имеет пароля.
Примечание: На серверах Ubuntu, использующих MySQL ( 5.7 и более поздние версии), аутентификация root пользователя происходит с помощью плагина auth_socket, а не с помощью пароля. Это во многих случаях повышает безопасность, но, может усложнить настройку доступа к root пользователю для phpMyAdmin и др. программ.
Шаг 17: Чтобы проверить метод аутентификации, который задействован для пользователя root, выполните команду:
SELECT user, authentication_string, plugin, host FROM mysql.user WHERE user="root";
Шаг 18: Если в ответе на запрос вы видите используется аутентификация с помощью плагина auth_socket, необходимо изменим эту настройку. Для этого введём команду:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
Шаг 19: Выполним команду FLUSH PRIVILEGES, которая применит внесённые изменения:
FLUSH PRIVILEGES;
Создание базы данных.
Шаг 20: Создадим базу данных для веб-проекта test.local. Для этого введем в командной строке MySQL следующую команду:
CREATE DATABASE testlocal;
Шаг 21: Для завершения работы с командной строкой MySQL выйдем из неё:
exit
Установка phpMyAdmin.
Шаг 22: Выполняем команду:
sudo apt install phpmyadmin
Шаг 23: В первом диалоговом окне, нажмите пробел чтобы выбрать Apache, далее нажмите клавишу Tab, а затем Enter.
Шаг 24: Выберите Yes, для настройки базы данных на запрос использовать dbconfig-common.
Шаг 25: Укажите пароль пользователя MySQL root.
Шаг 26: Подтвердите пароль
Шаг 27: Включим необходимые расширения PHP:
sudo phpenmod mcrypt
sudo phpenmod mbstring
Шаг 28: Перезапустите Apache:
sudo service apache2 restart
Теперь вы можете получить доступ к phpMyAdmin по следующему URL: http://localhost/phpmyadmin/ Вы можете войти в систему, используя имя пользователя root и пароль root, настроенные во время установки MySQL.
Настройка виртуальных хостов в Apache.
В Ubuntu файл настроек виртуальных хостов Apache находятся по следующему пути /etc/apache2/sites-available/*.conf. В Apache уже настроен один виртуальный хост по умолчанию в файле 000-default.conf. Возьмем данный файл за основу.
Шаг 29: Создайте копию файла 000-default.conf выполнив команду:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/test.local.conf
Шаг 30: Внесем изменения в файл test.local.conf, для этого используем, редактор nano:
sudo nano /etc/apache2/sites-available/test.local.conf
Содержимое файла test.com.conf после правок для Wsl 2 если вы создали директорию для сайта в файловой системе Linux:
<VirtualHost *:80> ServerAdmin webmaster@test.local ServerName test.local ServerAlias www.test.local DocumentRoot /home/almanex/projects/test.local/public_html/ <Directory /home/almanex/projects/test.local/public_html/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Внимание: Не забудьте заменить UNIX имя пользователя (username) на свое (Шаг: 7), в моем случае это almanex.
Содержимое файла test.com.conf после правок для Wsl 1 и Wsl 2, где файлы проекта находятся на диске файловой системы Windows — C, D, E:
<VirtualHost *:80> ServerAdmin webmaster@test.local ServerName test.local ServerAlias www.test.local DocumentRoot /mnt/c/projects/test.local/public_html/ <Directory /mnt/c/projects/test.local/public_html/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Внимание: Не забудьте заменить букву диска! В примере мы используем диск С.
Шаг 31: После внесения правок сохраните и закройте файл сочетанием клавиш CTRL X. Подтвердите операцию клавишей Y и нажмите ENTER.
Шаг 32: Включим новый виртуальный хост с помощью утилиты a2ensite:
sudo a2ensite test.local.conf
Шаг 33: Далее деактивируем сайт по умолчанию 000-default.conf:
sudo a2dissite 000-default.conf
Шаг 34: Перезапустим service apache:
sudo service apache2 restart
Перенаправление test.local на локальный веб-сервер.
Ваш проект доступен по адресу http://localhost/
Для того чтобы доменное имя http://test.local было связано с вашим локальным веб-сервером, откройте файл hosts, расположенный по адресу C:\Windows\System32\drivers\etc и добавить в него строки:
127.0.0.1 test.local
172.30.69.65 test.local
Чтобы определить ip-адрес вашего сетевого интерфейса (в моем случае это 172.30.69.65) можно использовать команду ip address в терминале (см. картинку ниже).
Команды для запуска и остановки веб-сервера.
Все, теперь перед началом работы с вашим веб проектом, вам нужно запустить Apache и MySQL, для этого необходимо ввести следующие команды по очереди:
sudo service apache2 start
sudo service mysql start
Для остановки веб-сервера:
sudo service apache2 stop
sudo service mysql stop
Необязательно: Чтобы было проще запускать и останавливать веб-сервер вы можете создать bash скрипты start.sh и stop.sh.
Как создать скрипт start.sh:
Шаг 1: Откройте терминал и создайте файл командой:
sudo nano ./start.sh
Шаг 2: Вставьте следующее содержимое, где замените password
на пароль, который установили для пользователя Ubuntu:
#!/bin/bash
echo password
| sudo -S sudo service apache2 start
echo password
| sudo -S sudo service mysql start
exit 0
Шаг 3: Необходимо отредактировать права доступа для start.sh. Выполните команду:
sudo chmod -R 755 ./start.sh
Скрипт stop.sh:
Шаг 4: Создайте файл командой:
sudo nano ./stop.sh
Содержимое файла stop.sh:
#!/bin/bash
echo password
| sudo -S sudo service apache2 stop
echo password
| sudo -S sudo service mysql stop
exit 0
Шаг 5: Отредактировать права доступа:
sudo chmod -R 755 ./stop.sh
Проверка работоспособности веб-сервера.
Для проверки работоспособности веб-сервера установим на test.local систему управления контентом, например, OctoberCMS, MODX Revolution или WordPress.
Для этого скачаем с официальной страницы архив системы WordPress и распакуем его в созданную нами директорию
С:\Projects\test.local\public_html
или
/home/main
/projects/test.local/public_html
Для установки системы необходимо открыть мастер. Откроем в браузере адрес http://test.local. После этого ответим на все вопросы мастера и нажмём на кнопку «Вперед», введем сведения о подключении к базе данных testlocal и тд..
Дождёмся окончания процесса установки. Готово!
Заключение
Теперь, когда ваш веб-сервер установлен и работает используя подсистему Wsl, у вас огромное количество вариантов того, что делать дальше. Вы установили платформу, которая позволит развернуть большинство типов веб-сайтов и сетевого программного обеспечения на вашем сервере. Дайте нам знать в комментариях ниже, помогло ли это руководство или есть какая-либо другая тема, которую вы хотели бы видеть.
Рекомендуем: Экспорт и импорт дистрибутива Linux WSL1 и WSL2 в Windows 10
Introduction
This guide will help you install LAMP stack on your Windows machine. I made this to help people who want to use or try any of my projects on their local or remote computers under Windows OS.
Requirements
The fastest way to install LAMP stack on your Windows machine is to use WAMP. It comes with a lot of preinstalled modules for Apache and PHP-FPM along with Nginx and MySQL.
Configuration
After installation of WAMP you need to go to http://localhost using your browser and set up new virtual host. Click Add a Virtual Host under a Tools menu. That will take you to the next step:
We will use example.com as a test domain for you web application.
Type example.com and path to the folder which contains the project files in the relevent fields:
Then you will see this sucess notice:
If you didn’t create example.com in the necessary folder you will see this failure notice:
In the end you will need to restart your WAMP installation and you are good to go:
After that you will need to point your virtul hosts to your LAMP installation on the localhost in the C:\Windows\System32\drivers\etc\hosts file.
You will need to open C:\Windows\System32\drivers\etc\hosts with any text editor and append text like that to the end of the file:
Then you will need to git clone or download any of my repositories into this folder and unzip the archive. After you do that check that index.php file is inside your example.com folder or else the application might not work.
Future Reading
- LAMP Stack Resources and Q&A
- WinNMP — Nginx MariaDB Redis Php 7 development stack for Windows
- LAMP (software bundle)
This brief tutorial shows students and new users how to install the LAMP stack on Windows 10 WSL (Windows Subsystem for Linux) 2 with Ubuntu OS.
LAMP is an acronym for Linux (Ubuntu), Apache2 HTTP Server, MariaDB or MySQL Database Server, and PHP Scripting Language. It is a group of open-source software and building blocks of many web applications and most content management systems (CMS) today.
Installing the LAMP stack on Windows WSL can be useful for several reasons. First, it allows you to run a full Linux operating system inside Windows, which can be helpful if you need to use Linux-based tools or software.
Additionally, the LAMP stack is a popular software bundle used for web development and hosting, so installing it on your Windows machine can allow you to create and test web applications on your local machine.
Finally, since WSL 2 comes with a performance boost and complete system call compatibility, it can provide a more seamless and efficient experience for running Linux-based applications on your Windows machine.
If you have a machine that meets the requirements above to run WSL 2, continue below.
To get started with running LAMP on Windows with WSL, follow the steps below:
Enable WSL in Windows
To enable WSL in Windows, you will want to open the PowerShell terminal as administrator. Click on Start, then begin typing PowerShell.
Next, right-click the Windows PowerShell app and choose to run as administrator.
When the console opens, run the commands below:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
After installing, you should get a success message similar to the lines below:
Deployment Image Servicing and Management tool Version: 10.0.19041.844 Image Version: 10.0.19042.844 Enabling feature(s) [==========================100.0%==========================] The operation completed successfully.
Enable Virtual Machine Platform
WSL 2 requires Windows 10 Virtual Machine Platform to be enabled. This is not Hyper-V. To enable the VM platform feature in Windows, run the commands below from the same PowerShell administrator’s console.
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
If you’re using Windows 10 version lower than 2004, then use the commands below:
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -NoRestart
When you’re done running the commands above, restart your computer for all the configuration changes to apply. If you don’t restart, the below command might not be recognized.
After restarting your computer, log back in and launch PowerShell as administrator. Then, run the commands below to configure WSL 2 as the default version of WSL.
wsl --set-default-version 2
Install Ubuntu on Windows 10
Now that WSL 2 is installed and ready to be used, open the link below to download and install a copy of Ubuntu 20.04 from the Windows store.
Get Ubuntu 20.04 LTS – Microsoft Store
Ubuntu 20.04 LTS on Windows allows you to use Ubuntu Terminal and run Ubuntu command line utilities, including bash, ssh, git, apt, and many more.
Click the Get button and install. After installing Ubuntu, you’ll want the option to launch Ubuntu from the Windows WSL environment.
After launching, Ubuntu should install and prompt you to create your account.
Installing, this may take a few minutes.
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: richard
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 4.4.0-19041-Microsoft x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Mon Apr 12 17:57:37 CDT 2021
System load: 0.52 Processes: 7
Usage of /home: unknown Users logged in: 0
Memory usage: 26% IPv4 address for eth0: 10.0.2.15
Swap usage: 0%
1 update can be installed immediately.
0 of these updates are security updates.
To see these additional updates run: apt list --upgradable
That should do it!
Some troubleshooting commands to run when you run into the issues above. These run below and try to relaunch the Ubuntu image.
wsl --set-default-version 1 bcdedit /set hypervisorlaunchtype auto start
Now that the Windows 10 WSL environment is ready continue below to install Apache, MariaDB, and PHP and configure LAMP.
Prepare Ubuntu Linux
L in LAMP stands for Linux, in this case, Ubuntu. Since we’ve installed Ubuntu above inside Windows WSL, continue below to update Ubuntu.
Ubuntu is installed above. The commands below help manage and update Ubuntu OS.
sudo apt update sudo apt upgrade sudo apt autoremove
There are many other configurations and settings to apply to Ubuntu servers, but we’re not going to cover all here. Since Ubuntu is installed above, continue below to install the other components of the LAMP stack.
Install Apache HTTP Server
The A in LAMP stands for Apache HTTP server. Apache is the most popular open-source web server powering most websites online.
To install Apache on Ubuntu, run the commands below:
sudo apt update sudo apt install apache2
After installing Apache2, the commands below can be used to stop, start and restart Apache2 services.
sudo service apache2 stop sudo service apache2 start sudo service apache2 restart
To validate that Apache is installed and functioning, open your web browser and browse to the server’s hostname or IP address.
You should get a test page if everything works.
http://localhost
Install MariaDB Database Server
M in LAMP stands for MySQL or MariaDB database server. For this tutorial, we’re going to be installing MariaDB instead.
MariaDB is a truly open-source database server you can run with your projects. It is fast, secure, and the default server for almost all Linux.
To install MariaDB, run the commands below:
sudo apt-get install mariadb-server mariadb-client
After installing MariaDB, the commands below can be used to stop, start, and restart MariaDB services.
sudo service mysql stop sudo service mysql start sudo service mysql restart
Next, run the commands below to secure the database server with a root password if you were not prompted to do so during the installation.
sudo mysql_secure_installation
When prompted, answer the questions below by following the guide.
- Enter current password for root (enter for none): Just press the Enter
- Set root password? [Y/n]: Y
- New password: Enter password
- Re-enter new password: Repeat password
- Remove anonymous users? [Y/n]: Y
- Disallow root login remotely? [Y/n]: Y
- Remove test database and access to it? [Y/n]: Y
- Reload privilege tables now? [Y/n]: Y
To verify and validate that MariaDB is installed and working, log in to the database console using the commands below:
sudo mysql -u root -p
Type the root password when prompted.
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 46
Server version: 10.3.29-MariaDB-0ubuntu0.20.04.1 Ubuntu 20.04
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)]>
The server was successfully installed if you see a similar screen.
PHP and Related Modules
The P in LAMP stands for PHP. PHP is a general-purpose scripting language that glues all the other components of the stack.
To install PHP and recommended modules, run the commands below.
sudo apt install php libapache2-mod-php php-common php-mysql php-gmp php-curl php-intl php7.4-mbstring php-xmlrpc php-gd php-xml php-cli php-zip
That should get PHP installed with recommended PHP modules that you can run with many PHP-based applications.
To validate that PHP is installed, run the commands below:
php -v
You should see an output like the one below:
PHP 7.4.3 (cli) (built: Oct 6 2020 15:47:56) ( 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
You can also test with a test PHP script and display the installed version and related modules that are enabled or disabled.
To do that, run the commands below to create a PHP test file called phpinfo.php
sudo nano /var/www/html/phpinfo.php
Then, type the content below and save the file.
<?php phpinfo( ); ?>
Save the file.
Open your browser and browse to your server hostname followed by phpinfo.php
Restart Apache, then type the address and browse the file.
http://example.com/phpinfo.php
You should see the PHP default test page.
That’s it!
Conclusion:
This post showed you how to install the LAMP stack in Windows WSL. If you find any error above, please use the comment form below to report.
In this tutorial, we will show you how to install the LAMP stack on Windows 10 WSL. For those of you who didn’t know, LAMP is an acronym for Linux, Apache2 HTTP Server, MariaDB or MySQL Database Server, and PHP Scripting Language. It is a group of open-source software and building blocks of many of the web applications and the majority of the content management systems (CMS).
This article assumes you have at least basic knowledge of Linux, know how to use the shell, and most importantly, you host your site on your own VPS. The installation is quite simple and assumes you are running in the root account, if not you may need to add ‘sudo
‘ to the commands to get root privileges. I will show you the step-by-step installation of the LAMP stack under Windows. You can follow the same instructions for Ubuntu 18.04, 16.04, and any other Debian-based distribution like Linux Mint on the Subsystem for Linux 2 (WSL2).
Requirements
- Windows 10 May 2020 (2004), Windows 10 May 2019 (1903), or Windows 10 November 2019 (1909) or later.
- A computer with Hyper-V Virtualization support.
Step 1. Enable the Windows Subsystem for Linux 2.
You must first enable the “Windows Subsystem for Linux” optional feature before installing any Linux distributions on Windows. Now run the following command below to enable it:
Open PowerShell as Administrator and run:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
Step 2. Enable Virtual Machine Feature.
Before installing WSL 2, you must enable the Virtual Machine Platform optional feature. Your machine will require virtualization capabilities to use this feature.
To enable Virtual Machine Platform on Windows 10 (2004) open PowerShell as Administrator and run:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Step 3. Set WSL 2 as your default version.
We set WSL 2 as default. Now open PowerShell as Administrator and run this command to set WSL 2 as the default version of WSL:
wsl --set-default-version 2
Step 4. Installing Ubuntu Linux Distribution.
With WSL and the necessary virtualization tech all in place, all that is left for you to do is pick and install a Linux distro from the Microsoft Store. Several different distros are available, including OpenSUSE, Pengwin, Fedora Remix, and Alpine Linux.
To install Ubuntu on Windows 10 open the Microsoft Store app, search for “Ubuntu 20.04”, and hit the “Get” button:
- Ubuntu 20.04 LTS
Step 5. Installing Apache on Windows WSL.
To install Nginx HTTP on your Ubuntu server, run the commands below:
sudo apt update sudo apt install nginx
After successfully installed, run the commands below to stop and start Apache services:
sudo service apache2 stop sudo service apache2 start sudo service apache2 restart
Next, verify that the webserver is running and accessible by accessing your server’s IP address:
http://localhost
Step 6. Installing MariaDB on Windows WSL.
Run the following command to install MariaDB:
sudo apt install mariadb-server mariadb-client
Once is done, run the commands below to stop, start and enable the MariaDB service to always start up with the server boots:
sudo service mysql stop sudo service mysql start
By default, MariaDB is not hardened. You can secure MariaDB using the mysql_secure_installation
script. You should read and below each step carefully which will set a root password, remove anonymous users, disallow remote root login, and remove the test database and access to secure MariaDB.
mysql_secure_installation
Configure it like this:
- Set root password? [Y/n] y - Remove anonymous users? [Y/n] y - Disallow root login remotely? [Y/n] y - Remove test database and access to it? [Y/n] y - Reload privilege tables now? [Y/n] y
Log in to the database console using the commands below:
mysql -u root -p
Step 7. Installing PHP on Windows 10 WSL.
Now run the commands below to install PHP and related modules:
sudo apt install php libapache2-mod-php php-common php-mysql php-gmp php-curl php-intl php7.4-mbstring php-xmlrpc php-gd php-xml php-cli php-zip
To validate that PHP is installed, run the commands below:
php -v
Step 8. Test PHP.
Create the below file (info.php) and place it in /var/www/html
:
sudo nano /var/www/html/phpinfo.php
Add the following line:
<?php phpinfo(); ?>
The information about the installed PHP should be displayed here:
http://127.0.0.1/phpinfo.php or http://localhost/phpinfo.php
Congratulations! You have successfully installed LAMP. Thanks for using this tutorial for installing the latest stable version of the LAMP Stack on Windows Subsystem for Linux 2 (WSL 2) on the Ubuntu 20.04 LTS (Focal Fossa) system. For additional help or useful information, we recommend you check the official Ubuntu website.
VPS Manage Service Offer
If you don’t have time to do all of this stuff, or if this is not your area of expertise, we offer a service to do “VPS Manage Service Offer”, starting from $10 (Paypal payment). Please contact us to get the best deal!
Основная моя ОС для работы это Windows 10, в нем есть замечательный инструмент Windows Subsystem for Linux на котором можно легко настроить окружение для веб-разработки на PHP.
Зачем это надо когда есть Докер?
- Докер под Windows все-таки работает медленно.
- Раньше мне приходилось постоянно работать с разными версиями PHP, MySQL и постоянно переключаться между ними, но за последний год я работаю с одной и той же версией PHP и MariaDB, поэтому можно настроить LAMP один раз и забыть про него.
Что у нас получится в итоге:
- Ubuntu 22.04
- Apache
- PHP 7.4 (или 8.1)
- MariaDB
- PhpMyAdmin
- Composer
Установка Apache
Начнем с установки веб сервера Apache, но для начала обновим список пакетов. Выполним поочередно 3 команды:
sudo apt update
sudo apt upgrade
sudo apt install apache2
После установки, сразу попробуем запустить Апач и убедиться что все работает. Запускаем командой:
sudo service apache2 start
Далее переходим по адресу http://localhost/ и если видим приветственную страницу Apache, значит пока все делаем верно:
Далее создадим папку для наших веб-проектов. Эта папка должна быть за пределами файловой системы WSL. Например я создам ее по адресу d:\lamp-wsl, для этого выполним команду:
sudo mkdir /mnt/d/lamp-wsl
Создайте символьную ссылку на эту папку.
sudo ln -s /mnt/d/lamp-wsl /var/www/devroot
С помощью редактора Nano откроем файл конфигурации виртуального хоста Apache по умолчанию:
sudo nano /etc/apache2/sites-enabled/000-default.conf
И заменим его содержимое на:
<VirtualHost *:80>
ServerName localhost
ServerAdmin webmaster@localhost
DocumentRoot /var/www/devroot
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Чтобы в редакторе Nano вырезать весь текст до конца файла, нужно нажать сочетание клавиш Alt + Shift + T
Чтобы вставить текст из буфера, нажмите правую кнопку мыши.
Чтобы сохранить изменения и выйти из редактора Nano используйте сочетанием клавиш:
Ctrl+X
Если вы изменяли файл, то появится вопрос: «Save modified buffer (ANSWERING No Will DESTROY CHANGES)?». Нажмите клавишу y. Появится вопрос на ввод имени файла. Введите новое имя файла или просто нажмите Enter, если не хотите менять имя.
Теперь переходим в нашу папку для веб проектов, в моем случае d:\lamp-wsl и создадим файл для теста index.html:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>Привет LAMP-WSL!</h1>
</body>
</html>
Теперь перезагружаем Apache командой:
sudo service apache2 restart
Обновляем http://localhost/ и теперь мы должны увидеть нашу тестовую страницу:
Пока не забыли, большинству проектов требуется модуль mod_rewrite поэтому включим его командой:
sudo a2enmod rewrite
И перезагрузим Апач
sudo service apache2 restart
Установка MariaDB
Можно вместо MariaDB установить MySQL, тем более она продолжает развиваться не смотря на те опасения, которые были, в результате чего и появилась MariaDB. Ниже я устанавливаю MariaDB из-за того, что про ее установку последнее время чаще спрашивают.
Итак, для установки выполним команду:
sudo apt install mariadb-server
После установки запустим MariaDB
sudo service mariadb start
И на последок выполнил скрипт для начальной настройки безопасности:
sudo mysql_secure_installation
На первый вопрос просто нажмите Enter
Следуйте инструкциям на экране, здесь важно установить root пароль. Когда будет вопрос «Set root password?» или «Change the root password?» ответьте Y и нажмите Enter.
На все остальные вопросы просто нажимайте Enter.
Установка PHP
Я установлю PHP версии 7.4 и несколько модулей к нему. Выполним команду:
sudo apt install php7.4 libapache2-mod-php7.4 php7.4-mysql php-common php7.4-cli php7.4-common php7.4-json php7.4-opcache php7.4-readline
Дополнение 30.06.2023
Чтобы установить PHP версии 8.1 на Ubuntu необходимо выполнить следующие команды:
sudo apt install -y lsb-release ca-certificates apt-transport-https software-properties-common gnupg2
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list
Далее:
wget -qO - https://packages.sury.org/php/apt.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/sury-keyring.gpg
sudo apt update
Устанавливаем PHP 8.1 с дополнениями:
sudo apt install php8.1 libapache2-mod-php8.1 php8.1-cli php8.1-fpm php8.1-pdo php8.1-mysql php8.1-zip php8.1-gd php8.1-mbstring php8.1-curl php8.1-xml php8.1-opcache
Перезагружаем Apache:
sudo service apache2 restart
Далее в нашей папке d:\lamp-wsl и создадим файл info.php чтобы проверить работоспособность PHP, файл следующего содержания:
<?php
phpinfo();
Далее переходим по адресу http://localhost/info.php и, если не возникло никаких проблем, видим страницу с информацией о PHP:
На этом установка самого LAMP закончена, но добавим еще кое какие вещи для нашего удобства.
Устанавливаем phpMyAdmin
Выполняем команду:
sudo apt install phpmyadmin
Следуем указаниям:
На первом окне выбираем Apache (чтобы выбрать, нужно нажать пробел) и нажимаем Enter
На втором окне выбираем Yes и нажимаем Enter
Далее придумываем и вводим пароль для самого phpMyAdmin, кнопкой Tab выбираем Yes и нажимаем Enter
Установка завершена. Перезапускаем Apache
sudo service apache2 restart
Далее идем http://localhost/phpmyadmin/ и видим окно входа в phpMyAdmin
Возможная ошибка №1
Если вместо окна входа вы получили 404 ошибку, то скорее всего в первом шаге установки phpMyAdmin вы не выбрали Apache, исправить это можно следующими командами:
sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin
sudo systemctl reload apache2
Еще раз перезапустим Апач
sudo service apache2 restart
И пробуем еще раз зайти http://localhost/phpmyadmin/ , теперь должно сработать.
Возможная ошибка №2
Когда вы попытаетесь войти с логином root и паролем, которые вы установили на шаге инсталляции phpMyAdmin, то возможно вы получите следующую ошибку mysqli_real_connect(): (HY000/1698): Access denied for user ‘root’@’localhost’
Чтобы решить эту ошибку, необходимо в терминале запустить поочередно следующие команды:
sudo mysql -p -u root
CREATE USER 'pmauser'@'localhost' IDENTIFIED BY 'ваш пароль';
GRANT ALL PRIVILEGES ON * . * TO 'pmauser'@'localhost';
FLUSH PRIVILEGES;
exit
Теперь попробуйте зайти еще раз http://localhost/phpmyadmin, в качестве логина используем уже pmauser и пароль, которые вы ввели в командах выше.
Устанавливаем Composer
Установка Композера в WSL очень простая, в системе уже установлена утилита curl, поэтому воспользуемся ею:
curl -sS https://getcomposer.org/installer | php
Вот и все Попробуйте узнать версию композера, выполнив команду:
php composer.phar --version
Если хотите, чтобы Composer был установлен глобально нужно выполнить следующую команду:
sudo mv composer.phar /usr/local/bin/composer
Теперь версию можно посмотреть так:
composer --version
Создание тестовых доменов в WSL
Когда работаешь с несколькими проектами, удобней работать с ними использую отдельные домены типа http://myapp.loc/
Сейчас я покажу как такое организовать.
Для начала в нашей папке d:\lamp-wsl создадим каталог для проекта myapp. Это можно сделать или в обычном проводники или прямо из консоли WSL командой:
sudo mkdir /mnt/d/lamp-wsl/myapp
Далее с помощью редактора Nano добавим файл с настройкой виртуального хоста:
sudo nano /etc/apache2/sites-available/myapp.loc.conf
Добавим в него и сохраним следующее содержание:
<VirtualHost *:80>
ServerName myapp.loc
DocumentRoot /var/www/devroot/myapp
<Directory /var/www/devroot/myapp/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Далее для подключения виртуального хоста используем команду:
sudo a2ensite myapp.loc
И перезапустим Апач
sudo service apache2 restart
И последним действием надо добавить запись в файл hosts расположенный в папке c:\windows\system32\drivers\etc
127.0.0.1 myapp.loc
Пробуйем http://myapp.loc/ все должно работать.
UPD. Как выяснилось при добавлении в файл hosts просто строки
127.0.0.1 myapp.loc
не всегда делает работоспособным домен myapp.loc. После небольшого гугления нашел решение тут WSL 2 Linux host cannot be accessed by a custom domain name or 127.0.0.1
Чтобы все заработало вместо этой строчки добавить следующие 2 строки:
127.0.0.1 myapp.loc
::1 myapp.loc localhost
Что еще…
В принципе все готово, можно спокойно работать. Пока единственное неудобство то, что при запуске WSL приходится вручную запускать Apache и MariaDB. Как только придумаю как сделать запуск автоматически, сразу дополню. Если кто-то знает как это решить, поделитесь.
wsl