Debian був в якості основної ОС на моєму комп’ютері 3 роки. За цей час я досить чудово його вивчив.
Але наразі я ставлю такі вимоги до мого домашнього ПК:
1) Можливість використання останніх версій програм, які не відносяться до веб-сервера (FileZilla, Inkscape, Gimp, DeaDBeeF, Firefox, LibreOffice) та встановлювати їх з репозиторія, а не збирати самостійно, чи запускати як portable-варіанти.
2) Можливість залишити на сервері стабільні версії програмного забезпечення, яке чудово працює. Адже я вирішив, що переводити свої проекти на PHP7 ще рано.
3) Можливість бекапу сервера (як колишній системний адміністратор - я не довіряю вінчестерам, якщо вони не працюють в RAID-масиві)
4) Можливість плавного переїзду (спочатку налаштую та перевірити, а потім міняти ОС на домашньому ПК)
Я встановлював різні більш-менш солідні безкоштовні дистрибутиви на віртуальній машині та на ноутбуці дружини для вивчення та тестування. Спочатку це були OpenSUSE, Linux Mint, Manjaro та Fedora. Колись давно я ставив в віртуальній машині Arch Linux. Тоді встановлення цього представника світу Linux виявилось мені тяжким. Не то що б це було складно, але я не розумів чому він немає графічного чи псевдо-графічного інтерфейсу встановлення. І звісно ж віддав перевагу спочатку Ubuntu, а потім Debian, які ставляться в декілька кліків. Але щоб мати право про щось говорити - це потрібно спробувати. Тому я вирішив встановити і Gentoo щоб відчути ту всю "міць", про яку стільки написано в Інтернет.
І коли я скомпілював декілька разів Gentoo на слабенькому ноутбуці, а він в кінцевому результаті і не запрацював так як слід - я зрозумів що встановлення Arch Linux - це квіточки.
Ця система насправді дуже проста і зрозуміла. А близько 40% команд, які я використовував при встановленні Gentoo - використовуються і при встановленні Arch Linux.
Склалося такі відчуття, що під час встановлення і налаштування протягом 2 тижнів цього дистрибутиву я дізнався про Linux більше, ніж за 7 років користування linux-ом до цього. Я зрозумів що це той дистрибутив, з яким я хочу пов’язати життя мого ПК :)
Що мені сподобалось:
- Rolling release
- Легкість процесу збирання пакетів з AUR (в порівнянні зі збиранням пакетів .deb - це небо і земля)
- Можливість видаляти пакети KDE, якими не користуюсь
- Швидкість роботи менеджера пакетів pacman
- Розуміння що я роблю і для чого
Тому логічно, що в мене з'явилося бажання відділити на логічному рівні сервер від місця розробки. Необхідно було щось знайти таке, щоб можливо було сервер встановити в віртуальній машині, а своє середовище розробки запускати на основному комп’ютері. Тоді я б зміг в якості ОС для сервера використовувати Debian 8, а в якості ОС для основного ПК - Arch Linux. Причому сервер має працювати без графічного оточення в цілях економії оперативної пам’яті.
Оскільки вже звик, що в світі linux - можливо все, то почав свій пошук в Інтернет із FTP, SFTP, Samba, спільні папки VirtualBox...
І тут мені трапилась стаття Виртуальная машина, как сервер для web-разработки.
Це саме те що я шукав. Використання NFS дозволить налаштувати все саме так, як мені потрібно. Я отримаю можливість бекапу всього сервера (файл *.vdi). Також я зможу забезпечити плавний переїзд (спочатку налаштую та перевірю все в VirtualBox, а потім зможу змінити Debian на основному ПК на Arch Linux).
Далі про те, як я це робив...
1. Встановлення Debian у VirtualBox
Описувати цей процес не буду, так як інструкцій в Інтернет вистачає і так. Єдине що я звик встановлювати Debian в режимі Expert install. Так в мене більше контролю над процесом встановлення. Диск для віртуальної ОС створював динамічний. Забігаючи на перед скажу, що після встановлення та налаштування Debian, відповідно до цієї статті, розмір vdi-диска склав 2,2 Гб. Я створював диск розміром 30Гб на перспективу.
2. Налаштування 3 мережевих адаптерів VirtualBox
Ось стаття, де це описано.
3. Встановлення SSH в гостьовій ОС.
Перевірка статусу сервіса
4. Підключення до сервера через SSH
Налаштування підмережі пулу адрес відбувається в налаштуваннях VirtualBox (Файл - Налаштування - Мережа - Host Only Networks - vboxnet0
- Адаптер, Сервер DHCP),
а налаштування ІР-адреси в файлі /etc/networks/interfaces Debian.
oleg - це ім’я користувача на сервері
Підключатися через SSH зручніше ще в тому плані, що можна керувати шириною вікна консолі і прокручувати у вікні довгий вивід якоїсь команди.
5. Тепер можна встановити додаткові пакети для більш зручної роботи (не обов’язково)
Більше детальніше з ним можна ознайомитись в моїй статті Основні команди VIM
6. Встановлення Apache2
7. Перевірка статусу apache2 на сервері
http://192.168.31.31
Якщо бачимо сторінку з надписом "Apache2 Debian Default Page", значить служба працює.
9. Налаштування apache2
Додаю користувача oleg в групу www-data
Додаю в файл /etc/apache2/apache2.conf рядок
11. Встановлення та налаштування MySQL
Після цього можна виконати команду
Спочатку задасть декілька запитань
1) "Enter current password for root (enter for none):"
Ввожу пароль root, який був заданий на попередньому кроці)
2) "Change the root password?".
Я не бажаю змінювати пароль тому не погоджуюсь ("n").
3) "Remove anonymous users?" ("Чи потрібно видалити анонімних користувачів mysql?)"
Я погоджуюсь ("y")
4) "Disallow root login remotely?" ("Чи заборонити користувачу root підключатися віддалено")
Для налаштування сервера, який буде видно ззовні слід натискати "y". Мій же сервер буде видно тільки з моєї локальної мережі, тому я натискаю "n"
5) "Remove test database and access to it?" ("Видалити тестову базу даних та доступ до неї?")
Я погоджуюсь ("y")
6) "Reload privilege tables now?" ("Перезавантажити таблицю привілеїв зараз?")
Я погоджуюсь ("y")
12. Перевірка працездатності Mysql
Перевіряю статус
Підключаюсь та переглядаю список таблиць
$mysql -u root -p
mysql> SHOW DATABASES;
Список таблиць показано
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)
Розриваю з'єднання з базою даних (Ctrl + D)
13. Створення папок та файлів для тестового віртуального хосту
Створюю папку
Створюю тестовий файл /var/www/testsite.local/info.php
З таким вмістом
Змінюю власника для папки /var/www та встановлюю необхідні права
Це універсальні команди які змінюють власника та права рекурсивно для всіх директорій та файлів, які знаходяться в /var/www. В мною написаний bash-скрипт, який я запускаю щоб не вводити ці команди вручну.
14. Створюю конфігураційний файл Apache для віртуального хоста (/etc/apache2/sites-available/testsite.local.conf) з таким вмістом
Цей конфігураційний сайт відноситься тільки до одного віртуального хоста. Всі помилки та інші повідомлення своїх сайтів я пишу в один файл. Якщо необхідно помилки писати в окремі файли - це саме той файл, де це необхідно налаштувати.
15. Додаю в файл /etc/hosts рядок
16. Вмикаю сайт та перезавантажую службу apache2
# a2ensite testsite.local.conf
# service apache2 reload
17. Встановлення PHP
18. Перевірка працездатності PHP та віртуального хоста
Додаю в файл /etc/host основної ОС рядок
Перезавантажую службу apache2 в основній ОС
В браузері основної ОС переходжу за адресою
http:\\testsite.local
Бачу сторінку з виводом функції phpinfo(), отже все працює.
20. Встановлення phpmyadmin
1) Який веб-сервер встановлено? (apache2)
2) Дозвіл на створення бази phpmyadmin, в якій будуть збережені налаштування (погоджуємось)
3) Пароль root доступу до бази даних
4) Який пароль встановити для бази phpmyadmin
Налаштовувати інший alias для phpmyadmin в цілях безпеки в даному випадку не збираюсь, так як підключення до даного сервера ззовні не планується (принаймні поки-що).
21. Встановлення NFS-server
22. Конфігурація NFS-сервера
В файл /etc/exports додаю рядок
Тут
rw - доступ на читання та запис
async - асинхронний режим роботи
no_subtree_check - відключення перевірки на знаходження файлів в каталозі, який відкритий
all_squash - всі клієнти на NFS-сервері будуть вважатися анонімними, або тими, ID яких вказані в anonuid та anongid
anonuid, anongid - ID користувача та ID групи користувача на сервері Переглянути можна так:
#cat /etc/passwd
Я вказав 33:33, тому що хочу щоб створені файли та директорії належали власнику www-data:www-data
23. Перезапуск служби
24. Встановлення та налаштування NFS-клієнта (в основній ОС)
25. Створюю скрипт підключення NFS-папки /home/oleg/my_scripts/nfs-connect.sh
з таким вмістом
26. Створюю скрипт відключення NFS-папки ~/my_scripts/nfs-disconnect.sh
з таким вмістом
27. Роблю скрипти виконуваними
29. Тестування можливості редагувати файл
30. Тестування відключення в консолі основної ОС
При прописуванні домашнього каталогу користувача в скриптах через тильду є проблеми в момент підключення. Скрипт намагається шукати директорію в каталозі root замість домашнього каталогу користувача. Тому я прописую повний шлях.
На цьому все ;)
Але наразі я ставлю такі вимоги до мого домашнього ПК:
1) Можливість використання останніх версій програм, які не відносяться до веб-сервера (FileZilla, Inkscape, Gimp, DeaDBeeF, Firefox, LibreOffice) та встановлювати їх з репозиторія, а не збирати самостійно, чи запускати як portable-варіанти.
2) Можливість залишити на сервері стабільні версії програмного забезпечення, яке чудово працює. Адже я вирішив, що переводити свої проекти на PHP7 ще рано.
3) Можливість бекапу сервера (як колишній системний адміністратор - я не довіряю вінчестерам, якщо вони не працюють в RAID-масиві)
4) Можливість плавного переїзду (спочатку налаштую та перевірити, а потім міняти ОС на домашньому ПК)
Я встановлював різні більш-менш солідні безкоштовні дистрибутиви на віртуальній машині та на ноутбуці дружини для вивчення та тестування. Спочатку це були OpenSUSE, Linux Mint, Manjaro та Fedora. Колись давно я ставив в віртуальній машині Arch Linux. Тоді встановлення цього представника світу Linux виявилось мені тяжким. Не то що б це було складно, але я не розумів чому він немає графічного чи псевдо-графічного інтерфейсу встановлення. І звісно ж віддав перевагу спочатку Ubuntu, а потім Debian, які ставляться в декілька кліків. Але щоб мати право про щось говорити - це потрібно спробувати. Тому я вирішив встановити і Gentoo щоб відчути ту всю "міць", про яку стільки написано в Інтернет.
І коли я скомпілював декілька разів Gentoo на слабенькому ноутбуці, а він в кінцевому результаті і не запрацював так як слід - я зрозумів що встановлення Arch Linux - це квіточки.
Ця система насправді дуже проста і зрозуміла. А близько 40% команд, які я використовував при встановленні Gentoo - використовуються і при встановленні Arch Linux.
Склалося такі відчуття, що під час встановлення і налаштування протягом 2 тижнів цього дистрибутиву я дізнався про Linux більше, ніж за 7 років користування linux-ом до цього. Я зрозумів що це той дистрибутив, з яким я хочу пов’язати життя мого ПК :)
Що мені сподобалось:
- Rolling release
- Легкість процесу збирання пакетів з AUR (в порівнянні зі збиранням пакетів .deb - це небо і земля)
- Можливість видаляти пакети KDE, якими не користуюсь
- Швидкість роботи менеджера пакетів pacman
- Розуміння що я роблю і для чого
Тому логічно, що в мене з'явилося бажання відділити на логічному рівні сервер від місця розробки. Необхідно було щось знайти таке, щоб можливо було сервер встановити в віртуальній машині, а своє середовище розробки запускати на основному комп’ютері. Тоді я б зміг в якості ОС для сервера використовувати Debian 8, а в якості ОС для основного ПК - Arch Linux. Причому сервер має працювати без графічного оточення в цілях економії оперативної пам’яті.
Оскільки вже звик, що в світі linux - можливо все, то почав свій пошук в Інтернет із FTP, SFTP, Samba, спільні папки VirtualBox...
І тут мені трапилась стаття Виртуальная машина, как сервер для web-разработки.
Це саме те що я шукав. Використання NFS дозволить налаштувати все саме так, як мені потрібно. Я отримаю можливість бекапу всього сервера (файл *.vdi). Також я зможу забезпечити плавний переїзд (спочатку налаштую та перевірю все в VirtualBox, а потім зможу змінити Debian на основному ПК на Arch Linux).
Далі про те, як я це робив...
1. Встановлення Debian у VirtualBox
Описувати цей процес не буду, так як інструкцій в Інтернет вистачає і так. Єдине що я звик встановлювати Debian в режимі Expert install. Так в мене більше контролю над процесом встановлення. Диск для віртуальної ОС створював динамічний. Забігаючи на перед скажу, що після встановлення та налаштування Debian, відповідно до цієї статті, розмір vdi-диска склав 2,2 Гб. Я створював диск розміром 30Гб на перспективу.
2. Налаштування 3 мережевих адаптерів VirtualBox
Ось стаття, де це описано.
3. Встановлення SSH в гостьовій ОС.
aptitude install openssh-server
Перевірка статусу сервіса
# /etc/init.d/ssh status
або # service ssh status
4. Підключення до сервера через SSH
$ ssh –l oleg 192.168.31.31
Адресу 192.168.31.31 використовую я. Ви ж можете змінити на свою.Налаштування підмережі пулу адрес відбувається в налаштуваннях VirtualBox (Файл - Налаштування - Мережа - Host Only Networks - vboxnet0
- Адаптер, Сервер DHCP),
а налаштування ІР-адреси в файлі /etc/networks/interfaces Debian.
oleg - це ім’я користувача на сервері
Підключатися через SSH зручніше ще в тому плані, що можна керувати шириною вікна консолі і прокручувати у вікні довгий вивід якоїсь команди.
5. Тепер можна встановити додаткові пакети для більш зручної роботи (не обов’язково)
# aptitude install htop vim mc
Надалі для редагування файлів я буду використовувати консольний текстовий редактор vim. Те ж саме можна робити з допомогою вбудованого текстового редактора nano, що і бажано робити, якщо раніше цим редактором ви не користувалися.Більше детальніше з ним можна ознайомитись в моїй статті Основні команди VIM
6. Встановлення Apache2
# aptitude install apache2
7. Перевірка статусу apache2 на сервері
#service status apache2
8. Перевірка працездатності в браузері основної ОСhttp://192.168.31.31
Якщо бачимо сторінку з надписом "Apache2 Debian Default Page", значить служба працює.
9. Налаштування apache2
Додаю користувача oleg в групу www-data
#usermod -a -G www-data oleg
Для того щоб користувач дійсно додався в групу (перевіряється командою groups) необхідно перелогінитись.Додаю в файл /etc/apache2/apache2.conf рядок
ServerName localhost
для того щоб Apache2 при перевірці статусу не писав зайвий рядок "Could not reliably determine the server's fully qualified domain name"11. Встановлення та налаштування MySQL
# aptitude install mysql-server
В момент встановлення необхідно буде двічі вказати бажаний пароль користувача root для MySQL.Після цього можна виконати команду
mysql_secure_installation
Спочатку задасть декілька запитань
1) "Enter current password for root (enter for none):"
Ввожу пароль root, який був заданий на попередньому кроці)
2) "Change the root password?".
Я не бажаю змінювати пароль тому не погоджуюсь ("n").
3) "Remove anonymous users?" ("Чи потрібно видалити анонімних користувачів mysql?)"
Я погоджуюсь ("y")
4) "Disallow root login remotely?" ("Чи заборонити користувачу root підключатися віддалено")
Для налаштування сервера, який буде видно ззовні слід натискати "y". Мій же сервер буде видно тільки з моєї локальної мережі, тому я натискаю "n"
5) "Remove test database and access to it?" ("Видалити тестову базу даних та доступ до неї?")
Я погоджуюсь ("y")
6) "Reload privilege tables now?" ("Перезавантажити таблицю привілеїв зараз?")
Я погоджуюсь ("y")
12. Перевірка працездатності Mysql
Перевіряю статус
# service mysql status
Підключаюсь та переглядаю список таблиць
$mysql -u root -p
mysql> SHOW DATABASES;
Список таблиць показано
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)
Розриваю з'єднання з базою даних (Ctrl + D)
13. Створення папок та файлів для тестового віртуального хосту
Створюю папку
# mkdir /var/www/testsite.local
Створюю тестовий файл /var/www/testsite.local/info.php
З таким вмістом
<html>
<head>
<title>PHP</title>
</head>
<body>
<?php
phpinfo();
?>
</body>
</html>
# vim /var/www/testsite.local/info.php
Змінюю власника для папки /var/www та встановлюю необхідні права
sudo chown -R www-data:www-data /var/www;
sudo find /var/www -type d -exec chmod 775 {} +;
sudo find /var/www -type f -exec chmod 664 {} +;
Це універсальні команди які змінюють власника та права рекурсивно для всіх директорій та файлів, які знаходяться в /var/www. В мною написаний bash-скрипт, який я запускаю щоб не вводити ці команди вручну.
14. Створюю конфігураційний файл Apache для віртуального хоста (/etc/apache2/sites-available/testsite.local.conf) з таким вмістом
<VirtualHost *:80>
ServerAdmin root@localhost
ServerName testsite.local
ServerAlias www.testsite.local
DocumentRoot /var/www/testsite.local
ErrorLog ${APACHE_LOG_DIR}/error.allsites.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.allsites.log combined
</VirtualHost>
# vim /etc/apache2/sites-available/testsite.local.conf
Цей конфігураційний сайт відноситься тільки до одного віртуального хоста. Всі помилки та інші повідомлення своїх сайтів я пишу в один файл. Якщо необхідно помилки писати в окремі файли - це саме той файл, де це необхідно налаштувати.
15. Додаю в файл /etc/hosts рядок
127.0.1.1 testsite.local
для співставлення доменного імені та хоста.
# vim /etc/hosts
16. Вмикаю сайт та перезавантажую службу apache2
# a2ensite testsite.local.conf
# service apache2 reload
17. Встановлення PHP
# aptitude install php5 php5-mysql
18. Перевірка працездатності PHP та віртуального хоста
Додаю в файл /etc/host основної ОС рядок
192.168.31.31 testsite.local
для співставлення доменного імені та хоста у VirtualboxПерезавантажую службу apache2 в основній ОС
# service apache2 reload
В браузері основної ОС переходжу за адресою
http:\\testsite.local
Бачу сторінку з виводом функції phpinfo(), отже все працює.
20. Встановлення phpmyadmin
# aptitude install phpmyadmin
В процесі встановлення скрипт запитає: 1) Який веб-сервер встановлено? (apache2)
2) Дозвіл на створення бази phpmyadmin, в якій будуть збережені налаштування (погоджуємось)
3) Пароль root доступу до бази даних
4) Який пароль встановити для бази phpmyadmin
Налаштовувати інший alias для phpmyadmin в цілях безпеки в даному випадку не збираюсь, так як підключення до даного сервера ззовні не планується (принаймні поки-що).
21. Встановлення NFS-server
# aptitude install nfs-kernel-server nfs-common portmap
22. Конфігурація NFS-сервера
В файл /etc/exports додаю рядок
/var/www/ 192.168.31.1(rw,async,no_subtree_check,all_squash,anonuid=33,anongid=33)
# vim /etc/exports
Тут
rw - доступ на читання та запис
async - асинхронний режим роботи
no_subtree_check - відключення перевірки на знаходження файлів в каталозі, який відкритий
all_squash - всі клієнти на NFS-сервері будуть вважатися анонімними, або тими, ID яких вказані в anonuid та anongid
anonuid, anongid - ID користувача та ID групи користувача на сервері Переглянути можна так:
#cat /etc/passwd
Я вказав 33:33, тому що хочу щоб створені файли та директорії належали власнику www-data:www-data
23. Перезапуск служби
# service nfs-kernel-server restart
24. Встановлення та налаштування NFS-клієнта (в основній ОС)
#aptitude install portmap nfs-common
25. Створюю скрипт підключення NFS-папки /home/oleg/my_scripts/nfs-connect.sh
з таким вмістом
#!/bin/bash sudo mount -t nfs -o rw,soft,intr 192.168.31.31:/var/www
/home/oleg/debsrv_data
# vim
/home/oleg/my_scripts/nfs-connect.sh
26. Створюю скрипт відключення NFS-папки ~/my_scripts/nfs-disconnect.sh
з таким вмістом
#!/bin/bash sudo umount
/home/oleg/debsrv_data
# vim
/home/oleg/my_scripts/nfs-connect.sh
27. Роблю скрипти виконуваними
28. Тестування підключення в консолі основної ОС# chmod ug+x
/home/oleg/my_scripts/nfs-connect.sh
/home/oleg/my_scripts/nfs-disconnect.sh
sudo
/home/oleg/my_scripts/nfs-connect.sh
29. Тестування можливості редагувати файл
vim
/home/oleg/debsrv_data/testsite.local/index.php
30. Тестування відключення в консолі основної ОС
sudo
/home/oleg/my_scripts/nfs-disconnect.sh
При прописуванні домашнього каталогу користувача в скриптах через тильду є проблеми в момент підключення. Скрипт намагається шукати директорію в каталозі root замість домашнього каталогу користувача. Тому я прописую повний шлях.
На цьому все ;)
Немає коментарів:
Дописати коментар