在保留外部数据库的同时移动 Redmine 服务器

Move Redmine Server whilst keeping external database

我目前在 nginx 服务器上安装了 redmine 运行。实际的 MySQL 数据库位于外部服务器上,一切正常。

现在我想将它移动到另一台机器上的 Apache 服务器,最好没有 changing/moving 数据库。

这可能吗,还是我总是需要 export/import 数据库?很高兴坚持使用相同版本的 redmine(在我的例子中是 4.0.1.,Ruby 2.5.1-p57,Rails 5.2.2,没有安装插件)。如果是肯定的,Ruby/Rails 版本的条件是什么?它们都必须与我在旧版本上的完全一样吗?

数据库方案不受ruby版本的影响,只受Redmine版本的影响,因为新版本可能会添加或删除数据库中的内容。 因此,在您的情况下,将旧的 Redmine 复制粘贴到新服务器应该可行。

但是您必须确保新的 Redmine 服务器(可能是新 IP)具有访问 MySQL 数据库的适当权限。

并且您必须遵循升级教程,因为您的新服务器需要拉取并安装 Ruby Gems,从 tmp 文件夹中清除旧缓存等...

https://www.redmine.org/projects/redmine/wiki/RedmineUpgrade

Aleksander 的回答让我相信这是可以做到的,但我最终坚持了我最初的方法,直到我开始工作,而不是改变他的建议。

恐怕我忘记了各种位的来源,它主要来自 redmine 帮助页面。

我的完整解决方案是

sudo apt update
sudo apt upgrade
sudo apt install build-essential libmysqlclient-dev imagemagick libmagickwand-dev ruby-full
sudo apt install apache2 libapache2-mod-passenger
sudo gem update
sudo gem install bundler

sudo curl -L https://www.redmine.org/releases/redmine-4.0.1.tar.gz -o /tmp/redmine.tar.gz
sudo tar zxf /tmp/redmine.tar.gz
sudo mv redmine-4.0.1 /opt/redmine
sudo touch /opt/redmine/Gemfile.lock
sudo chown www-data:www-data /opt/redmine/Gemfile.lock
sudo chmod a+w /opt/redmine/Gemfile.lock
sudo cp /opt/redmine/config/database.yml.example /opt/redmine/config/database.yml
sudo ln -s /opt/redmine/public /var/www/html/redmine

cd /opt/redmine
mkdir -p /opt/redmine/app/assets/config && echo '{}' > /opt/redmine/app/assets/config/manifest.js
bundle install
bundle exec rake generate_secret_token 

请注意上面的清单行仅适用于我的特定 redmine 版本,它与后来的链轮版本不兼容。另请注意,更改权限 a+w 可能过度,但我在权限方面遇到了其他问题。

然后我们必须再做一些手动调整。使用文本编辑器打开文件:

sudo nano /opt/redmine/config/database.yml

并将生产更改为以下内容

production:
  adapter: mysql2
  database: myredminedatabasename
  host: mysqlserver.somewhere.com
  username: dbusername
  password: "dbpassword"
  encoding: utf8

需要将 PassengerDefaultUser 行添加到 /etc/apache2/mods-available/passenger.conf(其他两行保持相同,即使略有不同)

<IfModule mod_passenger.c>
  PassengerDefaultUser www-data
  PassengerRoot /usr
  PassengerRuby /usr/bin/ruby
</IfModule>

更改 /etc/apache2/sites-available/000-default.conf 以将以下内容插入其他部分,以便 apache 知道遵循符号链接进入 Rails。另请注意第一行设置 DocumentRoot,这是我个人的绊脚石之一。

DocumentRoot /var/www/html/redmine
<Directory /var/www/html/redmine>
    RailsBaseURI /redmine
    PassengerResolveSymlinksInDocumentRoot on
</Directory>

我们还需要将文件夹的内容从旧服务器上的 /opt/redmine/files 复制到同一位置的新服务器。

同时复制 /opt/redmine/config/configuration.yml.

中的电子邮件设置

然后重新启动服务器,它应该可以正常工作了。