Основано на реальных событиях июня 2024 года. Ни один компьютер не пострадал.
Все началось с того, что у меня был сайт на бесплатном хостинге Hostiman. На него я отправлял данные с датчиков. И не в первый раз у меня останавливали сайт за превышение нагрузки (число поступающих запросов). Мне надоели бесконечные проблемы со службой поддержки и я решил уйти с бесплатных хостингов. До этого я парковался еще на других бесплатных хостингах Beget, Hostiman, Free Hosting, Hostinger, 000WebHost но всегда было что-то неприятное: бесплатные услуги неожиданно заканчивались; по условиям договора требовали размещать положительные отзывы; по непонятным причинам сайт переставал работать; FTP не всегда работало; переставали работать скрипты; не хватало места на диске (отводили всего 100Мб). У каждого свое и вечные неудобства.
Поэтому я выбрал нет топ в качестве железа для сервера. Заказал из Китая за 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 своим собственным доменным именем. В файл вставляем или печатаем следующее:
ServerName maksiki.ru
DocumentRoot /var/www/maksiki.ru
Alias /maksiki.ru "/var/www/maksiki.ru"
Options None
AllowOverride None
Order allow,deny
Allow from all
Путь /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 phpmyadminsudo apt-get purge phpmyadminsudo rm -rf /usr/share/phpmyadminsudo rm /etc/apache2/conf-available/phpmyadmin.confsudo a2disconf phpmyadmin
Команда на удаление mysql sudo apt remove mysql-server mysql-clientsudo apt purge mysql-server mysql-clientsudo rm -rf /etc/mysqlsudo rm -rf /var/lib/mysqldpkg -l | grep -i mysql
Команда на удаление Apache sudo service apache2 stopsudo apt remove apache2sudo apt purge apache2sudo apt-get purge apache2 apache2-utils apache2.2-bin apache2-commonsudo rm -rf /etc/apache2
Команда на удаление Proftpd sudo systemctl stop proftpdsudo apt-get purge proftpd-basic
Команда на удаление SSMTP sudo apt remove ssmtpsudo apt autoclean && sudo apt autoremovesudo 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