Qiita初投稿!こんにちはこんにちは!
動機
リアルで引越がしたくなり、タスク管理する必要に駆られて何使うかなぁと思い、
咄嗟にRedmineを使いたくなったので、衝動で持て余していたVPSに入れることにした。
環境
さくらのVPS(2G)
legnoh.jp のサブドメイン rm.legnoh.jp で入れる。
CentOS 6.5 x86_64
OS放置してて何入ってるか思い出せないので再インスコした。
VPSのカスタムOS再インスコ時に出るはずのVNCコンソールが、Java6でないと動かないとかぬかすので、
入れ直したけど動きませんでしたふぁっく(´・ω・`)
結局以前入れていたものをそのまま入れなおすだけで妥協。
Redmine 2.4.3
はい最新版。
Ruby 2.1.0 with rbenv
正直Rubyすら触ったことないのでアレなのだけど、とりあえず最新入れときゃ動くだろ的発想。
MySQLとかApacheとかわらわら
- 基本epelから引っ張ってる。
戦闘開始
前哨戦
ログインできるのを確認し、手元の公開鍵を ~/.ssh/authorized_keys に放り込んだ後、
$ ssh root@legnoh.jp
$ mkdir .ssh
$ touch ~/.ssh/authorized_keys
...(セキュリティ上、SCPせずに手打ちでコピペする)
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
SSHの設定を変えて鍵オンリーに。
$ vim /etc/ssh/sshd_config
Port 10022
PermitRootLogin without-password
PasswordAuthentication no
...
再起して適用。
$ service sshd restart
手元のMacにも、ホスト用の設定おいてログインを簡略化。
$ vim .ssh/config
Host legnoh
User root
HostName legnoh.jp
Port 10022
IdentityFile ~/.ssh/id_rsa
ForwardAgent yes
SELinuxはさくらVPSだと元々止まってるし、epelも最新版が入ってたので作業の必要がなかった。
iptablesはプロトコルをまだ調べてなかったので、あとから設定でも良いかと思いスキップ。
以上前哨戦。
ベースパッケージのインスコ
Redmine本家のインスコ手順に沿って、必要なパッケージをひとまずバコンバコンと。
$ yum install -y openssl-devel readline-devel zlib-devel curl-devel libyaml-devel
$ yum install -y mysql-server mysql-devel
$ yum install -y httpd httpd-devel
$ yum install -y ImageMagick ImageMagick-devel
$ yum install -y ipa-pgothic-fonts
rbenv
基本は、本家の手順そのまんま。途中抜けるのがめんどいので、.bash_profileはさくっとリロード。
ruby-buildもさっくり入れてやれ。
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
$ type rbenv
#=> "rbenv is a function"
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
いよいよRuby本体にかかる。
$ rbenv install -l
...
2.0.0-p195
2.0.0-rc2
2.1.0
2.1.0-dev
2.1.0-preview1
2.1.0-preview2
2.1.0-rc1
...
安定版が2.1.0 と本家でもアナウンスされていたのでこっちでいいでしょ。
インスコ打って待つ。コンパイル終わり次第バージョン指定。
$ rbenv install 2.1.0
$ rbenv rehash
apacheからの実行になるので、rbenv配下に実行権限を与えておく。
chmod o+x /root/�.rbenv/
ruby完了。
bundler
すんげー詳しく書いてた人がいたので参考にした。特に以下。
基本的には、そのプロジェクトでのみ使いたいgemであれば、bundlerで
bundle install --path vendor/bundle
して、プロジェクトに閉じた形で
gemをローカルインストールし、bundle exec ~
で実行する形を取るのがよい。
ただし、bundler
やpry
など、
- どのプロジェクトでも共通して使いたい。
- 複数のバージョンを使い分ける必要性が基本的になく、常に最新バージョンであればよい。
という性質のgemであれば、bundlerでローカルインストールするのでなく、
rbenv exec gem install ~
としてRuby環境に直接インストールしてしまった方が利便性が高い。
gemの特性と自分の利用シーンに合わせて、gemのインストール場所は使い分けよう。
あい、そうします。
$ rbenv exec gem install bundler --no-rdoc --no-ri
$ rbenv rehash
MySQL
ここでまたRedmine本家 の手順に戻る。
$ vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
character-set-server=utf8
# 任意設定
innodb_file_per_table
query-cache-size=16M
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql]
default-character-set=utf8
起動とスタート設定もやっておく。
$ service mysqld start
$ chkconfig mysqld on
MySQLにログインして、全部の文字コードがUTf8になってるか確認し、rootパスワード設定、匿名ユーザ追放、Redmine用のDBを作成し、user_redmineに権限付与して反映、終了。
$ mysql -uroot
mysql> show variables like 'character_set%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
mysql> use mysql;
mysql> update user set password=password('********') where user = 'root';
mysql> delete from user where user = '';
mysql> create database db_redmine default character set utf8;
mysql> grant all on db_redmine.* to user_redmine identified by '†††††††††';
mysql> flush privileges;
mysql> exit;
Redmine
tarballをDLして展開、そのフォルダを配置場所で移動する。
$ wget http://www.redmine.org/releases/redmine-2.4.3.tar.gz
$ tar zxf redmine-2.4.3.tar.gz
$ mv redmine-2.4.3 /var/lib/redmine
次に設定ファイルを2つ、それぞれ先ほどのパスワードを用いる。
$ vim /var/lib/redmine/config/database.yml
production:
adapter: mysql2
database: db_redmine
host: localhost
username: user_redmine
password: †††††††††
encoding: utf8
$ vim /var/lib/redmine/config/configuration.yml
production:
email_delivery:
delivery_method: :smtp
smtp_settings:
address: "localhost"
port: 25
domain: 'rm.legnoh.jp'
rmagick_font_path: /usr/share/fonts/ipa-pgothic/ipagp.ttf
Gem
Redmineのみで必要になるパッケージを入れる。こちらはRuby環境を汚さないように直接Redmine側に入れる。
また、Redmineで使うRubyのバージョンも指定しておく。
$ cd /var/lib/redmine
$ rbenv local 2.1.0
$ rbenv rehash
$ ruby -v
ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux]
$ bundle install --without development test
$ bundle exec rake generate_secret_token
$ RAILS_ENV=production bundle exec rake db:migrate
Passenger
これはどちらかというとPF系?な匂いがしたので、Ruby環境に入れる。
$ rbenv exec gem install passenger --no-rdoc --no-ri
$ rbenv rehash
$ passenger-install-apache2-module
(Enter連打)
$ passenger-install-apache2-module --snippet
で、出てきたスニペットをそのままApacheの設定にぶちこむ。
$ vim /etc/httpd/conf.d/passenger.conf
LoadModule passenger_module /root/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/passenger-4.0.37/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /root/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/passenger-4.0.37
PassengerDefaultRuby /root/.rbenv/versions/2.1.0/bin/ruby
</IfModule>
# Passengerが追加するHTTPヘッダを削除するための設定(任意)。
#
Header always unset "X-Powered-By"
Header always unset "X-Rack-Cache"
Header always unset "X-Content-Digest"
Header always unset "X-Runtime"
# 必要に応じてPassengerのチューニングのための設定を追加(任意)。
# 詳しくはPhusion Passenger users guide(http://www.modrails.com/documentation/Users%20guide%20Apache.html)をご覧ください。
PassengerMaxPoolSize 20
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 3600
PassengerHighPerformance on
PassengerStatThrottleRate 10
PassengerSpawnMethod smart
RailsAppSpawnerIdleTime 86400
PassengerMaxPreloaderIdleTime 0
一番下の行については、古いと言われたのでこちらで新規設定に変えた。
そしてApache起動、自動設定。Redmineディレクトリの権限変更。
$ service httpd configtest
$ service httpd start
$ chkconfig httpd on
$ chown -R apache:apache /var/lib/redmine
バーチャルホスト
httpd.conf の最下端にあったバーチャルホスト設定をコメントアウトし、
サブドメインで分けられるようにした。
NameVirtualHost *:80
<VirtualHost *:80>
ServerName legnoh.jp
DocumentRoot /var/www/html
</VirtualHost>
<VirtualHost *:80>
ServerName rm.legnoh.jp
DocumentRoot /var/lib/redmine/public
</VirtualHost>
次にゾーン情報。
私の場合、さくらのドメインでドメイン取ってたので、さくらインターネット 会員メニュー - ドメイン名一覧 から、
rm A (IPアドレス)
で追加。約15分ほどでDNSに反映され、サブドメインが有効になった。
$ service httpd configtest
$ service httpd start
締め
これで本体にはアクセス可能に。-> rm.legnoh.jp
後は、気に入らないところを変えるための施策を打つ。
admin変更
デフォルトデータのロード
RedmineでMarkdown
$ rbenv exec gem install redcarpet
$ rbenv rehash
$ git clone https://github.com/alminium/redmine_redcarpet_formatter.git /var/lib/redmine/plugins/redmine_redcarpet_formatter
$ cd redmine_redcarpet_formatter
$ git checkout v2.0.1
$ service httpd restart
[管理]->[設定]->[全般]->[テキストの書式]->[Markdown]が選べるのでこれに設定。
Githubライクなテーマに
$ git clone git://github.com/makotokw/redmine-theme-gitmike.git /var/lib/redmine/gitmike
$ service httpd restart
[管理]->[設定]->[表示]->[テーマ]->[Gitmike]が選べるのでこれに設定。
これだけ。あとは好みに応じて好き勝手しましょう。お疲れ様でした。
参考
-
【CentOS】Ruby と Ruby on rails すら無い状態から Redmine をインストールする! | oki2a24
- 同じ日に同じことやろうとしてたので親近感わいた。正直触発されてこの記事書いた。
Github 連携
本家Githubに連携手順が書いてあったのでそれに従う。
[管理]->[設定]->[リポジトリ]->[リポジトリ管理用のWebサービスを有効にする]にチェックを入れ、
下の「キーの生成」を押す。
Githubの対象リポジトリを、Redmineサーバのローカル上にcloneする。
今回はこちら。legnoh/rm_gh
$ mkdir ~/code
$ git clone https://github.com/legnoh/rm_gh.git ~/code
Redmineのプロジェクトごとの[設定]->[リポジトリ]->[新しいリポジトリ]で、先ほどcloneしたパスを設定する。
この時点では、まだリポジトリにコミットが存在しない扱いになってしまう。
Github側のリポジトリ設定->[Service Hooks]->[Redmine] を選び、
そこにRedmineのURL、プロジェクト名、先ほど取得したAPIキーを入力する。
はい。