Cách cài đặt Redmine 3 với Nginx trên CentOS 7

theanh

Administrator
Nhân viên
Redmine là một ứng dụng web nguồn mở để quản lý dự án và theo dõi vấn đề. Redmine dựa trên Ruby on Rails Framework, hỗ trợ đa nền tảng và đa cơ sở dữ liệu và đi kèm bản dịch cho 42 ngôn ngữ. Phần mềm cho phép bạn theo dõi nhiều dự án, tích hợp quản lý tin tức, tài liệu và tệp và wiki hỗ trợ cho mỗi dự án. Tài khoản người dùng có thể được xác thực với thư mục LDAP và phần mềm của bên thứ ba có thể được kết nối thông qua REST API.

Trong hướng dẫn này, chúng ta sẽ cài đặt Redmine 3.2 với Nginx làm máy chủ web, MySQL làm máy chủ cơ sở dữ liệu trên hệ điều hành CentOS 7 (64 bit).



Điều kiện tiên quyết
  • CentOS 7 - 64 bit.
  • Quyền root.

Bước 1 - Cài đặt các phụ thuộc Redmine​

Redmine có rất nhiều phụ thuộc mà chúng ta sẽ cài đặt trước. Đăng nhập vào máy chủ CentOS 7 của bạn với tư cách là người dùng root:
Mã:
ssh [emailprotected]
Cài đặt tất cả các gói phụ thuộc mà Redmine yêu cầu và các gói cần thiết cho ruby và rvm bằng lệnh theyum bên dưới:
Mã:
yum install zlib-devel curl-devel openssl-devel httpd-devel apr-devel apr-util-devel mysql-devel ftp wget ImageMagick-devel gcc-c++ patch readline readline-devel zlib libyaml-devel libffi-devel make bzip2 autoconf automake libtool bison iconv-devel subversion
Quá trình cài đặt sẽ yêu cầu nhập mật khẩu MySQL. Nhập mật khẩu gốc MySQL mới của bạn khi được yêu cầu.


Bước 2 - Cài đặt Ruby và RVM​

Trong bước này, chúng ta sẽ cài đặt rvm (phiên bản mới nhất) và ruby 2.2. Redmine 3.2 hỗ trợ ruby phiên bản 2.2. RVM (Ruby Version Manager) là một công cụ dòng lệnh cho phép bạn cài đặt, quản lý và làm việc với nhiều môi trường ruby trên cùng một máy chủ.
Mã:
gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
curl -L https://get.rvm.io | bash -s stable --ruby=2.2.5
Khi quá trình cài đặt hoàn tất, chúng ta phải tải lại RVM và thêm nó vào tệp .bashrc để tải lại tự động:
Mã:
source /usr/local/rvm/scripts/rvm
echo '[[ -s "/usr/local/rvm/scripts/rvm" ]] && source "/usr/local/rvm/scripts/rvm"' >> ~/.bashrc
Tải lại tệp .bashrc và kiểm tra phiên bản Ruby và RVM.
Mã:
source ~/.bashrc
ruby -v
rvm -v



Bước 3 - Cấu hình Cơ sở dữ liệu cho Redmine​

Trong bước này, chúng ta sẽ cài đặt gói mysql-server từ kho lưu trữ MySQL chính thức.

Thêm kho lưu trữ Oracle MySQL và kiểm tra danh sách kho lưu trữ.
Mã:
rpm -Uvh https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
yum repolist
để đảm bảo rằng kho lưu trữ máy chủ MySQL đã được thêm thành công.

Cài đặt máy chủ MySQL bằng lệnh yum này.
Mã:
yum cài đặt mysql-server
Khi quá trình cài đặt hoàn tất, hãy khởi động dịch vụ mysqld và cấu hình mật khẩu gốc MySQL.
Mã:
systemctl start mysqld
Máy chủ MySQL đã được khởi động. Bây giờ hãy lấy mật khẩu gốc tạm thời cho máy chủ mysql bằng lệnh grep bên dưới:
Mã:
grep 'temporary password' /var/log/mysqld.log
Bạn sẽ thấy kết quả tương tự như sau:
Mã:
2016-10-31T23:06:50.974555Z 1 [Lưu ý] Một mật khẩu tạm thời được tạo cho root@localhost: />y.)uWui8j*
Vì vậy, chúng ta biết mật khẩu gốc cho máy chủ MySQL là: />y.)uWui8j*

Bây giờ chúng ta sẽ đặt mật khẩu gốc mới cho máy chủ mysql. Đăng nhập vào shell mysql với người dùng root và mật khẩu đã tạo:
Mã:
mysql -u root -p
MẬT KHẨU ĐƯỢC TẠO: [B]/>y.)uWui8j*[/b]
Đặt mật khẩu người dùng root mới với truy vấn mysql bên dưới:
Mã:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Aqwe123@!';
Tiếp theo, tạo một cơ sở dữ liệu mới có tên là "redmine" và tạo một người dùng mới 'redmine' với mật khẩu 'redmine' (hãy sử dụng mật khẩu an toàn trên máy chủ của bạn tại đây!). Sau đó cấp tất cả các quyền cho người dùng vào cơ sở dữ liệu 'redmine'.
Mã:
create database redmine;
create user redmine@localhost defined by 'Redmine123@!';
grant all privileges on redmine.* to redmine@localhost defined by 'Redmine123@!';
flush privileges;
exit
Database and user has been created.




Bước 4 - Cài đặt Phusion Passenger và Nginx​

Phusion Passenger là máy chủ ứng dụng web có thể sử dụng cùng với apache và nginx. Nó hỗ trợ nhiều ngôn ngữ: Ruby, Python và Nodejs. Nó dễ sử dụng, nhanh, có thể xử lý nhiều lưu lượng hơn và cung cấp các cải tiến về bảo mật.

Trong chương này, chúng ta sẽ cài đặt Phusion Passenger và tích hợp nó với máy chủ web nginx của chúng ta. Cài đặt Passenger bằng lệnh gem bên dưới, sau đó chạy lệnh passenger-nginx-module.
Mã:
gem install passenger --no-ri --no-rdoc
passenger-install-nginx-module
Lệnh sẽ hỏi bạn sẽ sử dụng ngôn ngữ lập trình nào, hãy chọn RubyPython.



Bạn sẽ được hỏi về cài đặt nginx; chọn "Có: tải xuống, biên dịch và cài đặt Nginx cho tôi. (khuyến nghị)".



Bạn sẽ được yêu cầu cung cấp thư mục cài đặt ginx, sử dụng mặc định là '/opt/nginx/', chỉ cần nhấn "Enter".


Bước 5 - Cấu hình Nginx​

Khi quá trình cài đặt ginx hoàn tất, hãy vào thư mục cài đặt và chỉnh sửa tệp nginx.conf bằng trình chỉnh sửa.
Mã:
cd /opt/nginx/
cd conf/
vim nginx.conf
Dán cấu hình bên dưới vào dòng 24:
Mã:
include vhost/*.conf;
Lưu tệp và thoát khỏi trình chỉnh sửa.

Tạo thư mục 'vhost' mới cho máy chủ ảo cấu hình.

mkdir -p /opt/nginx/conf/vhost

Đi tới thư mục vhost và tạo cấu hình máy chủ ảo redmine bằng vim:
Mã:
cd /opt/nginx/conf/vhost/
vim redmine.conf
Dán cấu hình máy chủ ảo bên dưới:
Mã:
server {
 listen 80;
 server_name www.redmine.me;
 
 root /var/www/redmine/public;
 passenger_enabled on;
 client_max_body_size 10m; # Kích thước tệp đính kèm tối đa
 
 # chuyển hướng các trang lỗi máy chủ đến trang tĩnh /50x.html
 #
 error_page 500 502 503 504 /50x.html;
 location = /50x.html {
 root html;
 }
 }
Lưu tệp.

Ubuntu 16.04 sử dụng systemd làm hệ thống khởi tạo. Tiếp theo, chúng ta cấu hình nginx cho systemd. Vào thư mục systemd và tạo tệp dịch vụ mới có tên 'nginx.service'.
Mã:
cd /lib/systemd/system/
vim nginx.service
Dán tập lệnh nginx cho systemd bên dưới:
Mã:
[Unit]
Description=Máy chủ proxy ngược và HTTP NGINX
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
 
[Cài đặt]
WantedBy=multi-user.target
Lưu và thoát.

Tải lại dịch vụ systemd và thử khởi động nginx bằng lệnh systemctl:
Mã:
systemctl daemon-reload
systemctl start nginx
Nếu bạn muốn kiểm tra nginx, hãy kiểm tra cổng mở 80:
Mã:
netstat -plntu | grep nginx
Kết quả sẽ như thế này:
Mã:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4871/nginx

Bước 6 - Cài đặt Redmine​

Tạo một thư mục mới để cài đặt Redmine. Tôi sẽ sử dụng thư mục '/var/www/' ở đây.
Mã:
mkdir -p /var/www/
Đi đến thư mục '/var/www/' và tải xuống Redmine bằng lệnh svn:
Mã:
cd /var/www/
svn co https://svn.redmine.org/redmine/branches/3.2-stable redmine
Đi đến thư mục Redmine và sao chép tệp cấu hình và tệp cấu hình cơ sở dữ liệu:
Mã:
cd redmine
cp config/configuration.yml.example config/configuration.yml
cp config/database.yml.example config/database.yml
Chỉnh sửa tệp database.yml bằng vim:
Mã:
vim config/database.yml
Trong dòng phần sản xuất, hãy điền tên người dùng và mật khẩu cơ sở dữ liệu:
Mã:
production:
 adapter: mysql2
 database: redmine
 host: localhost
 username: redmine
 password: "Redmine123@!"
 encoding: utf8
Lưu tệp.

Trong thư mục redmine, tạo một số thư mục mới và thay đổi chủ sở hữu thành người dùng và nhóm nobody:
Mã:
mkdir -p tmp tmp/pdf public/plugin_assets
sudo chown -R nobody:nobody files log tmp public/plugin_assets
sudo chmod -R 775 files log tmp public/plugin_assets
Cài đặt bundler và gem dependency cho redmine:
Mã:
gem install bundler
bundle install --without development test
Tạo mã thông báo bí mật, sau đó tạo cơ sở dữ liệu:
Mã:
bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake redmine:load_default_data
Khởi động lại nginx và truy cập tên miền redmine bằng trình duyệt web:
Mã:
systemctl restart nginx
Truy cập cài đặt redmine, của tôi là: www.redmine.co



Đăng nhập vào trang quản trị: www.redmine.co/login

Người dùng và mật khẩu mặc định là 'admin'.



Tạo một dự án mẫu mới.



Trang dự án mẫu.



Cài đặt Redmine với Nginx và MySQL trên CentOS 7 đã thành công.


Kết luận​

Redmine là ứng dụng dựa trên web để quản lý dự án và theo dõi sự cố. Redmine là ứng dụng đa nền tảng, vì vậy chúng ta có thể chạy trên Windows, Linux hoặc Mac OS. Redmine hỗ trợ nhiều cơ sở dữ liệu như MySQL, PostgreSQL, Microsoft SQL Server và SQLite. Redmine dễ cài đặt và cấu hình, chúng ta có thể sử dụng Apache hoặc Nginx làm máy chủ web. Redmine rất mạnh mẽ và có nhiều tính năng như hỗ trợ đa ngôn ngữ, quản lý tệp, wiki và REST API. Redmine là một trong những giải pháp miễn phí tốt nhất nếu bạn muốn xây dựng hệ thống quản lý dự án của riêng mình với chức năng theo dõi vấn đề.
 
Back
Bên trên