- Информация о материале
- Автор: Геннадий Едиг
- Категория: Web, Python, Ubuntu, Joomla, Virtuemart
- Просмотров: 110
Был у меня VPS сервер на котором было несколько сайтов размещенных с помощью isp manager.
В какой-то момент я решил повысить тариф, чо привело к порче isp manager.
Со слов поддержки причина в установленной мной библиотеки которая сломала isp manager и удаление которой не поможет восстановить isp manager.
В итоге я проверил все и выходит что причина действительно в этой библиотеке, но как оказалось моя ubuntu 20 устараела и пытаться натянуть для восстановления isp manager поверх старого не имеет смысл, так как все-равно нужно перебираться на другой сервер.
В итоге очередной переезд и на этот раз без веб интерфейса.
1. Копируем файлы сайтов
2. Пишем код на питоне который возьмет данные для доступа к базе из конфигурационных файлов joomla и wordpress и сделает бэкап сайтов
3. Сохраняем все что связано с Python
4. Не забываем про файлы systemd
5. Забываем о мелочах типа особых настроек серверов и почты
Переезжаем...
Может добавлю что-то.
Если всё суда добавить то будет объемный труд. Но надо добавить :)
Должно получится примерно так:
Детальный план переезда с VPS (сломанный ISPmanager) на новый сервер
1. Подготовка перед переездом
- Резервное копирование ВСЕГО (даже если что-то сломано):
- tar -czvf backup_$(date +%F).tar.gz /var/www/ /etc/nginx/ /etc/apache2/ /home/ /etc/mysql/ /etc/php/
- Проверить, что бэкапы целы (du -sh backup_*.tar.gz, попробовать распаковать в /tmp).
- Можно использовать rsync для копирования на другой сервер или локальный ПК.
2. Копирование файлов сайтов
- Ручное копирование (если ISPmanager сломан):
- bashrsync -avz --progress /var/www/ user@new-server:/var/www/ rsync -avz --progress /home/user/ user@new-server:/home/user/
- Copy
- Проверка прав (chown -R www-data:www-data /var/www/).
3. Автоматизация бэкапов баз данных (Python-скрипт)
Пример кода для резервирования MySQL:
python
Copy
import os import subprocess import json from pathlib import Path def get_db_credentials(config_path, cms_type): if cms_type == "wordpress": with open(config_path / "wp-config.php") as f: content = f.read() db_name = content.split("DB_NAME', '")[1].split("'")[0] db_user = content.split("DB_USER', '")[1].split("'")[0] db_pass = content.split("DB_PASSWORD', '")[1].split("'")[0] db_host = content.split("DB_HOST', '")[1].split("'")[0] return db_name, db_user, db_pass, db_host elif cms_type == "joomla": with open(config_path / "configuration.php") as f: content = f.read() db_name = content.split("public $db = '")[1].split("'")[0] db_user = content.split("public $user = '")[1].split("'")[0] db_pass = content.split("public $password = '")[1].split("'")[0] db_host = content.split("public $host = '")[1].split("'")[0] return db_name, db_user, db_pass, db_host def backup_database(db_name, db_user, db_pass, db_host, output_dir): os.makedirs(output_dir, exist_ok=True) dump_file = f"{output_dir}/{db_name}_backup.sql" cmd = f"mysqldump -h {db_host} -u {db_user} -p'{db_pass}' {db_name} > {dump_file}" subprocess.run(cmd, shell=True, check=True) print(f"Backup saved to: {dump_file}") if __name__ == "__main__": websites = [ {"path": "/var/www/site1", "cms": "wordpress"}, {"path": "/var/www/site2", "cms": "joomla"} ] for site in websites: config_path = Path(site["path"]) db_name, db_user, db_pass, db_host = get_db_credentials(config_path, site["cms"]) backup_database(db_name, db_user, db_pass, db_host, "/backups/db")
4. Перенос Python-окружения
- Экспорт зависимостей:
- bashpip freeze > requirements.txt rsync -avz --progress /path/to/virtualenv/ user@new-server:/path/to/virtualenv/
- Copy
- Проверка версии Python (на новом сервере):
- bashpython3 --version sudo apt install python3-venv # если нужно
- Copy
5. Systemd-юниты и Cron-задачи
- Копирование служб:
- bashrsync -avz --progress /etc/systemd/system/my_service.service user@new-server:/etc/systemd/system/
- Copy
- Активация на новом сервере:
- bashsudo systemctl daemon-reload sudo systemctl enable my_service sudo systemctl start my_service
- Copy
- Крон:
- bashcrontab -l > cron_backup.txt scp cron_backup.txt user@new-server:~/ # На новом сервере: crontab cron_backup.txt
- Copy
6. Восстановление почты (если нужно)
- Копирование Postfix/Dovecot:
- bashrsync -avz --progress /etc/postfix/ user@new-server:/etc/postfix/ rsync -avz --progress /etc/dovecot/ user@new-server:/etc/dovecot/
- Copy
- Проверка DNS-записей (MX, SPF, DKIM).
7. Настройка веб-сервера (Nginx/Apache)
- Без ISPmanager придется вручную:
- bashsudo apt install nginx mysql-server php-fpm sudo cp /backups/nginx/sites-available/* /etc/nginx/sites-available/ sudo ln -s /etc/nginx/sites-available/site.conf /etc/nginx/sites-enabled/ sudo nginx -t # проверка конфига sudo systemctl restart nginx
- Copy
8. Проверка после переезда
- Тест сайтов: curl -I https://ваш-сайт (коды 200, 301).
- Логи: tail -f /var/log/nginx/error.log.
- Базы данных: подключиться и проверить таблицы.
Что можно добавить?
- Мониторинг (например, netdata или prometheus + grafana).
- Автоматические бэкапы (например, borgbackup + rclone на облако).
- Infrastructure as Code (Ansible для настройки сервера).
- Docker (чтобы изолировать сервисы и упростить миграции).
Говорят ISP manager сам делает существенную часть этой работы...
- Информация о материале
- Автор: Геннадий Едиг
- Категория: Web, Python, Ubuntu, Joomla, Virtuemart
- Просмотров: 128
Мне нравится автоматизировать рутинные задачи. Недавно я решил создать несколько парсеров для сбора данных с веб-сайтов, чтобы делиться новостями и статьями в социальных сетях. В этом мне помогал ИИ — современный инструмент, который пишет код быстрее, чем я успеваю сформулировать задачу. Однако в процессе я столкнулся с проблемой, которую ИИ не всегда замечает: постоянное потребление памяти WebDriver (например, Firefox через Selenium) даже в простое. Эта статья — мой рассказ о том, как ИИ ускоряет разработку, но почему неквалифицированным программистам вроде меня нужно быть внимательнее, чтобы замечать такие подводные камни.
Почему я выбрал ИИ для программирования
Как человек без глубоких знаний в разработке, я ценю ИИ за его способность создавать сложный код буквально за минуты. Хочешь парсер для новостного сайта? Задаёшь вопрос, указываешь, что нужно (например, Selenium для динамических страниц), и получаешь готовый скрипт с логированием, обработкой ошибок и даже комментариями. Для меня это как волшебство: я описываю задачу на русском, а ИИ выдаёт Python-код, который в 90% случаев работает с первого раза.
В моём случае я хотел написать два парсера:
- Один собирал статьи и видео с моего канала на Дзене для публикации в Telegram и ВКонтакте.
- Другой парсил новостные сайты, ища материалы с ключевыми словами вроде. Просто чтобы быть в курсе определенных событий.
Оба парсера использовали Selenium с Firefox в headless-режиме, чтобы обрабатывать динамический контент. ИИ быстро выдал рабочие скрипты, которые находили ссылки, проверяли даты и отправляли сообщения. Всё выглядело идеально — пока я не заметил, что сервер начал задыхаться.
- Информация о материале
- Автор: Геннадий Едиг
- Категория: Web, Python, Ubuntu, Joomla, Virtuemart
- Просмотров: 142
Питонизация — это процесс автоматизации рутинных операций с помощью языка Python, который позволяет:
- Упростить сложные процессы — заменить ручные действия скриптами
- Повысить надежность — исключить человеческий фактор
- Ускорить выполнение задач — автоматическая обработка данных работает в разы быстрее
- Обеспечить масштабируемость — легко адаптировать решение под растущие объемы данных
В контексте Joomla питонизация особенно актуальна для интеграций с внешними сервисами, таких как синхронизация товаров с VK Маркет.
Основные принципы питонизации Joomla-процессов
- Работа с базой данных напрямую
- Использование пула соединений для эффективного управления подключениями
- Прямые SQL-запросы к таблицам VirtueMart вместо работы через API Joomla
- Оптимизированные запросы с джойнами таблиц товаров, цен, категорий и медиафайлов
- Интеграция с VK API
- Пакетная обработка товаров с учетом ограничений API ВКонтакте
- Автоматическая обработка ошибок (лимиты запросов, необходимость капчи)
- Интеллектуальные повторы при временных сбоях
- Автоматизация обработки изображений
- Адаптация размеров изображений под требования VK Маркет
- Автоматическая загрузка медиафайлов на серверы ВКонтакте
- Обработка ошибок при работе с изображениями
- Система логирования и отслеживания статусов
- Детальное логирование всех этапов процесса
- Фиксация статусов синхронизации в отдельной таблице БД
- Возможность анализа ошибок и повторной синхронизации
Почему VPS предпочтительнее виртуального хостинга
Для стабильной работы питонизированных решений виртуальный хостинг не подходит по нескольким причинам:
- Ограничения на выполнение скриптов — большинство хостингов запрещают длительные процессы
- Недостаток ресурсов — обработка изображений и массовые операции требуют памяти
- Отсутствие доступа к планировщику — cron необходим для регулярной синхронизации
- Проблемы с зависимостями — невозможность установки нужных версий Python-библиотек
Облачный VPS от reg.ru — идеальное решение для таких задач:
- Полный root-доступ и контроль над сервером
- Возможность установки любых необходимых компонентов
- Гибкость в настройке окружения
- Стабильность и надежность инфраструктуры
- Простота масштабирования при росте нагрузки
Рекомендации по реализации
- Используйте планировщик задач для регулярного запуска синхронизации
- Настройте мониторинг выполнения скриптов
- Оптимизируйте запросы к базе данных для работы с большими каталогами
- Реализуйте механизм инкрементального обновления вместо полной синхронизации
- Храните токены и пароли в переменных окружения, а не в коде
Питонизация процессов интеграции Joomla с VK Маркет позволяет создать надежное и эффективное решение для синхронизации товаров. Перенос такого решения на VPS от reg.ru обеспечит стабильную работу и возможность масштабирования по мере роста бизнеса.
Для реализации подобного решения рекомендуем обратиться к специалистам или изучить услуги VPS-хостинга на reg.ru, которые предоставляют оптимальную инфраструктуру для выполнения автоматизированных Python-скриптов.
- Информация о материале
- Автор: Геннадий Едиг
- Категория: Web, Python, Ubuntu, Joomla, Virtuemart
- Просмотров: 129
Введение
Joomla, WordPress, MODX и другие CMS долгое время доминировали в веб-разработке благодаря простоте развертывания и удобству администрирования. Однако их монолитная архитектура, зависимость от плагинов и ограниченная гибкость делают их уязвимыми перед современными технологиями.
Один из самых эффективных способов модернизировать сайт на Joomla — не миграция, а постепенное замещение его функционала Python. Этот процесс можно назвать «питонизацией» — когда PHP-код CMS шаг за шагом заменяется на Python-скрипты, пока от Joomla не останется лишь оболочка, которую в итоге можно будет сбросить, оставив полностью Python-управляемый сайт.
Почему Python?
Python обладает рядом преимуществ перед PHP, на котором построены Joomla и WordPress:
- Гибкость и масштабируемость – Python позволяет легко интегрировать сложные алгоритмы, машинное обучение, асинхронные задачи.
- Простота поддержки – Чистый код, строгая типизация (если используется) и богатые библиотеки делают разработку быстрее.
- Автоматизация – Python отлично справляется с парсингом, обработкой данных, API-интеграциями.
- Производительность – При правильной настройке Python (особенно с ASGI, FastAPI, Django) работает быстрее, чем PHP в Joomla.
Как начать питонизацию Joomla?
1. Перенос на VPS
Для запуска процесса нужен VPS-хостинг, так как на виртуальном хостинге с ограниченными правами развернуть Python-бэкенд сложно.
Подробнее: Питонизация Joomla: как Python может похоронить традиционные CMS
- Информация о материале
- Автор: Геннадий Едиг
- Категория: Web, Python, Ubuntu, Joomla, Virtuemart
- Просмотров: 174
- Заказ сертификата - тут наверное всё понятно?
- Получение сертификатов
После покупки AlphaSSL на VPS Reg.ru вам приходит письмо с SSL-сертификатами. Из письма понадобятся 3 файла (четвёртый — "Запрос на получение сертификата" — не нужен). - Добавление сертификата в ISPmanager
- Зайдите в ISPmanager → «SSL-сертификаты» → «Добавить сертификат» → «Существующий».
- Вставка основного сертификата
- В поле «SSL-сертификат» вставьте первый сертификат из письма.
- Добавление цепочки сертификатов
- Перейдите к полю «Цепочка SSL-сертификатов» и вставьте второй и третий сертификаты из письма (корневой и промежуточный).
- Важно: Между ними должна быть
Подробнее: Установка SSL-сертификата AlphaSSL в ISPmanager (Reg.ru)