Lamp for windows 10

Благодаря 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.

Перейдите в Microsoft Store  загрузите и установите приложение Ubuntu для Windows

Шаг 4: C помощью меню «Пуск» запустите Ubuntu. В окне терминала, при первом запуске нужно будет ввести новое имя UNIX пользователя (username) и пароль (password).

 C помощью меню «Пуск» запустите Ubuntu

Подробней как это сделать, мы рассмотрели в руководствах:

  •  Как установить 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

Создайте в Проводнике Windows 10, директорию для сайта (проекта) test.local:

Если вы будете использовать 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.

Если вы будете использовать WSL 2 рекомендуется создать директорию для сайта в файловой системе Linux.

Это избавит от ошибок и обеспечит максимальную производительность.

Шаг 6: Как получить доступ к файлам WSL Linux из проводника Windows 10.

Находясь в каталоге Linux FS, введите:

explorer.exe .

Откроется окно проводника, расположенное внутри вашего дистрибутива Linux.

Подробнее в нашей статье:  Доступ к файлам WSL Linux с помощью Проводника Windows 10

Как получить доступ к файлам 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

Обновите локальный индекс apt пакетов в Ubuntu выполнив команду:

Шаг 9: После чего необходимо обновить установленное программное обеспечение:

sudo apt upgrade

На запрос «Do you want to continue? [Y/n]» нажмите клавишу Y.

Установка необходимых программ в Ubuntu для Windows 10.

Установка Apache.

Веб-сервер Apache используют более половины всех действующих веб-сайтов. Это очень мощный и гибкий инструмент.

Шаг 10: Установим Apache выполнив команду:

sudo apt install apache2

Вы увидите список пакетов, которые будут установлены, а также объём места на диске которое они займут. Нажмите Y для продолжения установки.

wsl 2 Установка Apache.

Установка MySQL сервера.

MySQL — система управления базами данных. Она организует и обеспечит доступ к базам данных, где сайт может хранить информацию.

Шаг 11: Установим MySQL сервер:

sudo apt install mysql-server

Нажмите Y для продолжения установки. После завершения установки нам потребуется выполнить некоторые дополнительные команды, чтобы настроить наше окружение MySQL

Wsl 2 Установка 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

Установим php и другие пакеты, необходимые для веб-разработки:

Включим модуль Mod rewrite в Apache:

Коротко, mod_rewrite — это модуль для веб-сервера Apache, выполняющий функцию преобразования URL.

Шаг 13: Выполните команду:

sudo a2enmod rewrite

Включим модуль Mod rewrite в Apache:

Изменение метода аутентификации MySQL пользователя root.

Необходимо изменить метод аутентификации MySQL для пользователя root выполнив следующие действия:

Шаг 14: Запустим службу mysql.

sudo service mysql start

Wsl Запустим службу mysql.

Шаг 15: Подключимся к серверу MySQL под стандартным пользователем root, который был создан при установке MySQL на ваш компьютер:

sudo mysql -uroot -p

Шаг 16: При запросе пароля нажмите Enter, т.к. по умолчанию пользователь root, созданный при установке, не имеет пароля.

 При запросе пароля нажмите Enter

Примечание: На серверах Ubuntu, использующих MySQL ( 5.7 и более поздние версии), аутентификация root пользователя происходит с помощью плагина auth_socket, а не с помощью пароля. Это во многих случаях повышает безопасность, но, может усложнить настройку доступа к root пользователю для phpMyAdmin и др. программ.

Шаг 17: Чтобы проверить метод аутентификации, который задействован для пользователя root, выполните команду:

SELECT user, authentication_string, plugin, host FROM mysql.user WHERE user="root";

проверить метод аутентификации, который задействован для пользователя root,

Шаг 18: Если в ответе на запрос вы видите используется аутентификация с помощью плагина auth_socket, необходимо изменим эту настройку. Для этого введём команду:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

Шаг 19: Выполним команду FLUSH PRIVILEGES, которая применит внесённые изменения:

FLUSH PRIVILEGES;

аутентификация с помощью плагина auth_socket

Создание базы данных.

Шаг 20: Создадим базу данных для веб-проекта test.local. Для этого введем в командной строке MySQL следующую команду:

CREATE DATABASE testlocal;

Шаг 21: Для завершения работы с командной строкой MySQL выйдем из неё:

exit

Создадим базу данных для веб-проекта test.local.

Установка phpMyAdmin.

Шаг 22: Выполняем команду:

sudo apt install phpmyadmin

Wsl 2 Установка phpMyAdmin.

Шаг 23: В первом диалоговом окне, нажмите пробел чтобы выбрать Apache, далее нажмите клавишу Tab, а затем Enter.

В первом диалоговом окне, нажмите пробел чтобы выбрать Apache, далее нажмите клавишу Tab, а затем Enter.

Шаг 24: Выберите Yes, для настройки базы данных на запрос использовать dbconfig-common.

Укажите пароль пользователя MySQL root.

Шаг 25: Укажите пароль пользователя MySQL root.

пароль пользователя MySQL root.

Шаг 26: Подтвердите пароль

Шаг 27: Включим необходимые расширения PHP:

sudo phpenmod mcrypt
sudo phpenmod mbstring

Включим необходимые расширения PHP:

Шаг 28: Перезапустите Apache:

sudo service apache2 restart

Теперь вы можете получить доступ к phpMyAdmin по следующему URL: http://localhost/phpmyadmin/ Вы можете войти в систему, используя имя пользователя root и пароль root, настроенные во время установки MySQL.

URL: http://localhost/phpmyadmin/

Настройка виртуальных хостов в 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

Wsl 2 Настройка виртуальных хостов в Apache.

Содержимое файла 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 2

Содержимое файла 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>

Внимание: Не забудьте заменить букву диска! В примере мы используем диск С.

Содержимое файла test.com.conf после правок для Wsl 1

Шаг 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

Wsl 2 Перезапустим service apache:

Перенаправление 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 в терминале (см. картинку ниже).

Чтобы определить ip-адрес вашего сетевого интерфейса используйте команду 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.

тобы было проще запускать и останавливать веб-сервер вы можете создать 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

wsl2 замените password на пароль, который установили для пользователя Ubuntu

Шаг 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 и тд..

WordPress wsl Windows 10

Дождёмся окончания процесса установки. Готово!

Заключение

Теперь, когда ваш веб-сервер установлен и работает используя подсистему 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:

localhost

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:

add virtual hosts

Then you will see this sucess notice:

success notice

If you didn’t create example.com in the necessary folder you will see this failure notice:

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

Install LAMP Stack on Windows 10 WSL

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, значит пока все делаем верно:

Приветственная страница веб-сервера Apache на Ubuntu

Далее создадим папку для наших веб-проектов. Эта папка должна быть за пределами файловой системы 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/  и теперь мы должны увидеть нашу тестовую страницу:

Тестовая страница LAMP на WSL

Пока не забыли, большинству проектов требуется модуль 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:

Можем убедиться что PHP на WSL работает

На этом установка самого 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’

Ошибка 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

Решение ошибки mysqli_real_connect(): (HY000/1698): Access denied for user 'root'@'localhost'

Теперь попробуйте зайти еще раз 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

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • После ввода пароля не загружается рабочий стол windows 10
  • Как установить исключения в защитнике windows 10
  • Установка normcad на windows 10
  • Kms windows server 2019 datacenter
  • Windows file sharing with mac