要将Redmine和SVN整合到Nginx中,需要完成以下几个主要步骤:
gem install passenger
passenger-install-nginx-module
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;
}
}
}
确保Redmine的config/database.yml
已正确配置数据库连接。
svnadmin create /path/to/svn/repository
chown -R www-data:www-data /path/to/svn/repository
使用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
在Redmine管理界面中:
http://svn.yourdomain.com/repository
)确保Redmine服务器可以访问SVN仓库:
sudo -u redmine-user svn ls http://svn.yourdomain.com/repository
设置cron任务定期更新Redmine中的SVN信息:
crontab -u redmine-user -e
添加:
*/5 * * * * cd /path/to/redmine && rake redmine:fetch_changesets RAILS_ENV=production
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;
}
}
}
sudo systemctl restart nginx
测试Redmine:
http://redmine.yourdomain.com
测试SVN:
svn co http://svn.yourdomain.com/repository test-checkout
通过以上步骤,您应该已经成功将Redmine和SVN整合到Nginx中,并实现了两者之间的集成。