Якщо ти робиш сайти, рано чи пізно захочеш працювати з ними на своєму комп'ютері, а не одразу на хостингу: швидко, без інтернету і без ризику зламати живий сайт. Для цього потрібен локальний сервер. У Linux Mint та Ubuntu його можна підняти за пів години з безкоштовних компонентів, які в світі веб-розробки називають LAMP: Linux, Apache, MySQL і PHP.
Нижче покроково: встановлюємо веб-сервер Apache, базу даних MySQL, PHP і phpMyAdmin, а потім налаштовуємо кілька сайтів, кожен зі своєю адресою. Інструкція підійде і для Debian та інших систем на основі Ubuntu.
1. Встановлення веб-сервера Apache
Відкривай термінал і вводь:
sudo apt update
sudo apt install apache2
Одразу перевір, чи сервер працює: відкрий у браузері адресу localhost (або 127.0.0.1). Маєш побачити стандартну сторінку Apache:

2. Встановлення бази даних MySQL
sudo apt install mysql-server
Якщо тобі ближча MariaDB (вона повністю сумісна з MySQL і стоїть за замовчуванням у Debian), став її замість MySQL:
sudo apt install mariadb-server
У свіжих версіях Ubuntu та Linux Mint користувач root у MySQL входить без пароля, але тільки через sudo. Перевір:
sudo mysql
Колись я радив міняти пароль і спосіб входу для самого root, але простіше й безпечніше створити окремого користувача для роботи з сайтами й phpMyAdmin. Не виходячи з MySQL, введи (заміни ім'я і пароль на свої):
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'твій_пароль';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
Тепер можна входити в MySQL уже без sudo:
mysql -u admin -p
Це налаштування саме для локальної розробки на своєму комп'ютері. На справжньому сервері в інтернеті користувачу краще давати права лише на його власну базу даних.
3. Встановлення PHP
PHP і найпотрібніші розширення ставляться однією командою:
sudo apt install php libapache2-mod-php php-mysql php-gd php-mbstring php-xml php-curl php-zip php-intl
Щоб перевірити, що PHP працює, створи у папці /var/www/html файл info.php:
echo "<?php phpinfo();" | sudo tee /var/www/html/info.php
Відкрий localhost/info.php – має з'явитися велика таблиця з налаштуваннями PHP. Переконався/лась, що все працює? Видали цей файл, на сервері він не потрібен:
sudo rm /var/www/html/info.php
4. Встановлення phpMyAdmin
phpMyAdmin – це зручний графічний інтерфейс для роботи з базами даних прямо в браузері.
sudo apt install phpmyadmin
Під час встановлення система запитає, з яким веб-сервером працювати. Обери apache2. Увага: пункт треба саме позначити клавішею Пробіл (з'явиться зірочка), а вже потім натиснути Enter, інакше phpMyAdmin не підключиться до Apache:

Далі погоджуйся на автоматичне налаштування бази даних для phpMyAdmin:

І придумай пароль для службового користувача phpMyAdmin (запам'ятовувати його не обов'язково, для входу ми використаємо користувача, створеного вище):

Тепер відкрий localhost/phpmyadmin і увійди під користувачем admin із паролем, який ти задав/ла на другому кроці:

Якщо phpMyAdmin не відкривається
Найчастіше причина в тому, що на етапі вибору веб-сервера не було позначено apache2. Виправити просто – підключи конфігурацію вручну і перезапусти Apache:
sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin
sudo systemctl reload apache2
Якщо після оновлення phpMyAdmin сиплеться помилками
Буває, що після оновлення системи на сторінці phpMyAdmin з'являється ціле простирадло попереджень на кшталт Deprecation Notice. Я свого часу добряче злякався за свої бази, але насправді з ними все гаразд – просто версії пакетів розійшлися. Найчастіше допомагає перевстановлення:
sudo apt install --reinstall phpmyadmin
А щоб у списку не заважали системні бази даних, їх можна приховати – як це зробити, я описав у статті як приховати непотрібні бази даних в phpMyAdmin.
5. Кілька сайтів на локальному сервері
За замовчуванням Apache показує один сайт із папки /var/www/html. Але якщо ти працюєш над кількома проєктами одночасно, зручніше, щоб кожен мав свою адресу, наприклад mysite.localhost. Це робиться за допомогою віртуальних хостів.
Папка для сайту
Створи папку для нового сайту і віддай її своєму користувачу, залишивши групу веб-сервера:
sudo mkdir -p /var/www/mysite
sudo chown -R $USER:www-data /var/www/mysite
sudo chmod -R 775 /var/www/mysite
Колись я й сам радив ставити права 777, «щоб усе точно працювало». Не роби так навіть локально: 775 і правильний власник розв'язують ті самі проблеми без зайвого ризику.
Для зручності можна зробити ярлик на папку у своїй домашній теці:
ln -s /var/www/mysite ~/mysite
Файл налаштувань віртуального хоста
Створи файл конфігурації:
sudo nano /etc/apache2/sites-available/mysite.conf
І встав у нього:
<VirtualHost *:80>
ServerName mysite.localhost
DocumentRoot /var/www/mysite
<Directory /var/www/mysite>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
AllowOverride All дозволяє сайту використовувати власний файл .htaccess – без цього не працюватимуть «красиві» адреси в більшості CMS.
Вмикаємо сайт
sudo a2ensite mysite
sudo a2enmod rewrite
sudo systemctl reload apache2
Адреса сайту
Адреси на .localhost сучасні браузери самі ведуть на твій комп'ютер, тож http://mysite.localhost має відкритися одразу. Якщо хочеш іншу назву, наприклад просто mysite чи mysite.test, додай її у файл /etc/hosts:
127.0.0.1 localhost mysite.test
і не забудь вказати ту саму назву в ServerName. Кожен наступний сайт додається так само: нова папка, новий файл у sites-available, a2ensite – і готово.
Корисні команди для керування сервером
# перезапустити Apache
sudo systemctl restart apache2
# перевірити конфігурацію Apache на помилки
sudo apache2ctl configtest
# подивитися журнал помилок
sudo tail -f /var/log/apache2/error.log
# зупинити або запустити MySQL
sudo systemctl stop mysql
sudo systemctl start mysql
Користуєшся іншою системою? У мене є інструкції для локального сервера на Arch Linux і у Fedora Linux, а також для Windows: локальний сервер на Windows і швидкий варіант через Laragon. А редактор коду для роботи з сайтами допоможе налаштувати стаття про VS Code для PHP та JavaScript. Більше матеріалів – за позначкою Веб-розробка.


Спасибоа огромное. Просто, красиво и понятно В 2010 перешел на Линукс А без Денвера как без рук Спасибо