Настройка своего VDS на Linux для размещения бота
Сегодня мы подробно разберём настройку своего личного VDS на Linux. Мы будем подробно рассматривать и приводить примеры на дистрибутивах — Ubuntu 16.04 и Debian 8. Как известно, Ubuntu из семейства Debian, по этому отличая будут минимальными.
Другие темы курса:
1. Введение в создание ботов. Обзор инструментов2. Обзор Callback api и разработка простого бота на PHP
3. Обзор LongPoll api и разработка простого бота на PHP
4. Обзор Streaming api и работа с ним
5. Создание простого бота с кнопками для бесед и сообщества на PHP
- Нестандартное использование кнопок
6. Скрипт для приема внутренних оплат в боте на Яндекс.Деньги
7. Разработка игрового бота для сообщества и бесед с возможностью доната
8. Разработка бота для администрирования бесед- Переводим голос в текст
- Переводим текст в голос
9. Обзор и разбор всех методов авторизации в ВК
10. Создание своего приложения в ВК
11. Подключение iframe ВК на сайт
12. Разработка бота с игрой Морской бой
13. Разработка бота с web админкой
Оглавление 1) Подготовка 2) Подключение по SSH
3) Файрвол (брандмауэр)
4) Веб сервер (Apache2 + php7.3) 4.1) Установка php7.3 4.2) Установка и настройка Apache2
5) База данных (MySQL + phpmyadmin) 5.1) Установка и настройка базы данных MySQL 5.2) Установка и настройка phpmyadmin
6) FTP сервер (vsFTPd)
Подготовка
Для начала, нужно приобрести, собственно VDS. Мы, вот уже несколько лет, покупаем хостинг у VDS.sh, и будем показывать на его примере. Ну тут совсем всё просто.
1) Регистрируемся, активируем аккаунт и переходим в панель управления 2) Выбираем вкладку «Виртуальные сервера», выбираем «Заказать»
3) Далее выбираем понравившийся тариф, в качестве OS выбираем Ubuntu 16.04 или Debian 8. Оплачиваем.
P.S. Для бота или сайта, посетителей на 5к, хватит даже самого бомжарского дешёвого сервера.
После всех этих действий, на вашу почту, указанную при регистрации должно прийти письмо следующего содержания:тут под цифрой 1 — данные для подключения к серверу (по ssh) для его настройки. 2 — данные для входа в панель управления серверами.
Если вы по какой-то причине не получили такое письмо, ничего страшного:
Переходим в панель управления VDS (где заказывали сервер), вкладка «Виртуальные сервера», выбираем нужный сервер и нажимаем «Инструкция»Как видим, открывается та же информация, что и приходит на почту:На этом подготовка завершена
И так, приступим
Для начала, давайте подключимся к серверу по ssh. Для тех, у кого Linux — ничего не нужно, ssh клиент уже предустановлен «из коробки», у тех, у кого Windows — придётся ставить какой нибудь ssh клиент, например PuTTY. Мы будем производить настройку с компьютера, на котором OS — Linux.
Нам понадобятся данные для входа:Если у вас Windows — вы должны просто вписать все эти данные в соответствующие поля в PuTTY. В Linux же, выполнить следующую команду:
ssh root@ваш_ip_сервера
Сервер запросит пароль, введите его и нажмите Enter
Внимание! Пароль при вводе не отображается
Теперь вы должны обновить репозитории и пакеты, для этого выполните команду:
apt-get update && apt-get upgrade -y
Теперь, стоит рассказать как работать в консольном редакторе VIM. Он предустановлен в системе, и достаточно удобный.
После открытия в нём файла, надо нажать на «i» (переход в режим редактирования), после изменения файла, нужно нажать на Esc, затем :wq (это команда редактора, обозначающая w — Write, записать и q — Quit, покинуть, т. е. Записать и выйти)
Если у вас не подсвечивается синтаксис (текст конфигурационных файлов чёрно-белый), то стоит включить подсветку синтаксиса, для этого нужно открыть конфиг vim-а (через тот же vim) и раскомментировать там строку syntax on (убрать перед ней знак ковычки ")
vim /etc/vim/vimrc
Затем нажимаем Esc, что-бы выйти из режима ввода, :wq и Enter (см. выше)
Готово, теперь vim будет подсвечивать синтаксис, так гораздо удобнее.
Установка и настройка файрвола (брандмауэра)
Мы будем использовать файрвол — UFW
Для его установки достаточно выполнить:
apt-get install ufw -y
По умолчанию, он блокирует все входящие соединения и разрешает все исходящие, приступим к его настройки.
Разрешаем подключение к ssh:
ufw allow ssh
и активируем UFW:
ufw enable
Теперь можно посмотреть, какие порты открыты:
ufw status
Как видим, открыт 22 порт (это порт для доступа к ssh).
Для того, что-бы удалить правило (например, закрыть ненужный порт), нужно выполнить следующую команду:
ufw delete номер_порта
Внимание! Номер порта — это именно порядковый номер, при выполнении команды ufw status, а не сам порт!
Установка и настройка Веб сервера
Мы будем использовать веб сервер — Apache2.
Для начала, нужно добавить в список репозиториев ещё один, для того, что-бы установить последнюю на данный момент версию php (7.3)Установка PHP7.3
Для Ubuntu 16.04 и Ubuntu 18.04
Нужно выполнить следующие команды
apt-get install software-properties-common -y && add-apt-repository ppa:ondrej/php
В процессе добавления репозитория нужно будет нажать Enter для подтверждения
Для Debian 8 и Debian 9
apt -y install lsb-release apt-transport-https ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php7.3.list
Готово, репозитории добавлены, теперь нужно обновить список репозиторий:
apt-get update
На этом настройка репозиторий завершена, приступим к установке
Вот команда на установку apache2 и php7.3 со всеми нужными модулями:
apt-get install php7.3 php7.3-curl php7.3-mbstring php7.3-mysql php7.3-json -y
Теперь, давайте разберёмся что всё это значит:
php7.3 — Это собственно php
php7.3-curl — модуль Curl (нужен для отправки картинок ботом)
php7.3-mbstring — модуль для поддержки русских текстов
php7.3-mysql — модуль для работы php с MySQL
php7.3-json — модуль работы с JSON
libapache2-mod-php7.3 — модуль apache2 для работы php на сервереУстановка Apache2
apt-get install apache2 libapache2-mod-php7.3 -y
a2enmod php7.3
Теперь, когда всё установили, надо не забыть открыть порт веб сервера в файрволе, это как правило 80-ый порт:
ufw allow 80
Теперь перезагружаем веб сервер:
service apache2 restart
Теперь, когда всё установили и всё в принципе должно работать, можно проверить, работают ли все модули и веб сервер. Для этого надо выполнить команду:
vim /var/www/html/test.php
создастся новый файл в директории веб сервера, переходим в режим редактирования (клавиша i) и пишем туда следующее:
<?php
echo phpinfo();
?>
Нажимаем Esc и сохраняем файл (:wq и Enter)
Готово, теперь открываем браузер и переходим по адресу:
http://ip_адрес_сервера/test.php
Должна открыться страница вроде такой:Теперь через ctrl+f ищем все эти модули, должно быть как-то вот так:И так далее с mbstring, mysqli. Если эти заголовки есть, значит модули активированы и работают, если нет, значит можно попробовать переустановить их:
apt-get purge php7.3-название && apt-get autoremove
apt-get install php7.3-название
Или попробовать активировать модуль:
phpenmod название
Например:
phpenmod curl
И перезагрузить веб сервер:
service apache2 restart
Не забудьте после тестов удалить тестовый файл:
rm /var/www/html/test.php
В принципе, настройка веб сервера на этом завершена, директория веб сервера находится тут: /var/www/html/ (это значит, что все файлы, которые находятся по этому пути будут доступны по адресу: http://ваш_ip_сервера/)
Установка и настройка базы данных
Устанавливаем mysql сервер и phpmyadmin для работы с базой данных через веб интерфейсУстановка и настройка MySQL
apt-get install mysql-server mysql-client -y
Во время установки, должно появится диалоговое окно создания пользователя root базы данных, там нужно придумать пароль root пользователя, желательно по сложнее, т. к. у поьзователя root будут все права на все базы и таблицыПовторяем парольТут нажимаем пробел, таб, Enter, что-бы выбрать веб сервер apache2установка и настройка phpmyadmin
apt-get install phpmyadmin -y
Затем должно быть такое диалоговое окно:Это значит, что MySQL сервер уже установился и настала очередь установки phpmyadmin. Он спрашивает, настроить ли его сейчас, через относительно понятный интерфейс, или может лучше отложить настройку и настроить потом, через конфиги. Если вы мазохист, можете выбрать No =). Выбираем Yes. И приступаем к созданию базы данных для корректной работы phpmyadmin.
В некоторых случаях, открывается интерфейс, запрашивающий пароль пользователя rootВводим пароль и продолжаем.
В следующем интерфейсе нужно ввести пароль пользователя phpmyadmin, его можно не запоминать, но лучше запомнить, и желательно, что-бы он отличался от пароля пользователя root.Повторяем пароль в следующем интерфейсе и готово.
Теперь, можно проверить нашу только что созданную базу данных, для этого, переходим по такому адресу:
http://ваш_ip_адрес_сервера/phpmyadmin/
Должен открыться phpmyadmin:Вводим логин root и пароль пользователя root, и попадаем в панель управления базами данных. На этом настройка Базы данных и phpmyadmin завершена.
Установка и настройка FTP сервера
Дня начала, нужно установить vsftpd
apt-get install vsftpd -y
Теперь приступим к настройке.
FTP сервер можно настраивать по разному, но мы рекомендуем настроить его так, что-бы каждый виртуальный хост имел своего пользователя, и у каждого поьзователя была своя директория и свой доступ по FTP. Это самый безопасный вариант, т. к. даже если будет какой-то вредоностный скрипт на одном из сайтов, или кто-то взломает одного из пользователей, он не сможет расфигачить всё к чертям что-то сделать с другими виртуальными хостами (сайтами). В этой статье мы покажем только как настроить один сайт на сервере, но в скором времени напишем статью, как сделать несколько сайтов, получить бесплатные домены, бесплатный сертификат, и сделать для каждого сайта свой FTP аккаунт.
И так, приступим.
Файл конфигурации vsftpd находится тут: /etc/vsftpd.conf
И как вы уже поняли, именно с ним мы будем работать.
Открываем его:vim /etc/vsftpd.conf
Теперь нужно найти и изменить строку:
pam_service_name=vsftpd
на
pam_service_name=ftp
И добавить вот эти строки в самый конец файла:
write_enable=YES
local_umask=002
listen_port=21
ftp_data_port=20
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_min_port=44000
pasv_max_port=45000
На этом, работа с конфигом закончена, сохраняем файл и выходим (Esc, :wq, Enter)
Теперь нужно создать пользователя, который будет работать с FTP файлами
useradd -m -G www-data ftp_user
Ключ -m значит — создать домашнюю папку пользователя в /home/
-G — добавить дополнительный группы, в данном случае, это группа www-data — группа веб сервера, что-бы пользователь имел доступ к файлам веб сервера
ftp_user — имя нового пользователя
Теперь, стоит задать пароль новому пользователю:
passwd ftp_user
После чего, будет запрошен пароль и подтверждение пароля. (Пароль при вводе не отображается)
Теперь веб сервер надо добавить в группу ftp_user, что-бы он имел доступ к файлам, которые будет загружать этот пользователь:
usermod www-data -G ftp_user
Готово, теперь нужно создать нужные папки в домашней директории FTP пользователя.
Создаём папки:
mkdir /home/ftp_user/public_html
mkdir /home/ftp_user/logs
Даём пользователю ftp_user полные права на эти папки:
chown ftp_user:ftp_user -R /home/ftp_user/*
Теперь нужно настроить веб сервер, а точнее, заставить его работать с теми папками, которые нам нужны, для этого, нужно создать символическую ссылку на папки ftp_user.
Для начала удаляем уже существующую папку веб сервера:
rm -r /var/www/html
Теперь создаём ссылку:
ln -s /home/ftp_user/public_html/ /var/www/html
Теперь нужно настроить логирование, для этого нужно отредактировать файл виртуального хоста по умолчанию:
vim /etc/apache2/sites-available/000-default.conf
И изменяем там
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
на
ErrorLog /home/ftp_user/error.log
CustomLog /home/ftp_user/access.log combined
Должно получиться примерно вот так:Готово, теперь перезапускаем веб сервер и FTP сервер:
service apache2 restart
service vsftpd restart
И заключительный этап этой настройки — открываем нужные порты в файрволе
ufw allow ftp
Теперь можно проверять, подключаемся к FTP (мы будем использовать кроссплатформенный клиент — FileZilla)1 — ip адрес сервера
2 — логин
3 — пароль
Нажимаем Быстрое соединение
Готово, теперь открываем папку public_html и заливаем туда файлы…
Мы, что-бы протестировать, зальём туда файл следующего содержания:Готово, теперь давайте проверим, он должен быть доступен по следующему адресу:http://ваш_ip_сервера/hi.php
Как видим, всё работает
На этом всё, спасибо за внимание =)Подписывайтесь на нас в ВК, Одноклассники, Facebook, Twitter, Telegram
Чат Вконтакте для общения по разработке ботов: https://vk.me/join/AJQ1dzQRUQxtfd7zSm4STOmt
Поддержите курс монеткой:
Сбер - 2202 2012 7265 2211
Яндекс.Деньги - 410014638432302
Bitcoin кошелек - 1DwRVf5gTqaWqJ65qQHc4nHFVBfRH3xSJ1