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 版本,它与后来的 sprockets 版本不兼容。另请注意,更改权限 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 中复制电子邮件设置。
然后重启你的服务器,它应该可以工作了。