이번 포스트에서는 Ubuntu 18.04 환경에서 레드마인을 설치하는 방법에 대해 알아보겠습니다.
root 액세스 또는 sudo 권한이 있는 사용자로 작업해야 합니다.
Step 1: Package Update
우분투 18.04 에 접속한 다음 다음 명령어를 실행하여 패키지를 업데이트해 줍니다.
$ apt-get update
$ apt-get upgrade
Step 2: Install MySQL
다음으로 MySQL 서버를 설치해야 합니다. Ubuntu 18.04는 미리 설치된 저장소를 통해 설치할 수 있는 최신 버전의 MySQL을 가지고 있습니다.
다음 명령으로 공식 Ubuntu 저장소에서 최신 MySQL 5.7 서버를 설치합니다.
$ apt-get install mysql-server -y
위 명령을 통해 설치가 완료되는 즉시 MySQL 웹 서버가 자동으로 시작됩니다.
다음 명령을 사용하여 서버 재부팅 시 MySQL 서비스가 자동으로 시작되도록 설정할 수도 있습니다.
$ systemctl enable mysql
다음 명령을 통하여 MySQL을 더욱 안전하게 보호할 수 있습니다.
$ mysql_secure_installation
이 스크립트는 루트 암호 설정, 원격 루트 로그인 사용 안 함, 익명 사용자 제거 등과 같은 중요한 보안 작업을 수행하는 데 도움이 됩니다. 스크립트에서 루트 암호를 묻는 경우 기본적으로 설정된 루트 암호가 없으므로 [Enter] 키를 누르십시오
Step 3: Create a Database for Redmine
다음은 Redmine 설치를 위한 데이터베이스를 만들어야 합니다. 다음 명령을 사용하여 MySQL 서버에 로그인하고 MySQL 루트 암호를 입력합니다.
$ mysql -uroot -p
이후 다음 명령으로 새 MySQL 데이터베이스를 생성하고, 사용자 등록과 권한을 설정해줍니다.
CREATE DATABASE redmine_db;
GRANT ALL PRIVILEGES ON redmine_db.* TO 'redmine'@'localhost' IDENTIFIED BY 'r3dm13';
FLUSH PRIVILEGES;
exit;
위 명령에서 “r3dm13”를 실제로 사용할 강력한 암호로 바꿔줍니다.
Step 4: Install Ruby
Ubuntu 18.04 서버에 Ruby를 설치하는 가장 쉬운 방법은 apt package manager를 사용하는 것입니다. 현재 Ubuntu 저장소 버전은 2.5.1이며, 이 포스트 작성 당시의 최신 안정 버전입니다.
$ apt-get install ruby-full -y
모든 작업이 올바르게 수행되었는지 확인하려면 ruby --version
명령을 사용합니다.
출력은 다음과 같습니다.
$ ruby --version
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu]
Step 5: Install Nginx and Passenger
Ubuntu 18.04 서버에 Nginx를 설치하기 위해 다음 명령을 입력합니다.
$ apt-get install nginx -y
다음 두 명령을 사용하여 Nginx가 부팅 시 시작하도록 설정하고 서비스를 시작합니다.
$ systemctl start nginx
$ systemctl enable nginx
다음으로 Redmine 구동을 위해 필요한 Nginx 모듈인 Passenger를 설치하기 위해 먼저 필요한 패키지 사전 패키지를 다음 명령을 통해 설치합니다.
$ apt-get install dirmngr gnupg apt-transport-https ca-certificates
repository gpg key를 가져오고 “Phusionpassenger” repository를 활성화합니다.
$ apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 561F9B9CAC40B2F7
$ add-apt-repository 'deb https://oss-binaries.phusionpassenger.com/apt/passenger bionic main'
repository를 활성화하면 패키지 목록을 업데이트하고 다음을 사용하여 Nginx Passenger 모듈을 설치힙니다.
$ apt-get update
$ apt-get install libnginx-mod-http-passenger -y
Step 6: Download and Install Redmine
Redmine을 구축하는 데 필요한 의존성 패키지들을 설치합니다.
$ apt-get install build-essential libmysqlclient-dev imagemagick libmagickwand-dev
Redmine의 공식 웹 사이트로 이동하여 애플리케이션의 최신 안정적 릴리스를 다운로드 합니다. 이 포스트 작성 당시, Redmine의 최신 버전은 4.1.2 버전입니다.
$ wget https://www.redmine.org/releases/redmine-4.1.2.zip -o /opt/redmine-4.1.2.zip
$ wget https://www.redmine.org/releases/redmine-4.1.2.zip.sha256 -o /opt/redmine-4.1.2.zip.sha256
아카이브가 다운로드되면 서버의 /opt 디렉토리에 압축을 풉니다.
$ cd /opt
$ unzip redmine-4.1.2.zip
$ mv redmine-4.1.2 /opt/redmine
이제 다음과 같은 필수 파일 및 폴더 사용 권한을 적용합니다(Nginx가 파일에 액세스하기 위해서는 아래의 권한이 필요합니다).
$ chown -R www-data:www-data /opt/redmine/
$ chmod -R 755 /opt/redmine/
그리고 데이터베이스 설정 구성을 위해 다음과 같이 파일을 생성해줍니다.
$ cd /opt/redmine/config/
$ cp configuration.yml.example configuration.yml
$ cp database.yml.example database.yml
기본 텍스트 편집기를 사용하여 database.yml 파일을 열고 Step 3. 에서 설정한 사용자 username/password 세부 정보를 업데이트합니다.
$ vi database.yml
production:
adapter: mysql2
database: redmine_db
host: localhost
username: redmine
password: r3dm13
encoding: utf8
그런 다음 파일을 저장하고 편집기를 종료합니다.
Step 7: Install Ruby Dependencies, Generate Keys, and Migrate the Database
Redmine 디렉터리로 이동하여 bundler 및 기타 ruby 의존성을 설치합니다.
$ cd /opt/redmine/
$ gem install bundler --no-rdoc --no-ri
$ bundle install --without development test postgresql sqlite
다음 명령을 실행하여 키를 생성하고 데이터베이스를 마이그레이션합니다.
$ bundle exec rake generate_secret_token
$ RAILS_ENV=production bundle exec rake db:migrate
데이터베이스 마이그레이션시에 다음과 같은 에러가 발생한다면, 아래 코드를 통해 manifest.js
파일을 생성합니다.
Expected to find a manifest file in `app/assets/config/manifest.js` (Sprockets::Railtie::ManifestNeededError)
$ mkdir -p /opt/redmine/app/assets/config && echo '{}' > /opt/redmine/app/assets/config/manifest.js
Step 8: Configure Nginx
기본 텍스트 편집기를 열고 다음 Nginx 서버 conf 파일을 만듭니다.
아래에서 부터는 your_ip_address 에 해당하는 부분을 127.0.0.1
로 통일하여 설명합니다. 해당부분은 본인의 네트워크 환경구성에 맞게 설정해주십시오.
$ vi /etc/nginx/sites-available/your_ip_address.conf
# Redmine server configuration
#
server {
listen <PORT>; # redmine
listen [::]:<PORT>; # redmine
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
root /opt/redmine/public;
# Add index.php to the list if you are using PHP
#index index.html index.htm index.nginx-debian.html;
server_name 127.0.0.1;
location /redmine {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
# log files
access_log /var/log/nginx/127.0.0.1.redmine.access.log;
error_log /var/log/nginx/127.0.0.1.redmine.error.log;
passenger_enabled on;
passenger_min_instances 1;
client_max_body_size 10m;
}
그런 다음 파일을 저장하고 편집기를 종료합니다.
방금 만든 서버 구성을 사용하려면 다음 명령을 실행합니다.
$ ln -s /etc/nginx/sites-available/127.0.0.1.conf /etc/nginx/sites-enabled/127.0.0.1.conf
이제 구성 파일을 확인하여 구문 오류가 없는지 확인합니다. 다시 시작할 때 오류가 발생하면 웹 서버가 중단될 수 있습니다.
$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
오류가 없으면 Nginx 구성을 다시 로드할 수 있습니다.
$ service nginx reload
Step 9: Access Redmine
마지막으로 브라우저를 시작하면 설치가 성공적으로 완료되며, http://127.0.0.1:
Redmine 기본 로그인 정보는 다음과 같습니다. 다음 정보를 통해 로그인 후 비밀번호를 변경하여 사용합니다.
Username: admin
Password: admin