Проект

Общее

Профиль

Новости

Записки и мысли: Установка темы Github для Redmine

Добавил(а) Михаил Губин 4 месяца назад

Темы для Redmine - это отличный способ добавить современный и функциональный дизайн вашему проекту на платформе Redmine. В этой статье я расскажу, как установить тему GitHub в Redmine, чтобы получилось оформление как у меня в журнале.

Шаг 1: Загрузка темы
Для начала вам нужно скачать тему GitHub для Redmine. Вы можете найти её на GitHub, используя следующий URL: https://github.com/makotokw/redmine-theme-gitmike

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

Шаг 2: Установка темы
Теперь, когда у вас есть URL темы, вам нужно перейти в директорию Redmine. Для этого откройте командную строку, перейдите в каталог с Redmine и выполните команду:

cd public/themes

Это приведет вас в директорию, где находятся все темы Redmine. Теперь, чтобы загрузить тему GitHub, выполните следующую команду:

git clone https://github.com/makotokw/redmine-theme-gitmike.git git

Эта команда клонирует репозиторий темы GitHub в указанную директорию. Она будет называться git. Имя можно придумать свое.

Шаг 3: Активация темы
После того как вы загрузили тему, вам нужно активировать её в Redmine. Для этого перейдите в административный интерфейс Redmine и выберите вкладку "Отображение". Здесь вы увидите список всех доступных тем. Найдите тему GitHub и активируйте её.

Шаг 4: Проверка установки
После активации темы вы можете проверить, как она выглядит на вашем проекте Redmine. Просто перейдите на главную страницу вашего проекта и убедитесь, что тема установлена корректно.

Записки и мысли: Установка Redmine

Добавил(а) Михаил Губин 4 месяца назад

В этой статье мы рассмотрим процесс установки Redmine на сервер под управлением Ubuntu. Redmine — это свободная система управления проектами, которая написана на Ruby on Rails. Она позволяет отслеживать задачи, управлять временем, вести базу знаний и многое другое.

Шаг 1: Создание директории для Redmine

Сначала создадим директорию для Redmine:

mkdir /opt/redmine

Шаг 2: Переход в директорию Redmine

Перейдем в созданную директорию:

cd /opt/redmine

Шаг 3: Загрузка файла Redmine

Теперь загрузим последнюю версию Redmine:

wget https://www.redmine.org/releases/redmine-5.1.3.zip

Шаг 4: Распаковка файла

Распакуем загруженный файл:

unzip redmine-5.1.3.zip

Переместим все файлы из папки Redmine в нашу:

mv redmine-5.1.3/* /opt/redmine

Шаг 5: Установка зависимостей

Установим необходимые зависимости:

apt-get install mysql-server mysql-common ruby rails -y

Шаг 6: Создание базы данных для Redmine

Войдем в командную строку MySQL:

mysql -uroot -p

Создадим базу данных для Redmine:

CREATE DATABASE redmine CHARACTER SET utf8mb4;
CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'my_password';
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';

Нажмем CTRL+D чтобы выйти из MySQL или пишем quit.

Шаг 7: Настройка конфигурации базы данных

Redmine, использующий MySQL 5.6, 5.7, 8.0 и 8.1 в качестве бэкенда базы данных, имеет известные проблемы в случае одновременных модификаций вложенной структуры задачи, то есть при параллельной модификации различных идентификаторов родительских задач. Более подробную информацию можно найти в задаче № 39437 и всех связанных с ней задачах.

Redmine версии 5.1.1 и выше содержит важные исправления для смягчения этой проблемы (r22458, r22459 и r22460), но эти исправления также требуют изменения уровня изоляции транзакций на READ COMMITTED для правильной работы. По умолчанию уровень изоляции транзакций в MySQL является REPEATABLE READ согласно официальной документации. Для версий MySQL 5.7.20 и старше используется параметр tx_isolation вместо transaction_isolation.

Изменим уровень изоляции транзакций в файле конфигурации MySQL на сервере:

transaction_isolation="READ-COMMITTED"

Путь к файлу с этой настройкой зависит от операционной системы, например, в Ubuntu это /etc/mysql/conf.d/mysql.cnf.

Изменение этого параметра требует перезагрузки сервера. Если вы не хотите перезагружать сервер, этот параметр также может быть применен во время выполнения, запустив следующий запрос: SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;, но важно также внести изменения в файл конфигурации, чтобы сохранить настройку после перезапуска.

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

Как и любое другое изменение, внесенное в производственную систему, настоятельно рекомендуется протестировать это изменение перед тем, как сделать его в производстве.

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

Настроим конфигурацию базы данных:

cp config/database.yml.example config/database.yml

Открываем файл config/database.yml и добавляем следующие строки:

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: "my_password"
  variables:
    transaction_isolation: "READ-COMMITTED"

Шаг 8: Установка дополнительных пакетов

Откроем файл Gemfile:

nano Gemfile

Приводим к такому виду верх файла, до строки # Ruby Standard Gems:

source 'https://rubygems.org'

ruby '>= 2.7.0', '< 3.3.0'

gem 'rails', '6.1.7.8'
gem 'rouge', '~> 4.2.0'
gem 'request_store', '~> 1.5.0'
gem 'mini_mime', '~> 1.1.0'
gem "actionpack-xml_parser"
gem 'roadie-rails', '~> 3.1.0'
gem 'marcel'
gem 'mail', '~> 2.8.1'
gem 'nokogiri', '~> 1.15.2'
gem 'i18n', '~> 1.14.1'
gem 'rbpdf', '~> 1.21.3'
gem 'addressable'
gem 'rubyzip', '~> 2.3.0'
gem 'webrick', '~> 1.7'

Без webrick мы не сможем запустить сервер Redmine.

Шаг 9: Настройка конфигурации Redmine

Настроим конфигурацию Redmine:

cp config/configuration.yml.example config/configuration.yml

Открываем файл config/configuration.yml и добавляем следующие строки:

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: "my_password"
  variables:
    transaction_isolation: "READ-COMMITTED"

Шаг 10: Установка Bundler

Установим Bundler:

gem install bundler

Шаг 11: Установка пакетов

Установим пакеты:

bundle config set --local without 'development test rmagick'
bundle install

Шаг 12: Генерация секретного токена

Сгенерируем секретный токен:

bundle exec rake generate_secret_token

Шаг 13: Обновление базы данных

Обновим базу данных:

RAILS_ENV=production bundle exec rake db:migrate

Шаг 14: Загрузка начальных данных

Загрузим начальные данные:

RAILS_ENV=production REDMINE_LANG=ru bundle exec rake redmine:load_default_data

Шаг 15: Создание директорий для временных файлов

Создадим директории для временных файлов:

mkdir -p tmp tmp/pdf public/plugin_assets

Шаг 16: Изменение прав доступа к директориям

Изменим права доступа к директориям:

sudo chown -R redmine:redmine files log tmp public/plugin_assets
sudo chmod -R 755 files log tmp public/plugin_assets

Шаг 17: Изменение прав доступа к файлам

Изменим права доступа к файлам:

find files log tmp public/plugin_assets -type f -exec chmod -x {} +

Шаг 18: Запуск сервера

Запустим сервер:

bundle exec rails server -e production

Чтобы остановить сервер, нажмите Ctrl+C.

Шаг 19: Настройка сервиса Systemd

Настроим сервис Systemd:

nano /etc/systemd/system/rails.service

Добавим следующие строки в файл rails.service:

[Unit]
Description=Rails Server Service
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/opt/journal
ExecStart=/usr/bin/bundle exec /usr/bin/rails server -e production
Restart=always

[Install]
WantedBy=multi-user.target

Сохраните изменения и закройте редактор.

Шаг 20: Активация и запуск сервиса

Активируем и запустим сервис:

systemctl enable rails
systemctl start rails

Теперь вы можете зайти в Redmine по адресу http://ваш-ип:3000, используя логин admin и пароль admin.

Подсказка: порт можно глянуть по команде systemctl status rails или journalctl -xeu rails.

Записки и мысли: Что такое bundle в Ruby. Применение bundle

Добавил(а) Михаил Губин 4 месяца назад

Bundle — это инструмент для управления зависимостями в Ruby. Он используется для установки, обновления и удаления пакетов gems (Ruby-пакетов) в проекте.

Основная идея bundle заключается в том, чтобы сохранить все зависимости проекта в одном месте, что позволяет легко переносить проект между различными средами разработки.

Применение bundle начинается с создания файла Gemfile, который содержит список всех gems, необходимых для работы проекта. Затем, используя команду bundle install, мы можем установить все эти gems в текущую директорию проекта.

После этого, когда мы хотим обновить какой-либо gem, мы можем использовать команду bundle update, которая обновит все зависимости, включая тот, который мы указали.

Также, если мы хотим удалить какую-либо зависимость, мы можем использовать bundle remove.

Важно отметить, что bundle не является частью языка Ruby, это просто инструмент, который помогает управлять зависимостями. Он может быть использован в любом проекте на Ruby, независимо от того, какой фреймворк или библиотека используются.

Записки и мысли: Откуда пошла мода хранить на балконе велосипеды и мотоциклы?

Добавил(а) Михаил Губин 4 месяца назад

Откуда пошла мода хранить на балконе велосипеды и мотоциклы?

В России и странах СНГ люди часто хранят велосипеды и мотоциклы на балконах. Это связано с несколькими причинами.

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

Во-вторых, многие люди живут в небольших квартирах, где нет места для хранения больших вещей. Балкон же предоставляет дополнительное пространство для хранения.

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

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

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

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

Записки и мысли: Почему нужно слегка газануть перед выключением двигателя

Добавил(а) Михаил Губин 4 месяца назад

В автомобильной практике существует много полезных советов, которые помогают водителям избежать поломок и продлить срок службы автомобиля. Один из таких советов — перед тем как заглушить двигатель, необходимо слегка нажать на педаль газа. Это делается для того, чтобы дать двигателю поработать на высоких оборотах несколько секунд.

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

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

Кроме того, работа двигателя на высоких оборотах перед выключением помогает снизить нагрузку на стартер при следующем запуске. Стартер — это электрический мотор, который используется для запуска двигателя. Если он будет работать слишком долго или слишком часто, это может привести к его перегреву и выходу из строя.

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

Записки и мысли: Как восстановить пароль root в MySQL 8+?

Добавил(а) Михаил Губин 4 месяца назад

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

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

Шаг 1: Запуск MySQL в режиме восстановления

Для начала необходимо запустить MySQL в режиме восстановления. Это позволит вам изменить пароль root без необходимости перезапуска сервера. Чтобы запустить MySQL в режиме восстановления, выполните следующие команды:

sudo systemctl stop mysql
sudo mysqld_safe --skip-grant-tables &

Эти команды остановят текущий экземпляр MySQL и запустят новый экземпляр с параметром --skip-grant-tables, который позволяет выполнять любые операции без проверки прав доступа.

Шаг 2: Подключение к MySQL в режиме восстановления

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

mysql -u root

Это подключит вас к MySQL без проверки пароля.

Шаг 3: Изменение пароля root

После подключения к MySQL в режиме восстановления вы можете изменить пароль root с помощью следующей команды:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';

Замените new_password на новый пароль, который вы хотите использовать для пользователя root.

Шаг 4: Перезапуск MySQL

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

sudo killall mysqld
sudo systemctl start mysql

Эти команды остановят текущий экземпляр MySQL, запущенный в режиме восстановления, и запустят новый экземпляр без параметра --skip-grant-tables.

Шаг 5: Проверка изменений

Чтобы проверить, успешно ли вы изменили пароль root, попробуйте подключиться к MySQL с новым паролем:

mysql -u root -p

Когда будет запрошен пароль, введите новый пароль, который вы установили в Шаге 3. Если вы успешно подключились, значит, пароль был успешно изменен.

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

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

Записки и мысли: Настройка параметров php.ini для LiteSpeed Web Server (LSWS)

Добавил(а) Михаил Губин 4 месяца назад

Параметры PHP для LSWS

Чтобы изменить параметры PHP для LSWS, вам нужно отредактировать файл конфигурации php.ini. В большинстве случаев этот файл находится в директории /usr/local/lsws/lsphp74/etc/php/7.4/litespeed/php.ini. Однако точное расположение может отличаться в зависимости от вашей операционной системы и версии LSWS.

Вот пример некоторых параметров, которые вы можете изменить в этом файле:

memory_limit = 256M
post_max_size = 256M
upload_max_filesize = 256M
max_execution_time = 360

Эти параметры определяют следующие значения:

  • memory_limit - максимальный объем памяти, который может использовать скрипт PHP.
  • post_max_size - максимальный размер данных, которые могут быть отправлены через форму POST.
  • upload_max_filesize - максимальный размер файла, который может быть загружен через форму POST.
  • max_execution_time - максимальное время выполнения скрипта PHP в секундах.

Перезапуск PHP-процессов

Если вы изменили параметры PHP, вам нужно перезапустить PHP-процессы, чтобы новые настройки вступили в силу. Для этого можно использовать команду killall -9 lsphp, которая принудительно завершает все процессы PHP.

killall -9 lsphp

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

Надеюсь, эта статья была полезной для вас!

Записки и мысли: Как эффективно общаться с налоговым инспектором

Добавил(а) Михаил Губин 4 месяца назад

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

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

  3. Когда налоговый инспектор объясняет вам что-то или задает вопросы, слушайте внимательно и старайтесь понять то, что он говорит. Если у вас возникли какие-то сомнения или непонимание, не стесняйтесь задавать вопросы.

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

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

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

  7. Общение с налоговым инспектором может быть стрессовым, но важно сохранять спокойствие и не терять контроль над ситуацией. Если вы чувствуете, что начинаете нервничать, сделайте глубокий вдох и попытайтесь сосредоточиться на том, что говорите.

  8. Во время общения с налоговым инспектором записывайте всю важную информацию, которую он предоставляет. Это поможет вам лучше запомнить детали и избежать недоразумений в будущем.

  9. Если у вас возникли серьезные проблемы с уплатой налогов или вы не уверены в том, как правильно действовать, обратитесь за помощью к профессиональному юристу или консультанту по налогам.

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

Записки и мысли: Миграция с Livestreet на Redmine

Добавил(а) Михаил Губин 4 месяца назад

С ростом популярности журнала и увеличением количества публикаций, стало очевидно, что Livestreet уже не может удовлетворить все потребности журнала.

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

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

Сравнительная таблица Livestreet и Redmine:

Критерий Livestreet Redmine
Управление проектами Нет Да
Управление контентом Да Да
Поддержка тегов Да Да
Поддержка категорий Да Да
Шаблоны статей Нет Да
Интеграция с другими сервисами Нет Да
Открытый исходный код Да Да

Как видно из таблицы, Redmine предлагает больше возможностей для управления контентом и проектами, чем Livestreet. Кроме того, Redmine имеет открытый исходный код, что позволяет разработчикам создавать свои собственные плагины и модификации. Это делает Redmine более гибкой и масштабируемой платформой для журнала Gubin Systems.

(311-319/319)

Экспортировать в Atom