Hướng dẫn cài đặt Ruby on Rail, Redmine lên hệ thống sử dụng Directadmin + Nginx reverse proxy

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, được 123HOST cung cấp kèm với công nghệ Nginx reverse proxy, giúp tăng hiệu năng hoạt động của toàn hệ thống. Bộ giải pháp này được 123HOST cung cấp hoàn toàn miễn phí khi sử dụng VPS với công nghệ OpenVZ.

Mục đích

Bài viết này 123HOST sẽ hướng dẫn cách cài đặt Ruby on rails và Redmine lên hệ thống DirectAdmin và Nginx reverse proxy, tận dụng được hệ thống quản lý của DirectAdmin và tốc độ tối ưu của Nginx reverse proxy.

Thực Hiện

Bước 1: Cài đặt các gói cần thiết

  • SSH vào hệ thống và sử dụng lệnh sau:

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

  • Tiến hành cài đặt Rails 4.2.3

Tiến hành cài đặt 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 actionmailer, actionpack, actionview, activejob, activemodel, activerecord, activesupport, arel, builder, concurrent-ruby, erubis, globalid, i18n, loofah, mail, mime-types, mime-types-data, mini_portile2, nokogiri, rack, rack-test, rails, rails-deprecated_sanitizer, rails-dom-testing, rails-html-sanitizer, railties, sprockets, sprockets-rails, thor, thread_safe, tzinfo after 711 seconds
31 gems installed

Kiểm tra lại thông tin

rails --version

  • Cài đặt bundler

Sử dụng câu lệnh sau:

gem install bundler

  • Cài đặt passengerpassenger

Sử dụng câu 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 hosting cho domain cần sử dụng trên hệ thống Directadmin, tại đây ta sử dụng domain redminetest.com, sử dụng giao diện quản trị của Directadmin:

  • Truy cập gói hosting và upload source code, sau đó giải nén và copy source code ra public_html

  • Tạo database cho Redmine

  • Tạo file kết nối database cho Redmine

Truy cập thư mục của gói hosting thông qua SSH.

Mặc định hệ thống Directadmin khi tạo hosting, các file upload lên hosting sẽ được lưu tại /home/tên_user/domain/tên_domain/public_html. Trong trường hợp này là /home/redmine/domains/redminetest.com/public_html/

Copy file database.yml.example thành database.yml trong thư mục config của Redmine

cd /home/redmine/domains/redminetest.com/public_html/config

cp database.yml.example database.yml

Tiến hành chỉnh sửa file database.yml và thay đổi thông số kết nối tới Database vừa được tạo

vi database.yml

Trong trường hợp này là:

production:
adapter: mysql2
database: redmine_db
host: localhost
username: redmine_db
password: “123456”
encoding: utf8

Lưu lại các thay đổi.

Quay lại thư mục chính của hosting

cd /home/redmine/domains/redminetest.com/public_html/

  • Cài đặt các gems cần thiết để sử dụng Redmine

bundle install --without postgresql sqlite test development

  • Tạo Secrect token

rake generate_secret_token

  • Tạo cấu trúc Database cho Redmine

rake db:migrate RAILS_ENV="production"

  • Tạo các thiết đặt mặc định của Redmine trên Database

rake redmine:load_default_data RAILS_ENV="production"

Bước 4: Cấu hình httpd

  • Tìm kiếm file httpd được sử dụng bởi hệ thống Directadmin ứng với domain redminetest.com

httpd -S | grep redminetest.com

Sẽ được kết quả sau:

port 80 namevhost www.redminetest.com (/usr/local/directadmin/data/users/redmine/httpd.conf:28)
alias www.redminetest.com
alias redminetest.com
port 443 namevhost www.redminetest.com (/usr/local/directadmin/data/users/redmine/httpd.conf:59)
alias www.redminetest.com
alias redminetest.com

Tại đây đường dẫn tới file cấu hình của domain redminetest.com là: /usr/local/directadmin/data/users/redmine/httpd.conf

  • Tiến hành thêm cấu hình passenger đã được tạo ra từ bước trước vào file cấu hình htttpd trên.

Thêm:

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>

Vào sau Directive Directory đầu tiên.

 

Lưu lại thay đổi, và chỉnh file cấu hình trên sang “Readonly”, tránh trường hợp Directadmin tự động chỉnh sửa file cấu hình trên, dẫn tới mất configure của Passenger.

chattr +i /usr/local/directadmin/data/users/redmine/httpd.conf

Bước 5: Chỉnh sửa lại cấu hình Nginx reverse proxy

Thông thường các file cấu hình Nginx của domain sẽ được lưu trong thư mục: /usr/local/directadmin/data/users/tên_user/nginx.conf. Tại đây, file cấu hình được lưu tại:  /usr/local/directadmin/data/users/redmine/nginx.conf

Chỉnh sửa toàn bộ các đường dẫn root tại các location của nginx tới thư mục public của Redmine. Tại ví dụ này, ta cần chỉnh sửa tới đường dẫn: /home/redmine/domains/redminetest.com/public_html/public

  • Lưu ý: tại location location /nginx_static_files/, đường dẫn bắt buộc phải được kết thúc bằng “/
  • Lưu lại thay đổi, và chỉnh file cấu hình trên sang “Read-only”, tránh trường hợp Directadmin tự động chỉnh sửa file cấu hình trên, dẫn tới mất configure của Passenger.

chattr +i /usr/local/directadmin/data/users/redmine/nginx.conf

  • Khởi động lại httpd và nginx

service httpd restart

service nginx restart

Vậy là bạn đã cài đặt xong Redmine, có thể truy cập vào Redmine thông qua trình duyệt.

  • Thông tin đăng nhập mặc định là admin/admin

Chúc các bạn thành công.

Rate This Article

Leave A Comment?