Поскольку материал рассчитан на новичков, делающих первые шаги в программировании на Python и настройке собственного сервера, то некоторые вещи я буду значительно упрощать. Весь процесс будет состоять из 5 основных шагов:
- Шаг 1. Подключение к консоли сервера;
- Шаг 2. Настройка Apache на Ubuntu;
- Шаг 3. Настройка MySQL на Ubuntu;
- Шаг 4. Настройка FTP на Ubunty;
- Шаг 5. Настройка Python на Ubunty.
Шаг 1. Подключение к консоли сервера
Существует 3 основных способа подключиться к консоли сервера:
- Через сайт вашего облачного хостера;
- По VNC;
- По SSH (самый удобный).
Первый способ не требует установки дополнительного софта, его мы рассматривать не будем.
Установка TightVNC Viewer. Подключение по VNC
Существует несколько программ для работы с VNC, лично я пользуюсь TightVNC Viewer. Скачать её можно с официального сайта. На странице установщика выбираем режим установки Custom и выбираем только компонент TightVNC Viewer. Второй компонент нам НЕ нужен т.к он для того, чтобы нашим компом нужно было управлять извне, а оно нам надо?))
Главный минус подключения по VNC в том, что в половине (а то и больше) случаев вы не сможете пользоваться буфером обмена. Это очень неудобно, когда копируешь в консоль заранее заготовленные команды (например из данной инструкции). Обычно все подключаются по SSH.
После подключения к консоли сервера при первом запуске произойдёт установка и загрузка всех компонентов. Терпеливо ждём записи Installation finished. No error reported. Нажимаем Enter. Появляется предложение ввести login. Вводим root, жмём Enter
Теперь вводим пароль. Может показаться, что сервер завис, но это не так! В целях безопасности, при вводе пароля мы не увидим ровным счётом ничего. Любое наше нажатие кроме клавиши Enter будет сопровождаться ничем. В общем, "в слепую" набираем пароль, нажимаем Enter. Если ввели правильно, то попадём куда надо.
Подключение по SSH из Windoiws 11
В 11-й винде уже установлен клиент SSH, достаточно открыть терминал (WIN + R) и ввести:
ssh root@ip_вашего_сервера
Далее нам предложат ввести пароль. Обратите вниманиче, что в целях безопасности при вводе пароля текст не виден. Это нормально. Просто набираем и жмём Ввод.
Решение ошибки WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED
Если в процессе работы вы получили ошибку WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED, то выполните в консоли следующее:
cd ~
rm .ssh/known_hosts
И после повторите подключение ssh root@ip_вашего_сервера
Проверка обновлений на сервере Ubuntu
Начнём с проверки и установки обновлений для того, что уже установлено на сервере при помощи инструмента Ubuntu Advanced Packaging Tool. Для этого последовательно выполняем команды:
sudo apt update
sudo apt -y upgrade
Шаг 2. Настройка Apache на Ubuntu
Для начала установим Апач командой:
sudo apt install apache2
Также рекомендую сразу установить пакет полезных утилит для Апача, в число которых, например, входит утилита htpasswd, которая позволяет создать файл паролей, с помощью которого Apache будет выполнять аутентификацию пользователей.
sudo apt install apache2-utils
После завершения установки нужно добавить веб-сервер в автозагрузку, чтобы не запускать его вручную после перезапуска и/или физического выключения сервера:
sudo systemctl enable apache2
Далее проверим, что у нас открыты порты 80 и 433.
sudo ufw status
Если система ответит: Status: inactive, то нужно будет сперва выполнить команду:
sudo ufw enable
а только после запросить статус. Если портов нет,
то выполняем команды:
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 433/tcp
sudo ufw disable
sudo ufw enable
sudo ufw status
Альтернативный путь открытия портов
Сначала можно запросить список стандартных профилей:
ufw app list
Вероятнее всего система выдаст такие значения:
- Apache: этот профиль открывает только порт 80 (нормальный веб-трафик без шифрования)
- Apache Full: этот профиль открывает порт 80 (нормальный веб-трафик без шифрования) и порт 443 (трафик с шифрованием TLS/SSL)
- Apache Secure: этот профиль открывает только порт 443 (трафик с шифрованием TLS/SSL)
Важное замечание: Открывая порты таким способом может обязательно нужно быть уверенными в том, что у вас остаётся открыт 22-й порт. В противном случае, если вы подключаетесь по SSH из терминала Windows 11, то после перезапуска фаервола коннект будет разорван и подключиться к серваку таким способом уже не получится. Придётся использовать VNC-клиент.
А затем выполнить применить одну из стандартных настроек. Например:
sudo ufw allow 'Apache Secure'
Проверка работы Апач 2
Проверяем, что сервер запущен. Для этого выполняем команду:
sudo systemctl status apache2
Должна быть надпись Active: active (running)
Также пробуем открыть сервак введя ip сервера в браузере. Должна появиться примерно такая страница:
Шаг 3. Настройка MySQL на Ubuntu 22.04
Установим MySQL-сервер и MySQL-клиент командой:
sudo apt install mysql-server mysql-client
Если на сервере планируется использовать PHP, то стоит также установить php-mysql и phpMyAdmin, а затем перезагрузить Апач:
sudo apt install php-mysql phpmyadmin
sudo service apache2 restart
Затем запускаем службу MySQL и включаем автозапуск службы MySQL при загрузке системы:
sudo systemctl start mysql
sudo systemctl enable mysql
Далее проверим, что всё работает. Для этого вводим команду:
sudo systemctl status apache2
Если всё ок, то статус будет: Active: active (running).
Создание базы данных из консоли в Апач 2
При необходимости вы можете сразу создать базу данных. В примере я создаю БД для фреймворка Django. Для этого в консоли необходимо ввести:
mysql -u root
И далее в режиме диалога:
mysql> CREATE DATABASE django_db;
mysql> CREATE USER 'django_user'@'localhost' IDENTIFIED BY 'Pa$$word';
mysql> GRANT ALL ON django_db.* TO 'django_user'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> EXIT
где:
django_db - имя базы данных;
django_user - имя пользователя базы данных;
Pa$$word - пароль базы данных.
Шаг 4. Настройка FTP на сервере Ubunty 22.04
Установка vsftpd на Ubunty
Теперь установим прогу для работы с FTP. В процессе установки подтвердим действие нажатием на [Y], когда спросит.
sudo apt install vsftpd
На всякий случай проверим, работает ли vsftpd. Для этого набираем команду:
systemctl status vsftpd
Если написано active - всё хорошо, можно продолжать. Добавим службу vsftpd в автозагрузку.
sudo systemctl enable vsftpd
Настройка конфигурации FTP-сервера Ubunty 22.04
На всякий случай создадим резервную копию файла конфигурации:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.copy
Теперь откроем в редакторе nano командой:
sudo nano /etc/vsftpd.conf
файл конфига и отредактируем следующим образом:
# настраиваем сервера по IPv4:
listen=YES
listen_ipv6=NO
# запрещаем доступ анонимным пользователям:
anonymous_enable=NO
# разрешаем доступ локальным пользователям:
local_enable=YES
# разрешаем пользователям работать с файлами:
write_enable=YES
# назначаем права новым файлам:
local_umask=022
# включаем сообщения для пользователя при входе:
dirmessage_enable=YES
# разрешаем использовать локальное время на сервере:
use_localtime=YES
# включаем логирование операций:
xferlog_enable=YES
# включаем передачу данных по 20 порту:
connect_from_port_20=YES
# прописываем директорию для хранения логов:
xferlog_file=/var/log/vsftpd.log
# задаём формат логов:
xferlog_std_format=YES
# даём доступ пользователям только к своим домашним каталогам:
chroot_local_user=YES
allow_writeable_chroot=YES
# включаем поддержку авторизации PAM:
pam_service_name=vsftpd
# разрешаем вход только пользователям из файла userlist:
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
Сохраняем файл при помощи CTRL+S, а затем закрываем редактор нажав CTRL+X. Формально FTP настроен. Остаётся включить SSL/TLS, иначе подключиться по FTP вряд-ли получится.
Как включить защищённое соединение SSL/TLS
Настройка своего SSL-сертификата не входит в рамки данного урока, потому разберём на примере создания нового самоподписанного сертификата. Для этого:
1. Генерируем сертификат (Примечание: т.к. значения после -keyout и -out у нас совпадают, то на выходе мы получим один файл, который будет хранить в себе одновременно и сам сертификат и ключ):
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
2. Открываем конфигурационный файл vsftpd:
sudo nano /etc/vsftpd.conf
И добавляем / изменяем следующие параметры:
# Пропишем пути к файлу сертификата vsftpd.pem:
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
Включите SSL:
# ssl_enable=YES
Сохраняем файл нажатием CTRL+S и выходим в консоль CTRL+X.
Перезапускаем FTP-сервер:
sudo systemctl restart vsftpd
Готово, мы настроили защищенный ФТП-сервер на Убунту. Но подключиться пока нельзя, надо создать пользователей.
Как создать FTP-пользователей в Ubunty 22.04 и дать им доступ
Если у вас есть существующие пользователи
Необходим указать имена этих пользователей в файле /etc/vsftpd.userlist. Для этого открываем в редакторе nano этот файл:
sudo nano /etc/vsftpd.userlist
и вводим имена пользователей по принципу "один пользователь — одна строка". Сохраняем изменения (CTRL+S) и закрываем редактор (CTRL+X).
Готово, существующие пользователи получили доступ.
Если нужно создать новых пользователей
В консоли, командой useradd создаём нового пользователя:
sudo useradd username
*где username - желаемое имя пользователя.
командой passwd прописываем пароль:
sudo passwd username
Добавляем пользователя в список тех, кому разрешен FTP-доступ. Для этого добавляем его имя в /etc/vsftpd.userlist:
echo "user" | sudo tee -a /etc/vsftpd.userlist
Готово, теперь мы можем подключиться к серверу используя FTP, но прежде настром файрволл.
Как настроить файрволл (брандмауэр) в Ubunty?
Разрешаем FTP-подключения к нашему VPS/VDS серверу. Для этого откройте порты 20, 21, 22, 990 и диапазон 40000-50000 для TCP-подключений последовательным выполнением команд:
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow OpenSSH
sudo ufw allow 990/tcp
sudo ufw allow 40000:50000/tcp
Перезагружаем файрволл:
sudo ufw disable
sudo ufw enable
Проверяем статус UFW:
sudo ufw status
Всё хорошо. Теперь, наконец, можем воспользоваться FileZilla Client.
Подключение при помощи FileZilla
Открываем менеджер сайтов, выбираем в поле "Протокол" - "SFTP - SSH File Transfer Protocol", вводим ip нашего сервера, а также логин и пароль пользователя, которые создавали на предыдущих шагах, жмём "Соединиться".
Если всё сделали правильно, то отобразятся файлы сервера.
Шаг 5. Настройка Python на Ubunty 22.04
По умолчанию в Ubuntu Python уже установлен, проверить его версию можно набрав
python3 -V
Но этого явно мало. Для управления программными пакетами Python нам понадобится инструмент pip. Устанавливается от следующим образом:
sudo apt install -y python3-pip
После этого нам доступы команды типа "pip3 install package_name", *где package_name - имя дополнительного пакета для Python.
На этом всё. Наш сервер Apache2 для работы с FTP, MySQL и Python настроен.
Рекомендую также прочитать про то как привязать домен к серверу Ubuntu. т.к без неё вы не сможете открывать свой сайт в браузере.