[PHPConf Taiwan 2015] 當專案漸趕,當遷移也不再那麼難 (Ship Your Projects with Docker EcoSystem)
目录:
- 先决条件
- 创建MySQL数据库
- 安装Passenger和Nginx
- 创建新的系统用户
- 安装Ruby
- 在CentOS上安装Redmine
- 1.下载Redmine
- 2.配置Redmine数据库
- 3.安装Ruby依赖项
- 4.生成密钥并迁移数据库
- 配置Nginx
- 使用SSL配置Nginx
- 访问Redmine
- 结论
Redmine是最受欢迎的开源项目管理和问题跟踪软件工具之一。 它是跨平台和跨数据库的,建立在Ruby on Rails框架之上。
Redmine包括对多个项目,Wiki,问题跟踪系统,论坛,日历,电子邮件通知等的支持。
在本教程中,我们将介绍使用MariaDB作为数据库后端,而Passenger + Nginx作为Ruby应用程序服务器,在CentOS 7服务器上安装和配置最新版本的Redmine所需的步骤。
先决条件
在继续本教程之前,请确保您已满足以下先决条件:
- 指向服务器公共IP的域名。 在本教程中,我们将使用
example.com。以具有sudo特权的用户身份登录。
安装从源代码构建Redmine和Ruby所需的软件包:
sudo yum install curl gpg gcc gcc-c++ make patch autoconf automake bison libffi-devel libtool
sudo yum install readline-devel sqlite-devel zlib-devel openssl-develh readline glibc-headers glibc-devel
sudo yum install mariadb-devel zlib libyaml-devel bzip2 iconv-devel ImageMagick ImageMagick-devel
创建MySQL数据库
Redmine支持MySQL / MariaDB,Microsoft SQL Server,SQLite 3和PostgreSQL。 在本教程中,我们将MariaDB用作数据库后端。
如果您的CentOS服务器上未安装MariaDB或MySQL,则可以按照以下说明进行安装。
通过键入以下命令登录到MySQL Shell:
sudo mysql
在MySQL Shell中,运行以下SQL语句创建一个新数据库:
CREATE DATABASE redmine CHARACTER SET utf8;
接下来,创建一个MySQL用户帐户并授予对数据库的访问权限:
GRANT ALL ON redmine.* TO 'redmine'@'localhost' IDENTIFIED BY 'change-with-strong-password';
确保您
change-with-strong-password
了带有强密码的更改。
完成后,通过键入以下内容退出mysql shell:
安装Passenger和Nginx
Passenger是一款适用于Ruby,Node.js和Python的快速,轻量级的Web应用程序服务器,可以与Apache和Nginx集成。 我们将乘客安装为Nginx模块。
安装EPEL存储库和所需的软件包:
sudo yum install epel-release yum-utils pygpgme
sudo yum-config-manager --enable epel
启用Phusionpassenger存储库:
sudo yum-config-manager --add-repo
启用存储库后,更新软件包列表并使用以下命令安装Nginx和Passenger:
sudo yum install nginx passenger passenger-devel
创建新的系统用户
创建一个新用户和组,该用户和组将运行Redmine实例,为简单起见,我们将用户命名为
redmine
:
sudo useradd -m -U -r -d /opt/redmine redmine
将
nginx
用户添加到新用户组,并更改
/opt/redmine
目录权限,以便Nginx可以访问它:
sudo usermod -a -G redmine nginx
sudo chmod 750 /opt/redmine
安装Ruby
CentOS储存库中的Ruby版本已经过时,Redmine不支持。 我们将使用RVM安装Ruby。
通过键入以下命令切换到用户
redmine
:
sudo su - redmine
导入GPG密钥并安装RVM:
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
curl -sSL https://get.rvm.io | bash -s stable
curl -sSL https://get.rvm.io | bash -s stable
要开始使用RVM源
rvm
文件,请
rvm
操作:
source /opt/redmine/.rvm/scripts/rvm
现在,我们可以通过运行以下命令来安装Ruby:
rvm install 2.5
rvm --default use 2.5
如果要通过Rbenv安装Ruby,请查看本指南。
在CentOS上安装Redmine
在撰写本文时,Redmine的最新稳定版本为4.0.1。
在继续下一步之前,您应该检查Redmine下载页面以查看是否有较新的版本。
确保以
redmine
用户身份运行以下步骤。
1.下载Redmine
使用以下curl命令下载Redmine存档:
curl -L http://www.redmine.org/releases/redmine-4.0.1.tar.gz -o redmine.tar.gz
下载完成后,解压缩存档文件:
2.配置Redmine数据库
复制Redmine示例数据库配置文件:
cp /opt/redmine/redmine-4.0.1/config/database.yml.example /opt/redmine/redmine-4.0.1/config/database.yml
使用文本编辑器打开文件:
nano /opt/redmine/redmine-4.0.1/config/database.yml
搜索
production
部分,然后输入我们之前创建的MySQL数据库和用户信息:
production: adapter: mysql2 database: redmine host: localhost username: redmine password: "change-with-strong-password" encoding: utf8
完成后,保存文件并退出编辑器。
3.安装Ruby依赖项
导航到
redmine-4.0.1
目录并安装bundler和其他Ruby依赖项:
gem install bundler --no-rdoc --no-ri
cd ~/redmine-4.0.1
gem install bundler --no-rdoc --no-ri
bundle install --without development test postgresql sqlite
gem install bundler --no-rdoc --no-ri
bundle install --without development test postgresql sqlite
4.生成密钥并迁移数据库
运行以下命令以生成密钥并迁移数据库:
bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate
配置Nginx
切换回您的sudo用户:
exit
打开文本编辑器并创建以下Nginx服务器块文件:
sudo nano /etc/nginx/conf.d/example.com.conf
/etc/nginx/conf.d/example.com.conf
passenger_root /usr/share/ruby/vendor_ruby/phusion_passenger/locations.ini; passenger_ruby /opt/redmine/.rvm/gems/default/wrappers/ruby; passenger_instance_registry_dir /var/run/passenger-instreg; server { listen 80; server_name example.com www.example.com; root /opt/redmine/redmine-4.0.1/public; # 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。
在重新启动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服务:
使用SSL配置Nginx
生成证书后,按如下所示编辑域Nginx配置:
sudo nano /etc/nginx/conf.d/example.com.conf
/etc/nginx/conf.d/example.com
passenger_root /usr/share/ruby/vendor_ruby/phusion_passenger/locations.ini; passenger_ruby /opt/redmine/.rvm/gems/default/wrappers/ruby; passenger_instance_registry_dir /var/run/passenger-instreg; # 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/redmine-4.0.1/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。
访问Redmine
打开浏览器,键入您的域,并假设安装成功,将出现类似于以下的屏幕:


更改密码后,您将被重定向到用户帐户页面。
结论
您已在CentOS系统上成功安装Redmine。 现在,您应该查看Redmine文档,并了解有关如何配置和使用Redmine的更多信息。
centos redmine ruby mysql mariadb nginx如何在centos 7上添加和删除用户
知道如何添加和删除用户是Linux用户应该知道的基本技能之一。 在本教程中,我们将说明如何在CentOS 7系统上添加和删除用户。
如何在centos 7上添加交换空间
交换是物理RAM内存已满时使用的磁盘空间。 本教程说明了如何在CentOS 7系统上添加交换文件。
如何在centos 8上添加交换空间
交换是物理RAM内存已满时使用的磁盘空间。 本文介绍了在CentOS 8系统上添加交换文件的步骤。







