Приветствую вас. Всех тех кто только начал изучать тему “Безумного дома” и всех тех кто уже давно в теме. В этой статье я хочу поделиться своим опытом установки и настройки сервера с самого начала на raspberry. Начиная с установки образа системы Debian и заканчивая входом на уже установленный но не настроенный сервер используя web интерфейс.
Для работы нам понадобится:
- Raspberry pi 3 b+
- Программа для записи образа Debian на SD карту скачать.
- Образ Debian без графического интерфейса! Скачать.
- Mikro-SD карта 10-го класса.
- И конечно же хоть какие то познания в ОС Linux.
Первый запуск, настройка debian на вашей малинке.
Вставляем нашу Mikro-SD карту в компьютер, стартуем программу Etcher. Нажимаем кнопку Select image и выбираем наш образ debian который вы скачали по ссылке выше. Далее нажимаем кнопку Select drive и выбираем нашу Mikro-SD карту. Ну и в конце нажимаем кнопку Flash! Начнётся процесс форматирования и после запись образа debian на вашу карту памяти.
Ну вот образ записан теперь приступаем к настройке raspberry. Вставляем карту памяти в малинку, подключаем её к монитору или телевизору используя HDMA кабель. Подключаем клавиатуру и подаем питание на наш одноплатник. На экране вы увидите как будет загружаться ОС debian. После некоторого времени нам буде предложено ввести логин и пароль.
Login – pi
Pasword- raspberry
Далее давайте договоримся о следующем синтаксисе. Всё что будет написано вот с таким форматированием
sudo raspi-config
это команды, которые нужно вводит в окне терминала удалённого подключения к нашей Raspberri-PI. Текст с таким форматированием
1 |
error_reporting = E_ALL & ~E_NOTICE |
будет означать работу в редакторе nano. Любое другое форматирование – это оформление данной статьи. Ну вот и договорились 🙂 .
И так, сначала нам необходимо настроить удалённое подключение по SSH. Для этого вводим логин и пароль в нашей debian и пишем следующее
sudo raspi-config
Попадаем в программу конфигурации.
выбираем стрелками пункт меню номер 3.
нажимаем enter и попадаем в другое окно. В этом окне выбираем пункт меню P2 и жмём enter.
Попадаем в окно активации SSH.
Стрелками выбираем YES и жмём enter.
Теперь увеличим основной раздел на весь объем карты памяти. Выбираем стрелками пункт меню номер 6. Жмём enter.
попадаем в следующее окно где мы выбираем пункт меню А1.
Клавишей Tab выбираем кнопку Select. Жмём enter.
Далее вводим команду перезагрузки нашей малинки.
sudo reboot
Вот и всёс настройкой удалённого подключения по SSH. Теперь нам как то нужно подключиться удалённо к нашей малине. Для этого нам нужно знать её IP адресс. Вводим команду:
ifconfig eth0
В появившейся информации мы получаем наш IP.
Теперь переходим на ваш PC. Малинку можно смело отключать от внешнего монитора/телевизора. Я использую ОС linux вы можете использовать всё, что вам удобно. Для Windows нужно установить программу PuTTY. Для linux нужен только терминал который уже по умолчанию находиться в системе. Не зависимо от того, что вы будете использовать всё написаное далее ни чем друг от друга не отличаеться.
Настройка статического IP адреса
sudo nano /etc/dhcpcd.conf
Дописываем внизу документа строки:
1 2 3 4 5 |
nodhcp interface eth0 static ip_address=192.168.1.14/24 static routers=192.168.1.1 static domain_name_servers=192.168.1.1 |
Сохраним изменения Ctrl+O, Enter, Ctrl+X, Enter.
Перегружаемся:
sudo reboot
установка и настройка Web-сервера
Обновляем программные пакеты до актуального состояния.
sudo apt update && sudo apt upgrade
установку и настройку Web-сервера будем делать на базе Apache. Так же нужно установить систему управления базами данных — MySQL.
Для установки Apache, в командную строку консоли вводим команду:
sudo apt-get install apache2 apache2-utils -y
запретим вывод версии Apache. Для этого откроем в редакторе Nano файл по пути:
sudo nano /etc/apache2/conf-enabled/security.conf
находим:
1 |
ServerTokens OS |
меняем на:
1 |
ServerTokens Prod |
Сохраним изменения Ctrl+O, Enter, Ctrl+X, Enter.
Далее вносим изменения в его конфигурационный файл.
sudo nano /etc/apache2/sites-available/000-default.conf
Я просто удалил все записи из конфигурационного файла, и вставил в него следующее:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<VirtualHost *:80> DocumentRoot /var/www <Directory /> Options FollowSymLinks AllowOverride All </Directory> <Directory /var/www> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
Сохраним изменения Ctrl+O, Enter, Ctrl+X, Enter.
Изменим следующий конфигурационный файл:
sudo nano /etc/apache2/apache2.conf
В самом его конце добавим вот такую строку:
1 |
ServerName localhost |
Сохраним изменения Ctrl+O, Enter, Ctrl+X, Enter.
Перезагрузим Apache:
sudo apache2ctl restart
Устанавливаем PHP:
Для установки языка программирования PHP вводим следующую команду:
sudo apt-get install php php-cgi php-cli php-pear php-mysql php-mbstring php-xml -y
Устанавливаем CURL и его библиотеки:
sudo apt-get install curl libcurl4 libcurl3-dev php-curl -y
Устанавливаем PHP-модуль для веб-сервера Apache 2:
sudo apt-get install libapache2-mod-php -y
Включаем конфигурацию php7.3-cgi следующей командой:
sudo a2enconf php7.3-cgi
Перезапускаем сервис Apache:
sudo service apache2 reload
В редакторе nano создаем файл index.php в папке /var/www/html/
sudo nano /var/www/html/index.php
Вводим в созданный файл следующие строки:
1 2 3 4 5 6 7 8 9 |
<html> <body> <div style="width: 100%; font-size: 40px; font-weight: bold; text-align:center;"> <?php print Date("Y/m/d"); ?> </div> </body> </html> |
Сохраним изменения Ctrl+O, Enter, Ctrl+X, Enter.
В этой же папке у нас находится файл index.html. Удалим его командой:
sudo rm /var/www/html/index.html
Включаем работу коротким тегом <? /?> (для последних версий Apache). Для этого редактируем файл php.ini в папке /etc/php/7.3/apache2/
sudo nano /etc/php/7.3/apache2/php.ini
находим строчку:
1 |
short_open_tag = Off |
и меняем на:
1 |
short_open_tag = On |
Если такой строчки нет, то просто вставляем в конце файла:
1 |
short_open_tag = On |
Сохраним изменения Ctrl+O, Enter, Ctrl+X, Enter.
Устанавливаем MySQL:
Ууууускоряемся:
sudo apt-get install mariadb-server-10.0 mariadb-client-10.0 -y
Далее необходимо сделать первоначальную конфигурацию MySQL сервера. К этой процедуре нужно отнестись более внимательно и обязательно нужно записать данные которые вы сейчас будете вводить.
Вводим в командную строку следующее:
sudo mysql_secure_installation
- Так как мы только что установили MySQL, пароля у нас нет, он пустой. На этом шаге просто нажимаем Enter.
- Далее нам будет предложено изменить этот пароль. Нажимаем Y и вводим пароль (ЗАПИСЫВАЕМ ЕГО!!!)
- После ввода пароля нам будет предложено его повторить. Повторяем. Обратите внимание на то, что при вводе пароля на экране ничего не буде происходить, символов, звёздочек, подчёркиваний вы не уведите.
- Далее нам буде предложено удалить анонимного пользователя который был создан при установке MySQL в тестовых целях. Соглашаемся введя буку Y.
- Далее скрипт предложит запретить вход в систему удаленно.
Вводим букву Y. -
На следующем шаге скрипт предлагает удалить тестовую базу данных: Соглашаемся Y.
- Далее будет предложено сохранить внесенные в скрипт изменения:
Здесь вводим Y, после чего происходит выход из скрипта и возвращение к командной строке.
Вот и вся предварительная настройка MySQL.
Правим конфигурационный файл 50-server.cnf
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Найдем в этом файле строчку:
1 |
character-set-server = utf8mb4 |
и поменяем ее на следующую
1 |
character-set-server = utf8 |
Перед строчкой, которая следует сразу же за только что поменянной, поставим знак решетки # (закомментируем), она должна принять следующий вид:
1 |
#collation-server = utf8mb4_general_ci |
Сохраним изменения Ctrl+O, Enter, Ctrl+X, Enter.
Устанавливаем PhpMyAdmin:
Произошли изменения с момента написания статьи. оригинал изменений я нашёл вот тут Перед тем как прочитать статью по ссылке которую я позже красиво и понятно оформлю нужно в репозиторий добавить две ссылки. Делаем следующие операции:
Нужно внести следующие строки в конец файла:
1 2 |
deb http://deb.debian.org/debian/ stretch main contrib non-free deb-src http://deb.debian.org/debian/ stretch main contrib non-free |
После этого обновите репозиторий командой
sudo mysql
и запустите следующие команды:
1 2 3 4 |
use mysql; update user set plugin='' where User='root'; flush privileges; exit |
Затем перезапустите службу MySQL и попробуйте войти в базу данных без sudo, как показано ниже.
sudo systemctl restart mysql.service
теперь проверяем сначала работу phpmyadmin. localhost/phpmyadmin
Затем нужно обновить все пакеты в системе:
sudo apt full-upgrade
PhpMyAdmin – это веб-приложение, которое позволяет через браузер осуществлять администрирование сервера MySQL. Устанавливается оно командой:
sudo apt-get install phpmyadmin php-mbstring php-gettext -y
В процессе установки нам нужно будет ответить на ряд вопросов. Сначала нам будет предложено выбрать версию web-сервера:
Поскольку у нас установлен Apache, то выбираем пункт apache2, нажимаем пробел (чтобы в выбранном пункте отобразилась звездочка), и нажимаем Enter.
Далее нам будет предложено сконфигурировать базы данных при помощи “dbconfig-common”: Здесь мы выбираем Нет!
Теперь нам нужно разрешить пользователю root подключаться к MySQL без sudo. Для этого нужно перейти в командную строку MySQL из под root:
sudo mysql -u root -p mysql
После ввода этой команды у нас будет запрошен пароль. Вводим пароль, который был создан при установке MySQL, и попадаем в командную строку MySQL.
В командной строке последовательно вводим следующие команды:
update user set plugin=” where user=’root’;
flush privileges;
exit
После ввода последней команды происходит выход из командной строки MySQL.
Далее нам нужно подправить конфигурационный файл apache.conf
sudo nano /etc/phpmyadmin/apache.conf
В открывшемся файле, после строчки DirectoryIndex index.php вставляем строчку:
1 |
Require ip 127.0.0.1 192.168.1.0/24 |
В этой строчке ip 127.0.0.1 оставляем неизменным, а 192.168.1.0 меняем на ip вашей сети. Адресс моей сети 192.168.1.0
Сохраним изменения Ctrl+O, Enter, Ctrl+X, Enter.
Включаем mod_rewrite:
mod_rewrite – один из самых часто используемых модулей веб-сервера Apache. Этот модуль предоставляет гибкий и мощный способ манипулирования URL-адресами, используя неограниченное количество правил. Включается он следующей командой:
sudo a2enmod rewrite
Перезагрузим Apache:
sudo apache2ctl restart
Настройка PHP:
Вносим одинаковые изменения в два конфигурационных файла. Сначала мы внесем изменения в файл находящийся по пути /etc/php/7.3/apache2/php.ini
sudo nano /etc/php/7.3/apache2/php.ini
ищем в этом файле строку error_reporting, и приводим ее к следующему виду:
1 |
error_reporting = E_ALL & ~E_NOTICE |
Так же меняем:
max_execution_time – значение 30 меняем на 90
max_input_time – значение 60 меняем на 180
post_max_size – значение 8M меняем на 200M
upload_max_filesize – значение 2M меняем на 50M
max_file_uploads – значение 20 меняем на 150
Сохраним изменения Ctrl+O, Enter, Ctrl+X, Enter.
Внесем точно такие же изменения в конфигурационный файл, находящийся по пути /etc/php/7.3/cli/php.ini
sudo nano /etc/php/7.3/cli/php.ini
Вносим изменения которые находяться выше.
Сохраним изменения Ctrl+O, Enter, Ctrl+X, Enter.
Для применения всех изменений нам снова нужно перезапустить Apache
sudo /etc/init.d/apache2 restart
На этом установку и настройку Web-сервера можно считать законченной.
Установка MajorDoMo
Создадим папку в которой будет находиться наш MajorDoMo.
sudo mkdir /home/majordomo
переходим в эту папку:
cd /home/majordomo
Скачиваем дистрибутив MajorDoMo c githab.
sudo wget https://github.com/sergejey/majordomo/archive/master.zip
распакуем дистрибутив командой:
sudo unzip master.zip
Далее переносим распакованную систему MajorDomo в директорию Web-сервера командой:
sudo cp -rp /home/majordomo/majordomo-master/* /var/www
Теперь надо скопировать и скрытый файл .htaccess. Указываем его явно:
sudo cp -rp /home/majordomo/majordomo-master/.htaccess /var/www
Далее настраиваем права пользователей на файлы и директори.
Файлам устанавливаем права 0644
sudo find /var/www/ -type f -exec chmod 0644 {} \;
Директориям даём права 0755
sudo find /var/www/ -type d -exec chmod 0755 {} \;
Проверяем как распределились права:
ls -lh /var/www
должно быть так:
MajorDoMo (а именно сервисы: apache и php) работает от пользователя www-data. Права доступа к каталогу /var/www, где лежат файлы Majordomo по умолчанию принадлежат root. Изменим владельца директории /var/www на www-data при помощи следующей команды:
sudo chown -R www-data:www-data /var/www
Далее даём доступ пользователю www-data к медиа устройствам. Для этого добавляем его в группу audio.
sudo usermod -a -G audio www-data
Проверить, что пользователь www-data появился в группе audio можно командой:
cat /etc/group | grep audio
Создание базы данных.
Открывем любой браузер и вводим IP адрес нашего сервера следующего формата http://IP_адрес_сервера/phpmyadmin где IP_адрес_сервера – это ip адрес вашей малинки. В моём случае 192.168.1.130
попадаем вот на такую форму ввода. Так как я уже создал базу данных то скриншоты будут немного отличаться от тех которые будете видеть вы на своих экранах. Имейте это в виду при дальнейшем ознакомлении со статьёй.
Вводим пользователя root пароль тот (rootpsw), который мы создали и запомнили при установке MySQL. Нажимаем кнопку Вперед, и попадаем в панель управления PhpMyAdmin: Теперь нам нужно создать базу данных db_terminal. Чтобы ее создать, нажимаем “Создать БД” в левой части окна. Затем, в поле Имя базы данных вводим db_terminal и нажимаем кнопку Создать:
После нажатия кнопки Создать, мы переходим в созданную нами базу данных db_terminal.
В верхней части окна ищем кнопку Импорт, и нажимаем её.
И вот тут возникнут проблеммы. БОЛЬШИЕ ПРОБЛЕММЫ ( я так думал в первые сутки). Но решаються они довольно таки просто. От вас требуется максимум внимания и концентрации. Но только на этом этапе. И так о каких же проблеммах я говорю, об ошибках которые посыпяться на вас в огромном количестве в виде так называемой “красной простыни” Я не могу точно передать суть ошибки но вы должны посмотреть на строчку примерно вот такого вида:
1 2 |
Warning in ./libraries/sql.lib.php#601 count(): Parameter must be an array or an object that implements Countable |
Вас должно интересовать номер строки который указан после знака #. В нашем случае это строка с номером #601 (у меня была строка с номером 553). Номер строки с указанием на ошибку может быть разный. Наша задача открыть файл в редакторе nano и найти там нужную строчку. И так поехали исправлять:
sudo nano /usr/share/phpmyadmin/libraries/sql.lib.php
Нажимаем комбинацию клавиш Ctrl+W (это поиск по файлу) вставляем в строку поиска вот это:
1 |
|| (count($analyzed_sql_results['select_expr'] == 1) |
нажимаем enter и переходим на начало искомой строки. Далее мы её редактируем что бы получилось вот такая строка:
1 |
|| ((count($analyzed_sql_results['select_expr']) == 1) |
Обратите внимание на скобки.
Сохраним изменения Ctrl+O, Enter, Ctrl+X, Enter.
И так первый файл мы изменили. Теперь нам нужно измень ещё один файл.
sudo nano /usr/share/phpmyadmin/libraries/plugin_interface.lib.php
Точно так же нажимаем комбинацию клавиш Ctrl+W вставляем в строку поиска вот это:
1 |
if ($options != null && count($options) > 0) { |
нажимаем enter и так же переходим на начало искомой строки. Далее мы её редактируем что бы получилось вот такая строка:
1 |
if ($options != null && count((array) $options) > 0) { |
Сохраним изменения Ctrl+O, Enter, Ctrl+X, Enter.
Вот и всё. Ах да, для чего же нам нудно было знать номер строки указанной в ошибке. Да просто в ваших файлах может быть добавлен какй то пробел лишний или что то в этом роже и поиском который я описал по комбинации клавиш Ctrl+W вы простно не смогли бы найти нужную строчку. А так можно открыть редактируемый файт в любом рекстовом редакторе кте отображаеться номер строки, найти визуально эту строчку и потом выше описаным способой сделать изменения.
Ну да ладно, продолжаем далее настраивать наш сервер. На чём это я остановился…. ааа… В верхней части окна ищем кнопку Импорт, и нажимаем её.
Теперь нам нужен сам файл базы данных db_terminal.sql, из которого мы импортируем все данные. Скачаем дистрибудив MajorDomo на свой компьютер и разархивируем его. Нажимаем кнопку Обзор: и выбираем из распакованного архива вот этот файл db_terminal.sql. Перематываем это окно в самый низ, и нажимаем кнопку Вперед. Всё, наша база данных заполнилась нужными таблицами.
Правка основного конфигурационного файла MajorDoMo
Переходим в терминал или PuTTY и поехали далее:
sudo cp /var/www/config.php.sample /var/www/config.php
Далее пользователя www-data нужно сделать владельцем конфигурационного файла config.php
sudo chown www-data: /var/www/config.php
файл config.php в редакторе Nano
sudo nano /var/www/config.php
Прописываем имя пользователя и пароль в нужных строчках:
DB_USER – это пользователь
DB_PASSWORD – пароль
Сохраним изменения Ctrl+O, Enter, Ctrl+X, Enter.
Основной цикл
Создадим файл описание сервиса для запуска основного цикла системы.
sudo nano /etc/systemd/system/majordomo.service
Заполним его вот этим кодом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[Unit] Description=MajorDomo daemon Requires=network.target After=dhcpcd.service [Install] WantedBy=default.target [Service] Type=simple ExecStart=/usr/bin/php /var/www/cycle.php execStop=/usr/bin/pkill -f cycle_* User=www-data Group=www-data KillSignal=SIGKILL KillMode=control-group RestartSec=1min Restart=on-failure |
Сохраним изменения Ctrl+O, Enter, Ctrl+X, Enter.
Отключаем режим “Strict mode” для MySQL. Для этого создадим конфигурационный файл:
sudo nano /etc/mysql/conf.d/disable_strict_mode.cnf
Заполняем его этими двумя строками:
1 2 |
[mysqld] sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
Добавляем главный цикл в автозагрузку.
sudo systemctl enable majordomo
Запускаем основной цикл системы:
sudo systemctl start majordomo
Перезапускаем наш Raspberry:
sudo reboot
Переключаемся на наш брацзер и вводим адрес нашего сервера “Безумного дома”. Радуемся и читаем в моих статьях как же теперь из этого сервера сделать классные вещи!.
Всем удачи в настройке и конфигурировании ваших серверов. Не забудте читать мои статьи о настройке системы MajorDomo в очередных статьях.