このブログを検索

2013-12-30

今月からFX始めました。

今月からFXを始めたので時々記録をつけていきます。
とりあえずは簡単な記録から。


  • 某日、FXに関する書籍を購入し雰囲気を知る。
    間違えて売ってしまったので何を買ったか忘れたけど、確かこれ

    一番売れてる投資の雑誌ザイが作った『FX』入門 ザイ編集部&羊飼い
    最初に読むには丁度良かったです、オススメでした。
    が、結局実際にやってみるまではサッパリわかりませんでしたね。
  • 12/8、GMOクリック証券(FXネオ)で開始
  • 軍資金11万くらいから
  • 基本的にUSD/JPYでスキャル〜デイ
  • 途中、書籍を適当に入門書っぽいものを二冊購入。
    一冊目

    朝30分! 会社勤めをしながら稼ぐ私のFX投資法 長瀬博雅
    ・・・これは完全に失敗でした。
    まず、そもそもある証券会社でのみ使えるシステムに関する説明資料であったこと。よく見てなかったのが悪いですがだまされた・・・。また、その説明資料だとしても、本当に説明書レベルのことしか書いておらず、例えそのシステムのことが知りたかったとしても、「ぐぐればわかるよ!」といった程度のことしか書いていないこと。
    なお、そのシステムというのは「トラップリピートイフダン」という名称の注文方法で、ある証券会社というのは確か「マネースクウェアジャパン」。
    ただまぁ、書籍は最悪でしたが、この「トラップリピートイフダン」というのはなかなか良さそうでした。イフダン注文の指定をしておけば、その条件を満たすなら何度でも繰り返す注文方法。さらに、複数指定できるので「トラップ」ということらしい。

    二冊目

    株とFX たったの3時間でプロ並にチャートが読めるようになる 間地秀三
    これはなかなか良書でした。中級者には当然だろうことしか書いてませんでしたが、為替チャート初めて!って人にはかなり良いと思います。
    内容としては、チャートのテクニカル分析のいろはについてが書かれていました。
    逆に、それだけが書かれています。すぐ読み終わるので1500円は高いと感じました・・・が、内容は良かったので良しとします。
  • 12/30現在、+2万



2013-11-04

eclipseでandroid開発環境構築のメモ

かなり古いメモだけど転記し忘れてた。


http://www.infinity-dimensions.com/blog/archives/android-app-develop-sdkinstall.html

Android SDK(SOFTWARE DEVELOPMENT KIT) のダウンロードとインストール
インストールは以前していたみたいなので省略


Android SDK Managerを起動
Android X.Xをインストールする
手持ちのAndroidは2.3.7なので2.3.3を展開
とりあえずSDK Platform/Sample for SDK/Google APIs by Google Inc.をチェック
既にインストールされてるけど多分次のやつも必要
TollsのAndroid SDK Tools/Android SDK Platform-tools
途中、アクセスが拒否されました。とかいうエラーが出たが、
SDK Managerを管理者権限で起動しなおしたらうまくいった。
(20131104追記)
↓SystemImage等もあった方いいかも
http://qiita.com/gabu/items/8bc1a11f1382409f1d2a

パスを通す
Pathに以下を追加
C:\Program Files (x86)\Android\android-sdk\tools
C:\Program Files (x86)\Android\android-sdk\platform-tools

JDKインストール
eclipseについてくるので不要
Eclipseインストール
日本語化&いろいろ込みのpleiadesを使用する
から
Eclipse 3.6 HeliosのFull All In One(JREあり)のJavaパッケージをダウンロード
インストール
今回はc:\eclipse\pleiades-java-3.6.2\にインストールした
※最新は3.7だがAndroid開発ツールが3.6までしか対応していない

Eclipseセットアップ
"eclipse.exe"を起動する
ワークスペースの選択と出るのでここでは"c:\workspace\android"を指定
ウィンドウ→設定→Java→インストール済みのJRE
jre1.6を選択する
→コンパイラー
コンパイラー準拠レベル:1.6

EclipseにADT(Android Development Tools)インストール
ヘルプ→新規ソフトウェアのインストール
追加→ロケーション"https://dl-ssl.google.com/android/eclipse/"
作業対象で追加したロケーションを選択
下の枠内に"保留中"と出たら数分待つ
開発ツールというのが出たらチェックを入れる(全部に入る)→次へと進めて完了させる
Eclipseメイン画面に戻るとステータスバーにインストール状況が表示されるので待つ
完了したら再起動
※途中でエラーが出る場合
 まずは同じ手順を二回繰り返す(それでいけた)
 だめならhttpsをhttpに変えてRetry

再起動するとWelcometo Android Development Toolsという画面が表示される
Use existing SDKsを選択してロケーションに
今回は"C:\Program Files (x86)\Android\android-sdk"を指定


AVD(Androidエミュレーター)の作成
ウィンドウ→AVD Manager→新規
名前:android2.2
SDCardサイズ:64
Snapshot使用可能:チェック
Skin解決:600x1024
Keyboard support:yes
→CreateAVD
さらに
開始→起動




Hello作成
ファイル→新規→その他を選択
Android→Androidプロジェクトを選択→次へ
プロジェクト名:HelloAndroid→次へ
ビルドターゲット:Android2.3.3→次へ
パッケージ名:com.blogspot.xelalko.hello→完了

この状態で
実行→実行→Android アプリケーション
とすると仮想端末が実行される。
ホーム画面を表示するとHelloアプリケーションが実行される。

2013-10-19

CentOSで固定IPの設定

CentOS6.3(6.2?)で固定IPの設定
この辺ってディストリビューションによって異なるから面倒。


# vi /etc/sysconfig/network-scripts/ifcfg-eth0
--------------------------------------------------------------------------------
DEVICE=”eth0”
BOOTPROTO=”static”
HWADDR=”・・・”
ONBOOT=”yes”
GATEWAY=192.168.1.1
NETMASK=255.255.255.0
DNS1=192.168.1.1
IPADDR=192.168.1.11
NETMASK=255.255.255.0
--------------------------------------------------------------------------------
# /etc/init.d/network restart

おまけ
うまくいかなかったけどDHCPでIP取得
これで良かったはずなんだけど・・・
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
--------------------------------------------------------------------------------
DEVICE=”eth0”
BOOTPROTO=”dhcp”
HWADDR=”・・・”
ONBOOT=”yes”
GATEWAY=192.168.1.1
NETMASK=255.255.255.0
DNS1=192.168.1.1
--------------------------------------------------------------------------------
# /etc/init.d/network restart


CentOSにMercurialをインストールする

CentOS6.3(6.2?)にMercurialをインストールする。
この際、特にWEBサーバーのインストールに躓いたのでメモを残す。
バージョン違いなのか、ネット上の情報通りにやってもうまくいかない。
ただ、認証方法周りはあまり動作確認していなかったかも。結構前の手順メモ。
やりたかったことはhttp(s)プロトコル経由でhgコマンドを動かし、URLにユーザー名を含めた認証にしたかったけど、
この手順で本当にできたかは記憶が定かではない。場合によっては修正や追加が必要かも。


ポート開放
# vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10080 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10443 -j ACCEPT

# useradd -m hg
# passwd hg
パスワード
# gpasswd -a apache hg

# yum install python-devel
# yum install make
# yum install gcc
# wget http://peak.telecommunity.com/dist/ez_setup.py
# python ez_setup.py
# easy_install -U mercurial

メモ:hgweb.cgiインストール場所
/usr/share/doc/mercurial-1.4/hgweb.cgi
メモ:apacheインストール場所(デフォルト)
/etc/httpd

# mkdir /var/www/hg
# su hg
# mkdir /var/www/hg/test
# chmod 775 /var/www/hg/test
# cd /var/www/hg/test
# hg init

# vi /var/www/hg/test/.hg/hgrc
[web]
push_ssl = false
allow_push = *
contact = xxx@xxx.xxx
name = xxxx
description = xxxx

# vi /var/www/hg/hgweb.config
[paths]
test = /var/www/hg/test

簡易サーバー
# hg serve -p 8080 --webdir-conf /var/www/hg/hgweb.config &
http://localhost:8080/

apacheサーバー
# mkdir /var/www/cgi-bin/hg
# cp /usr/share/doc/mercurial-1.4/hgweb.cgi /var/www/cgi-bin/hg/.
# chown apache:apache /var/www/cgi-bin/hg/hgweb.cgi
# chmod 755 /var/www/cgi-bin/hg/hgweb.cgi

# vi /var/www/cgi-bin/hg/hgweb.cgi

コメントアウト解除
--------------------------------------------------------------------------------------
import sys
--------------------------------------------------------------------------------------
コメントアウト
--------------------------------------------------------------------------------------
#sys.path.insert(0, "/usr/lib/python2.6/site-packages/")
--------------------------------------------------------------------------------------

追記
--------------------------------------------------------------------------------------
config = "/var/www/hg/hgweb.config"
--------------------------------------------------------------------------------------

コメントアウト解除
--------------------------------------------------------------------------------------
import os
os.environ["HGENCODING"] = "UTF-8"
--------------------------------------------------------------------------------------
そのしたに追記
--------------------------------------------------------------------------------------
os.environ["HGRCPATH"] = "/etc/httpd/conf/hgrc"
--------------------------------------------------------------------------------------

コメントアウト
--------------------------------------------------------------------------------------
#from mercurial.hgweb.hgweb_mod import hgweb
#import mercurial.hgweb.wsgicgi as wsgicgi
--------------------------------------------------------------------------------------
追記
--------------------------------------------------------------------------------------
from mercurial.hgweb import hgweb, wsgicgi
application = hgweb(config)
--------------------------------------------------------------------------------------

結果
--------------------------------------------------------------------------------------
#!/usr/bin/python
import sys
from mercurial import demandimport; demandimport.enable()
config = "/var/www/hg/hgweb.config"
import os
os.environ["HGENCODING"] = "UTF-8"
os.environ["HGRCAPATH"] = "/etc/httpd/conf/hgrc"
from mercurial.hgweb import hgweb, wsgicgi
application = hgweb(config)
wsgicgi.launch(application)
--------------------------------------------------------------------------------------

# vi /etc/httpd/conf/hgrc
[trusted]
users = hg
groups = hg

# cd /var/www/hg/test
# chmod g+w .hg .hg/* .hg/store/*
# chmod g+s .hg .hg/store .hg/store/data

参考:
http://d.hatena.ne.jp/kokutoto/20090505/p1
http://d.hatena.ne.jp/eldesh/20110125/1295938971
http://d.hatena.ne.jp/takuya_1st/20120120/1327028570
http://blog.oklab.org/?tag=mercurial
http://d.hatena.ne.jp/tututen/20100721/1279738184

自己証明(適当、Redmineインストールの記事の方が適切)
# cd /etc/httpd/conf
# openssl genrsa -out server.key 1024
# openssl req -new -key server.key -out server.csr -config /etc/pki/tls/openssl.cnf
パスワード
# openssl x509 -in server.csr -out server.crt -req -signkey server.key

# vi /etc/httpd/conf/httpd.conf
追記・・・だけど、もとからconfは全て読むしmod_sslはssl.confに書かれてるし、作業の必要なし
--------------------------------------------------------------------------------------
LoadModule ssl_module modules/mod_ssl.so
include /etc/httpd/conf.d/ssl.conf
--------------------------------------------------------------------------------------
変更(http用の設定だけどポートは閉じるので意味なし)
--------------------------------------------------------------------------------------
#Listen 10080
ServerName localhost:10080

<Directory "/var/www/html/">
AuthDigestProvider file
AuthType Digest
AuthName "Secret Zone"
AuthDigestDomain /
AuthUserFile /etc/httpd/.htdigest
Require valid-user
・・・
</Directory>
--------------------------------------------------------------------------------------

# yum install mod_ssl
# vi /etc/httpd/conf.d/ssl.conf
変更
--------------------------------------------------------------------------------------
Listen 10443
--------------------------------------------------------------------------------------
新規
--------------------------------------------------------------------------------------
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
--------------------------------------------------------------------------------------
変更
--------------------------------------------------------------------------------------
<VirtualHost _default_:10443>
--------------------------------------------------------------------------------------

変更
--------------------------------------------------------------------------------------
SSLCertificateFile /etc/httpd/conf/server.crt
SSLCertificateKeyFile /etc/httpd/conf/server.key
--------------------------------------------------------------------------------------

追記
--------------------------------------------------------------------------------------
<Directory "/var/www/cgi-bin/">
AuthDigestProvider file
AuthType Digest
AuthName "Secret Zone"
AuthDigestDomain /
AuthUserFile /etc/httpd/.htdigest
Require valid-user
・・・
</Directory>
--------------------------------------------------------------------------------------


# htdigest -c /etc/httpd/.htdigest 'Secret Zone' hg
--------------------------------------------------------------------------------------
パスワード入力:
--------------------------------------------------------------------------------------

このままだと10443とかにポート変更した影響でSELinuxが邪魔する
# yum install policycoreutils-python
確認
# semanage port -l | grep http
# semanage port -a -t http_port_t -p tcp 10080
# semanage port -a -t http_port_t -p tcp 10443

# /etc/init.d/httpd restart

接続確認
https://localhost:10443/cgi-bin/hg/hgweb.cgi

hg clone
ソース:https://hg@localhost:10443/cgi-bin/hg/hgweb.cgi/test/
ソース:ssh://hg@localhost//var/www/hg/test



CentOSにruby1.8を入れる

CentOS6.3(6.2?)にruby1.8を入れる際に躓いたのでメモ
rpm -i の際に他にもオプションがいるっぽい

# wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p374.tar.gz
# tar zxvf ruby-1.8.7-p374.tar.gz
# cd ruby-1.8.7-p374
# ./configure
# make
# checkinstall --fstrans=no
# rpm -ivh --nodeps --nomd5 /root/rpmbuild/RPMS/i386/ruby-1.8.7-p374-1.i386.rpm
※普通にrpm -i とやるとフォルダが不足してるようなエラーが出るので無視
※無視以外の方法もネットにあるけどそれやるとrubyコマンドでセグメンテーション違反とでる

# vim /etc/profile
Make the section with pathmunge look alike like this:
2行追記(あんま意味わかってない)
--------------------------------------------------------------------------------
#Path manupulation
if [ "$EUID" = "0" ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
pathmunge /usr/local/bin # ADDED THIS
else
pathmunge /usr/local/bin after # ADDED THIS
pathmunge /usr/local/sbin after
pathmunge /usr/sbin after
pathmunge /sbin
fi
--------------------------------------------------------------------------------
# source /etc/profile


RPMパッケージを作成する方法

Linuxでソースからビルドする必要があるアプリケーション。
パッケージ管理ツールで管理できないので不便です。
そこで試しにrubyをパッケージ化する方法をメモします。
全てのアプリケーションはできないと思いますが、ちゃんとしたアプリケーションなら恐らく対応できるんじゃないかと思います。
(要件をちゃんとしらべてません)

環境はCentOS6.3(6.2?)だったはず。

# yum install -y make gcc wget gettext
# yum install -y zlib-devel curl-devel openssl-devel httpd-devel apr-devel apr-util-devel mysql-devel ncurses-devel gdbm-devel readline-devel sqlite-devel

checkinstallのインストール
# mkdir -p /root/rpmbuild/SOURCES
# yum -y install git gcc rpm-build
# cd /usr/local/src
# git clone http://checkinstall.izto.org/checkinstall.git/
# cd checkinstall
# make && make install
# checkinstall

デフォルトのまま進んでいく。
RPMかどうか選ぶところではRPMを選ぶ。

# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# sudo rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm

# ls -l /etc/yum.repos.d/epel* /etc/yum.repos.d/remi.repo
とやって

/etc/yum.repos.d/epel.repo
/etc/yum.repos.d/epel-testing.repo
/etc/yum.repos.d/remi.repo
が出れば成功

参考:
http://www.google.com/url?q=http%3A%2F%2Ftnakamura.hatenablog.com%2Fentry%2F20120226%2Finstall_the_ruby_to_centos&sa=D&sntz=1&usg=AFQjCNH2he-ba_1g2c4_wGB9iphMiYMj6w


おまけ ソースからインストールした場合に単純にファイルを削除する方法
# cd /usr/local/src/ruby-1.9.1-p429
# cat .installed.list | xargs rm


お名前.comレンタルサーバーにRedmine2.3を入れる

最初、さくらレンタルに入れようとしていたRedmine。
root権限がある環境でやった方が確実で速い、そしてそうじゃないとまともに動かないということに気づいたので
お名前.comレンタルサーバー VPS(KVM)に入れてみました。
注意点はrubyを入れる際にrbenvだと普通はroot権限用になってしまうことくらいでしょうか。
環境による不都合はほぼありませんでした。

Redmine/Mercurial/SSL証明書を入れていきます。
[コントロールパネル操作]
■OSインストール
VPSコントロールパネルに繋ぐ
OS再インストール CentOS6.2を選択
SSH Private Keyと公式ヘルプを用い、SSH接続で接続できるようにする


[SSH]
■OSセットアップ
・yum高速化
# yum -y install yum-fastestmirror
# yum update

・vim入れる
# yum -y install vim

・locate入れる
# yum -y install mlocate
# updatedb

・firewall設定
※詳しくないので参考までに
# vim /etc/sysconfig/iptables
--------------------------------------------------------------------------------------
# Manual customization of this file is not recommended.
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]

#既にconnectionが張られている通信を許可,TCPの接続開始と応答、FTPデータなどを許可
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#icmp(ping) 許可
-A INPUT -p icmp -j ACCEPT
#ローカルホストの入力許可
-A INPUT -i lo -j ACCEPT

# FRAGMENT DROP ###
-A INPUT -f -j LOG --log-level debug --log-prefix 'FRAGMENT-DROP:'
-A INPUT -f -j DROP
#### PING OF DEATH ###
-N PINGOFDEATH
-A PINGOFDEATH -m limit --limit 1/s --limit-burst 4 -j ACCEPT
-A PINGOFDEATH -j LOG --log-level debug --log-prefix 'PINGDEATH-DROP:'
-A PINGOFDEATH -j DROP
-A INPUT -p icmp --icmp-type echo-request -j PINGOFDEATH
#### BROAD MULTI DROP ###
-A INPUT -d 255.255.255.255 -j DROP
-A INPUT -d 224.0.0.1 -j DROP
#### 113IDENT ###
-A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset
#### SYNFLOOD ###
-N drop_synflood
-A drop_synflood -m limit --limit 10/s --limit-burst 20 -j RETURN
-A drop_synflood -j LOG --log-prefix "SYNFLOOD: " -m limit --limit 1/s --limit-burst 10
-A drop_synflood -j DROP
-A INPUT -p tcp --syn -j drop_synflood

#SSH許可
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

#Web許可
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
-A INPUT -p tcp --dport 3000 -j ACCEPT
#FTP許可
#-A INPUT -p tcp --dport 20 -j ACCEPT
#-A INPUT -p tcp --dport 21 -j ACCEPT
#-A INPUT -p tcp --dport 4000:4029 -j ACCEPT
#MAIL許可
#-A INPUT -p tcp --dport 25 -j ACCEPT
#-A INPUT -p tcp --dport 465 -j ACCEPT
#-A INPUT -p tcp --dport 110 -j ACCEPT
#-A INPUT -p tcp --dport 995 -j ACCEPT
#-A INPUT -p tcp --dport 143 -j ACCEPT
#-A INPUT -p tcp --dport 993 -j ACCEPT

#先に許可したポート以外全て不許可にする
#デフォルトであったけどDROPに変えたいのでコメントアウト
#-A INPUT -j REJECT --reject-with icmp-host-prohibited
#-A FORWARD -j REJECT --reject-with icmp-host-prohibited

#LOGGING
-A INPUT -m limit --limit 1/s -j LOG --log-level debug --log-prefix 'INPUT-DROP:'
-A INPUT -j DROP
-A FORWARD -m limit --limit 1/s -j LOG --log-level debug --log-prefix 'FORWARD-DROP:'
-A FORWARD -j DROP

COMMIT
--------------------------------------------------------------------------------------
# /etc/init.d/iptables restart

・ログ出力設定
# vim /etc/rsyslog.conf
コメントされているkern.*の下あたりにでも追記
--------------------------------------------------------------------------------------
kern.debug /var/log/iptables.log
--------------------------------------------------------------------------------------
※iptables専用ではないけどkern.debugには他のログがこないからこれでいいらしい

・ファイル作成
# touch /var/log/iptables.log
# chmod 600 /var/log/iptables.log

・ローテート設定
# vim /etc/logrotate.d/syslog
{ の上あたりに追記
--------------------------------------------------------------------------------------
/var/log/iptables.log
--------------------------------------------------------------------------------------

参考:
http://www.rapidsite.jp/support/manual/rv_custom/e_4210.html
http://kazmax.zpp.jp/cmd/i/iptables.8.html
http://arisonsvr.org/web/maincontents/serverset/iptables/iptable.html
http://www3.big.or.jp/~sian/linux/tips/iptables.html
http://kensuke.jp/~kensuke/pukiwiki/index.php?debian%2Fns%2Fiptables
http://vok.paburica.com/index.php?iptables%2FSYN%20Flood%E5%AF%BE%E7%AD%96%E3%82%92%E3%81%97%E3%81%9F%E3%81%84


・作業ディレクトリ作る
# mkdir ~/tmp

・必要なパッケージを導入
基本的なもの
# yum install -y make gcc wget gettext-devel
rubyやredmineに必要っぽいもの
# yum install -y zlib-devel curl-devel openssl-devel httpd-devel apr-devel apr-util-devel mysql-devel ncurses-devel gdbm-devel readline-devel sqlite-devel
gitに必要っぽいもの
# yum install -y expat-devel perl-ExtUtils-MakeMaker.x86_64

・gitインストール
# cd ~/tmp
# wget --no-check-certificate https://git-core.googlecode.com/files/git-1.8.4.1.tar.gz
# tar zxvf git-1.8.4.1.tar.gz
# cd git-1.8.4.1
# ./configure
# make && make install
# git version


■rubyインストール
ポイントはrootユーザだけでなくPassengerユーザ(apacheやredmineユーザ)が使うので
システム共有な場所にインストールする必要がある
また、Passengerは祖先に渡って全てのディレクトリに読込と実行権限が必要
よって/usr/local内にインストールする

・rbenv+ruby-buildのインストール
# echo 'export RBENV_ROOT="/usr/local/rbenv"' >> ~/.bashrc
# echo 'export PATH="${RBENV_ROOT}/bin:${PATH}"' >> ~/.bashrc
# source ~/.bashrc
# git clone https://github.com/sstephenson/rbenv.git ${RBENV_ROOT}
# mkdir ${RBENV_ROOT}/plugins
# git clone https://github.com/sstephenson/ruby-build.git ${RBENV_ROOT}/plugins/ruby-build
# echo 'eval "$(rbenv init -)"' >> ~/.bashrc
# source ~/.bashrc
# rbenv --version
--------------------------------------------------------------------------------------
rbenv 0.4.0-67-g3300587
--------------------------------------------------------------------------------------
※この設定だと他ユーザがデフォルトでは使えないはずなので留意

・ruby2.0.0のインストール
使えるrubyバージョン確認
# rbenv install -l
rubyをインストール
# rbenv install 2.0.0-p247
パスを通す
# rbenv rehash
インストールしたバージョンを有効にする
# rbenv global 2.0.0-p247
# ruby -v
--------------------------------------------------------------------------------------
ruby 2.0.0p247
--------------------------------------------------------------------------------------

・rubygemsインストール
# rbenv exec gem install rubygems-update
# rbenv rehash
# update_rubygems
参考:
http://docs.rubygems.org/read/chapter/3#page83

・bundlerインストール
# rbenv exec gem install bundler --no-ri --no-rdoc
# rbenv rehash


■mysqlインストール
[SSH]
・サーバーインストール
# yum -y install mysql-server
# chkconfig mysqld on
# vim /etc/my.cnf
追記:
--------------------------------------------------------------------------------------
[mysqld]
character-set-server = utf8
[mysql]
default-character-set = utf8
--------------------------------------------------------------------------------------
# service mysqld restart

# mysqladmin -u root password DBパスワード
# /usr/bin/mysql_secure_installation
--------------------------------------------------------------------------------------
Change the root password? : n
Remove anonymous users? : Y
Disallow root login remotely? : Y
Remove test database and access to it? : n
Reload privilege tables now? : Y
--------------------------------------------------------------------------------------

・redmine用DB作成
# mysql -u root -p
--------------------------------------------------------------------------------------
> create database redmine character set utf8;
> create user 'redmine'@'localhost' identified by 'DBパスワード';
> grant all privileges on redmine.* to 'redmine'@'localhost';
> \q
--------------------------------------------------------------------------------------

■redmineインストール
ここもPassengerが全てのディレクトリに権限がある場所に入れる必要がある
今回は/var/www配下におく
# cd ~/tmp
# wget http://rubyforge.org/frs/download.php/77138/redmine-2.3.3.tar.gz
# tar zxvf redmine-2.3.3.tar.gz
# mv redmine-2.3.3 /var/www/redmine
# cd /var/www/redmine
# mkdir -p tmp tmp/pdf public/plugin_assets
# chmod -R 755 files log tmp public/plugin_assets
# cd /var/www/redmine/config
# cp -p database.yml.example database.yml
# vim database.yml
Change it to look like:
--------------------------------------------------------------------------------------
production:
adapter: mysql2
database: redmine
host: localhost
username: redmine
password: "DBパスワード"
encoding: utf8
--------------------------------------------------------------------------------------

# cd /var/www/redmine

・Gemfileにpassengerを追加
# vim Gemfile
sourceの下に追記:
--------------------------------------------------------------------------------------
gem "passenger"
--------------------------------------------------------------------------------------

・gemをインストールする(ディレクトリ配下に)
# yum -y install gcc-c++ ImageMagick-devel libxml2-devel libxslt-devel
# bundle install --path vendor/bundle

・rails動作確認
# bundle exec rails -v
--------------------------------------------------------------------------------------
Rails 3.2.13
--------------------------------------------------------------------------------------

# bundle exec rake generate_secret_token
# RAILS_ENV=production bundle exec rake db:migrate
# RAILS_ENV=production bundle exec rake redmine:load_default_data
--------------------------------------------------------------------------------------
Select Language: ja
--------------------------------------------------------------------------------------

・動作確認(WEBrick)
# bundle exec rails server -e production
>> http://IPアドレス:3000/
Redmineの初期アカウントはadmin:admin

・設定ファイルを用意
# cd /var/www/rails/redmine/config
# cp -p configuration.yml.example configuration.yml

・実行モードをproduction固定
# vim /var/www/rails/redmine/config/boot.rb
末尾に追記:
--------------------------------------------------------------------------------------
ENV['RAILS_ENV'] ||= 'production'
--------------------------------------------------------------------------------------

・再確認
# cd /var/www/redmine
# bundle exec rails server
>> http://IPアドレス:3000/

参考:
http://www.redmine.org/projects/redmine/wiki/RedmineInstall
http://www.redmine.org/projects/redmine/wiki/Redmine_on_CentOS_installation_HOWTO
http://www.sdmemo.com/wiki/Redmine%E3%81%AE%E5%B0%8E%E5%85%A5%E6%89%8B%E9%A0%86


■apache+passengerセットアップ
passengerはroot権限では動作しない
実行ユーザはredmine/config.ru(場合によってはconfig/environment.rb)のオーナーとなる
今回はredmineユーザーで動作させる
# adduser redmine
# passwd redmine
ユーザパスワード
# chown -R redmine:redmine /var/www/redmine

・passengerモジュールのインストール
# bundle exec passenger-install-apache2-module
# bundle exec passenger-install-apache2-module --snippet
apacheの設定に使う文字列が表示されるのでコピーする:
--------------------------------------------------------------------------------------
LoadModule passenger_module /var/www/redmine/vendor/bundle/ruby/2.0.0/gems/passenger-4.0.20/buildout/apache2/mod_passenger.so
PassengerRoot /var/www/redmine/vendor/bundle/ruby/2.0.0/gems/passenger-4.0.20
PassengerDefaultRuby /usr/local/rbenv/versions/2.0.0-p247/bin/ruby
--------------------------------------------------------------------------------------

・passenger設定ファイルを作成
# vim /etc/httpd/conf.d/passenger.conf
以下の内容で新規作成する
基本設定のところはsnippetで得られた文字列で置き換える:
--------------------------------------------------------------------------------------
# Passengerの基本設定
LoadModule passenger_module /var/www/redmine/vendor/bundle/ruby/2.0.0/gems/passenger-4.0.20/buildout/apache2/mod_passenger.so
PassengerRoot /var/www/redmine/vendor/bundle/ruby/2.0.0/gems/passenger-4.0.20
PassengerDefaultRuby /usr/local/rbenv/versions/2.0.0-p247/bin/ruby

# 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のチューニングのための設定を追加
PassengerMaxPoolSize 6
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 3600
PassengerHighPerformance on
PassengerStatThrottleRate 10
RailsSpawnMethod smart
RailsAppSpawnerIdleTime 0
PassengerMaxPreloaderIdleTime 0
--------------------------------------------------------------------------------------

・文法チェック
# apachectl configtest
--------------------------------------------------------------------------------------
Syntax OK
--------------------------------------------------------------------------------------

・とりあえずredmine関係なくapacheの動作確認
# /etc/init.d/httpd restart
>> http://IPアドレス/

参考:
http://morizyun.github.io/blog/passenger-install-apache-ruby-rails/

メモ:
祖先にわたってすべてのディレクトリにapacheユーザの読み込みと実行権限が必要
http://www.modrails.com/documentation/Users%20guide%20Apache.html#_deploying_to_a_virtual_host_8217_s_root
all parent folders. That is, /webapps/mycook and /webapps must also be readable and executable by Apache.
メモ:
passengerは仮想ホストかシンボリックリンクを使うべきで、
仮想ディレクトリだとうまく動かない模様

・redmineをSUB-URIで実行する(シンボリックリンクを用いる)
※但し今回の設定だとpassengerはSUB-URIで動作するがWEBrickはルートディレクトリで動作する
 どちらも同じSUB-URIにする方法はわからなかった
# ln -s /var/www/redmine/public /var/www/html/redmine
# vim /etc/httpd/conf/httpd.conf
DocumentRoot(/var/www/html)の下あたりに追記
--------------------------------------------------------------------------------------
#Redmine
RackBaseURI /redmine
<Directory /var/www/redmine/public>
AllowOverride All
Order allow,deny
Allow from all
</Directory>
--------------------------------------------------------------------------------------

# cd /var/www/redmine
# vim config/boot.rb
末尾に追記
--------------------------------------------------------------------------------------
ENV['RAILS_RELATIVE_URL_ROOT'] = '/redmine'
--------------------------------------------------------------------------------------
WEBrickで実行する際はconfig.ruにmapを追記する必要あるが、それだとpassengerが誤動作する
この状態でWEBrickで実行するとSUB-URIではない状態で実行される

動作確認
# /etc/init.d/httpd restart
>> http://IPアドレス/redmine

・redmineセットアップ
[redmine]
adminでログイン パスワードadmin
個人設定からパスワードを変更する
管理->情報からすべてにチェックマークがついていることを確認する


[SSH]
■Mercurialインストール
# cd ~/tmp
Mercurial用ユーザを作成(今回は使わないけどMercurialをWEBで動作させる際には必要のはず)
# useradd -m mercurial
# passwd mercurial
ユーザパスワード

・Mercurialをeasy_install経由でインストール
# yum -y install python-devel make gcc
# wget http://peak.telecommunity.com/dist/ez_setup.py
# python ez_setup.py
# easy_install -U mercurial
# hg --version

ユーザ情報を設定する
# vim ~/.hgrc
--------------------------------------------------------------------------------------
[ui]
username = admin <redmine@mail.com>
--------------------------------------------------------------------------------------

動作確認
# cd ~/tmp
# mkdir hgtest
# hg init hgtest

Redmine用リポジトリを作る
# cd /var/www
# mkdir hg
# cd hg
# mkdir project01
# hg init project01

・この状態でredmineのプロジェクト設定からリポジトリを連携する
例(リポジトリパス):/home/アカウント名/hg/project01
識別子: 任意
パスのエンコーディング: 空欄


■Mercurialクライアントをインストール
[ローカル]
・TortoiseHgをダウンロードしてインストール
http://mercurial.selenic.com/
・デスクトップ等で右クリック->TortoiseHg->Global Settings
・Commit->Usernameをセット
名前 <メールアドレス>
・Edit File
・[ui]にsshをセット(圧縮オプション等をセット)
--------------------------------------------------------------------------------------
ssh = "C:\Program Files\TortoiseHg\TortoisePlink.exe" -agent -ssh -2 -batch -C
--------------------------------------------------------------------------------------
・Save->OK

・TortoiseHgを公開暗号方式に対応させる
・puttygen(ASE対応)をダウンロードする
※ごった煮版等はASE対応してない
http://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exe
・実行してLoadからSSH Private Key ファイルを読み込み
・Save privete keyで●●●.ppkとして保存 -> c:\ssh_keys\ に保存したとする
・キー管理ツールのPageant.exeのショートカットを作成する
--------------------------------------------------------------------------------------
"C:\Program Files\TortoiseHg\Pageant.exe" "c:\ssh_keys\●●●.ppk"
--------------------------------------------------------------------------------------

動作確認
・ショートカットを実行する
・デスクトップ等で右クリック->TortoiseHg->Clone
source
--------------------------------------------------------------------------------------
ssh://root@IPアドレス//ssh://var/www/hg/project01
--------------------------------------------------------------------------------------
※必要に応じてユーザアカウントを作る方がよい


■SSL対応(自己証明)
[SSH]
# yum -y install openssl openssl-devel mod_ssl
# cd /etc/pki/tls/certs

・RSA秘密鍵生成
# openssl genrsa -des3 -out private.key 2048
--------------------------------------------------------------------------------------
Enter pass phrase for private.key: パスワード
--------------------------------------------------------------------------------------
・内容確認
# openssl rsa -in private.key -text -noout

・証明書要求(CSR)生成
# openssl req -new -key private.key -out server.csr
--------------------------------------------------------------------------------------
Enter pass phrase for private.key: パスワード
Country Name (2 letter code) [XX]: JP
State or Province Name (full name) []: Tokyo
Locality Name (eg, city) [Default City]: Minato-ku
Organization Name (eg, company) [Default Company Ltd]: TEST Co., Ltd.
Organizational Unit Name (eg, section) []: TEST
Common Name (eg, your name or your server's hostname) []: IPアドレス
以降、省略(入力不要)
--------------------------------------------------------------------------------------
・内容確認
# openssl req -in server.csr -text -noout

・証明書発行
# openssl x509 -in server.csr -out server.crt -req -signkey private.key -days 365

・権限変更
# chmod 400 private.key server.crt server.csr
・RSA秘密鍵をしかるべき場所へ
# mv /etc/pki/tls/certs/private.key /etc/pki/tls/private/private.key

・apacheにセット
# vim /etc/httpd/conf.d/ssl.conf
コメント解除
--------------------------------------------------------------------------------------
DocumentRoot "/var/www/html"
--------------------------------------------------------------------------------------
変更する
--------------------------------------------------------------------------------------
SSLCertificateFile /etc/pki/tls/certs/server.crt
SSLCertificateKeyFile /etc/pki/tls/certs/private.key
--------------------------------------------------------------------------------------
</VirtualHost>の上あたりに追記する
--------------------------------------------------------------------------------------
# SSLでも画像やJavaScriptファイルがキャッシュされるように指定
Header onsuccess append Cache-Control publicExpiresActive On
ExpiresByType text/css "access plus 3 days"
ExpiresByType application/x-javascript "access plus 3 days"
ExpiresByType image/jpeg "access plus 3 days"
ExpiresByType image/png "access plus 3 days"
ExpiresByType image/gif "access plus 3 days"
--------------------------------------------------------------------------------------

# /etc/init.d/httpd restart
>> https://IPアドレス/redmine

・動作が確認できたらhttpを閉じる
# vim /etc/httpd/conf/httpd.conf
コメントアウト
--------------------------------------------------------------------------------------
#Listen 80
--------------------------------------------------------------------------------------

・今だとhttpd再起動毎にパスワード聞かれるので省略する
# vim /etc/httpd/conf.d/ssl.conf
変更
--------------------------------------------------------------------------------------
SSLPassPhraseDialog exec:/etc/httpd/certs/pass_phrase.sh
--------------------------------------------------------------------------------------

# mkdir /etc/httpd/certs
# vim /etc/httpd/certs/pass_phrase.sh
--------------------------------------------------------------------------------------
#!/bin/sh
echo "パスワード"
--------------------------------------------------------------------------------------

# chown root:root /etc/httpd/certs/pass_phrase.sh
# chmod 500 /etc/httpd/certs/pass_phrase.sh
・動作確認
# ./pass_phrase.sh
・動作確認
# /etc/init.d/httpd restart

・httpdをサービス化
# chkconfig httpd on

参考:
https://www.verisign.co.jp/ssl/help/csr/capache_new.html
http://d.hatena.ne.jp/mrgoofy33/20110209/1297262978
http://linux.kororo.jp/cont/server/openssl_command.php
http://centossrv.com/apache-ssl.shtml
http://takuya-1st.hatenablog.jp/entry/20110208/1297157015


おまけ
ruby1.8の場合、redmineのdatabase.ymlに記述する adapter: mysql2 は、mysqlになる。

ruby1.8の場合、redmineのGemfileに記述をしないとバージョンエラーになる。
# vim Gemfile
--------------------------------------------------------------------------------------
gem 'nokogiri', '~> 1.5.10' --------------------------------------------------------------------------------------

redmine2.3+ruby1.8の場合に、WEBrick実行時に変な警告が出る。
それを消す方法
# vim /var/www/redmine/lib/redmine/syntax_highlighting.rb
コメントアウト
--------------------------------------------------------------------------------------
#require 'coderay/helpers/file_type' --------------------------------------------------------------------------------------
参考:
http://www.redmine.org/issues/13692