highlight js

2012年12月20日木曜日

[AWS]AmzonLinuxにMindtouch入れた個人用覚え書き



公式サイト:http://developer.mindtouch.com/jp/docs/MindTouch
AWSへのinstall参考:http://www.claassen.net/geek/blog/2010/12/installing-mono-2-8-1-on-amazon-linux-ami-1-0.html

これか?
http://developer.mindtouch.com/en/kb/Deploying_MindTouch_on_Amazon_EC2

これか?
http://blog.designrecipe.jp/2009/4/29/mindtouch-deki-wiki-lyons-9-02/
http://www.hyk-home.com/blog/infra/archives/2009/12/16-150647-199.html
土台
時間合わせ
  • タイムゾーンの設定
    # cp -i /usr/share/zoneinfo/Japan /etc/localtime
    # vim /etc/yum.conf
    +++ exclude=tzdata
    # /etc/init.d/yum-updatesd restart
  • ホスト名の変更
    # vim /etc/sysconfig/network
    # vim /etc/hosts
    
  • swap(無くても動くけどさー)
  • $ dd if=/dev/zero of=/swap bs=1M count=2048
    $ mkswap /swap
    # swapon /swap
    # swapon -s
    
  • 再起動しても確保されるように
    # vim /etc/fstab
    +++ /swap   swap        swap    defaults        0   0
    
  • EBSサイズを認識させる
  • # resize2fs /dev/sda1 # df -kh 


セットアップ

useradd -M -g apache dekiwiki
yum install -y \
http mysql-server tidy html2ps \
gcc libtool bison gettext make bzip2 \
gcc-c++ \

php は 5.4系で。
何故ならば5.3は非対応だから。
call_user_func_arrayで
「PHP Warning:  Parameter 1 to DekiSiteMap::execute() expected to be a reference, 」って。
※でも、5.4でも色々問題有った。まーイッカー

$ sudo yum install php54
$ sudo yum install php54-cli
$ sudo yum install php54-mysql
$ sudo yum install php54-mcrypt
$ sudo yum install php54-mbstring
$ sudo yum install php54-gd
$ sudo yum install php54-curl

Prince install
$ cd /usr/local/src/
$ wget http://www.princexml.com/download/prince-8.1r3-linux-static.tar.gz
$ tar xfzv prince-8.1r3-linux-static.tar.gz
$ cd prince-8.1r3-linux-static
$ ./install.sh
   [/usr/local]: /usr

MONO
yumれないからソースins

mono-2.11 だと、Mindtouch Coreのアクティベーションで落ちる問題が有る模様。
有償ライセンスのトライアルは通った。
2.10系で行けるか検証中。

$ cd /usr/local/src/
$ wget http://origin-download.mono-project.com/sources/mono/mono-2.11.4.tar.bz2
$ tar xvjf mono-2.11.4.tar.bz2
$ cd mono-2.11.4
$ ./configure --prefix=/opt/mono-2.11

# make にすげー時間かかるから注意
$ make
$ make install


$ ln -s /opt/mono-2.11/bin/mono /usr/bin/mono
$ ln -s /opt/mono-2.11/bin/gmcs /usr/bin/gmcs
DEKIWIKI
ソースDL
http://sourceforge.net/projects/dekiwiki/
して、
UP、cd /usrl/local/src にて展開
$ cd /usr/local/src
$ tar zxvf MindTouch_Core_Source_10.0.9.tar.gz

$ mkdir /var/www/dekiwiki
$ cp -r web/*  /var/www/dekiwiki
$ chown -R root:root /var/www/dekiwiki 
$ chown -R apache:apache /var/www/dekiwiki/config
$ chown -R apache:apache /var/www/dekiwiki/bin
$ vim /etc/httpd/conf/httpd.conf 
+++ ServerName hoge.jp:80

$ cp config/deki-apache.conf /etc/httpd/conf.d/.
$ vim /etc/httpd/conf.d/deki-apache.conf 
--- <VirtualHost :>
+++ <VirtualHost *:80>
+++ ServerName hoge.jp
+++ DocumentRoot "/var/www/dekiwiki"

# /var/log/apache2をhttpd/に変更
+++       ErrorLog /var/log/httpd/error-dekiwiki.log
+++        CustomLog /var/log/httpd/access-dekiwiki.log common

mod_rewriteは有効になってるからOK
$ /usr/sbin/apachectl configtest

$ mkdir /var/log/dekiwiki
$ touch /var/log/dekiwiki/deki-api.log
$ chown root:root /var/log/dekiwiki/deki-api.log
$ mkdir /var/www/.wapi
$ chown dekiwiki:apache /var/www/.wapi

$ cp config/dekiwiki-init.redhat /etc/init.d/dekiwiki
MySQLセット
# /etc/init.d/mysqld start
# mysql -u root -e "set password = password('hogehoge');"
# /sbin/chkconfig mysqld on
後はMindTouchの管理画面に上記を設定して、勝手に作ってくれる

最後に
この環境だと、PHPで
eregのE_DEPECREADが山盛り出てくるので、php.iniを変更

$ vim /etc/php.ini

error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED

date.timezone="Asia/Tokyo"

PHP5.2系じゃないとダメなんだけど、yumで提供されてるの5.3、5.4なんだよなー
画面からセットアップ
apacheたちあげてアクセスして、画面にそって入力。
$ /usr/sbin/apachectl start
メールアドレスは、アクティベーション用のファイルが送られてくるので、使えるものを。
途中、コマンドラインでコマンド流してね、ってのが出てくるので要注意。
流してあげましょう。

アクティベーションに関して、オープンソース版、
「Mindtouch Core」の方を選ぶように。

2012年12月10日月曜日

[AWS][ELB]ELBがスケールアウトされないケース

ELBがスケールアウトされず、Latency低下に悩んでた原因がハッキリしたのでメモ。

状況
アドサービスの入り口部分で、
フロントをさばいているELBのLatencyが、
ピークタイムに不自然な動き、Latencyが1sec超えるなどの遅延。
(何故かMAX3秒以上は遅延しない。)


対応
memcachedへのアクセスをinternal ELB経由で行なっていた部分を
IP直指定とした。
Latencyは 10ms前後で落ち着いた。
このことから、遅延原因はinternal ELBと断定。


ELBの動作
SA様に聞いた所、
ELBは、内部的にEC2を動かして動作させてるとのことなのだが、
そのインスタンスが一定条件を満たした際に、ELBのスケールアウトが行われる。
(スケールアップも有るのかな?)

スケールアウト条件は、対象インスタンスの
CPU Utilization、Network IN/OUTにて判定されるとの事。
小さいデータを件数多く捌く、今回のような使用方法だと
適切にスケールアウトされない事がある。
らしい。
しきい値については聞き漏れだったと思う。
しかしながらブラックボックスぽいな。。

ちなみに、遅延発生時のinternal ELBへのアクセス件数は
10000 req /1 min  なので
約 167 req / 1sec.
※訂正 グラフが跳ね上がる形で、20000〜60000弱のケースまで色々のようだ。
 跳ねてるタイミングで、ELBがアカン感じだったのかな。。

やり取りしていたデータ長は
数百バイト〜数キロバイト。10キロバイト前後が最も多いか。


まとめ
とりあえず、ELBで小さいデータを取り扱う際は
上記のことを頭の片隅に。。。
ELBは使わないでhaproxyとかでさばいたり、
プログラム側で対応したりするのが現状のベターな選択肢かと。


CloudWatch上では、Internal ELBが捌ききれていない事を示すグラフなどは確認できなかった。



2012年12月5日水曜日

[AWS][VPC]ハンズオンセミナー メモ

なぜVPC
  • ネットワークセキュリティを高める
    • きめ細やかなアクセス制御
    • VPN、ダイレクトコネクト(DX)を使って完全に外部と遮断した環境を実現
  • 自由なネットワーク設計が加納
  • ローカルIPを固定で使用可能(これが一番うれしいか)
※っつうか、機能的にもVPC内のEC2でしか出来ないこと多いし、VPCを使えって事だよね。使わない理由が無いよね。



public subnetとprivate subnet の違い
ROUTE TABLEに、IGWがアタッチされているかどうか、のみ。
IGWが設定されてれば、GW経由でインターネットに出れる。

NACLはSUBNETに対するセキュリティグループ。
(Network Access Controller)


RDS
MULTI-AZ→ホットスタンバイを作ってくれる。超便利!


RDS DB Subnet Groupsで、subnetをまとめとく。


メモ終了。

2012年12月3日月曜日

[AWS][VPC]公開VPCを設定する際の覚え書き

1. VPCタブ [Your VPC]から
XX.XX.XX.XX/16
Tenancy: defauly 
で VPCを作る。
 Tenancy: dedicated は物理サーバ専有サービスとなる
 (料金高い)ので注意

2.VPCタブ [Subnets]から
 1で作ったVPCに対して適宜subnets作成。
 CIDR Blockは最大値の/24が楽ちんでね?
 

3. VPCタブ [Your VPC]から
 Internet Gatewaysを作り、[Attache tp VPC]

4. [Route Tables]から対象VPCを選択し、
 Routes タブで
  Destination   0.0.0.0/0
  Target   先ほどのInternet Gatewayを設定

 Associationsタブで、2で作ったSubnetを選択。

後は、Security Groupでポートなど設定されてれば、
VPC内に作られたインスタンスまで届くはず。。


覚え書き。2012/12/03