在保留外部数据库的同时移动 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.
中的电子邮件设置
然后重新启动服务器,它应该可以正常工作了。
我目前在 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.
中的电子邮件设置然后重新启动服务器,它应该可以正常工作了。