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