#ruby-on-rails #ruby #installation #redmine
#ruby-on-rails #ruby #установка #redmine
Вопрос:
Я пытаюсь настроить отдельный (параллельный) экземпляр redmine. К сожалению, я мало что знаю о rails и среде ruby.
Возможно ли это вообще?
Предполагая, что это так… Я сталкиваюсь с проблемами с тем, что кажется подразумеваемыми допустимыми средами —
production
development
test
Это как-то отлито в камне?
Изначально я думал, что буду использовать конфигурацию «test»,
но поскольку при некоторых обстоятельствах она стирается, она не подходит.
Я хотел сохранить разработку для возможного другого использования.
Итак, я пытаюсь добавить новую среду.
Возможно ли это? (под этим я подразумеваю достаточно легко достижимое)
Пока все сделано:
set up new redmine directory hierarchy at /opt/xxx_test/redmine-4.1.1
set up new mysql database xxx_test with new user xxx_test for xxx_test
modified config/database.yml to contain only xxx_test (no production, development, or test)
generated new secret token
Когда был установлен исходный (основной) redmine, он был установлен с:
bundle config set without 'development test'
bundle install
Когда я сейчас делаю:
bundle config set without 'production development test'
Я получаю сообщение:
'Your application has set without to "development:test". This will override the global value you are currently setting'
Где находится этот набор и как мне его изменить?
Когда я выполняю «миграцию объектов схемы базы данных» (шаг установки 6) Я получаю сообщение об ошибке, которое, по-видимому, подразумевает, что он обращается к уже установленной «производственной» среде:
RAILS_ENV=xxx_test bundle exec rake db:migrate
config.eager_load is set to nil. Please update your config/environments/*.rb files accordingly:
* development - set it to false
* test - set it to false (unless you use a tool that preloads your test environment)
* production - set it to true
rake aborted!
Mysql2::Error::ConnectionError: Access denied for user 'xxx_test'@'localhost' to database 'redmine'
Где / как для этих «вещей» для разработки / тестирования / производства установлено значение true / false?
Я ничего не вижу в config/environment или config/environments/*.rb
Комментарии:
1. Почему вы вообще хотите запустить два экземпляра одного и того же приложения на одном сервере? ИМО, гораздо проще клонировать первый экземпляр, изменить конфигурацию и запустить клон на другом сервере. Кроме того, вы можете добавить столько сред, сколько захотите, и можете называть их так, как хотите (production_1, production_2). Вам просто нужно добавить дополнительный файл среды и соответствующим образом установить RAILS_ENV.
2. У нас доступен только один сервер, и у нас есть сотрудники, которые экспериментируют с тем, что имеет наибольший смысл в том, как мы работаем с некоторыми проектами. Насколько я понимаю, запуск на одном экземпляре вызывает проблемы с общими файлами, такими как файл журнала и загруженные файлы.
3. Вы можете запускать столько redmines под разными пользователями Linux, используя RVM, виртуальные хосты apache, которые могут либо запускать прокси на разные порты, либо запускать через пассажирский модуль.
4. @Aleksandar Я не понимаю. в /etc/apache2/mods-available.conf/passenger.conf указаны PassengerUser, PassengerGroup, PassengerUserSwitching, но нет пути к redmine, который он должен запускать. Как он получает путь к redmine, который он должен запустить? /etc/apache2/rubies/xxx.include указывает RailsBaseURI /redmine и /redmine-test и один модуль PerlLoadModule Apache2::Redmine
5. @GaryAitken он настраивается для каждого виртуального хоста, см. Мою книгу о Redmine…
Ответ №1:
Приведенный ниже сценарий представляет собой доработанную вручную версию того, что я в итоге сделал для установки второго redmine на одном сервере. Он не был протестирован, но должен содержать разумные рекомендации.
#!/bin/bash
#
# Script to set up a second redmine instance running on the same server
# Note:
# This script has been tweaked for general application and may contain errors
# Helpful References:
# https://www.redmine.org/projects/redmine/wiki/RedmineInstall
# https://www.phusionpassenger.com/library/config/apache/intro.html
# For rvm 1.29.10, redmine 4.1.1, passenger 5.3, apache 2.4.29
# Add user for new redmine to run as
sudo adduser --debug --shell /bin/bash --gecos 'redmine user 2' redmine_usr_2
sudo usermod -a -G rvm redmine_usr_2
# pw: <redmine-2-pw>
# Add database for second redmine to mysql
mysql -u <mysql-maint-acct> -p<mysql-maint-pw>
mysql> create database redmine_two character set utf8mb4;
mysql> create user 'redmine_usr_2'@'localhost' identified by '<redmine-2-pw';
mysql> grant all privileges on redmine_two.* to 'redmine_usr_2'@'localhost';
mysql> quit;
# Create the directory for the second instance redmine program
# Can't use the existing production version because some things,
# such as logs and uploaded files, also reside there
# The file .ruby-version contains "4.1.1" and prevents rvm from
# spewing messages about incompatible ruby version.
sudo -i -u redmine_usr_2
ln -s /opt/redmine/redmine-4.1.1.tar.gz
tar xf redmine-4.1.1.tar.gz
ln -s redmine-4.1.1 redmine_2
cd redmine_2
cp -p /opt/redmine/redmine/.ruby-version .
# Step 3 Database connection configuration
# Database connection is set up for a ruby environment named "redmine_2_env"
cd ~/redmine_2/config
sed -e "/^production:/,/encoding:/ s/database: redmine/database: redmine_two/" -e "/^production:/,/encoding:/ s/username: root/usern
ame: redmine_usr_2/" -e "/^production:/,/encoding:/ s/password: ""/password: "<redmine-2-pw>"/" -e "/^production:/ s/production/
redmine_2_env/" -e "/^development:/,/encoding:/ s/^/#/" -e "/^test:/,/encoding:/ s/^/#/" database.yml.example >database.yml_new
cp -p database.yml_new database.yml
# Environment configuration
cd ~/redmine_2/config/environments
cp -p production.rb redmine_2_env.rb
# Step 4 Dependencies installation
cd ~/redmine_2
bundle install
# Note that this may install some new (updated) gems
# Step 5 Session store secret generation
cd ~/redmine_2
bundle exec rake generate_secret_token
# Step 6 Database schema objects migration
cd ~/redmine_2
RAILS_ENV=redmine_2_env bundle exec rake db:migrate
# Step 7 Database default data set
cd ~/redmine_2
RAILS_ENV=redmine_2_env REDMINE_LANG=en bundle exec rake redmine:load_default_data
# Step 8 File system permissions
cd ~/redmine_2
# Note that on install the directories below actually already existed
# but doing the mkdir on an existing directory will be fine.
mkdir -p tmp tmp/pdf public/plugin_assets
## Step 9 Test the installation
## Use lynx because I don't have a local web browser.
# Note!!! This part of the script must be tested by hand, so is commented out
#cd ~/redmine_2
#bundle exec rails server webrick -e redmine_2_env amp;
## sudo aptitude install lynx
#lynx http://localhost:3000/
## This shows the redmine startup page
# Install plugins
cd ~/redmine_2
git clone -b stable https://github.com/AlphaNodes/additionals.git plugins/additionals
bundle exec rake redmine:plugins:migrate RAILS_ENV=redmine_2_env
exit
# Add new url to apache
# This includes the options necessary to configure PhusionPassenger
# See: https://www.phusionpassenger.com/library/config/apache/reference/
#
# /var/www/html
sudo ln -s /home/redmine_usr_2/redmine_2/public /var/www/html/redmine-site-2-url
# /etc/apache2/mods-available/passenger.conf specifies these global parameters:
# PassengerRoot /opt/passenger/passenger-stable-5.3
# PassengerDefaultRuby /usr/local/rvm/gems/ruby-2.6.6/wrappers/ruby
# PassengerUserSwitching on
# PassengerUser <passenger-default-ruby-user>
# PassengerGroup <passenger-default-ruby-group>
# PassengerFriendlyErrorPages on
# /etc/apache2/rubies/redmine-site-1.include specifies app-specific parameters for redmine site-1:
# <directory /var/www/html/redmine-site-1-url>
# RailsBaseURI /redmine-site-1-url
# PassengerAppRoot /opt/redmine/redmine
# PassengerAppEnv production
# PassengerAppGroupName production
# </Directory>
# /etc/apache2/rubies/redmine-site-2.include app-specific parameters for redmine site-2:
# <Directory /var/www/html/redmine-site-2-url>
# PassengerAppRoot /home/redmine_usr_2/redmine_2
# PassengerAppEnv redmine_2_env
# PassengerAppGroupName redmine_2
# RailsBaseURI /redmine-site-2-url
# PassengerUser redmine_usr_2
# PassengerGroup redmine_usr_2
# PassengerFriendlyErrorPages on
# </Directory>
#
cd /etc/apache2/rubies
# Edit redmine-site-1.include to be consistent with the above redmine-site-1 contents
# Create redmine-site-2.include to be consistent with the above redmine-site-2 contents
sudo cp -p redmine-site-1.include redmine-site-1.include_org
sudo sh -c 'sed -e "/URI /issues/ a PassengerAppRoot /opt/redmine/redminen PassengerAppEnv produ
ctionn PassengerAppGroupName production" redmine-site-1.include_org >redmine-site-1.include_new'
sudo cp -p redmine-site-1.include_new redmine-site-1.include
sudo sh -c 'cat - <<EOF > /etc/apache2/rubies/redmine-site-2.include
# /etc/apache2/rubies/redmine-site-2.include
<Directory /var/www/html/redmine-site-2-url>
PassengerAppRoot /home/redmine_usr_2/redmine_2
PassengerAppEnv redmine_2_env
PassengerAppGroupName redmine_2
RailsBaseURI /redmine-site-2-url
PassengerUser redmine_usr_2
PassengerGroup redmine_usr_2
PassengerFriendlyErrorPages on
</Directory>
EOF'
# tweak the existing apache redmine site.conf to include
# the /etc/apache2/rubies include file for the new site
cd /etc/apache2/sites-available
sudo cp -p redmine-sites.conf redmine-sites.conf_org
sudo sh -c 'sed -e "/redmine-site-1.include/ a Include rubies/redmine-site-2.include" redmine-sites.conf_org >redmine-sites.c
onf_new'
sudo cp -p redmine-sites.conf_new redmine-sites.conf
sudo cp -p redmine-sites-le-ssl.conf redmine-sites-le-ssl.conf_org
sudo sh -c 'sed -e "/redmine-site-1.include/ a Include rubies/redmine-site-2.include" redmine-sites-le-ssl.conf_org >redmine-
sites-le-ssl.conf_new'
sudo cp -p redmine-sites-le-ssl.conf_new redmine-sites-le-ssl.conf
sudo apache2ctl restart