记录下redmine部署过程
1. 安装mysql (这里使用mariadb,centos7自带)
yum groupinstall mariadb
2. ruby编译安装
wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz tar xzfruby-2.3.1.tar.gz cdruby-2.3.1 ./configure--prefix=/usr/local/ruby make && make install
cat >> vim /etc/pofile << EOF #配置环境变量 export/usr/local/ruby/bin:$PATH EOF ruby -v ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]
3. 安装gem
yum install -y rubygems
gem是一种文件组织的包,一般的ruby的很多插件都有由这种各种的包提供。
官方的ruby网站被某组织墙掉了,可以使用国内的ruby镜像http://gems.ruby-china.org/
使用方法(参照ruby-china官网):
请尽可能用比较新的 RubyGems 版本,建议 2.6.x 以上。
gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/gem sources -lhttps://gems.ruby-china.org #更换源,确保只有 gems.ruby-china.org gem update --system # 这里请×××一下gem -v2.6.3 cd ruby-2.3.1/ gem install rails # 这里在在 ruby-2.3.1/ 源码的目录里执行
如果在其它目录执行会有如下报错:
你可以用Bundler的Gem源代码镜像命令:
bundle config mirror.https://rubygems.org https://gems.ruby-china.org
4. 下载redmine3.3.0
wget http://www.redmine.org/releases/redmine-3.3.0.tar.gz tar xzfredmine-3.3.0.tar.gz mv redmine-3.3.0/web/redmine
5. 创建redmine数据库
mysql -uroot -p mysql>create database redmine; mysql>grant all on redmine.* to redmine@'localhost' identified by '123456';
配置redmine的database.yml
cd /web/redmine/config cpdatabase.yml.example database.yml
vimdatabase.yml //修改对应数据库连接信息 production: adapter: mysql2 database: redmine host: localhost username: redmine password: "123456" encoding: utf8
6. 在线安装redmine依赖的所有ruby包
cd/web/redmine geminstall bundler //注意是在网站根目录下执行
[如果出现下面报错]
Successfully installed bundler-1.3.5
1 gem installed
Installing ri documentation for bundler-1.3.5...
ERROR: While executing gem ...(NoMethodError)
undefined method `map' forGem::Specification:Class
可以通过下面的方法解决
gemupdate --system
(bundle install --without development test 这句需要查下,和以下命令对比有何区别? 亲测以下语句如果缺少依赖包请照提示安装依赖包, 最终是可以执行成功的)
bundleinstall --without development test rmagick #完成redmine依赖包的安装
(这里安装过程可能比较慢).........
bundler是用来管理ruby的包依赖的工具
为Rails生成cookies秘钥 (直接执行以下命令)
rake generate_secret_token #等同 bundle exec rakegenerate_secret_token
创建数据库结构(直接执行以下命令)
RAILS_ENV=productionrake db:migrate
生成缺省数据
RAILS_ENV=productionREDMINE_LANG=zh rake redmine:load_default_data
[如果出现报错无法读取/tmp/mysql.sock
可通过软链接解决 ln -s /usr/local/mysql/mysql.sock/tmp/mysql.sock (不过这种方法不是很好,每次重启过linux系统后就没有了还需要重新设置)
建议直接修改数据库配置文件 vim /web/redmine/config/database.yml
encoding:utf8下面添加一行
socket: /var/run/mysqld/mysqld.sock]
调整文件系统权限(这里配置为与nginx)
chown -R nginx:nginx /data/wwwroot/redmine
mkdir -ptmp tmp/pdf public/plugin_assets #redmine目录默认存在了的,若不存在则创建该路径, tmp/pdf(用于生成 PDF 文件);public/plugin_assets (plugins资源)
7. 测试 with Redmine 3.x: Test the installation by running WEBrick web server
bundleexec rails server webrick -e production #这是不使用nginx转发时直接运行,会监听3000端口
8. 安装passenger
gem install passenger #如需指定安装版本 gem install passenger -v 5.1.5
9. 安装nginx (依赖包 yum install pcre-devel openssl-devel)
方法1) 使用passenger自带的一个命令自动安装nginx
passenger-install-nginx-module //按照提示一步一步的操作,这个命令会自己下载最新版的nginx和编译passengermodule.
一路回车,出现让我们选择安装方式。这里1是自动编译安装,我们选择1,回车,然后输入安装位置/usr/local/nginx
回车,其会自动进行configure --> make --> make install 完成
方法2)也可以手动编译安装,configure参数如下(redmine 版本 3.3.3,重新编译一样可以用这个参数)
./configure --prefix=/usr/local/nginx --user=nginx--group=nginx --with-http_ssl_module --with-http_gzip_static_module \ --with-http_stub_status_module --with-pcre \ --add-module=/usr/local/ruby/lib/ruby/gems/2.3.0/gems/passenger-5.1.5/src/nginx_module
如果是redmine 版本 2.x 老版的编译参数如下:
./configure --prefix=/usr/local/nginx --user=www --group=www--with-http_stub_status_module \ --with-http_spdy_module --with-http_ssl_module --with-ipv6--with-http_gzip_static_module \ --with-http_flv_module --with-ld-opt=-ljemalloc \ --add-module=/usr/local/ruby/lib/ruby/gems/2.1.0/gems/passenger-4.0.57/ext/nginx
注: 如果nginx在服务器原本就已经安装好,则可参照nginx重新编译添加模块的方法操作
10. 配置Redmine在Nginx上运行
结束webrick服务
cd /web/redmine/public/ cpdispatch.fcgi.example dispatch.fcgi cphtaccess.fcgi.example .htaccess.fcgi
配置Nginx
vi/usr/local/nginx/conf/nginx.conf #在http {}直接添加 passenger_root/usr/local/ruby/lib/ruby/gems/2.3.0/gems/passenger-5.1.5; passenger_ruby /usr/local/ruby/bin/ruby;
添加虚拟主机(/usr/local/nginx/conf/nginx.conf)如下:
server { server_name localhost; listen 80; index index.html;
location/ { root /web/redmine/public; passenger_enabled on; index index.html index.htm index.php; } }
启动nginx
/usr/local/nginx/sbin/nginx
11. 页面访问正常,部署完毕
默认登陆用户: admin 密码: admin
出现的部分报错:
1)nginx编译, make的时候出现如下报错: 原因不明
最后从其它机器把已make编译成功的带有Passenger参数的 nginx文件复制到/usr/local/nginx/sbin/目录,启动测试正常
2 )bundleinstall --without development test rmagick (或gem installrmagick 也一样报如下错)
报错
然后查看相关日志文件 gem_make.out
可以看到错误提示 Can't installRMagick 2.16.0. You must have ImageMagick 6.4.9 or later
解决:
要安装rmagick 需要先安装ImageMagick
yum install ImageMagick-devel
参考<http://www.bbtang.info/linux/fuwu/365.html>
3)redmine编辑保存慢的问题
新建问题或更新问题时非常慢,网上搜索了一下,发现有人提到是因为在新建问题和更新问题时会发送邮件,而且是同步操作的,就是说需要等到邮件发送成功后才会返回。这样一说还真是恍然大悟,于是找到了解决的方案,将发送邮件的方式改为异步操作:
1. 进入redmine目录下的config目录;(或者直接不配置smtp)
2. 编辑configuration.yml;
3. 找到 delivery_method: :smtp,将smtp改为:async_smtp,保存退出;(async前面有: 否则会出现500错误)
4. 重启nginx服务;
完成以上步骤后,重新打开redmine,新建问题和编辑问题提交后唰唰的就出来了
default: email_delivery: delivery_method: :async_smtp smtp_settings: enable_starttls_auto: false address: smtp.mxhichina.com port: 25 domain: mxhichina.com authentication: :login user_name: [email protected] password: xxxxx
附:
其它参考 <https://my.oschina.net/dennisguo/blog/411353>
redmine官方安装文档 http://www.redmine.org/projects/redmine/wiki/RedmineInstall