ROMAを検証
【公式URL】
http://roma-kvs.org/
http://roma-kvs.org/gladiator.html (GUIツール)
https://github.com/roma
【検証理由】
・好きなRubyで開発されているOSSなので、可読性が高い
・まつもとゆきひろ(Matz)さんが共同研究に関わっているので フレームワーク開発の参考になる
・Memcached クライアントで会話可能で、状況に応じて拡張が可能
・GUIでステータスが見れる
【構築後の画面】
・ログイン画面

・トップページ

・ステータス画面

【ROMA導入】
"1. ruby install" # yum remove ruby # yum -y install gcc zlib-devel openssl-devel sqlite sqlite-devel mysql-devel readline-devel libffi-devel # cd /usr/local/src/ # wget http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.gz # tar xvzf ruby-2.1.2.tar.gz # cd ruby-2.1.2 # ./configure && make && make install # ln -s /usr/local/bin/ruby /usr/bin/ruby # ruby -v "2. gem install" # wget http://production.cf.rubygems.org/rubygems/rubygems-2.2.2.zip # unzip rubygems-2.2.2.zip # cd rubygems-2.2.2 # ruby setup.rb # ln -s /usr/local/bin/gem /usr/bin/gem "3. ROMA install" # gem install eventmachine # gem install roma # cd 【ROMAホーム】 # bin/mkroute localhost_10001 localhost_10002 --replication_in_host # bin/romad localhost -p 10001 -d --replication_in_host # bin/romad localhost -p 10002 -d --replication_in_host "4. access ROMA" # telnet localhost 10001 "5. check how it works" stat version 1.1.0 config.DEFAULT_LOST_ACTION auto_assign config.LOG_SHIFT_AGE 10 config.LOG_SHIFT_SIZE 10485760 ・ ・ set foo 0 0 3 bar STORED get foo VALUE foo 0 3 bar END quit
【GUIツール導入】
# gem install bundler
# ln -s /usr/local/bin/bundle /usr/bin/bundle
# cd /usr/local/src/
# wget https://github.com/roma/gladiator/archive/v1.1.0.tar.gz -O gladiator.tar.gz
# tar xvfz gladiator.tar.gz
# cd gladiator-1.1.0
# bundle install
# vi lib/config_gui.rb
--
module ConfigGui
# input your ROMA's ip address or hostname
HOST = "127.0.0.1" # <- 変更箇所
# input your ROMA's port No.
PORT = "10001" # <- 変更箇所
# set your account infomation
# [:username] and [:password] are set a limit by 30 characters.
ROOT_USER = [
{:username => 'roma_root', :password => 'hogehoge', :email => ''}, # <- 変更箇所
{:username => 'gladiator_root', :password => 'fugafuga', :email => '' }, # <- 変更箇所
]
NORMAL_USER = [
### NORMAL user are limited some functions.
#{:username => '', :password => '', :email => '' },
]
end
--
# cd 【ROMAホーム】
# vi config.rb
--
81 # plugin setting
82 PLUGIN_FILES = ['plugin_storage.rb', 'plugin_gui.rb'] # <- 'plugin_gui.rb' を追加
--
" ROMA 再起動"
# telnet localhost 10001
balse
Are you sure?(yes/no)
yes
# cd 【ROMAホーム】
# bin/romad localhost -p 10001 -d --replication_in_host
# bin/romad localhost -p 10002 -d --replication_in_host
" GUI tool 起動"
# cd 【GUI tool ホーム】
# bin/rails s【GoogleChromeからアクセス】
URL : http://localhost:3000
| 項目 | 内容 |
|---|---|
| URL | http://localhost:3000 |
| ID | roma_root |
| Pass | hogehoge |
【その他 (アクセスできない時は・・・)】
1. firewall をとめる
# service iptables stop
2. ポートフォワーディングに 3000ポートを追加 (virtualboxの場合)
対象サーバ > 設定 > ネットワーク > ポートフォワーディング に追加する
【総括】
導入時に少し手がかかるが、運用コストを抑えられそう。
動的にスケールアウトできる点、GUIツールで監視ができる点が大きい。
VMによる検証環境を構築
技術トレンドを検証するために、VM環境を構築します。
【環境】
| 構築環境 | バージョン |
|---|---|
| chocolatey | (latest) |
| VirtualBox | (latest) |
| Vagrant | (latest) |
| OS | CentOS7 |
【手順】
Windows のコマンドプロンプトから以下を順番に実行 (4ステップ)
"1. chocolatey インストール"
C:\> @powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin
"2. Virtual Box インストール"
C:\> cinst virtualbox
"3. Vagrant インストール"
C:\> cinst vagrant
"4. centos7 インストール"
C:\> cd 【vagrantインストール先】
C:\> vagrant box add centos7_min https://github.com/holms/vagrant-centos7-box/releases/download/7.1.1503.001/CentOS-7.1.1503-x86_64-netboot.box
C:\> vagrant init centos7_min
C:\> vagrant up【動作確認】
ターミナルソフト teratermやputtyによりサーバにアクセス
| 項目 | 内容 |
|---|---|
| host | 127.0.0.1 |
| port | 22 or 2222 |
| id | vagrant |
| pass | vagrant |
【リンク】
chocolateyインストール(公式)
https://chocolatey.org/
vagrantbox取得先
http://www.vagrantbox.es/
vagrantコマンド
http://lab.raqda.com/vagrant/cli/index.html
OpenSSL+ApacheでHttpsアクセス
開発中リソースが漏洩しないようにするために以下を行います。
・OpenSSLを使いApache(httpd)への通信暗号化
・環境の公開先を制限するため、AWSのSecurityGroupによりフィルタリング(おまけ)
【構築後の画面】
ブラウザアクセス:https://【EC2 (WEB) のPublic DNS】/redmine

手順(OpenSSL+Apache+AWS)
①OpenSSLで鍵を作成後、Apacheにsslの設定を反映を行う(コマンド作業)②AWSのSecurityGroupに、フィルタリングの設定を行う (AWS作業)(※設定なしでもhttps通信は可能)
"必要なパッケージをインストール" # yum install -y make openssl-devel httpd mod_ssl "opensslにより鍵を作成" # cd /etc/pki/tls/certs/ # make server.crt Enter pass phrase:(パスワード設定) Verifying - Enter pass phrase:(パスワード再設定) Enter pass phrase for server.key:(パスワード入力) Country Name (2 letter code) [GB]:JP ← 国名応答 State or Province Name (full name) [Berkshire]:Tokyo ← 都道府県名応答 Locality Name (eg, city) [Newbury]:Setagaya ← 市区町村名応答 Organization Name (eg, company) [My Company Ltd]:solahito ← サイト名応答(なんでもいい) Organizational Unit Name (eg, section) []: ← 空ENTER Common Name (eg, your name or your server's hostname) []:solahito.xxx ← Webサーバー名応答 Email Address []:administrator@solahito.xxx ← 管理者メールアドレス応答 # openssl rsa -in server.key -out server.key Enter pass phrase for server.key:(パスワード入力) "鍵を配備" # mv /etc/pki/tls/certs/server.crt /etc/pki/tls/certs/xxx.solahito.crt # mv /etc/pki/tls/certs/server.key /etc/pki/tls/certs/xxx.solahito.key "http(Apache)の設定" # vi /etc/httpd/conf.d/ssl.conf ー【編集内容(ここから)】ーーーーーー ## ## SSL Virtual Host Context ## # 以下を全てコメントアウトします #<VirtualHost _default_:443> # ↑ #(コメントアウト) # ↓ #</VirtualHost> ー【編集内容(ここまで)】ーーーーーー # vi /etc/httpd/conf.d/solahito.conf ー【新規作成(ここから)】ーーーーーー <VirtualHost *:443> DocumentRoot "/var/www/html" ServerName 【ec2 (WEB) のpublic DNS】:443 SSLEngine on SSLCertificateFile /etc/pki/tls/certs/xxx.solahito.crt SSLCertificateKeyFile /etc/pki/tls/certs/xxx.solahito.key ProxyPass /redmine http://【ec2 (開発環境) のPrivate IPs】/redmine ProxyPassReverse /redmine https://【ec2 (開発環境) のPrivate IPs】/redmine </VirtualHost> ー【新規作成(ここまで)】ーーーーーー "Apacheリスタート" # service httpd restart # chkconfig httpd on
【②AWSにSG(SecurityGroup)を設定】
1. AWSにログイン > EC2 を選択

3. SG-a (WEB) を 設定

(詳細手順)
a. SG-a を選択 > Inbound を選択
b. Port range: に 443 を入力
c. Source: に 【外部IPアドレス】/32 を入力
d. 「Add Rule」を押下
e. 「Apply Rule Changes」を押下
※外部IPアドレスを調べるなら
ex.) http://www.cman.jp/network/support/go_access.cgi
4. SG-b (開発環境) を 設定

(詳細手順)
a. SG-b を選択 > Inbound を選択
b. Port range: に 80 を入力
c. Source: に 【SG-aの Group ID】を入力
d. 「Add Rule」を押下
e. 「Apply Rule Changes」を押下
※Group IDを調べる方法
SG-a を選択 > Details を選択 > Group ID: の値をコピー

【その他】
ログアウト時にredmineのリダイレクト処理によって、http接続になって画面が表示されなくなる問題への対処
1. SG-a (WEB) のSecurityGroup に 80ポートを追加
2. ヘッダ情報を http→https に書き換える処理を設定
"http→https書き換え設定"
# vi /etc/httpd/conf.d/solahito.conf
ー【編集内容(ここから・先頭に追加)】ーーーーーー
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
ー【編集内容(ここまで・先頭に追加)】ーーーーーー
"Apacheリロード"
# /etc/init.d/httpd reload
Redmineで開発環境を構築
git と svn を使いたいことと、
チケット駆動でのタスク管理を行うために、
Redmineで開発環境を構築します。
【環境】
| 実行環境 | バージョン |
|---|---|
| Redmine | 2.0 |
| OS | CentOS 6.2 |
| Ruby | 1.9.3 |
| Ruby on Rails | 3.2.3 |
| DB | MySQL 5.1.61 |
【構築後の画面】
ブラウザアクセス:http://(EC2のPublic DNS)/redmine/

【手順】
"必要なパッケージをインストール"
# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm
# yum groupinstall "Development Tools"
# yum install -y openssl-devel readline-devel zlib-devel curl-devel libyaml-devel mysql-server mysql-devel httpd httpd-devel ImageMagick ImageMagick-devel
"rubyをインストール (makeは時間がかかります)"
# wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.gz
# tar zxvf ruby-1.9.3-p194.tar.gz
# cd ruby-1.9.3-p194
# make
# make install
# make clean
"bundlerをインストール"
# gem install bundler --no-rdoc --no-ri
"mysqlの設定"
# vi /etc/my.cnf
ー【編集内容(ここから)】ーーーーーー
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
character-set-server=utf8 "← 追加します"
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql] "← 追加します"
default-character-set=utf8 "← 追加します"
ー【編集内容(ここまで)】ーーーーーー
"mysql起動"
# /etc/init.d/mysqld start
# chkconfig mysqld on
"反映状況確認(すべて utf8 になっている事を確認)"
# 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/ |
+--------------------------+----------------------------+
mysql> exit;
"rootユーザーのパスワード変更・匿名ユーザー削除(***は任意のパスワードを設定)"
# mysql -uroot
mysql> use mysql;
mysql> update user set password=password('********') where user = 'root';
mysql> delete from user where user = '';
mysql> flush privileges;
mysql> exit;
"Redmine用データベースとユーザーの作成(***は任意のパスワードを設定)"
# mysql -uroot -p
Enter password: (設定したパスワード)
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のインストール"
# wget http://rubyforge.org/frs/download.php/76134/redmine-2.0.0.tar.gz
# tar zxvf redmine-2.0.0.tar.gz
# mv redmine-2.0.0 /var/lib/redmine
# vi /var/lib/redmine/config/database.yml
ー【新規作成(ここから)】ーーーーーー
production:
adapter: mysql2
database: db_redmine
host: localhost
username: user_redmine
password: solahito
encoding: utf8
ー【新規作成(ここまで)】ーーーーーー
# vi /var/lib/redmine/config/configuration.yml
ー【新規作成(ここから)】ーーーーーー
production:
email_delivery:
delivery_method: :smtp
smtp_settings:
address: "localhost"
port: 25
domain: 'example.com'
ー【新規作成(ここまで)】ーーーーーー
"bunderを使用してRedmineで使用するGemをインストール"
# cd /var/lib/redmine
# bundle install --without development test postgresql sqlite
"Redmineの初期設定とデータベースのテーブル作成"
# rake generate_secret_token
# RAILS_ENV=production rake db:migrate
"Passengerのインストール"
# gem install passenger --no-rdoc --no-ri
"PassengerのApache用モジュールのインストール"
# passenger-install-apache2-module
# vi /etc/httpd/conf.d/passenger.conf
ー【新規作成(ここから)】ーーーーーー
# passenger-install-apache2-module --snippet を実行して表示される設定を使用。
# 環境によって設定値が異なりますので以下の3行はそのまま転記しないでください。
LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.15/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.15
PassengerRuby /usr/local/bin/ruby
Header always unset "X-Powered-By"
Header always unset "X-Rack-Cache"
Header always unset "X-Content-Digest"
Header always unset "X-Runtime"
PassengerMaxPoolSize 20
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 3600
PassengerUseGlobalQueue on
PassengerHighPerformance on
PassengerStatThrottleRate 10
RailsSpawnMethod smart
RailsAppSpawnerIdleTime 86400
RailsFrameworkSpawnerIdleTime 0
ー【新規作成(ここまで)】ーーーーーー
"Apache起動"
# /etc/init.d/httpd start
# chkconfig httpd on
"Apache上のPassengerでRedmineを実行するための設定"
# chown -R apache:apache /var/lib/redmine
# ln -s /var/lib/redmine/public /var/www/html/redmine
# vi /etc/httpd/conf.d/passenger.conf
ー【編集内容(ここから)】ーーーーーー
RailsBaseURI /redmine ← 末尾に追加
ー【編集内容(ここまで)】ーーーーーー
"Apacheリロード"
# /etc/init.d/httpd configtest
# /etc/init.d/httpd graceful【その他】
全然ブラウザ表示されないなら・・
1.AWSのSecurityGroup に 80ポートを追加
2.http://localhost/redmine → http://localhost/redmine/
【リンク】
redmineインストール(公式)
http://blog.redmine.jp/articles/redmine-2_0-installation_centos/
redmineインストール時の補足
http://sakamoto-san.com/redmine2-0_install_on_centos6-2.html
Redmineを使い始めるための初期設定
http://redmine.jp/tech_note/first-step/admin/
AWSでIAMアカウント作成
AWSでチーム作業したり、
各サーバで行える権限を制限するために、
IAMでアカウント作成します。
【手順】
◎サーバ用のReadOnly権限のユーザを作成します
1. AWSにログイン > IAM を選択

2. IAM Dashboard を選択 > Create a New Group of Users を選択

3. Group Name に適当なグループ名を入力 > Continue をクリック

4. Read Only Access を選択

5. Edit Permissions (Policy Document に権限を付与/削除) > Continue をクリック

8. Download Credentials をクリック > (API利用のためのKeyを取得しておく) > Close Window をクリック

◎ユーザアカウントにパスワードを付与します
※パスワード付与していないと、ブラウザでログインできません
1. Users を選択 > 作成したユーザを選択 > Manage Password をクリック

2. Assign a custom password を選択 > パスワードを設定 > Apply をクリック

◎アクセスするためのURLを分かりやすく設定し、ログインします
1. IAM Dashboard を選択 > Create Account Alias を選択

2. Account Alias に適当な名称を入力 > Yes, Create を選択

3. 作成したURLにブラウザからアクセス > 作成したユーザ名とパスワードを入力 > Sign in... をクリック
URL例) https://xxxx.signin.aws.amazon.com/console

【上記の手順で、以下のグループとユーザを作成します】
◎グループ
| グループ | 権限 |
|---|---|
| Administrator | すべて行える権限 |
| PowerUser | IAM編集以外すべて行える権限 |
| ReadOnly | 読みのみ行える権限 |
◎ユーザ
| ユーザ | 付与グループ |
|---|---|
| solahito | ReadOnly |
| (管理者) | Administrator |
| (開発者) | PowerUser |
| (オペレータ) | ReadOnly |
【IAMを利用する理由】
- 登録時のメールアドレスとパスワードを全メンバーに共有できない。(何でもできる権限のため)
- メンバーが作業できなくなった時、アカウント削除でセキュリティが守れる。
- 各サーバへのAPI公開権限を制限できる。
【リンク】
IAMを設定(キャプチャ付き)
http://dev.classmethod.jp/cloud/about-aws-identity-and-access-management/
システムの各レイヤーを決める
システムレイヤーの基本構成を確認し、
未確定レイヤーについて内容を決定します。
【各レイヤー一覧】
| レイヤー | 対象 |
|---|---|
| コロケーション | AWS |
| ネットワーク | AWS |
| ハードウェア | AWS(64ビット版) |
| OS | AWS Linux CentOS6.2 |
| ミドルウェア | Nginx、Unicorn、MySQL |
| アプリ実行環境 | Ruby(Ruby on Rails) |
| アプリケーション | (宙人アプリ) |
【まとめ】
基本的に、AWSでコロケーション層からOS層までをまかなえます。
色々な人が、各ハードウェア形式・各OS形式で提供してくれているので、
検索してみてください。
【手順】
- AWSにログイン
- ヘッダ枠 > EC2 をクリック
- Navigation枠 > IMAGES > AMIs をクリック
- Viewing枠 > All Images を選択 > Search フィールドを選択
- 「centos」 と入力 ※自分の使いたいOSキーワードを入力
- 一覧の中から、好きなAMIを選択 > 右クリック
- 「Launch Instance」をクリック
- ※リンクを参考に細かな設定を行う
【リンク】
EC2でWebサーバー立ち上げ(1〜24ページ)
http://t.co/HiinYgI
AWSのアカウントを開設
AWSでのアカウント開設を行います。
【準備するもの】
・メールアドレス
・クレジットカード
・電話番号
【手順】
※基本こちらのスライドショーにそって行う。
http://www.slideshare.net/kentamagawa/3aws
- 「http://aws.amazon.com/jp/」にアクセス >「今すぐサインアップ」を押下
- メールアドレス・パスワードを入力 > 「Continue」を押下
- お問い合わせ情報(名前・住所・電話番号)を入力 > 「アカウントを作成して続行」を押下
- お支払い情報(クレジットカード番号)を入力 > 「続ける」を押下
- 身元確認のため電話番号入力 > 「確認用に自分に電話する」を押下
- 実際に電話がかかってくるので着信し、電話から暗証番号を入力 > 「続ける」を押下
- 登録完了!
【リンク】
awsアカウント登録の詳細手順なら
http://www.slideshare.net/kentamagawa/3aws
aws-japanの公式ブログ
http://aws.typepad.com/aws_japan/
(色々ためしてみるなら)
EC2でWebサーバー立ち上げ
http://t.co/HiinYgI
S3にwebコンテンツ保存
http://www.slideshare.net/kentamagawa/s3web
EC2でWindowsサーバ立ち上げ
http://www.slideshare.net/kentamagawa/ec2windows




