1. Cài đặt phiên bản cần nâng cấp
Trước khi thực hiện nâng cấp, cần cài đặt phiên bản Redmine 3.4 mới nhất. Tham khảo tài liệu hướng dẫn cài đặt tại trang chủ Redmine.
2. Sao lưu dữ liệu nguồn
Quá trình nâng cấp đòi hỏi phải sao lưu dữ liệu hiện có để phòng trường hợp xảy ra sự cố.
# Sao lưu cơ sở dữ liệu
mysqldump -uredmine -pmatkhau --all-databases > redmine_backup.sql
# Sao lưu tệp đính kèm
cd /var/www/redmine/
tar -jcf redmine_files.tar.gz files
3. Tiến hành nâng cấp (dừng dịch vụ Redmine và cơ sở dữ liệu)
3.1. Sao chép các tệp đã sao lưu
# Kiểm tra các tệp sao lưu
ll
# Kết quả hiển thị:
# -rw-r--r--. 1 root root 362808562 12月 25 13:47 redmine_files.tar.gz # Tệp đính kèm
# -rw-r--r--. 1 root root 6357130 12月 25 13:15 redmine_backup.sql # Tệp sao lưu CSDL
3.2. Khôi phục tệp đính kèm
# Di chuyển đến thư mục cài đặt Redmine mới
cd /usr/local/redmine-3.4.7/
# Xóa thư mục files cũ
rm -rf files
# Di chuyển và giải nén tệp đính kèm đã sao lưu
mv /root/redmine_files.tar.gz .
tar xf redmine_files.tar.gz
3.3. Xóa và tạo lại cơ sở dữ liệu
# Đăng nhập vào MySQL
mysql
# Hiển thị các cơ sở dữ liệu hiện có
show databases;
# Xóa cơ sở dữ liệu Redmine cũ
drop database redmine;
# Khôi phục từ tệp sao lưu
source /root/redmine_backup.sql;
# Tạo cơ sở dữ liệu mới
create database redmine_db;
# Cấp quyền truy cập
grant all privileges on redmine_db.* to 'redmine'@'localhost' identified by 'matkhau';
# Làm mới quyền
flush privileges;
# Thoát MySQL
\q
3.4. Cập nhật tệp cấu hình Redmine
# Chỉnh sửa tệp cấu hình cơ sở dữ liệu
vim config/database.yml
# Nội dung tệp cấu hình:
production:
adapter: mysql2
database: redmine_db
host: localhost
username: redmine
password: "matkhau"
encoding: utf8
3.5. Di chuyển cơ sở dữ liệu đến phiên bản mới
# Thực hiện di chuyển cơ sở dữ liệu
ruby bin/rake db:migrate RAILS_ENV=production
3.6. Xử lý các plugin (nếu có)
Nếu phiên bản cũ có cài đặt plugin, cần sao chép các plugin này vào thư mục plugin của phiên bản mới và kiểm tra tính tương thích.
# Cập nhật plugin
ruby bin/rake redmine:plugins RAILS_ENV="production"
3.7. Dọn bộ nhớ cache và session
# Xóa cache
ruby bin/rake tmp:cache:clear
# Xóa session
ruby bin/rake tmp:sessions:clear
3.8. Khởi động dịch vụ
# Khởi động Redmine bằng webrick
bundle exec rails server webrick -e production -b 192.168.1.110
Nâng cấp đã hoàn tất. Tuy nhiên, việc sử dụng webrick để khởi động dịch vụ có thể chậm và khó quản lý khi cần chạy nền. Để cải thiện hiệu suất và độ ổn định, chúng ta nên tích hợp Redmine với máy chủ HTTP Apache.
4. Sử dụng Apache HTTP Server để triển khai Redmine
4.1. Cài đặt Apache và module Passenger
# Cài đặt Apache và các thư viện cần thiết
yum install httpd httpd-devel libcurl-devel
# Cài đặt Passenger
gem install passenger
# Cài đặt module Passenger cho Apache
passenger-install-apache2-module
4.2. Cấu hình Apache
Sau khi cài đặt Passenger, hệ thống sẽ hiển thị hướng dẫn cấu hình. Thực hiện theo các bước sau:
# Tạo tệp cấu hình module Passenger
cd /etc/httpd/conf.modules.d/
vim passenger.conf
# Thêm nội dung sau:
LoadModule passenger_module /usr/local/share/gems/gems/passenger-x.x.x/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/local/share/gems/gems/passenger-x.x.x
PassengerDefaultRuby /usr/bin/ruby
</IfModule>
4.3. Cấu hình máy chủ ảo
# Tạo tệp cấu hình máy chủ ảo
cd /etc/httpd/conf.d/
vim redmine-vhost.conf
# Thêm nội dung sau:
<VirtualHost *:80>
ServerName redmine.yourdomain.com
ServerAdmin admin@yourdomain.com
DocumentRoot /var/www/redmine/public/
ErrorLog logs/redmine_error_log
<Directory "/var/www/redmine/public/">
Options Indexes ExecCGI FollowSymLinks
Order allow,deny
Allow from all
AllowOverride all
</Directory>
</VirtualHost>
4.4. Di chuyển Redmine đến thư mục gốc của máy chủ ảo
# Di chuyển thư mục Redmine
mv /usr/local/redmine-3.4.7/ /var/www/redmine
4.5. Tạo tệp điều phối
# Sao chép tệp điều phối
cd /var/www/redmine
cp public/dispatch.fcgi.example public/dispatch.fcgi
4.6. Khởi động dịch vụ Apache
# Khởi động Apache
systemctl start httpd
# Kiểm tra trạng thái
systemctl status httpd
# Kiểm tra cổng đang lắng nghe
netstat -tnlp
Bây giờ bạn có thể truy cập Redmine qua trình duyệt web. Phiên bản nâng cấp đã được triển khai thành công với hiệu suất tốt hơn nhờ sử dụng Apache HTTP Server.