Как стать автором
Обновить

Как я из телефона сделал сервер для своего бота в телеграме

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров40K

Предыстория

Все началось с того что я написал своего бота и решил его выложить в открытый доступ, а точнее чтобы он работал круглосуточно, но платить деньги за хостинг мне не хотелось. И тогда я вспомнил, что у меня как раз в ящиках залежались старые 2 телефона, можно сказать только один, потому что второй я превратил в кирпич (Неправильно перепрошил). Мой путь поиска программы для установки линукса начался с Termux, но к сожалению он работает только с Android 7+. А телефон на Android 5. Поэтому действенным решением я выбрал UserLAnd.

Характеристики смартфона

  • Название: Meizu m3 Note

  • Модель: M681H

  • Архитиктура процессора: arm64

  • Версия Android: 5.1

  • Версия прошивки: Flyme 6.3.0.0G

Что мы будем делать в этой статье

Установим линукс с веб-интерфейсом (я выбрал Webmin). Настроим веб-сервер с PHP 8.1.

Шаг 1: Установка UserLAnd

  1. Скачиваем приложение с https://userland.tech/ или https://github.com/CypherpunkArmory/UserLAnd.

  2. Устанавливаем и даем доступ к файлам.

  3. Выбераем Linux дистрибутив, я выбрал Ubuntu:

https://www.how2shout.com/how-to/how-to-install-ubuntu-linux-on-android-without-root.html
https://www.how2shout.com/how-to/how-to-install-ubuntu-linux-on-android-without-root.html
  1. Устанавливаем пароль и имя. Выбираем тип подключения ssh (Можно другие типы, но мне так удобнее).

https://www.how2shout.com/how-to/how-to-install-ubuntu-linux-on-android-without-root.html
https://www.how2shout.com/how-to/how-to-install-ubuntu-linux-on-android-without-root.html
  1. Ждем установки, оно само перекинет нас к терминалу.

https://www.how2shout.com/how-to/how-to-install-ubuntu-linux-on-android-without-root.html
https://www.how2shout.com/how-to/how-to-install-ubuntu-linux-on-android-without-root.html
  1. Все, линукс установлен, но давайте еще установим несколько пакетов для работы.

    1. Обновим установленые пакеты:

sudo apt update
sudo apt upgrade

2. Установим net-tools, чтобы у нас работала команда ifconfig.

sudo apt install net-tools dialog

Шаг 2: Установка Webmin

Webmin — программный комплекс, позволяющий администрировать операционную систему через веб-интерфейс, в большинстве случаев, позволяя обойтись без использования командной строки и запоминания системных команд и их параметров.

# Скачиваем в нашу директорию консольный установщик
curl -o setup-repos.sh https://raw.githubusercontent.com/webmin/webmin/master/setup-repos.sh

# Если возникает ошибка с сертификатами устанавливаем пакет ca-certificates
sudo apt-get install -y ca-certificates

# Запускаем файл от имени администрации (не обязательно) везде ставим [y]
sudo chmod +x ./setup-repos.sh
sudo ./setup-repos.sh

# После конца скачивания необходимых компонентов устанавливаем 
sudo apt-get install webmin --install-recommends

Webmin установлен! Теперь мы можем зайти в веб-интерфейс. Для этого перейдите на http://ip_вашего_устройства:10000 . Для авторизации используйте ваши предыдущие данные. Тут вы можете использовать терминал для удаленного доступа к серверу. Я так и буду делать.

Шаг 3: Устанавливаем веб-сервер

Я выбрал Lighttpd, вместо Apache2, поскольку Apache все время при запуске выдает ошибки. Хотя я не отрицаю, что это я так плохо настроил.

# Устанавливаем пакет lighttpd
sudo apt install lighttpd -y

# Не отходя от терминала устанавливаем все необходимые пакеты для PHP 8.1
sudo apt install -y php8.1-cgi php8.1-cli php8.1-fpm php8.1-curl php8.1-gd php8.1-mysql

Теперь можем создать файл авто-конфигурации, который подключит поддержку php в lighttpd. ВАЖНО: ФАЙЛ, КОТОРЫЙ ПРИВЕДЕН НИЖЕ, МОЖЕТ ВЫЗВАТЬ СИНТАКСИЧЕСКУЮ ОШИБКУ. ЕСЛИ ТАКОВАЯ ЕСТЬ, НАПИШИТЕ В КОМЕНТАРИЯХ К СТАТЬЕ.

Я сохранил этот файл под названием lighttpd-configurator.sh

#!/bin/bash

# Check for superuser privileges
if [ "$EUID" -ne 0 ]; then
  echo "Please run this script as root or using sudo."
  exit 1
fi

# Configure Lighttpd to work with PHP
echo 'server.modules += ( "mod_fastcgi" )' >> /etc/lighttpd/lighttpd.conf
echo 'fastcgi.server = ( ".php" => (('/usr/bin/php-cgi' => ( "bin-path" => "/usr/bin/php-cgi", "socket" => "/var/run/lighttpd/php.socket" ))))' >> /etc/lighttpd/lighttpd.conf

# Restart Lighttpd
sudo service lighttpd restart

# Test PHP
echo '<?php phpinfo(); ?>' > /var/www/html/info.php

# Print a message with the installation summary
echo "Lighttpd and PHP have been installed and configured. You can access the PHP info page at http://your_server_ip/info.php."

Теперь можем запустить с помощью команд:

sudo chmod +x ./lighttpd-configurator.sh
sudo ./lighttpd-configurator.sh

Если вы пробуете подключиться к сайту, а он не отвечает, попробуйте поменять порт и перезагрузить веб сервер. (У меня такое сработало).

Команды для управлениями сервисами

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

sudo apt service имя_сервиса <start, stop, restart>

Так, а как же я бота запустил?

Бот у меня написан на Java. И поэтому я сначала собрал JAR файл на ПК, и потом закинул через файл менеджер, предустановленный в Webmin на сервер. Потом я установил OpenJDK 19 следующими командами:

sudo apt install openjdk-19-jdk openjdk-19-jre

# Для запуска бота использовал
java -jar bot.jar

Концовка

Сразу говорю, не судите строго, поскольку это моя первая статья на Хабре. Если появятся вопросы пишите внизу в комментариях. Этот сервер нельзя рассматривать как готовый и стабильный сервер. Для меня этот сервер годится только для простеньких проектов, а не полномасштабных.

Теги:
Хабы:
Всего голосов 27: ↑26 и ↓1+29
Комментарии59

Публикации

Истории

Работа

DevOps инженер
42 вакансии

Ближайшие события

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань