-32

Как создать девелопер-версию продакшен сервера на linux?

Подскажите пожалуйста, в каком направлении искать и может есть уже какие то готовые решения.


Есть рабочий debian сервер обслуживающий на nginx довольно крупный сайт в обвязке php+mysql. Все кастомное, никаких фреймворков, код раскидан по разным папкам, разные разработчики в разное время придерживались разных подходов к проектированию приложений и сейчас это такой большой "снеговик" сложно управляемый.


Задача.

Облегчить развертывание актуальных версий проекта из множества php приложений или на dev сервере или что еще лучше, чтобы разработчик мог получить полноценную локальную версию копии рабочего сайта со всем серверным окружением под любой клиентской операционной системой. Нужно еще учитывать, что есть конфиденциальные данные пользователей в БД, которые не нужно давать разработчику, дабы не утекли.


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

И довольно много времени уходит на бэкап и развертывание актуального состояния файлов и базы.


Смотрю в сторону  виртуализации и контейнеризации.


Есть идея сделать образ всей системы "на живую". Перекинуть в VirtualBox или Docker (на винде на маке или линукс), но там диски по несколько терабайт, по сети дергать это нереально. Может быть сделать это один раз,  типа базовый образ системы, а потом добавлять только изменения.


Подскажите, кто сталкивался с подобными задачами, как можно это реализовать?

Спасибо)

Дубликаты не найдены

+6

По-моему надо не страдать хуйнёй с образами имеющегося пиздеца "на живую", а привести сначала сервер в нормальное состояние.

раскрыть ветку 3
-1

тоже верно). Но как его привести в такое состояние, когда он уже рабочий?), для этого и нужна копия.


Проекту уже больше 10 лет без фреймворков. А неизбежно даже лучшие фреймворки обрастают мусором и выходят за рамки стандартов со временем

раскрыть ветку 2
+4

Как, как, делать всё заново с нуля или засучивать рукава и расчищать эти авгиевы конюшни. Другого варианта приведения старого легаси-говна в нормальный вид человечество ещё не придумало.

раскрыть ветку 1
+4

Ты сможешь "с нуля" настроить всю эту катавасию на новом "чистом" хосте? (при условии, что всё нужное заранее запаковано/разложено по полочкам вместе с вменяемой инструкцией?)
(скопировать все нужные скрипты/настройки куда надо и т.д.?)
Тогда пиши докерфайл и генери докер-image. Нужные файлы клади прям рядом с докерфайлом. Он будет инструкцией (если посмотреть, он по формату такой и есть), нужные файлы будут лежать рядом и попадут в итоге в финальный докер.

раскрыть ветку 4
-1

Воо! Это уже близко к тому что хотел)...

Да я уже собирал этот проект на ноутбуке, OpenServer, но чтобы он заработал хотябы частично, очень много сил и времени в это вложил.


А можешь помочь за деньги?

Мне просто нужен помощник кто сможет проконсультировать

раскрыть ветку 3
+1

Докерфайл за вас писать не буду )

Но это РЕАЛЬНО элементарный формат.

К примеру - вот кусочек файла, который в проекте, где я работаю, используется для сборки бинарей (ну, не сам файл, а докер, построенный из него в результате выполнения над ним docker build -t) Он реально настолько прост, что я в него (и подобные) подсматриваю просто как в инструкцию, когда надо вспомнить "а что нам там вообще надо?"


```

FROM ubuntu:precise


ENV DEBIAN_FRONTEND noninteractive

RUN apt-get update && apt-get install -y \

libmysqlclient-dev \

libexpat-dev \

libpq-dev \

unixodbc-dev \

flex \

bison \

git \

cmake \

build-essential \

devscripts \

wget \

gawk \

autoconf \

automake \

debhelper

...

```


Это и есть самая элементарная установка "с нуля" - берём убунту заданной версии, в неё ставим конкретные пакеты, которые тоже очевидны прямо из текста.

И вся работа по построению докера - она прямо вот такая. Нет совершенно никаких неопределённостей (тут поставил вот так - не сработало, надо иначе - а вдруг получится). Тут всё детерминировано. Если есть последовательность по установке настройке - тупо пишем строчку за строчкой в файл, получаем после сборки докер, в котором всё будет именно так установлено и настроено.

раскрыть ветку 2
+5
Нужно еще учитывать, что есть конфиденциальные данные пользователей в БД, которые не нужно давать разработчику

Сомнительно себе это представляю, только если создать БД с тестовыми данными.

А так это всё напоминает анекдот про уровни доступа, а самый высокий уровень оказывается у уборщицы.

раскрыть ветку 1
0

данные с базы уже потом настроить. Первично, чтобы вообще это все заработало. А за совет спасибо)

+2

Docker + Gitlab CI/CD это просто)

Я сейчас деплою проекты под 400 rps без простоя)  если будут вопросы пиши)

+1

Смотри системы деплоя веб приложений или системы развертывания. Там разного уровня есть смотря насколько подробно и с каким окружением надо работать. В большинстве случаев хватает git+ssh. Тут разобрано более менее https://toster.ru/q/28553

+1

Таскал подобные ресурсы не раз. Задача бьется на 4:

1. Перенести файловое хранилище. Rsync, git или тупое копирование.

2. Синхронизировать пакеты, тут или обнова до последних версий или скрипт устанавливающий пакеты по версиям.

3. Синхронизация БД.

4. Синхронизация (выборочная) /etc каталога


Для решения задачи делается mirror-prod в локальной сети, оттуда идёт синхронизация на прод в Интернете. Локальное зеркало нужно на случай ЧП.


Зеркала развертывать лучше на KVM т.к. VDS/VPS в проде на нём обычно.

раскрыть ветку 5
0
все делается нормальной CI/CD системой.
раскрыть ветку 4
0

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


А что касается уже моего прода - то самописная CI/CD есть и давно работает.

раскрыть ветку 3
+1

из множества php приложений

что значит пхп-приложение? вангую по факту там просто есть папка WebSite и в ней куча подпапок, а все это под одной версией php крутится. И в чем проблема их тупо архивнуть и скопировать тогда?

и да, там нет версионной системы? если нет - кастрировать тим лида, добавить git и заставить работать с ним всех разработчиков. причем кастрировать медленно и у всех на виду.


ну а дальше, к примеру Vagrant box, куда кроме дефолтных LAMP стека прописываем поэтапно шаги:

1. git pull master ну или скачать архив с сервера бекапов

что бы локально создать все файлы нужные для работы сайта


2. дернуть бекап БД

опять же они обязаны быть как минимум ежедневные по крону на лайв сервере!)


3. выполнить скрипт очистки и правки БД

можно посидеть денек, посоставлять SQL запросы, которые бы просто меняли данные на одинаковые типа credit_card_cumber = '1111-1111...' customer_name='vaisa pupkin' и т.д. это достаточно просто сделать.

у нас еще к примеру подключен скрипт "search_replace" (из популярной одноименной библотеки, у которой есть CLI либа - search-replace-db/srdb.cli.php ), который на лету правит некоторые моменты в БД


собственно, готово. ну а дальше пихать все, что душе угодно.

раскрыть ветку 11
-1

дельный совет, спасибо.

git есть, но им пользуюсь только я частично чтобы в случае косяков быстро откатить), но в целом инфраструктура проекта не настроена на такую работу.

PHP приложения имел ввиду классы и реализации для определенных задач.

а как передать в Vagrant box серверное окружение? он это умеет? я не знаком с этой технологией(

раскрыть ветку 10
0

я вообще ни разу не девопс и к этому по стольку по скольку) работаю с чем дано обычно. так, максимум мелкое почиксить. но могу скинуть примерно как у нас это поднимается, конфиг файлы. стучите в скайп "itman.green"

раскрыть ветку 1
0

что вам мешает, сделать копию кода рядом в папку DEV_ВАШРАБОЧИЙКОД и натравить на него домен третьего уровня? И работать с этой папкой через другой домен (dev.вашдомен.блабла).

раскрыть ветку 5
-1

что значит"инфраструктура не настроена". моя не понимать как можно умудриться сделать так, что нельзя внедрить git :)

раскрыть ветку 1
0

Гит

0
а хосты готовить с помощью ansible, например
0
ну вообще завернуть все в докер, рядом контейнеры с проксей и базой. деплоить на нужные энвы при помощи дженкинса. при правильном подходе можно деплоить на прод без даунтайма. ну и да, все в гите держать. для dev env - просто сделать базу с тестовыми данными.
0
концепция докера - 1 контейнер 1 приложение. если сайт крупный, то туда и балансировщики, и редис, и мемкеши, да кучу всего вспомогательного деплоить в контейнерах, а рулить всем хозяйством через k8s/helm
Похожие посты
252

Бывших программистов не бывает?

В который уже раз понял, что бывших программистов не бывает. Работаю за рулём, платят не плохо, но — у логиста проблемы с учётом работы водителей, и как обычно, ведётся всё в родном до боли в печени Excel. Со всеми вытекающими, включая путаницу в рабочих сменах, штрафах и пр. Ну и конечно, долго такое выдержать сложно. На выходных засел писать замену (а заодно и навыки немного вспомнить, обленился — стали забываться). Логист посмотрел, почесал в затылке и незамысловато сказал «Это удобнее, чем в Экселе». Премию не заплатят, никто мне ничего не заказывал, максимум спасибо скажут. Поэтому практически сразу добавил в софтину демо-аккаунт, на случай продвижения в широкие народные массы. И обозвал её Деметрой. Ну чтобы хоть как-то называлась. Ниже — скрины. Диза нет — на него логисту глубоко фиолетово, потому что он начал путаться, кто когда и за что схлопотал штраф, и диз ему тут вряд ли поможет.


P. S. Aх да, самое главное забыл. PHP 5.3, MySQL, JQuery, холст, масло, карандаш. Как-то так.

Бывших программистов не бывает? PHP, Разработка, Mysql, Логистика, Водитель, Длиннопост
Бывших программистов не бывает? PHP, Разработка, Mysql, Логистика, Водитель, Длиннопост
Бывших программистов не бывает? PHP, Разработка, Mysql, Логистика, Водитель, Длиннопост
Показать полностью 2
244

Облачный терабайт за шапку сухарей. Nextcloud на StorageVPS

Для @arklem и всех интересующихся.

Стоимость хранения информации в облаках непрерывно снижается, но до сих пор иметь под рукой большие облачные ёмкости было не дёшево. Но вот, один за другим, хостеры стали обновлять линейки тарифов на так называемые StorageVPS. Это виртуальные машины с небольшой производительностью, но большой ёмкостью диска. Сегодня арендовать виртуалку с отказоустойчивым терабайтом стоит всего около 5 евро! Сделаем это и заодно потрогаем достойного наследника OwnCloud — идеологически бесплатный Nextcloud. Статья будет традиционно предельно подробной и пошаговой. По факту, все установки и настройки можно сделать за 10-15 минут.


В статье будет использоваться предложение одного из хостеров — одноядерная виртуалка с одним гигабайтом оперативки, 100-мегабитной сеткой (месячный объем исходящего трафика 10 TB) и терабайтным диском на борту. И всё это за 5 евро в месяц. Название хостера не привожу ибо не реклама. Больше инфы в оригинале статьи на моём сайте. Там же красивые конфиги в правильной кодировке (на пикабу сбивается форматирование и, иногда, возникают проблему с кодировкой при копировании)

Еще понадобиться доменное имя. Можно и без него, но это не очень удобно, да и сертификаты https правильные не сделать. Как получить халявный домен и настроить DNS-зону я уже писал в этой статье. Здесь я буду использовать доменное имя nc.mydomen.ml

Используя панель управления хостинга установите на свою виртуальную машину Debian 8 x64. Для настройки нам понадобиться стандартный набор инструментов. Как подключиться по SSH, установить и настроить PUTTY и WinSCP, настроить вход по сертификатам - написано в этой статье. Вам только понадобятся логин и пароль от SSH. Их предоставит хостер или в письме на электронную почту или в панели управления.

Облачный терабайт за шапку сухарей. Nextcloud на StorageVPS Storagevps, VPS, Nextcloud, Настройка, Apache, Debian, Cloud, Облачное хранилище, Длиннопост

Для начала настроим репозитории следующим набором команд:

echo 'deb http://packages.dotdeb.org jessie all' >> /etc/apt/sources.list
echo 'deb-src http://packages.dotdeb.org jessie all' >> /etc/apt/sources.list
echo 'deb http://ftp.debian.org/debian jessie-backports main' >> /etc/apt/sources.list
echo 'deb http://ftp.utexas.edu/dotdeb/ jessie all' >> /etc/apt/sources.list
wget https://www.dotdeb.org/dotdeb.gpg
apt-key add dotdeb.gpg

Обновим наш сервер командами:

apt -y update
apt -y upgrade

И начнём установливать необходимые пакеты:

apt-get -y install apache2 mariadb-server libapache2-mod-php7.0 php7.0-redis

Тут нас попросят придумать пароль для рутовой учётки MariaDB.

Облачный терабайт за шапку сухарей. Nextcloud на StorageVPS Storagevps, VPS, Nextcloud, Настройка, Apache, Debian, Cloud, Облачное хранилище, Длиннопост

Вводим пароль (символы не отображаются), жмём Enter и повторно вводим тот-же пароль и жмём Enter.


Доустановим ещё пакетов командами:

apt-get -y install php7.0-gd php7.0-json php7.0-mysql php7.0-curl php7.0-mbstring
apt-get -y install php7.0-intl php7.0-mcrypt php7.0-xml php7.0-zip
apt-get -y install libmagickwand-dev imagemagick php-dev redis-server
apt-get -y install python-certbot-apache -t jessie-backports

Запустим и добавим в автозагрузку наши Web-сервер и СУБД:

systemctl start apache2
systemctl enable apache2
systemctl start mysql
systemctl enable mysql

Можно убедиться, что наш Web-сервер работает, перейдя по адресу http://<ip-адрес вашего сервера>. Получим такую картинку:

Облачный терабайт за шапку сухарей. Nextcloud на StorageVPS Storagevps, VPS, Nextcloud, Настройка, Apache, Debian, Cloud, Облачное хранилище, Длиннопост

Выполним первичную настройку безопасности СУБД:

mysql_secure_installation

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

Облачный терабайт за шапку сухарей. Nextcloud на StorageVPS Storagevps, VPS, Nextcloud, Настройка, Apache, Debian, Cloud, Облачное хранилище, Длиннопост

Теперь зайдём в консоль MariaDB командой:

mysql -u root -p

Вводим пароль от MariaDB и попадаем в консоль.

Облачный терабайт за шапку сухарей. Nextcloud на StorageVPS Storagevps, VPS, Nextcloud, Настройка, Apache, Debian, Cloud, Облачное хранилище, Длиннопост

Создадим базу данных (точка с запятой в конце команд обязательны):

CREATE DATABASE nextclouddb;

Создадим учётную запись, с которой на Nextcloud будет обращаться к базе данных. Вместо password придумываем и вставляем в команду новый пароль:

CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'password';

Дадим этой учётной записи права на базу данных

GRANT ALL PRIVILEGES ON nextclouddb.* TO 'nextcloud'@'localhost';

Обновим таблицу привилегий, чтобы изменения применились:

FLUSH PRIVILEGES;

И выходим из консоли:

\q

Теперь пора установить сам Nextcloud. Посмотреть список доступных версий можно на этой странице. Выбираем самую свежую. На дату написания статьи это nextcloud-12.0.2


Скачиваем:

cd /tmp
wget https://download.nextcloud.com/server/releases/nextcloud-12....

Распаковываем:

unzip nextcloud-12.0.2.zip

И переносим к месту постоянного обитания:

mv nextcloud /usr/share/

Обязательно нужно дать права web-серверу на папку:

chown -R www-data:www-data /usr/share/nextcloud

Теперь любым удобным способом (например с помощью WinSCP) создадим в папке /etc/apache2/sites-available/ файл с именем nextcloud.conf со следующим содержимым:

ServerName nc.mydomen.ml
<VirtualHost *:80>
ServerAdmin admin@mydomen.ml
ServerName nc.mydomen.ml
DocumentRoot /usr/share/nextcloud
</VirtualHost>
<Directory "/usr/share/nextcloud/">
Options MultiViews FollowSymlinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
TransferLog /var/log/apache2/nextcloud_access.log
ErrorLog /var/log/apache2/nextcloud_error.log

По тексту конфига исправляем под себя адрес электронной почты и домен (ServerAdmin, ServerName)


Сохраняем файл и применяем настройки командами:

a2dissite 000-default
a2ensite nextcloud
service apache2 reload
service apache2 restart

Теперь можно перейти по адресу http://nc.mydomen.ml (вы используете своё имя домена) и донастроить наш Nextcloud:

Облачный терабайт за шапку сухарей. Nextcloud на StorageVPS Storagevps, VPS, Nextcloud, Настройка, Apache, Debian, Cloud, Облачное хранилище, Длиннопост

Придумываем и вводим логин и пароль администратора, вписываем настройки базы данных, которые мы сделали ранее и нажимаем "Завершить установку".


В общем-то наш сервер уже работает. Осталось настроить безопасность и затюнинговать.


Переведём наш сервер на https. Для этого сначала получим сертификаты командой:

certbot --apache certonly

На запросы вводим адрес электронной почты (укажите реальный, на него будут приходить уведомления о действиях с сертификатом), принимаем условия использования сервисом Let's Encrypt (вводим A) и вводим имя домена (или выбираем из предложенного списка), для которого получаем сертификат (в моём случае это nc.mydomen.ml):

Облачный терабайт за шапку сухарей. Nextcloud на StorageVPS Storagevps, VPS, Nextcloud, Настройка, Apache, Debian, Cloud, Облачное хранилище, Длиннопост

Отлично, сертификаты получены и лежат в папке  /etc/letsencrypt/live/nc.mydomen.ml/


Срок действия сертификатов - 90 дней. Об истечении срока придёт письмо на указанную выше почту. Для обновления сертификатов используем команду:

certbot renew

Этот процесс можно автоматизировать с помощью Cron. Пример приведён в статье про ownCloud.


Донастроим Apache. Включим ssl модуль командой:

a2enmod ssl

Включим дефолтный конфиг для ssl:

a2ensite default-ssl.conf

Поскольку нам нужно будет перенправлять клиентов с 80 порта (http) на 443 (hhtps), то включим модуль перенаправлений:

a2enmod rewrite

Теперь любым удобным способом (например с помощью WinSCP) создадим в папке /etc/apache2/sites-available/ файл с именем nextcloud-ssl.conf со следующим содержимым:

<IfModule mod_ssl.c>
<VirtualHost nc.mydomen.ml:443>
ServerAdmin admin@mydomen.ml
DocumentRoot /usr/share/nextcloud
TransferLog /var/log/apache2/nextcloud_access.log
ErrorLog /var/log/apache2/nextcloud_error.log
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/nc.mydomen.ml/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/nc.mydomen.ml/privkey.pem
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
</IfModule>

Сохраняем файл и применяем настройки командами:

a2ensite nextcloud-ssl
service apache2 reload
service apache2 restart

Теперь можно перейти по адресу https://nc.mydomen.ml (вы используете своё имя домена) и убедится, что всё работает

Облачный терабайт за шапку сухарей. Nextcloud на StorageVPS Storagevps, VPS, Nextcloud, Настройка, Apache, Debian, Cloud, Облачное хранилище, Длиннопост

Настроим жёсткое перенаправление с http на https. Тогда работа с нашим сайтом будет возможна только по https.


Откройте файл  /etc/apache2/sites-available/nextcloud.conf и добавим две строчки с директивой Rewrite:

ServerName nc.mydomen.ml
<VirtualHost *:80>
ServerAdmin admin@mydomen.ml
ServerName nc.mydomen.ml
DocumentRoot /usr/share/nextcloud
RewriteEngine On
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

</VirtualHost>
<Directory "/usr/share/nextcloud/">
Options MultiViews FollowSymlinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
TransferLog /var/log/apache2/nextcloud_access.log
ErrorLog /var/log/apache2/nextcloud_error.log

Применим настройки

service apache2 reload
service apache2 restart

Попробуйте войти на сайт по http и убедитесь, что вас перенаправляет на https.


Канал защитили. Теперь оптимизируем производительность сервера за счёт кэширования.


С помощью WinSCP или иным способом откроем файл /etc/sysctl.conf и добавим в конце строчку:

vm.overcommit_memory = 1

Сохраним и закроем файл. Перезагрузим сервер, чтобы настройка применилась

reboot

Запустим и добавим в автозагрузку кэш-сервер Redis:

systemctl start redis-server
systemctl enable redis-server

Проверить, что Redis работает и слушает порт 6379 можно командой:

ps ax | grep redis
Облачный терабайт за шапку сухарей. Nextcloud на StorageVPS Storagevps, VPS, Nextcloud, Настройка, Apache, Debian, Cloud, Облачное хранилище, Длиннопост

В WinSCP или иным способом откроем файл /usr/share/nginx/html/config/config.php. Смотрим на последнюю строчку, она выглядит так:

);

Перед ней добавим строчки

'memcache.local' => '\OC\Memcache\Redis',
'redis' => array(
'host' => 'localhost',
'port' => 6379,
),

Сохраним и закроем файл. Зайдите в свой Nextcloud, страницы должны корректно отображаться.

Сделаем еще одну настройку безопасности.

Включим модуль headers:

a2enmod headers

В файл /etc/apache2/sites-available/nextcloud-ssl.conf добавим между тегами <VirtualHost и </VirtualHost> в любое место строчку

Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"

Сохраним и закроем файл.


Применим настройки:

service apache2 reload
service apache2 restart

Заходим в Nextcloud и проверяем, что всё работает.


Всё! Можно пользоваться.


Ряд рекомендаций:

1. Не используйте созданную выше учётную запись администратора для постоянной работы. Зайдите в настройки пользователей, создайте группу(ы) для обычных пользователей, создайте пользователей с ограниченными правами, установите квоты.

Облачный терабайт за шапку сухарей. Nextcloud на StorageVPS Storagevps, VPS, Nextcloud, Настройка, Apache, Debian, Cloud, Облачное хранилище, Длиннопост

2. Зайдите в приложения (см. скриншот выше) и добавьте функциональности вашему облачному хранилищу. Особенно обратите внимание на возможность зашифровать ваши данные и включить двухфакторную авторизацию. Про включение шифрования можно почитать в конце статьи про ownCloud.


3. Включите использование системного Cron для фоновых заданий.

Облачный терабайт за шапку сухарей. Nextcloud на StorageVPS Storagevps, VPS, Nextcloud, Настройка, Apache, Debian, Cloud, Облачное хранилище, Длиннопост

Этом всё. Вопросы можно задавать здесь, а лучше в Telegram @SecFAll_adm.

Показать полностью 10
325

Обработка запросов от китайского GPS-Tracker TK-102B

По просьбе страждущих в этой теме: #comment_70408960

Скажу сразу: пост пилить не хотел, т.к. уверен, что далеко не всем это будет интересно, но 3 подписчика меня фактически обязали :-)

Некоторое время назад мною был приобретён на Алиэкспрессе такой вот зверь:

Обработка запросов от китайского GPS-Tracker TK-102B GPS трекер, Карты, Мониторинг, PHP, Mysql, Длиннопост

С трекером возможно общаться по СМС, так же он может работать в режиме передатчика звука и, что самое для меня интересное, может отчитываться на сервер. Этот вариант мы и рассмотрим подробнее.

Для начала необходимо настроить сам трекер. Делается это с помощью СМС команд, отправленных на номер трекера. Стоит отметить, что они могут значительно отличаться в зависимости от версии и прошивки. Для моего это так:

begin123456 - инициализация. Здесь "begin" - команда, а "123456" - стандартный пароль по умолчанию.

password123456 111111 - смена пароля, но мы для простоты будем со старым.

admin123456 +79119876543 - установка телефона администратора (т.е. вашего). До этого момента трекер принимает команды с любого номера, а после только с установленных. Номеров может быть несколько, но начать лучше со своего иначе рискуете потерять управление.

adminip123456 8.8.8.8 2222 - собственно самое важное для нас - указание IP адреса и порта нашего сервера. IP адрес естественно должен быть статичный и внешний. Живущим за роутерами - не забываем пробросить порт.

apn123456 internet.mts.ru - настраиваем выход в интернет. Для каждого оператора строка разная. У меня мтс. Иногда может потребоваться так же пользователь и пароль. Их пишем через пробел т.е. что-то типа:  apn123456 internet.mts.ru mts mts

gprs123456 - собственно переключение на отправку данных с трекера на сервер (тот, что выше указали), а не через СМС.

check123456 - проверка состояния устройства. Ответ придёт в СМС и ОЧЕНЬ сильно зависит от версии/модели/продавца и хрен знает чего ещё. Если на момент проверки у нас УЖЕ работает сервер, о котором ниже, то минимум нам придёт GPRS: OK. Так же обычно есть инфа о заряде батареи и статусе GPS.

t060s***n123456 - собственно интервал отправки данных. 060 говорит об необходимости отправки раз в 60 секунд. *** - количество раз. Если "***" значит бесконечно, но можно указать и число раз. Минимальный интервал около 20 секунд. Я меньше 30 не ставил.

Кроме указанного минимума команд существует ещё множество и они легко гуглятся. Останавливаться тут на них мы не будем. Перейдём к серверу. Тут всё делится на 2 части. 1 часть непосредственно слушает порт, разбирает запросы и записывает это всё в базу. В моём случае рабочая версия у меня на php и пишем в mysql. Делал я это через сокеты. В общих чертах:

Открываем:

$master=socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

$res=@socket_bind($master, $ip, $port);

и в цикле читаем как-то приблизительно так:

if (socket_select($read, $NULL, $NULL, 0, 10))

if(in_array($master, $read))

$sockets[]=socket_accept($master);

далее обрабатываем и пишем в базу.

Трекер присылает строку такого вида:

(0270*******2BR00160615A5934.7690N03007.2188E005.9174004242.9700000000L00000000)

Строка всегда в скобках.

Начинается с части (или полного) серийного номера устройства. В нашем случае 0270*******2 (замазал). Далее команда. У нас это BR00 (собственно команда отправки координат). Дальше данные в зависимости от команды. 160615 - дата 15-06-2016 года. "А" якобы говорит о том, что данные актуальные (по документации). Дальше идёт широта и долгота: lat:5934.7690 lon:03007.2188 (преобразовать в нужную систему координат ещё надо). Потом скорость: 5.9 км/ч. Затем время: 17:40:04

Периодически трекер требует так называемый handshake (рукопожатие). Если на него не ответить, то требовать он его будет после каждого ответа. Команда-запрос: BP00. Ответ: (серийный номер+AP01HSO) Более подробно по серверу думаю не уложится в рамки данного поста. Спрашивайте - постараюсь ответить.

Вторая же часть отвечает за вывод из базы на карту. Я сделал это через API yandex карт. Выглядит у меня как-то так:

Обработка запросов от китайского GPS-Tracker TK-102B GPS трекер, Карты, Мониторинг, PHP, Mysql, Длиннопост

Это я к тёще ехал :-) Каждая точка это минута. Соответственно чем выше скорость, тем больше расстояние между точками. Однако реализация визуальной части у каждого может быть своя. Тут огромный простор для фантазии. Читаем из нашей базы и с помощью API формируем фигурами то, что хотим от точки до точки. Можно учитывать дороги, можно получать ближайший адрес (запрещено в бесплатном API в реальном времени, но может тут есть миллионеры, желающие купить платный доступ для бизнеса). Да хоть расход топлива рассчитывайте. Возможностей масса.

Описание самого API тут: https://tech.yandex.ru/maps/ По Гуглу есть аналогичное на гугле.

В заключении хочу сказать, что данный девайс полностью оправдал лично мои надежды, но тут раз на раз не приходится. Ссылку на продавца оставлю в комментариях. Прошу прощения за столь сжатый пост. Инфы действительно ОЧЕНЬ много и всё сюда вероятно не влезет, да и Лига Лени затягивает в свои сети.

Показать полностью 1
Похожие посты закончились. Возможно, вас заинтересуют другие посты по тегам: