MAKSIKI have come to you

На главную | п.3 Создание виртуальной машины Hyper-V | Установка дистрибутива Ubuntu server | Установка Proftpd | Установка Apache и установка прав доступа на папки и файлы | Установка PHP | Установка Mysql | Установка phpmyadmin | Установка времени | Установка SSH и проброс портов | Установка SSMTP и настройка | Удаление программ

Установка сервера Ubuntu на OC Windows 10


Основано на реальных событиях июня 2024 года. Ни один компьютер не пострадал.
Все началось с того, что у меня был сайт на бесплатном хостинге Hostiman. На него я отправлял данные с датчиков. И не в первый раз у меня останавливали сайт за превышение нагрузки (число поступающих запросов). Мне надоели бесконечные проблемы со службой поддержки и я решил уйти с бесплатных хостингов. До этого я парковался еще на других бесплатных хостингах Beget, Hostiman, Free Hosting, Hostinger, 000WebHost но всегда было что-то неприятное: бесплатные услуги неожиданно заканчивались; по условиям договора требовали размещать положительные отзывы; по непонятным причинам сайт переставал работать; FTP не всегда работало; переставали работать скрипты; не хватало места на диске (отводили всего 100Мб). У каждого свое и вечные неудобства.
Поэтому я выбрал нет топ Findarling Мини-ПК T9 Plus (Intel Processor N100, RAM 8 ГБ, SSD 256 ГБ, Intel HD Graphics, Windows 11 Pro) в качестве железа для сервера. Заказал из Китая за 14000 рублей.


Теперь шаги по порядку, которые были сделаны мною:
1. Переустановил операционную систему (ОС) на Windows 10 Pro
2. Включил компоненты Hyper-V. По умолчанию, компоненты Hyper-V в Windows 10 отключены. Для установки, зайдите в Панель управления — Программы и компоненты — Включение или отключение компонентов Windows, отметьте пункт Hyper-V и нажмите «Ок». Установка произойдет автоматически


Создание виртуальной машины Hyper-V


3. На первом этапе потребуется указать имя будущей виртуальной машины (на ваше усмотрение).


Следующий этап выбираем поколение 2.


Следующий этап — выделение оперативной памяти для виртуальной машины. Я оставил по умолчанию 1024, сайт только для меня одного и мне хватает. Отметка «Использовать динамическую память» оставил по умолчанию, включенной.


Следующий этап — указываю ранее созданную внешнюю сеть, т.к. виртуальную машину переустанавливал 2 раза, то внешнюю сеть создал в первый раз.


Следующий этап — подключение виртуального жесткого диска. Здесь нужно указать размер создаваемого диска, мне хватает 30 Гб, если указать минимально 20 Гб, то после установки сервера вам будет доступно около 3,5 Гб свободного места на диске.


Следующий этап — установить пункт «Установить операционную систему с загрузочного компакт-диска или DVD», нужно нажать обзор и выбрать ранее скачанный файл образа ISO с дистрибутивом. Скачать нужно с официального сайта https://ubuntu.com/download/server


Вот и все: вам покажут сводку по виртуальной машине, а по нажатию кнопки «Готово» она будет создано и появится в списке виртуальных машин диспетчера Hyper-V.


Установка дистрибутива Ubuntu server


4. Установка Ubuntu server (в моем случае последняя версия 24.04 LTS) Для того, чтобы начать установку Ubuntu server необходимо нажать на имя виртуальной машины и перейти в параметры.


Выбрать там пункт безопасность, в этой вкладке снять чекбокс "включить безопасную загрузку".


После этого можно запустить созданную виртуальную машину, вы можете просто дважды кликнуть по ней в списке диспетчера Hyper-V, а в окне подключения к виртуальной машине нажать кнопку «Пуск».
- Далее система предложит установить сервер, это самый верхний пункт, нажимаем "Enter".
- Далее выбираем язык, я выбрал English. Особо ни на что не влияет, переводить можно через камеру смартфона.


- Далее может предложить обновление программы, нажимаем "Update", у меня этого пункта не было.


- Далее указываем раскладку клавиатуры английская. Русская бесполезна, т.к. команды все будут через командную строку на английском языке.


- Далее по умолчанию крестик стоит на Ubuntu Server, жмем "Done".


- Далее система назначит локальный IP адрес, можно согласиться и жать "Done".


Но т.к. я уже переустанавливал систему и мой сайт и мои устройства были настроены на определенный локальный IP, для меня было важно указать свой статический IP. Для этого жмем на "ens33 eth - ", выбираем в настройках Edit IPv4, находим пункт manual


Указываем данные:
Subnet: 192.168.0.0/24
Address: 192.168.0.222 - это ваш жалаемый локальный IP адрес
Gateway: 192.168.0.1
Name servers: 8.8.8.8, 8.8.4.4
Serch domians: здесь ничего не пишем
жмем "save"


- Далее жмем "Done".


- Далее жмем "Done".


- Далее указываем свои данные:
Your name: указываем имя (нигде больше не будет встречаться)
Your server's name: указываем имя сервера например ubserver
Pick a username: указываем своё имя (суперпользователя)
CHose password: указываем пароль
Confirm your password: подтверждаем свой пароль
жмем "Done"
Желательно запомнить имя (суперпользователя) и пароль, очень часто нужно будет их вводить.


- Далее ставим крестик на Install OpenSSH server и жмем "Done"


- Далее спускаемся вниз и жмем "Done"


Начался процесс установки сервера. Первый раз установка была очень долгой, примерно 2-3 часа, может был глюк. В следующий раз установка занимала минут 5.
После того как вверху будет написано "Install complete!" можно внизу нажать "Reboot now".


После появится сообщение о размонтировании установочного диска (скорее всего с ошибкой), просто жмем "Enter".
На этом процесс установки завершен.
Система предложит ввести имя (суперпользователя) и пароль (пароль при вводе не отображается вообще). Подтверждаем нажатием "Enter"


Установка Proftpd


5. В консоли вводим команду обновить:
sudo apt update Это проверка наличия обновлений, если есть пакеты, то следующим шагом сделаем апгрейд, если пакетов нет, пропускаем этот шаг:
sudo apt upgrade Далее вводим команду инсталяции ftp сервера:
sudo apt install proftpd-basic Далее на компьютер, с которого будем удаленно заходить на серевер устанавливаем Total Commander
Указываем в программе Total Commander локальный IP address, имя (суперпользователя) и пароль. Нажимаем соединиться. После этого должны оказаться на сервере в папке 0:/home/ваше_имя/
Теперь можно просматривать все каталоги Ubuntu server, но скачивать, изменять и удалять получится не всё, права доступа пользователя не настроены.


Установка Apache


6. В консоли вводим команду:
sudo apt install apache2 Apache создет папку для размещения сайта по пути: /var/www/html/.
Далее необходимо установить права доступа на все, что будет находиться в папке html/, т.к. уже имеющийся файл index.html удалить или изменить нельзя.
Сначало можно посмотреть установленные права доступа на папки и файлы, вводим команды:
cd /var/www/ Этой командой мы перешли в папку www.
ls -l Этой командой посмотрели установленные права доступа на файлы и папки внутри папки www. Далее установим права с помощью команды:
sudo chmod 777 /var/www/html/ Теперь посмотрим и убедимся, что права доступа изменились на drwxrwxrwx
ls -l После этого можно через FTP закачивать файлы и папки вашего сайта в папку html/


Установка PHP


7. В консоли вводим команду:
sudo apt install php Теперь можно проверить работу вашего сайта с php скриптами. Если сайт еще не готов, созайте в папке html/ файл info.php внутрь файла вставьте код, можно с помощью программы блокнот:

<?php phpinfo();?>

И перейдите в браузере через адресную строку по ссылке, укажите свой локальный IP, который выводит Ubuntu server:
http://192.168.0.111 Если все правильно работает вы должны увидеть примерно следующее:




Установка Mysql


8. В консоли вводим команду:
sudo apt install mysql-server После завершения установки сервер MySQL должен быть запущен автоматически. Вы можете быстро проверить его текущее состояние через systemd:
sudo service mysql status Который должен выдавать результат, подобный следующему:
mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2019-10-08 14:37:38 PDT; 2 weeks 5 days ago Main PID: 2028 (mysqld) Tasks: 28 (limit: 4915) CGroup: /system.slice/mysql.service └─2028 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid Oct 08 14:37:36 db.example.org systemd[1]: Starting MySQL Community Server... Oct 08 14:37:38 db.example.org systemd[1]: Started MySQL Community Server.

Установка phpmyadmin


9. В консоли вводим команду:
sudo apt install phpmyadmin В браузере в адресной строке вводите http://192.168.0.111/phpmyadmin/ ,если увидете форму для заполнения входа в панель phpmyadmin, значит все нормально установилось. В первый раз у меня была ошибка 404


В интернете легко ищется решение, по-моему в консоли сервера прописывается перенос директории.
Но для захода в панель phpmyadmin попрежнему невозможно авторизоваться.
Поэтому есть вариант: Учетная запись debian-sys-maint используется сервисами для взаимодействия с MySQL. Пароль и сокет для подключения задаются в /etc/mysql/debian.cnf. Учетной записью удобно пользоваться для получения доступа тогда, когда с реквизитами root подключиться по ним не удаётся. debian-sys-maint также как root является суперпользователем. Из под debian-sys-maint можно зайти в консоль БД. Посмотреть пароль для пользователя debian-sys-maint можно в файле при помощи консольной команды:
sudo nano /etc/mysql/debian.cnf В строке password = увидете пароль
[client] host = localhost user = debian-sys-maint password = Fae4aeTggfiemei6Ohp socket = /var/run/mysqld/mysqld.sock [mysql_upgrade] user = debian-sys-maint password = Fae4aeTggfiemei6Ohp socket = /var/run/mysqld/mysqld.sock basedir = /usr После чего, вводим его в форму авторизации, заходим в phpmyadmin и при желании там меняем пароль на новый. Так же в админпанели можно создать нового пользователя. Создаем или импортируем базу данных name.sql, если база создалась, то можно пользоваться.


Установка времени


10. Остается только установить новый часовой пояс, если он отличается от вашего. Для того, чтобы посмотреть дату и время вводим консольную команду:
timedatectl

Если Local time отличается, то вводим команду для смены часового пояса на Московское время:
sudo timedatectl set-timezone Europe/Moscow Далее проверяем внесенные изменения той же командой timedatectl. Если на выводе информации Local time изменился на желаемое:


То перезагружаем сервер и пользуемся. И не забываем ставить большой палец вверх!


Установка SSH и проброс портов


11. Для удаленного управления из ОС Windows 10 необхимо настроить SSH, потому как при установке Ubuntu server мы его инсталировали. В командной строке набираем:
sudo systemctl status ssh Появляется сообщение:


Необходимо, что бы были зеленые записи Active: active (runing) и ssh.service; enable;. В противном случае придется установить ssh-server:
sudo apt install openssh-server И подключить ssh:
sudo systemctl enable ssh.service Убедимся что ssh работает командой:
sudo systemctl status ssh Еще можем сделать рестарт командой:
sudo systemctl restart ssh Теперь на удаленном компьютере открываем Windows PowerShell, вводим команду:
ssh username@192.168.0.111 -p 22 username - ваше имя суперпользователя ubuntu server, -p 22 - номер порта, по умолчанию 22. Либо:
ssh username@192.168.0.111 Далее система предложит ввести пароль, после ввода пароля вы окажитесь в командной строке ubuntu server.
Если вдруг возникает ошибка типа "warning remote host identification has changed", значит была переустановка системы виртуальной машины и ключи хоста поменялись, о чем и предупреждает powershell. Удаляем файл known_hosts, расположенный по адресу C:\Users\youruser\.ssh\, который находится на компьютере, с которого хотите осуществить удаленный доступ.

Привязка доменного имени maksiki.ru к IP адресу. Для начала включаем модуль Apache для виртуальных хостов, вводим команду:
sudo nano /etc/apache2/sites-available/maksiki.ru.conf Замените maksiki.ru своим собственным доменным именем. В файл вставляем или печатаем следующее:
<VirtualHost *:80> ServerName maksiki.ru DocumentRoot /var/www/maksiki.ru Alias /maksiki.ru "/var/www/maksiki.ru" <Directory "/var/www/maksiki.ru"> Options None AllowOverride None Order allow,deny Allow from all </Directory> </VirtualHost> Путь /var/www/maksiki.ru указывает, где будут находиться файлы вашего сайта (index.php). Далее сохраняем файл и выходим из редактора. Потом включаем созданный файл, выполнив следующую команду:
sudo a2ensite maksiki.ru.conf Далее производим рестарт apache командой:
sudo systemctl restart apache2 Далее открываем админ панель своего роутера через командную строку браузера 192.168.0.1. Находим пункт переадрессация портов. Добавляем правило: виртуальной машине с локальным адресом 192.168.0.111 назначаем с внешнего порта 80 адресацию на внутренний порт 80. Пеперь, при условии, что домен куплен, можно ввести его в адрессной строке браузера и зайти на свой сайт. Не забываем изменить DNS записи в личном кабинете регистратора, у которого вы приобрели доменное имя. Установить А-записи для домена:


Изменениям потребуется 15-30 минут на то, чтобы вступить в силу.


Установка SSMTP и настройка


12. В консоли вводим команду на установку:
sudo apt-get install ssmtp Настроим ssmtp, отредактировав его конфигурационный файл. Откройте файл конфигурации следующей командой:
sudo nano /etc/ssmtp/ssmtp.conf В этом файле внесите необходимые изменения, как показано ниже:
# Адрес отправителя root=maksimus12345@yandex.ru # Домен для исходящей почты rewriteDomain=yandex.ru # SMTP-сервер Яндекса и порт mailhub=smtp.yandex.ru:465 # Имя вашего сервера hostname=ubserver-max # Аутентификация на сервере Яндекса AuthUser=maksimus12345@yandex.ru AuthPass=ХХХХХХХХХХХХХХ # Разрешить пользователям изменять поле "От кого" FromLineOverride=NO # Включить шифрование UseTLS=YES AuthMethod=LOGIN Пытаемся отправить почту
echo "TEST MAIL" | ssmtp -v -s maksimus12345@yandex.ru Получаем ошибку аутентификации
sendmail: 553 5.7.1 Sender address rejected: not owned by auth user. Необходимо прописать алиас. Алиасы прописываются для каждого локального пользователя. Открываем файл:
sudo nano /etc/ssmtp/revaliases Убираем из него все и вставляем следующее
USER:maksimus12345@yandex.ru:smtp.yandex.ru:465 root:maksimus12345@yandex.ru:smtp.yandex.ru:465 www-data:maksimus12345@yandex.ru:smtp.yandex.ru:465 Вместо USER указываем суперпользователя системы или другого ранее созданного пользователя, потом ваша реальная почта, потом smtp для Яндекса, для других почтовых клиентов ищите в интернете и подставляйте (порт 465). С именем USER на почту будут приходить сообщения из UBUNTU SERVER, с именем www-data с сайта из php скрипта, вот пример рабочего скрипта (данный скрипт скопируйте в любой файл, например 1.php и зайдите на него из браузера)(угловые скобки пропишите пожалуйста):
?php $to = "maksimus12345@yandex.ru"; $subject = "Тест с главной страницы"; $message = 'Это просто тест'; mail ($to, $subject, $message); ? Чтобы на почту приходило сообщение от пользователя системы необходимо отредактировать файл envvars, вводим команду:
sudo nano /etc/apache2/envvars В файле находим и редактируем 2 строчки:
export APACHE_RUN_USER=www-data export APACHE_RUN_GROUP=www-data Исправляем их на (=USER это пользователь системы):
export APACHE_RUN_USER=USER export APACHE_RUN_GROUP=USER

Удаление программ


Команда на проверку установленной версии php
sudo php -v Команда на удаление php
sudo apt-get remove php8.3* sudo apt purge php Команда на удаление phpmyadmin
sudo apt remove phpmyadmin sudo apt-get purge phpmyadmin sudo rm -rf /usr/share/phpmyadmin sudo rm /etc/apache2/conf-available/phpmyadmin.conf sudo a2disconf phpmyadmin Команда на удаление mysql
sudo apt remove mysql-server mysql-client sudo apt purge mysql-server mysql-client sudo rm -rf /etc/mysql sudo rm -rf /var/lib/mysql dpkg -l | grep -i mysql Команда на удаление Apache
sudo service apache2 stop sudo apt remove apache2 sudo apt purge apache2 sudo apt-get purge apache2 apache2-utils apache2.2-bin apache2-common sudo rm -rf /etc/apache2 Команда на удаление Proftpd
sudo systemctl stop proftpd sudo apt-get purge proftpd-basic Команда на удаление SSMTP
sudo apt remove ssmtp sudo apt autoclean && sudo apt autoremove sudo apt-get purge ssmtp Касательно многих программ: если вы вручную изменили или установили материал, apt может его не удалить. Проверьте, что осталось - whereis "приложение"
whereis apache2 И потом вручную удалить sudo rm -rf указываем путь до папки или файла
sudo rm -rf /usr/share/phpmyadmin

Дополнения


Обязательно (можно через Total Commander) ставим права доступа на файлы, которые будут перезаписываться не ниже = 766.

Изменить владельца директории (папки) выполните команду:
sudo chown –R nameuser /folder/folder/ваша_папка Через сутки после установки сервера у меня перестали загружаться файлы с таблицами .sql. phpmyadmin пишет: "Операция импорта невозможна. Причины: не выбран импортируемый файл; размер импортируемого файла превышает максимально допустимый, заданный в настройках PHP". Всё просто, необходимо сменить права папки по пути:/var/lib/phpmyadmin/tmp на 777, у меня стояли 755, для этого выполните команду:
sudo chmod 777 /var/lib/phpmyadmin/tmp Далее прилетело: "$Cfg['TempDir'] (/var/lib/phpmyadmin/tmp/) недоступен. Из-за этого phpMyAdmin не может кэшировать шаблоны и будет медленным", для этого выполните команду:
sudo chmod 777 -R /var/lib/phpmyadmin/tmp/twig После этого сообщение о предупреждении пропало, но до этого я еще сделал правки в файле конфигурации. Выполните команду:
sudo nano /etc/phpmyadmin/config.inc.php В этом файле допишите строку $Cfg['TempDir'] = '/var/lib/phpmyadmin/tmp/';. Должно выглядеть так:
$cfg['UploadDir'] = ''; $cfg['SaveDir'] = ''; $Cfg['TempDir'] = '/var/lib/phpmyadmin/tmp/'; Еще назначал пользователя. Выполните команду:
sudo chown -R www-data:www-data /var/lib/phpmyadmin/tmp/twig И тоже самое с папкой tmp. Выполните команду:
sudo chown www-data:www-data /var/lib/phpmyadmin/tmp/ sudo chmod 777 /var/lib/phpmyadmin/tmp/ Потом были еще похожие ошибки, в итоге удалил вложенные папки в папку twig и назначил на эту папку владельцем суперпользователя сисмемы, которого указал изначально при установке сервера (13.09.2024).

Включил через phpmyadmin ведение логово медленных запросов (по умолчанию было OFF), перейти во вкладку Сервер: localhost, далее Переменные и в поиске Содержит слово: ввести slow query log:
slow query log = ON

Установил время при превышении которого записываются данные в логфайл (по умолчанию было 10):
long query time = 2.000000 Расположение логфайла можно поменять (по умолчанию /var/lib/mysql/ubserver-max-slow.log):
slow query log file = /var/lib/mysql/ubserver-max-slow.log

к началу статьи


Смотрите также:
Ардуино часть_2

Комментарии

Добавить комментарий



Яндекс.Метрика 10
© Все права защищены. Распространение и копирование запрещено. Разработано Maksimus. 2011г.