Giới thiệu:
Ruby on Rails là một khung làm việc (web framework) được viết trên ngôn ngữ lập trình Ruby và được sử dụng trong việc xây dựng và phát triển các ứng dụng web.
Redmine là một công cụ quản lý vấn đề (issue) dựa trên nền tảng web, có thể áp dụng thực hiện các chức năng quản lý các loại vấn đề: nhiệm vụ, lỗi, yêu cầu hỗ trợ, … của dự án một cách cơ bản. Redmine có ưu thế trong quản lý dự án là đáp ứng sẵn sàng những nội dung được quan tâm cho các vai trò từ quản lý dự án tới các thành viên trong dự án và các cá nhân/nhóm/bộ phận liên quan khác.
DirectAdmin là một công cụ quản trị hosting, trực quan, dễ sử dụng,
Redmine là một công cụ để quản lý dự án, được viết bằng ngôn ngữ Ruby on Rails. Redmine là một ứng dụng open source nên nó miễn phí và được cung cấp bởi GNU General Public License v2 (GPL). Một số tính năng của redmine:
- Hỗ trợ nhiều project
- Quản lý kết nối
- Hệ thống theo dõi tiến độ công việc
- Quản lý tin tức, tài liệu
- Hệ thống cảnh báo qua email
- Hỗ trợ xác thực bằng Ldap
- Hỗ trợ đa ngôn ngữ
- Hỗ trợ nhiều database
Thực Hiện
Bước 1: Cài đặt các gói cần thiết
yum install gcc-c++ patch readline readline-devel zlib zlib-devel ImageMagick ImageMagick-devel
yum install libyaml-devel libffi-devel openssl-devel make
yum install bzip2 autoconf automake libtool bison iconv-devel
Bước 2: Cài đặt Ruby on Rails
- Cài đặt gnupg keyserver
gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
Trong trường hợp lệnh trên không thực hiện được, có thể thay thế bằng lệnh sau:
command curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -"
Tiến hành cài đặt rvm hay còn gọi là Ruby version manager, với phần mềm này, ta có thể dễ dàng cài đặt và thay đổi các version của ruby được cài trên hệ thống, mà không cần thao tác phức tạp.
Thực hiện câu lệnh sau để cài đặt
curl -L https://get.rvm.io | bash -s stable --ruby
Mặc định hệ thống sẽ cài đặt phiên bản Ruby mới nhất.
Sau khi cài đặt xong, ta sẽ cần thiết lập môi trường cho Ruby, bằng cách sử dụng lệnh sau:
source /etc/profile.d/rvm.sh
Redmine phiên bản mới nhất (3.3) được hỗ trợ tốt nhất bởi Ruby 2.3 vì vậy, ta sẽ tiến hành chuyển phiên bản Ruby được cài đặt trên hệ thống sang phiên bản cần thiết.
Cài đặt Ruby 2.3.1
rvm install 2.3.1
Chuyển phiên bản mặc định của hệ thống sang Ruby 2.3.1
rvm use 2.3.1 --default
Kiểm tra lại thông tin
ruby --version
Bạn sẽ thấy thông tin như sau
[root@cloud9591 ~]# ruby --version ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]
Tiến hành cài đặt Rails 4.2.3 bằng lệnh sau :
gem install rails -v 4.2.3
Trong trường hợp quá trình cài đặt thành công, hệ thống sẽ trả lại thông số trên màn hình tương tự như sau ( có thể sai khác số gems được cài đặt)
Done installing documentation for thread_safe, tzinfo, concurrent-ruby, i18n, activesupport, rails-deprecated_sanitizer, mini_portile2, nokogiri, rails-dom-testing, crass, loofah, rails-html-sanitizer, erubis, builder, actionview, rack, rack-test, actionpack, sprockets, sprockets-rails, bundler, thor, railties, globalid, activejob, mini_mime, mail, actionmailer, arel, activemodel, activerecord, rails after 413 seconds 32 gems installed
Kiểm tra lại thông tin
[root@cloud9591 ~]# rails --version Rails 4.2.3
Cài đặt bundler bằng lệnh sau :
gem install bundler
Cài đặt passengerpassenger bằng lệnh sau :
gem install passenger
Cài đặt Apache passenger modude
passenger-install-apache2-module
Có thể sử dụng các thiết đặt mặc định của module (Enter 2 lần khi được hỏi thông số cài đặt)
Khi module được cài đặt xong, hệ thống sẽ tự động tạo ra đường dẫn tới thư viện của Passenger, bạn cần lưu các thông tin này để thêm vào file cấu hình httpd.conf sau này. Tại đây thông số được tạo ra là:
LoadModule passenger_module /usr/local/rvm/gems/ruby-2.3.1/gems/passenger-5.1.2/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/local/rvm/gems/ruby-2.3.1/gems/passenger-5.1.2
PassengerDefaultRuby /usr/local/rvm/gems/ruby-2.3.1/wrappers/ruby
</IfModule>
Bước 3: Cài đặt Redmine
Tạo database cho redmine:
mysql -u root -p
mysql> CREATE DATABASE redmine; mysql> GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost' IDENTIFIED BY 'redmine'; mysql> FLUSH PRIVILEGES; mysql> EXIT;
Cấu hình virtual host cho nginx:
Thêm dòng sau vào mục http của file /opt/nginx/conf/nginx.conf
include vhost/*.conf;
Tạo thư mục vhost để cấu hình virtual host.
mkdir -p /opt/nginx/conf/vhost
Trong thư mục vhost tạo file redmine.conf
server { listen 80; server_name www.redmine-test.com; root /var/www/redmine/public; passenger_enabled on; client_max_body_size 50m; # Max attachemnt size # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
Tạo file script để bật tắt service nginx
vim /lib/systemd/system/nginx.service
Thêm vào file đoạn code sau:
[Unit] Description=The NGINX HTTP and reverse proxy server After=syslog.target network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/opt/nginx/logs/nginx.pid ExecStartPre=/opt/nginx/sbin/nginx -t ExecStart=/opt/nginx/sbin/nginx ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target
Khởi động nginx:
systemctl daemon-reload systemctl start nginx
Cài đặt Redmine:
cd /var/www/ svn co https://svn.redmine.org/redmine/branches/3.4-stable redmine cp config/configuration.yml.example config/configuration.yml cp config/database.yml.example config/database.yml
Chỉnh sửa file database.yml
vim /opt/nginx/config/database.yml
Chỉnh sửa lại file đoạn config sau:
production: adapter: mysql2 database: redmine host: localhost username: redmine password: "redmine" encoding: utf8
Tạo thư mục để cài đặt các plugin
mkdir -p tmp tmp/pdf public/plugin_assets chown -R nobody:nobody files log tmp public/plugin_assets chmod -R 775 files log tmp public/plugin_assets
Cài đặt Bundle để quản lý gems:
gem install bundler bundle install --without development test bundle exec rake generate_secret_token
Tạo cấu trúc databse cho redmine
RAILS_ENV=production bundle exec rake db:migrate RAILS_ENV=production bundle exec rake redmine:load_default_data
Restart lại nginx
systemctl restart nginx
Kết nối vào redmine qua trình duyệt web