У цій статті ми дамо вам покрокові інструкції щодо налаштування веб-середовища на сервері під керуванням Linux. Перш за все, вам потрібно зрозуміти, що типовий веб-сервер складається з кількох взаємодіючих компонентів:
- HTTP-сервер
- інтерпретатор мови програмування
- система управління базами даних (СУБД)
Щоб керувати своїм веб-сайтом, вам також потрібно буде налаштувати систему керування контентом (CMS), веб-інтерфейс для керування базами даних і доступ до FTP.
Давайте розглянемо налаштування дуже популярної конфігурації Apache-PHP-MySQL(MariaDB) на Linux. Також ми встановимо ftp-сервер vsftpd, phpMyAdmin - веб-інтерфейс для управління базами даних, систему управління контентом WordPress.
Для початку, будь ласка, замовте VPS-сервер або виділений сервер . Наприклад, ми використовували віртуальний сервер зі статичною IP-адресою під керуванням Ubuntu Server 18.04. Усі команди виконував користувач root.
Конфігурація HTTP-сервера Apache
1. Установка
apt install apache2
Після завершення встановлення відкрийте браузер і перевірте «http://[ip-адреса_сервера]»
Якщо ви бачите таку сторінку привітання, як на знімку екрана вище, це означає, що ваш HTTP-сервер працює.
2. Створіть тестову сторінку
Кореневим каталогом за замовчуванням для веб-сайту є «/var/www/html» . Тут ви можете знайти сторінку привітання, яку ви щойно бачили. Давайте створимо окремий каталог «/var/www/sites» для віртуальних хостів та підпапку «/var/www/sites/site1» зі сторінкою індексу вашого тестового веб-сайту.
cd /var/www/
mkdir -p sites/site1
echo "<H1>Welcome</H1>" > sites/site1/index.html
У результаті файл “/var/www/sites/site1/index.html” має містити лише один рядок html-коду:
<H1>Welcome</H1>
3. Конфігурація сервера Apache
Файли конфігурації веб-сайтів знаходяться в каталозі “/etc/apache2/sites-available/” . Давайте створимо файл конфігурації для нового віртуального хоста, взявши за основу конфігурацію за замовчуванням з файлу “000-default.conf” .
cd /etc/apache2/sites-available/
cp 000-default.conf site1.conf
Відкрийте файл «site1.conf» та змініть атрибут «DocumentRoot» . Вкажіть шлях до вашого веб-сайту як значення, тобто в нашому випадку це «/var/www/sites/site1»
На цьому етапі нам не потрібно налаштовувати одночасну роботу кількох веб-сайтів, тому ми можемо вимкнути веб-сайт за замовчуванням і ввімкнути новий сайт. Перезавантажте конфігурацію сервера, щоб застосувати зміни.
a2dissite 000-default
a2ensite site1
systemctl reload apache2
Знову відкрийте посилання “http://[ip-адреса_сервера]” та переконайтеся, що замість сторінки привітання за замовчуванням у нас нова сторінка.
Ми завершили налаштування нашого HTTP-сервера, і ми можемо переходити до наступного кроку.
Конфігурація FTP-сервера
1. Установка
Давайте встановимо наш ftp-сервер та додатковий пакет “db-util” , який нам знадобиться для налаштування віртуальних користувачів.
apt install vsftpd db-util
2. Створіть локальний обліковий запис
Сервер vsftpd дозволяє нам дуже гнучко налаштовувати права доступу. Для наших завдань ми повинні надати користувачам ftp наступне:
- повний доступ до вмісту “/var/www/sites/”;
- вимкнути все, що вище “/var/www/”;
- підключення до віртуального рахунку;
Створіть локальний обліковий запис «віртуальний» без прав на вхід, але з доступом до домашньої папки «/var/www/» . Цей обліковий запис використовуватиметься ftp-користувачами для підключення до сервера.
useradd -d /var/www virtual
«Root» буде власником папки «/var/www» за замовчуванням. Щоб дозволити користувачам ftp змінювати вміст веб-сайтів, давайте змінимо власника «/var/www/sites/», включаючи підпапки «virtual».
chown -R virtual:root /var/www/sites
В результаті, користувач «віртуальний» зможе побачити вміст «/var/www/» та записати дані у підпапку «/var/www/sites/».
3. конфігурація
Основна конфігурація знаходиться у файлі “/etc/vsftpd.conf” , тож давайте відкриємо його та відредагуємо наступним чином:
#enable virtual users
anonymous_enable=NO
local_enable=YES
guest_enable=YES
guest_username=virtual
#configure permission
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_world_readable_only=NO
anon_umask=0022
chroot_local_user=YES
#launch settings
listen=YES
pasv_min_port=30000
pasv_max_port=30999
4. Створіть базу даних
Вам знадобиться база даних для зберігання даних віртуальних облікових записів.
Спочатку створимо простий текстовий файл «users.txt» у домашній папці та збережемо дані доступу (логін та пароль) віртуальних користувачів у кожному другому рядку. Наприклад, нам знадобиться віртуальний користувач з логіном «ftp» та паролем «Qwe123» . Тоді файл виглядатиме так:
ftp
Qwe123
Давайте створимо базу даних
db_load -T -t hash -f ~/users.txt /etc/vsftpd_login.db
Давайте змінимо стандартний PAM-файл “/etc/pam.d/vsftp” наступним чином:
auth required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd_login
Зверніть увагу, що шлях до бібліотеки “pam_userdb.so” може відрізнятися, але ви можете змінити його за потреби.
Перезавантажте сервер vsftpd, щоб застосувати зміни.
systemctl restart vsftpd
Ми закінчили налаштування FTP-сервера.
Деталі підключення:
- ftp://[ip_адреса_сервера]
- логін: ftp
- пароль: Qwe123
Конфігурація сервера PHP
1. Встановлення PHP
На сьогодні останньою стабільною версією PHP є php 7.4.5, яка не включена в офіційні репозиторії Ubuntu. Давайте підключимо сторонній репозиторій і встановимо останню версію PHP.
apt update
apt install software-properties-common
add-apt-repository ppa:ondrej/php
apt update
apt install php7.4
2. перевірити
Для виконання PHP-коду файл веб-сторінки повинен мати розширення «.php» . Давайте перейменуємо нашу тестову сторінку:
cd /var/www/sites/site1/
mv index.html index.php
Додайте наступний рядок php до файлу “/var/www/sites/site1/index.php” , щоб файл мав виглядати так:
<H1>Welcome</H1>
<?php
phpinfo();
?>
Збережіть зміни та перевірте результат у браузері.
Якщо ви бачите результат функції “phpinfo()” , інтерпретатор PHP працює належним чином. Тепер перейдемо до наступного кроку.
Конфігурація MySQL (MariaDB).
1. Установка
Давайте встановимо MariaDB і модуль PHP для MySQL, а потім перезавантажимо Apache.
apt install mariadb-server php-mysql
systemctl restart apache2
Оновіть тестову сторінку та перейдіть до розділу PDO в таблиці конфігурації PHP. Якщо ви знайдете розділ “PDO_mysql” , це означає, що драйвер для Mysql встановлено правильно.
Потім нам потрібно буде виконати початкове налаштування безпеки MariaDB та встановити пароль для користувача «root» , вимкнути віддалений доступ та видалити всі гостьові облікові записи.
mysql_secure_installation
На першому кроці нам потрібно ввести пароль користувача "root" для доступу до СУБД або натиснути Enter, якщо пароля немає. Оскільки після встановлення пароль для користувача "root" не встановлено , просто натисніть "Enter".
Зверніть увагу, що в MariaDB вже є власні облікові записи, які не мають нічого спільного з обліковими записами ОС. Тому єдиний користувач, з яким ми маємо справу в MariaDB, це "root".
Після цього конфігуратор попросить нас встановити пароль для користувача root. Введіть «Y» для підтвердження та введіть новий пароль. У нашому випадку це «Qwe123».
На всі інші запитання до самого кінця відповідайте «Т» .
Налаштування виконано!
Деталі доступу до MariaDB:
- Логін: root
- Пароль: Qwe123
Конфігурація phpMyAdmin
1. Установка
Встановимо необхідне розширення для PHP — mbstring.
apt install php-mbstring
В офіційному репозиторії є лише застаріла версія phpMyAdmin, тому давайте встановимо нову вручну.
Відкрийте офіційний веб-сайт проекту « https://www.phpmyadmin.net/ » та завантажте найновіший архів.
Скопіюйте архів на сервер у папку “/var/www/sites/” за допомогою будь-якого ftp-клієнта.
Розархівуйте папку та перейменуйте її на «phpMyAdmin» . Не забудьте встановити утиліту «unzip» . Ви можете видалити архів після розархівування.
apt install unzip
cd /var/www/sites/
unzip phpMyAdmin-5.0.2-all-languages.zip
mv phpMyAdmin-5.0.2-all-languages phpMyAdmin
rm phpMyAdmin-5.0.2-all-languages.zip
Створіть таку папку «/var/www/sites/phpMyAdmin/tmp» для тимчасових файлів і надайте доступ до них усім. Якщо ви цього не зробите, phpMyAdmin повідомить про заборону доступу до тимчасової папки.
cd /var/www/sites/phpMyAdmin/
mkdir tmp
chmod 777 tmp
2. Створіть псевдонім
Оскільки phpMyAdmin не є окремим віртуальним хостом і розташований за межами кореневого каталогу, давайте налаштуємо псевдонім.
Відкрийте файл “/etc/apache2/mods-available/alias.conf” та додайте цей рядок:
Alias /pma “/var/www/sites/phpMyAdmin"
в цьому розділі:
<IfModule alias_module>
</IfModule>
Перезавантажте Apache, щоб застосувати зміни.
systemctl reload apache2
Псевдонім встановлено, тож ми можемо отримати доступ до phpMyAdmin тут “http://[ip-адреса_сервера]/pma”.
3 Підготуйте базу даних
Оскільки ми обмежили використання користувача root під час початкової конфігурації MariaDB, нам доведеться створити новий обліковий запис з усіма дозволами, які використовуватимуться для доступу до phpMyAdmin.
Крім того, щоб увімкнути додаткові функції phpMyAdmin, нам знадобиться база даних служби та обліковий запис для доступу до неї.
Давайте створимо облікові записи
mariadb -u root -p
GRANT ALL PRIVILEGES ON *.* TO 'pma'@'localhost' IDENTIFIED BY 'Qwe123' WITH GRANT OPTION;
GRANT SELECT, INSERT, UPDATE, DELETE ON `phpmyadmin`.* TO 'pmaservice'@'localhost' IDENTIFIED BY 'Qwe123' WITH grant option;
quit
Зверніть увагу, що ім'я бази даних у другому запиті знаходиться у зворотному sparks “… ON `phpmyadmin` .* TO 'pma'@'localhost' IDENTIFIED BY …”,
У результаті в MariaDB буде створено два облікові записи:
- Логін: pma, Пароль: Qwe123Повний доступ, використовуватиметься для входу в phpMyAdmin
- Логін: pmaservice, Пароль: Qwe123 Сервісний обліковий запис потрібен для роботи додаткових функцій
На наступному кроці ми встановимо ці дані у файлі конфігурації “config.inc.php”.
Потім нам потрібно буде імпортувати базу даних з файлу “phpMyAdmin/sql/create_tables.sql”.
Давайте імпортуємо його за допомогою phpMyAdmin.
Відкрийте посилання “http://[ip-адреса_сервера]/pma”
Введіть логін «pma» та пароль «Qwe123»
Перейдіть до розділу «Імпорт» , натисніть «Вибрати файл» та виберіть файл «sql/create_tables.sql» у кореневому каталозі phpMyAdmin. На вашому ПК має бути папка «phpMyAdmin» з файлами. Розархівуйте її, якщо потрібно.
Натисніть кнопку «Далі» , щоб розпочати імпорт.
4. конфігурація
Давайте скопіюємо файл конфігурації з шаблону
cd /var/www/sites/phpMyAdmin/
cp config.sample.inc.php config.inc.php
Відкриємо файл конфігурації “/var/www/sites/phpMyAdmin/config.inc.php” та внесемо такі зміни:
Встановіть випадкове 32-символьне значення для атрибута “$cfg['blowfish_secret']” . Використайте будь-який генератор паролів.
Видаліть коментарі з усіх рядків розділу «налаштування сховища конфігурації phpMyAdmin» та встановіть логін і пароль облікового запису служби MariaDB для атрибутів «controluser» та «controlpass» відповідно. У нашому випадку це pmaservice та Qwe123.
Збережіть зміни.
Деталі доступу до phpMyadmin:
- http://[server’s_ip_address]/pma/
- Логін: pma
- Пароль: Qwe123
Як встановити та налаштувати WordPress на сервері Linux
1. Пакет WordPress і розміщення файлів
Перейдіть на офіційний сайт WP « https://ru.wordpress.org/ » та завантажте архів на свій локальний ПК.
Завантажте архів на сервер у папку «/var/www/sites/» та розархівуйте його в папку «wordpress ».
Скопіюйте вміст кореневої папки «/var/www/sites/wordpress/» вебсайту «/var/www/sites/site1/».
Оскільки ми скопіювали файли через консоль з правами root, давайте змінимо власника папки “/var/www/sites/”, включаючи вміст “virtual” . Це необхідно для забезпечення повного доступу для ftp-з’єднання через клієнт.
cd /var/www/sites/
tar -xzvf wordpress-5.4-ru_RU.tar.gz
cp -R wordpress/* site1/
chown -R virtual:root /var/www/sites
2. Створіть базу даних для WordPress
Увійдіть у phpMyAdmin і натисніть «Створити базу даних». Вкажіть довільне ім'я бази даних, в нашому випадку «wordpress_db» і натисніть кнопку «Створити».
Виберіть нову базу даних у лівому розділі та натисніть «Права»
Потім натисніть «Додати обліковий запис користувача».
Введіть логін та пароль ( wpservice / Qwe123 ) у вікні, що відкрилося, поставте позначку навпроти «Надати всі привілеї в wordpress_db» та натисніть «Далі».
На наступній сторінці натисніть «Скасувати все» , щоб скинути всі привілеї на рівні бази даних, і натисніть «Далі».
3. Конфігурація WordPress на сервері Linux
Перейдіть до кореневого каталогу вашого сайту та скопіюйте файл конфігурації з шаблону
cd /var/www/sites/site1/
cp wp-config-sample.php wp-config.php
Відкрийте файл «wp-config.php» та введіть параметри підключення до бази даних, які ми створили на попередньому кроці, і збережіть зміни.
4. Встановіть CMS WordPress
Відкрийте у браузері наступне посилання “http://[ip-адреса_сервера]/wp-admin/install.php”.
Заповніть усі поля та натисніть «Встановити WordPress» . Встановіть випадкове ім’я користувача та пароль. У нашому випадку це wpadmin та Qwe123 відповідно.
Ці дані використовуватимуться для доступу до WordPress.
Після завершення встановлення відкрийте посилання “http://[ip-адреса_сервера]/wp-login.php” , введіть дані доступу та увійдіть у WordPress.
Ви повинні побачити один із шаблонів WordPress на головній сторінці.
Налаштування завершено.
Деталі доступу до WordPress:
- http://[server’s_ip_address]/wp-login.php
- Логін: wpadmin
- Пароль: Qwe123