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,

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

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