本文将指导你完成 Redmine 项目的安装部署,包括环境准备、详细操作步骤、关键命令说明以及常见问题处理。
操作前的准备或背景介绍
Redmine 是一个开源的项目管理和缺陷跟踪系统,基于 Ruby on Rails 开发。安装 Redmine 需要满足以下基本条件:
- 操作系统:推荐 Ubuntu 18.04/20.04 或 CentOS 7/8
- 软件依赖:Ruby 2.5+, PostgreSQL/MySQL/MariaDB 数据库, Redis (可选)
- 系统工具:Git, Apache/Nginx, Node.js (用于资产编译)
详细操作指南
1. 安装基础环境
以 Ubuntu 系统为例,使用以下命令更新系统并安装必要依赖:
sudo apt update
sudo apt install -y ruby-full build-essential zlib1g-dev libssl-dev libreadline-dev libyaml-dev libsqlite3-dev nodejs postgresql-12 libpq-dev
创建 Redmine 用户并切换到该用户:
sudo su - postgres
createuser --username=postgres --no-superuser --pwprompt redmine
2. 下载并安装 Redmine
从官方仓库克隆最新版本:
cd /tmp
wget https://www.redmine.org/releases/redmine-4.2.2.tar.gz
tar -xvzf redmine-4.2.2.tar.gz
sudo mv redmine-4.2.2 /var/www/redmine
3. 创建数据库和数据目录
为 Redmine 创建数据库和文件存储目录:
sudo -u postgres create DATABASE redmine
sudo -u postgres create DATABASE redmine_test
sudo mkdir -p /var/www/redmine/files
sudo chown -R redmine:redmine /var/www/redmine/files
4. 配置数据库连接
编辑 Redmine 配置文件以连接到 PostgreSQL:
cd /var/www/redmine/config
cp database.yml.example database.yml
vi database.yml
# 修改 production 部分配置
production:
adapter: postgresql
encoding: unicode
database: redmine
pool: 5
username: redmine
password: [你的密码]
host: localhost
5. 安装 Redmine 依赖
使用 RubyGems 安装 Redmine 所需的 gem 依赖:
cd /var/www/redmine
bundle install --without development test --path vendor/bundle
注意:–without 参数排除了开发和测试环境的依赖,适合生产环境。
6. 编译资产文件
Redmine 使用 Sass 和 CoffeeScript 编译前端资源:
cd /var/www/redmine
RAILS_ENV=production bundle exec rake assets:precompile
7. 初始化数据库
创建 Redmine 必需的数据库表:
RAILS_ENV=production bundle exec rake db:migrate
8. 创建管理员账户
运行以下命令创建初始管理员用户:
RAILS_ENV=production bundle exec rake redmine:load_default_data
9. 配置 Web 服务器
9.1 Apache 配置
<VirtualHost *:80>
ServerName your_domain
DocumentRoot /var/www/redmine/public
RailsEnv production
<Directory /var/www/redmine/public>
Options -MultiViews
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/apache2/redmine_error.log
CustomLog /var/log/apache2/redmine_access.log combined
</VirtualHost>
9.2 Nginx 配置
server {
listen 80;
server_name your_domain;
root /var/www/redmine/public;
rails_env production;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location ~ ^/robots.txt$ {
allow all;
log_not_found off;
access_log off;
}
location ~ ^/favicon.ico$ {
allow all;
log_not_found off;
access_log off;
}
error_log /var/log/nginx/redmine_error.log;
access_log /var/log/nginx/redmine_access.log;
}
10. 重启服务并访问
重启 Web 服务器并访问 Redmine:
sudo systemctl restart apache2 # 或 nginx
# 或直接访问 http://your_domain
涉及的关键命令、代码或配置示例解释
bundle install:安装项目依赖的 gem,–path vendor/bundle 参数将依赖缓存到 vendor 目录,避免重复安装。
RAILS_ENV=production:指定 Rails 环境为生产环境,该环境会禁用调试信息并优化性能。
assets:precompile:预编译 Sass/CoffeeScript 资源文件,减少生产环境中的动态编译开销。
db:migrate:执行数据库迁移脚本,创建 Redmine 所需的表结构。
操作过程中可能遇到的问题、注意事项或实用技巧
- 依赖安装失败:检查 Ruby 版本是否兼容,或使用指定版本安装
- 数据库连接问题:确保 PostgreSQL 正在运行且 redmine 用户有访问权限
- 资产编译错误:安装 Node.js 和 Sass 并重新运行 assets:precompile
- Apache/Nginx 配置无效:检查 DocumentRoot 或 root 路径是否正确
- 性能优化:考虑配置 Redis 作为缓存后端,修改 config/default_settings.yml 中的缓存配置