插件窝 干货文章 在Linux系统中怎么将Redmine和SVN整合入Nginx

在Linux系统中怎么将Redmine和SVN整合入Nginx

Redmine SVN Passenger Nginx 726    来源:    2025-04-21

在Linux系统中整合Redmine、SVN和Nginx

要将Redmine和SVN整合到Nginx中,需要完成以下几个主要步骤:

1. 前提条件

  • 已安装的Linux系统
  • 已安装的Nginx
  • 已安装的Redmine
  • 已安装的Subversion (SVN)
  • Ruby和Passenger (用于Redmine)

2. 整合Redmine与Nginx

2.1 配置Passenger

  1. 安装Passenger:
gem install passenger
passenger-install-nginx-module
  1. 在Nginx配置中添加Passenger支持:
http {
    passenger_root /usr/local/rvm/gems/ruby-2.7.0/gems/passenger-6.0.7;
    passenger_ruby /usr/local/rvm/wrappers/ruby-2.7.0/ruby;

    server {
        listen 80;
        server_name redmine.yourdomain.com;

        root /path/to/redmine/public;
        passenger_enabled on;

        # 静态文件缓存
        location ~ ^/(images|javascripts|stylesheets|themes)/ {
            expires max;
            add_header Cache-Control public;
        }
    }
}

2.2 配置Redmine数据库连接

确保Redmine的config/database.yml已正确配置数据库连接。

3. 整合SVN与Nginx

3.1 配置SVN仓库

  1. 创建SVN仓库:
svnadmin create /path/to/svn/repository
  1. 设置权限:
chown -R www-data:www-data /path/to/svn/repository

3.2 配置Nginx支持SVN

使用WebDAV模块来支持SVN:

server {
    listen 80;
    server_name svn.yourdomain.com;

    location / {
        dav_methods PUT DELETE MKCOL COPY MOVE;
        dav_ext_methods PROPFIND OPTIONS;
        dav_access user:rw group:rw all:r;

        # SVN认证
        auth_basic "Subversion Repository";
        auth_basic_user_file /path/to/svn-auth-file;

        # 指向SVN仓库
        root /path/to/svn;
    }
}

创建认证文件:

htpasswd -c /path/to/svn-auth-file username

4. 整合Redmine与SVN

4.1 配置Redmine访问SVN

  1. 在Redmine管理界面中:

    • 进入"管理" > "版本库"
    • 点击"新建版本库"
    • 选择"Subversion"作为SCM
    • 输入SVN URL (如: http://svn.yourdomain.com/repository)
    • 输入认证信息
  2. 确保Redmine服务器可以访问SVN仓库:

sudo -u redmine-user svn ls http://svn.yourdomain.com/repository

4.2 配置自动更新

设置cron任务定期更新Redmine中的SVN信息:

crontab -u redmine-user -e

添加:

*/5 * * * * cd /path/to/redmine && rake redmine:fetch_changesets RAILS_ENV=production

5. 完整Nginx配置示例

http {
    passenger_root /usr/local/rvm/gems/ruby-2.7.0/gems/passenger-6.0.7;
    passenger_ruby /usr/local/rvm/wrappers/ruby-2.7.0/ruby;

    # Redmine服务器
    server {
        listen 80;
        server_name redmine.yourdomain.com;

        root /path/to/redmine/public;
        passenger_enabled on;

        client_max_body_size 10m;

        location ~ ^/(images|javascripts|stylesheets|themes)/ {
            expires max;
            add_header Cache-Control public;
        }
    }

    # SVN服务器
    server {
        listen 80;
        server_name svn.yourdomain.com;

        location / {
            dav_methods PUT DELETE MKCOL COPY MOVE;
            dav_ext_methods PROPFIND OPTIONS;
            dav_access user:rw group:rw all:r;

            auth_basic "Subversion Repository";
            auth_basic_user_file /path/to/svn-auth-file;

            root /path/to/svn;
        }
    }
}

6. 测试与验证

  1. 重启Nginx:
sudo systemctl restart nginx
  1. 测试Redmine:

    • 访问 http://redmine.yourdomain.com
    • 确保可以正常登录和浏览
  2. 测试SVN:

svn co http://svn.yourdomain.com/repository test-checkout
  1. 验证Redmine中的SVN集成:
    • 在Redmine项目中查看"版本库"标签
    • 确保可以看到SVN提交历史

7. 安全考虑

  1. 考虑启用HTTPS
  2. 定期备份Redmine和SVN数据
  3. 监控服务器资源使用情况
  4. 定期更新所有组件

通过以上步骤,您应该已经成功将Redmine和SVN整合到Nginx中,并实现了两者之间的集成。