如何在Debian 9上安装和配置Redmine
Redmine是一个免费的开源项目管理和问题跟踪应用程序。
它是跨平台和跨数据库的,并基于Ruby on Rails框架构建。
Redmine包括对多个项目,Wiki,问题跟踪系统,论坛,日历,电子邮件通知等的支持。
在本教程中,我们将向我们展示如何在Debian 9服务器上安装和配置最新版本的Redmine,该服务器使用MySQL作为数据库后端,而Passenger + Nginx作为Ruby应用程序服务器。
准备工作
在继续本教程之前,请确保我们已满足以下准备工作:
- 有一个域名指向服务器公用IP。我们将使用'example.com'。
- 以具有sudo特权的用户身份登录。
- 已安装Nginx。
- 为域安装SSL证书。
创建一个MySQL数据库
Redmine支持MySQL/MariaDB,Microsoft SQL Server,SQLite 3和PostgreSQL。
我们将使用MariaDB作为数据库后端。
确保计算机上至少安装了MySQL 5.7或者MariaDB 10.3.
如果Debian服务器上未安装MariaDB或者MySQL,则可以按照以下说明进行安装。
首先输入以下内容登录到MySQL控制台:
sudo mysql
运行以下SQL语句以创建一个新数据库:
CREATE DATABASE redmine CHARACTER SET utf8mb4;
创建一个新的MySQL用户帐户并授予对数据库的访问权限:
GRANT ALL ON redmine.* TO 'redmine'@'localhost' IDENTIFIED BY 'change-with-strong-password';
不要忘记使用强密码来更改“使用强密码更改”。
完成后,通过键入以下内容从MariaDB控制台注销:
EXIT;
安装Ruby
在Debian上安装Ruby的最简单方法是使用“ apt”软件包管理器:
通过键入以下命令安装Ruby:
sudo apt install ruby-full
在撰写本文时,Debian存储库中的版本为“ 2.3.3p222”,最新版本的Redmine支持该版本。
如果要通过Rbenv或者RVM安装Ruby,请访问本教程。
安装Passenger和Nginx
Passenger是一个快速,轻量级的Web应用程序服务器,用于Ruby,Node.js和Python,可以与Apache和Nginx集成。
我们将乘客安装为Nginx模块。
在继续以下步骤之前,请确保已安装Nginx。
安装必要的软件包以启用https存储库:
sudo apt install dirmngr gnupg apt-transport-https ca-certificates software-properties-common
导入存储库GPG密钥并启用Phusionpassenger存储库:
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 561F9B9CAC40B2F7sudo add-apt-repository 'deb https://oss-binaries.phusionpassenger.com/apt/passenger stretch main'
更新软件包列表,并使用以下命令安装Passenger Nginx模块:
sudo apt updatesudo apt install libnginx-mod-http-passenger
在Debian上安装Redmine
首先安装构建Redmine所需的依赖项:
sudo apt install build-essential libmariadbclient-dev imagemagick libmagickwand-dev curl ruby-dev libxslt-dev libxml2-dev zlib1g-dev
在撰写本文时,Redmine的最新稳定版本是4.0.4版本。
在继续下一步之前,我们应该检查Redmine下载页面以获取较新版本。
1.下载Redmine
使用以下curl命令下载Redmine存档:
sudo curl -L http://www.redmine.org/releases/redmine-4.0.4.tar.gz -o /tmp/redmine.tar.gz
下载完成后,解压缩存档并将其移至“/opt”目录:
cd /tmpsudo tar zxf /tmp/redmine.tar.gzsudo mv /tmp/redmine-4.0.4 /opt/redmine
2.配置Redmine数据库
复制Redmine示例配置文件:
sudo cp /opt/redmine/config/database.yml.example /opt/redmine/config/database.yml
使用文本编辑器打开文件:
sudo nano /opt/redmine/config/database.yml
搜索“生产”部分,然后输入我们之前创建的MySQL数据库和用户信息:
/opt/redmine/config/database.yml
production: adapter: mysql2 database: redmine host: localhost username: redmine password: "change-with-strong-password" encoding: utf8
完成后,保存文件并退出编辑器。
3.安装Ruby依赖项
导航到redmine目录并安装bundler和其他Ruby依赖项:
cd /opt/redmine/sudo gem install bundler --no-rdoc --no-ri sudo bundle install --without development test postgresql sqlite
4.生成密钥并迁移数据库
运行以下命令以生成密钥并迁移数据库:
cd /opt/redmine/sudo bundle exec rake generate_secret_tokensudo RAILS_ENV=production bundle exec rake db:migrate
5.设置正确的权限
Nginx以“ www-data”用户和组身份运行。
通过发出以下chown命令来设置正确的权限:
sudo chown -R www-data: /opt/redmine/
配置Nginx
到目前为止,如果没有检查本教程的准备工作,则应该已经在系统上安装了带有SSL证书的Nginx。
打开文本编辑器并创建以下Nginx服务器块文件:
sudo nano /etc/nginx/sites-available/example.com
/etc/nginx/sites-available/example.com
# Redirect HTTP -> HTTPS server { listen 80; server_name www.example.com example.com; include snippets/letsencrypt.conf; return 301 https://example.com$request_uri; } # Redirect WWW -> NON WWW server { listen 443 ssl http2; server_name www.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf; return 301 https://example.com$request_uri; } server { listen 443 ssl http2; server_name example.com; root /opt/redmine/public; # SSL parameters ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; # log files access_log /var/log/nginx/example.com.access.log; error_log /var/log/nginx/example.com.error.log; passenger_enabled on; passenger_min_instances 1; client_max_body_size 10m; }
不要忘了用Redmine域替换example.com并为SSL证书文件设置正确的路径。
所有HTTP请求都将重定向到HTTPS。
本教程中创建了此配置中使用的摘录。
通过创建指向'sites-enabled'目录的符号链接来启用服务器块:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
在重新启动Nginx服务之前,请进行测试以确保没有语法错误:
sudo nginx -t
如果没有错误,则输出应如下所示:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
最后,通过键入以下命令重新启动Nginx服务:
sudo systemctl restart nginx
访问Redmine
打开浏览器,输入域,并假设安装成功,将出现类似于以下的屏幕:
Redmine的默认登录凭据为:
- 用户名:admin
- 密码:admin
首次登录时,将提示我们更改密码,如下所示:
更改密码后,我们将被重定向到用户帐户页面。