Настройка сервера Ubunty 22.04 (FTP, Apache2, MySQL, Python)

Поскольку материал рассчитан на новичков, делающих первые шаги в программировании на 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

ввод пароля в ubunty 22.04

Теперь вводим пароль. Может показаться, что сервер завис, но это не так! В целях безопасности, при вводе пароля мы не увидим ровным счётом ничего. Любое наше нажатие кроме клавиши 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 status 80 и 433

то выполняем команды:

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)

Статус сервера apache2

Также пробуем открыть сервак введя 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
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 нашего сервера, а также логин и пароль пользователя, которые создавали на предыдущих шагах, жмём "Соединиться".

Подключение к серверу Ubunty 22.04 по SFTP

Если всё сделали правильно, то отобразятся файлы сервера.

Шаг 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. т.к без неё вы не сможете открывать свой сайт в браузере.

Рейтинг: 4.62

2023-11-13 / / 0 комментариев / Про кодинг и сервер / , , ,