<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://workspace.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=Gentoo_redmine_git2</id>
	<title>Gentoo redmine git2 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://workspace.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=Gentoo_redmine_git2"/>
	<link rel="alternate" type="text/html" href="https://workspace.onionmixer.net/wiki/index.php?title=Gentoo_redmine_git2&amp;action=history"/>
	<updated>2026-04-19T16:48:35Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://workspace.onionmixer.net/wiki/index.php?title=Gentoo_redmine_git2&amp;diff=1334&amp;oldid=prev</id>
		<title>Onionmixer: Gentoo 에서 nginx + thin + redmine 3.4 + mysql + redmine_git_hosting 사용하기 문서 내용 추가</title>
		<link rel="alternate" type="text/html" href="https://workspace.onionmixer.net/wiki/index.php?title=Gentoo_redmine_git2&amp;diff=1334&amp;oldid=prev"/>
		<updated>2018-03-12T09:38:58Z</updated>

		<summary type="html">&lt;p&gt;Gentoo 에서 nginx + thin + redmine 3.4 + mysql + redmine_git_hosting 사용하기 문서 내용 추가&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;;Gentoo 에서 nginx + thin + redmine 3.4 + mysql + redmine_git_hosting 사용하기(20180312)&lt;br /&gt;
&lt;br /&gt;
==개요==&lt;br /&gt;
&lt;br /&gt;
이 문서는 Gentoo linux 에서 redmine 과 mysql 을 ruby 의 gem 을 통해서 설치하는 내용을 다룬다. 시스템은 openrc(기존의 initrd 스타일) 를 사용하는 것으로 전제로 하며, systemd 를 사용하는 경우에 대해서는 별도의 설명을 하지는 않는다.&lt;br /&gt;
&lt;br /&gt;
이 문서는 *설치* 에 대해서만 다루고 있다. redmine 설치 이후의 plugin 사용등에 대한 내용은 인터넷을 참고하도록 한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==전제==&lt;br /&gt;
&lt;br /&gt;
시스템에서의 ruby 버전 및 linux system account 에 대한 전제 사항 및 요구사항을 나열한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===system infomation===&lt;br /&gt;
&lt;br /&gt;
# redmine account&lt;br /&gt;
#* id : redmine&lt;br /&gt;
# account home(redmine software base location)&lt;br /&gt;
#* /home/redmine&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
이 redmine 계정은 향후 thin 이라는 ruby container 에서도 사용되기 때문에 유의하는것이 좋다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===software version===&lt;br /&gt;
&lt;br /&gt;
* ruby 2.2.9&lt;br /&gt;
* rubygems 2.6.14&lt;br /&gt;
* thin 1.7.2(gem 을 통해서 설치)&lt;br /&gt;
* mysql 5.6.x&lt;br /&gt;
* redmien 3.4.4&lt;br /&gt;
* nginx 1.12.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===database 정보===&lt;br /&gt;
&lt;br /&gt;
* mysql account&lt;br /&gt;
* mysql database name&lt;br /&gt;
** redminedb&lt;br /&gt;
* mysql database id&lt;br /&gt;
** redmine&lt;br /&gt;
* mysql database passwd&lt;br /&gt;
** redminepw&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==redmine 소프트웨어 설치 및 세팅==&lt;br /&gt;
&lt;br /&gt;
===Gentoo 시스템의 준비===&lt;br /&gt;
&lt;br /&gt;
Gentoo Linux 에서 ruby 를 설치할때 필요없는 ruby 에 대한 USE flag 를 설정한다.&lt;br /&gt;
&lt;br /&gt;
* /etc/portage/make.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
RUBY_TARGETS=&amp;quot;ruby22&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* /etc/portage/package.use/ruby&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
dev-lang/ruby -rdoc -socks5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
다음의 명령을 이용해서 ruby 를 설치한다. 다만 ruby 는 2.2 가 아닌 다른 버전이 설치될 수도 있기 때문에 설치되는 ruby 의 버전을 반드시 신경쓰도록 한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
emerge --nodeps ruby rubygems&lt;br /&gt;
emerge eselect-ruby&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
다음의 명령을 이용해서 이후에 사용할 mysql 을 설치하도록 한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
USE=&amp;quot;-perl&amp;quot; emerge mysql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
이제 redmine 을 사용하기 위한 redmine 계정을 Gentoo Linux 에 추가하도록 한다. 굳이 비번을 따로 지정할 필요는 없다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
adduser -m redmine&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===redmine 소스의 세팅===&lt;br /&gt;
&lt;br /&gt;
아래의 주소에서 redmine 소스를 다운로드 받도록 한다. 이 문서에서는 3.4.4 버전을 사용하도록 한다.&lt;br /&gt;
&lt;br /&gt;
* https://www.redmine.org/projects/redmine/wiki/Download&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
다운로드 받은 파일의 압축을 푸는데, 이때 풀리는 압축은 /home/redmine 디렉토리에 바로 해제되어야 한다. 권한은 root 로 진행해도 상관없다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
cd /home/redmine&lt;br /&gt;
tar xvf redmine-3.4.4.tar.gz —strip-components=1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
압축을 풀고나면 /home/redmine 아래에 다음의 내용이 비슷하게 있어야 한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
CONTRIBUTING.md&lt;br /&gt;
Gemfile&lt;br /&gt;
Gemfile.lock&lt;br /&gt;
README.rdoc&lt;br /&gt;
Rakefile&lt;br /&gt;
app&lt;br /&gt;
appveyor.yml&lt;br /&gt;
bin&lt;br /&gt;
config&lt;br /&gt;
config.ru&lt;br /&gt;
db&lt;br /&gt;
doc&lt;br /&gt;
extra&lt;br /&gt;
files&lt;br /&gt;
lib&lt;br /&gt;
log&lt;br /&gt;
plugins&lt;br /&gt;
public&lt;br /&gt;
script&lt;br /&gt;
test&lt;br /&gt;
tmp&lt;br /&gt;
vendor&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===데이터베이스 세팅===&lt;br /&gt;
&lt;br /&gt;
데이터베이스는 다음의 값으로 준비하도록 한다. 위쪽의 내용을 참고해서 자신에게 알맞는 값으로 수정하는 것이 좋다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE DATABASE redminedb CHARACTER SET utf8;&lt;br /&gt;
CREATE USER &amp;#039;redmine&amp;#039;@&amp;#039;localhost&amp;#039; IDENTIFIED BY &amp;#039;redminepw&amp;#039;;&lt;br /&gt;
GRANT ALL PRIVILEGES ON redminedb.* TO &amp;#039;redmine&amp;#039;@&amp;#039;localhost&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
FLUSH PRIVILEGES;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===redmine 의 설정파일 세팅===&lt;br /&gt;
&lt;br /&gt;
기본 설정파일을 복사하도록 한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
cd /home/redmine/config&lt;br /&gt;
cp configuration.yml.example configuration.yml&lt;br /&gt;
cp database.yml.example database.yml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
이중에서 configuration.yml 은 본인의 구미에 맞게 설정하도록 하자. 사용하는 VCS 등에 따라서 설정해야할 내용이 많다. 본인의 경우에는 대략 다음과 같이 설정하였다.&lt;br /&gt;
&lt;br /&gt;
* configuration.yml&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
production:&lt;br /&gt;
  delivery_method: :smtp&lt;br /&gt;
  smtp_settings:&lt;br /&gt;
    address: localhost&lt;br /&gt;
    port: 25&lt;br /&gt;
    domain: KKKK.net&lt;br /&gt;
    authentication: :none&lt;br /&gt;
    enable_starttls_auto: false&lt;br /&gt;
    openssl_verify_mode: &amp;#039;none&amp;#039;&lt;br /&gt;
&lt;br /&gt;
scm_git_command : /usr/bin/git&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
이제 위에 지정한 상황에 맞는 database.yml 파일을 세팅하도록 한다. 본인은 producton 하나의 case 에 대해서만 설정 내용을 남겼다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* database.yml&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
production:&lt;br /&gt;
  adapter: mysql2&lt;br /&gt;
  database: redminedb&lt;br /&gt;
  host: localhost&lt;br /&gt;
  username: redmine&lt;br /&gt;
  password: &amp;quot;redminepw&amp;quot;&lt;br /&gt;
  encoding: utf8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
이제 redmine 에 대한 기본 설정파일을 저장하고 이후의 과정을 진행하도록 한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===redmine 을 위한 gem package 의 설치===&lt;br /&gt;
&lt;br /&gt;
일단 gentoo 의 경우는 어떤 gem package 가 설치되어 있을지도 모르기때문에 해당되는 gem package 를 모두 지우도록 한다. 이후에 ruby gem 을 사용하는 유용한 의존성 패키지 관리 시스템인 bundle 만을 설치하도록 한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
gem uninstall --all --force&lt;br /&gt;
gem install bundle&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
이제 redmine 소스가 있는 디렉토리로 이동해서 이후의 gem 패키지 설치를 진행하도록 한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
cd /home/redmine&lt;br /&gt;
&lt;br /&gt;
bundle lock --add-platform x86-mingw32 x64-mingw32 x86-mswin32&lt;br /&gt;
bundle lock --add-platform java&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;gem &amp;#039;thin&amp;#039;&amp;quot; &amp;gt;&amp;gt; Gemfile&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
위의 과정을 진행한 이후에 redmine 디렉토리의 Gemfile 내용을 조금 수정하도록 한다. 이 문서를 작성하는 시점에서 redmine_git_hosting 은 redcarpet(gem) 을 3.3.2 를 요구하지만, redmine 은 3.4.0 을 설정하고 있기 때문에 설치 과정에서 오류가 발생하게 된다. 어차피 redmine 에서 markdown 을 사용할일은 그리 많지 않기 때문에 해당되는 부분을 찾아서 수정하도록 하자.&lt;br /&gt;
&lt;br /&gt;
* /home/redmine/Gemfile&lt;br /&gt;
** Gemfile 에서 redcarpet 지정부분을 3.4.0 에서 3.3.2 버전으로 수정&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
이제 gem 패키지를 bundle 을 통해 진행하도록 하자.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
bundle install --without development test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===기본 gem 패키지 설치 이후의 redmine 설정===&lt;br /&gt;
&lt;br /&gt;
redmine 의 운영에 사용될 token 을 생성하도록 한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
cd /home/redmime&lt;br /&gt;
bundle exec rake generate_secret_token&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
토큰 생성이 종료되었다면 이제 database 의 초기 내용을 집어넣어야 한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
cd /home/redmine&lt;br /&gt;
bundle exec rake db:migrate RAILS_ENV=&amp;quot;production&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
이제 이후의 동작을 위해 redmine 아래쪽의 모든 파일에 대한 권한을 redmine 으로 이관한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
cd /home/redmine&lt;br /&gt;
chown -R redmine:redmine *&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
기본 데이터 베이스가 생성되었다. 이제 redmine 이 정상구동되는지 확인해볼 차례다. 다음의 명령어를 통해 임시로 thin 을 실행해 보도록 한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
RAILS_ENV=production bundle exec thin start&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
앞쪽의 ENV 를 지정하지 않으면 redmine 은 developer mode 를 찾으며 정상구동되지 않는다. 별다른 문제 없이 정상 구동이 되었다면 웹브라우저를 열어서 redmine 이 세팅된 서버의 3000 포트로 접근해서 redmine 의 초기 화면 및 login 여부를 확인하도록 한다. 기본 값은 admin/admin 이다.&lt;br /&gt;
&lt;br /&gt;
* http://aaa.bbb.ccc.ddd:3000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==plugin 의 설치==&lt;br /&gt;
&lt;br /&gt;
git 연동을 위해서 redmine_git_hosting plugin 을 사용할 것이다. 다른 Plugin 은 github 등과 연결되지만, 별도로 git repository 를 관리하는 경우라면 redmine_git_hosting 외에는 대안이 없다. 글을 작성하는 시점에서는 *1.2.3* 버전이 최신이다.&lt;br /&gt;
&lt;br /&gt;
일단 시스템에서 redmine 계정을 얻는다&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
su - redmine&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
redmine 권한을 취득했다면 다음의 명령을 실행해서 plugin 을 다운로드 받는다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
cd ~/plugins&lt;br /&gt;
git clone https://github.com/jbox-web/redmine_bootstrap_kit.git&lt;br /&gt;
cd redmine_bootstrap_kit/&lt;br /&gt;
git checkout 0.2.5&lt;br /&gt;
&lt;br /&gt;
cd ~/plugins&lt;br /&gt;
git clone https://github.com/jbox-web/redmine_git_hosting.git&lt;br /&gt;
cd redmine_git_hosting/&lt;br /&gt;
git checkout 1.2.3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
plugin 파일의 다운로드가 끝났다면, 다시 root 계정으로 이동해서 다음의 작업을 진행한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
cd /home/redmine&lt;br /&gt;
bundle install --without development test&lt;br /&gt;
bundle exec rake redmine:plugins:migrate RAILS_ENV=production NAME=redmine_git_hosting&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
여기까지 진행한 다음에 다시 위쪽의 *thin start* 부분을 실행해서 redmine 의 동작을 확인한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==thin 의 설정==&lt;br /&gt;
&lt;br /&gt;
일단 다음의 명령어로 thin 이 gem 을 통해 정상적으로 설치되었는지를 확인한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
gem list | grep thin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
thin 의 설치가 확인되었으면 thin binary 의 위치를 확인하도록 한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
shell# gem contents thin | grep bin&lt;br /&gt;
/usr/local/lib64/ruby/gems/2.2.0/gems/thin-1.7.2/bin/thin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
openrc 를 사용하는 시스템을 전제로 했기 때문에 init.d 에 스크립트를 만들어줘야 한다. 다음의 내용으로 스크립트를 생성한다.&lt;br /&gt;
&lt;br /&gt;
* /etc/init.d/thin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
#!/sbin/openrc-run&lt;br /&gt;
# Copyright 1999-2016 Gentoo Foundation&lt;br /&gt;
# Distributed under the terms of the GNU General Public License v2&lt;br /&gt;
&lt;br /&gt;
SERVER=${SVCNAME#*.}&lt;br /&gt;
if [ ${SERVER} != thin ]; then&lt;br /&gt;
        CONFIG=${CONFIG:-/etc/thin/${SERVER}.yml}&lt;br /&gt;
else&lt;br /&gt;
        CONFIG=${CONFIG:-/etc/thin/}&lt;br /&gt;
fi&lt;br /&gt;
NOCONFIG=${NOCONFIG:-0}&lt;br /&gt;
RUBY=${RUBY:-/usr/bin/ruby}&lt;br /&gt;
DO_BUNDLER=${DO_BUNDLER:-0}&lt;br /&gt;
CHDIR=${CHDIR:-}&lt;br /&gt;
THIN_USER=${THIN_USER:-root}&lt;br /&gt;
THIN_GROUP=${THIN_GROUP:-root}&lt;br /&gt;
THIN_PID=${THIN_PID:-/var/run/thin/thin.pid}&lt;br /&gt;
THIN_OPTS=${THIN_OPTS:-}&lt;br /&gt;
&lt;br /&gt;
depend() {&lt;br /&gt;
        need localmount&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
checkconfig() {&lt;br /&gt;
        if [ -n ${CHDIR} ]; then&lt;br /&gt;
                cd &amp;quot;${CHDIR}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
                if [ $? -ne 0 ]; then&lt;br /&gt;
                        eerror &amp;quot;Cannot cd into requested directory&amp;quot;&lt;br /&gt;
                        return 1&lt;br /&gt;
                fi&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
        [ ${SERVER} = thin -o ${NOCONFIG} != 0 ] &amp;amp;&amp;amp; return 0&lt;br /&gt;
&lt;br /&gt;
        if [ ! -f ${CONFIG} ]; then&lt;br /&gt;
                eerror &amp;quot;Unable to find the server configuration.&amp;quot;&lt;br /&gt;
                eerror &amp;quot;Please set the CONFIG variable in /etc/conf.d/${SVCNAME} or&amp;quot;&lt;br /&gt;
                eerror &amp;quot;set NOCONFIG there to 1 to disable looking for a config file.&amp;quot;&lt;br /&gt;
                return 1&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
buildargs() {&lt;br /&gt;
        if [ ${NOCONFIG} = 0 -a ${SERVER} != thin ]; then&lt;br /&gt;
                echo -n &amp;quot;-C ${CONFIG} &amp;quot;&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
        echo -n &amp;quot;${THIN_OPTS}&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
action() {&lt;br /&gt;
        checkconfig || return 1&lt;br /&gt;
&lt;br /&gt;
        [ ${DO_BUNDLER} -ne 0 ] &amp;amp;&amp;amp; RUBY=&amp;quot;${RUBY} /usr/bin/bundle exec&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        if [ ${SERVER} = thin ]; then&lt;br /&gt;
                ebegin &amp;quot;$2 all thin servers in ${CONFIG}&amp;quot;&lt;br /&gt;
                ${RUBY} /usr/local/lib64/ruby/gems/2.2.0/gems/thin-1.7.2/bin/thin $1 $(buildargs) --all ${CONFIG}&lt;br /&gt;
                eend $?&lt;br /&gt;
        else&lt;br /&gt;
                ebegin &amp;quot;$2 thin server ${SERVER}&amp;quot;&lt;br /&gt;
                ${RUBY} /usr/local/lib64/ruby/gems/2.2.0/gems/thin-1.7.2/bin/thin $(buildargs) --tag ${SERVER} $1&lt;br /&gt;
                eend $?&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        action start &amp;#039;Starting&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop() {&lt;br /&gt;
        action stop &amp;#039;Stopping&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
restart() {&lt;br /&gt;
        action restart &amp;#039;Restarting&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
start_pre() {&lt;br /&gt;
        # If the path to the pidfile is /var/run/thin/foo/thin.pid&lt;br /&gt;
        # then checkpath will fail if /var/run/thin/ does not exist.&lt;br /&gt;
        # This caught infra...&lt;br /&gt;
        d=$(dirname ${THIN_PID})&lt;br /&gt;
        mkdir -p &amp;quot;$d&amp;quot;&lt;br /&gt;
        checkpath -d -m 0775 -o ${THIN_USER}:${THIN_GROUP} &amp;quot;$d&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
해당되는 스크립트에 chmod +x 등으로 실행 권한을 부여한다. 다만 주의할 점이 있는데 당신의 환경에 따라 thin binary 의 위치가 달라질 수 있다. 이 경우 위의 스크립테에서 해당되는 부분을 앞에서 알아낸 thin 경로로 바꿔주면 된다. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
이 스크립트는 /etc/thin 이라는 디렉토리 안쪽에 있는 yml 확장자의 내용을 읽어들여 실행한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===thin 을 위한 yml 설정===&lt;br /&gt;
&lt;br /&gt;
thin 을 구동시키기 위해 redmine 을 위한 yml 을 생성하도록 한다.&lt;br /&gt;
&lt;br /&gt;
* /etc/thin/redmine.yml&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
pid: /home/redmine/tmp/pids/thin.pid&lt;br /&gt;
group: redmine&lt;br /&gt;
wait: 30&lt;br /&gt;
timeout: 30&lt;br /&gt;
log: /var/log/thin.log&lt;br /&gt;
max_conns: 1024&lt;br /&gt;
require: []&lt;br /&gt;
&lt;br /&gt;
environment: production&lt;br /&gt;
max_persistent_conns: 512&lt;br /&gt;
servers: 4&lt;br /&gt;
daemonize: true&lt;br /&gt;
user: redmine&lt;br /&gt;
socket: /tmp/thin.sock&lt;br /&gt;
chdir: /home/redmine&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
위의 내용에서 참고해야할 부분은 다음과 같다.&lt;br /&gt;
&lt;br /&gt;
* log 파일의 위치&lt;br /&gt;
* 서버의 수동 개수&lt;br /&gt;
* socket 이 생성되는 위치&lt;br /&gt;
** 이 부분은 이후의 nginx 설정과도 연관되기 때문에 매우 중요하다.&lt;br /&gt;
* redmine 홈 디렉토리의 위치&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
이제 thin 을 daemon 형태로 openrc 에서 관리하기 위한 준비는 끝났다. 다음의 명령을 통해 thin 의 구동을 확인하자.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/thin start&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==thin 을 위한 nginx 의 설정==&lt;br /&gt;
&lt;br /&gt;
당신의 Gentoo linux 시스템에 nginx 가 설치되어 있지 않다면, 일단 nginx 부터 설치한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
emerge nginx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
이 문서에서는 자세한 nginx 설정을 다루지는 않는다. 해당되는 부분은 인터넷을 통해 추가로 학습하기를 권한다.&lt;br /&gt;
&lt;br /&gt;
여기서는 nginx 의 proxy 기능을 이용해서 thin 과의 연결을 생성한다. 이를 위햇 proxy 에 대한 내용을 담고있는 파일을 우선적으로 생성한다.&lt;br /&gt;
&lt;br /&gt;
* /etc/nginx/sites/proxy.include&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
        proxy_set_header   Host $http_host;&lt;br /&gt;
        proxy_set_header   X-Real-IP $remote_addr;&lt;br /&gt;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;&lt;br /&gt;
        proxy_set_header   X-Forwarded-Proto $scheme;&lt;br /&gt;
&lt;br /&gt;
        proxy_connect_timeout      90;&lt;br /&gt;
        proxy_send_timeout         90;&lt;br /&gt;
        proxy_read_timeout         90;&lt;br /&gt;
&lt;br /&gt;
        proxy_buffer_size          4k;&lt;br /&gt;
        proxy_buffers              4 32k;&lt;br /&gt;
        proxy_busy_buffers_size    64k;&lt;br /&gt;
        proxy_temp_file_write_size 64k;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &lt;br /&gt;
이제 thin 을 위한 thin cluster upstream 및 가상호트스를 세팅하도록 한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* /etc/nginx/01_redmine.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
upstream thin_cluster {&lt;br /&gt;
                server unix:/tmp/thin.0.sock;&lt;br /&gt;
                server unix:/tmp/thin.1.sock;&lt;br /&gt;
                server unix:/tmp/thin.2.sock;&lt;br /&gt;
                server unix:/tmp/thin.3.sock;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
server {&lt;br /&gt;
                listen 8080;&lt;br /&gt;
                server_name 당신의redmine도메은;&lt;br /&gt;
&lt;br /&gt;
                include sites/proxy.include;&lt;br /&gt;
                root /home/redmine;&lt;br /&gt;
                proxy_redirect off;&lt;br /&gt;
&lt;br /&gt;
                location / {&lt;br /&gt;
                        try_files $uri/index.html $uri.html $uri @cluster;&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                location @cluster {&lt;br /&gt;
                        proxy_pass http://thin_cluster;&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                access_log  /var/log/nginx/redmine-proxy-access;&lt;br /&gt;
                error_log   /var/log/nginx/redmine-proxy-error;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
생성한 conf 파일을 nginx.conf 에서 불러들이도록 한다.&lt;br /&gt;
&lt;br /&gt;
정상적으로 thin 과 nginx, 그리고 mysql 이 실행되어 있다면 손쉽게 redmine 화면을 확인할 수 있다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==참고==&lt;br /&gt;
&lt;br /&gt;
이 문서는 redmine_git_hosting 을 redmine 과 사용하기 위해 어떤 세팅을 거쳐야 하는지는 다루지 않는다. 해당되는 부분은 인터넷을 통해 학습하기 바란다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==tip==&lt;br /&gt;
&lt;br /&gt;
* thin 서버 외에도 현재의 redmine 을 확인할 수 있는 다른 방법도 있다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
bundle exec rails server webrick -e production&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* gem 에서 현재 설치된 패키지 외에, gem repository 에 등록된 모든 패키지를 확인할 수 있다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
gem list haml --remote --all&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* gem 에서 특정 패키지가 여러 버전이 설치되어있거나 등의 상황에서 명령어를 통해 특정패키지만 설치/삭제 도 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
gem install builder -v 3.3.3&lt;br /&gt;
gem uninstall builder -v 3.3.3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==참고자료==&lt;br /&gt;
&lt;br /&gt;
* thin with systemd&lt;br /&gt;
** https://github.com/macournoyer/thin/pull/184&lt;br /&gt;
* redmine download&lt;br /&gt;
** https://www.redmine.org/projects/redmine/wiki/Download&lt;br /&gt;
* thin into Gemfile&lt;br /&gt;
** https://github.com/macournoyer/thin/issues/115&lt;br /&gt;
* Redmine Bootstrap Kit Plugin&lt;br /&gt;
** https://github.com/jbox-web/redmine_bootstrap_kit/tree/devel&lt;br /&gt;
* Redmine Git Hosting Plugin&lt;br /&gt;
** http://redmine-git-hosting.io/how-to/install-redmine/&lt;br /&gt;
** https://github.com/jbox-web/redmine_git_hosting&lt;br /&gt;
* Redmine Install&lt;br /&gt;
** http://www.redmine.org/projects/redmine/wiki/redmineinstall&lt;br /&gt;
* Redmine - git repository 연결하기&lt;br /&gt;
** http://www.whatwant.com/450&lt;br /&gt;
* Redmine + Git Remote 연동&lt;br /&gt;
** https://jistol.github.io/its/2018/01/23/redmine-git/&lt;br /&gt;
* Redmine Plugin&lt;br /&gt;
** http://www.redmine.org/projects/redmine/wiki/Plugins&lt;br /&gt;
* Docker Redmine + Mysql 설치 및 Plugin 설치하기&lt;br /&gt;
** https://jistol.github.io/its/2018/01/25/redmine-mysql-in-docker/&lt;/div&gt;</summary>
		<author><name>Onionmixer</name></author>
	</entry>
</feed>