[[FrontPage]]

*What's this? [#t2517dfb]
-[[Google App Engine:http://code.google.com/appengine]] runs on [[Pandaboard:http://pandaboard.org/]](with [[Linaro/Ubuntu:http://www.linaro.org/downloads/]]) x 6 .
&ref(Structure.png);

***Materials [#rb9533c4]
-Presentation material
--[[On slideshare:http://www.slideshare.net/noritsuna/panda-cloud]]
-Video
--[[On YouTube:http://www.youtube.com/watch?v=pSGNf0KZ71c]]
-Twitter
--[[Linaro:https://twitter.com/#!/LinaroConnect/status/132182476641669120]]
-Blog
--[[Linaro Blog:http://www.linaro.org/linaro-blog/2011/11/05/connect-videos/]]

&BR;
&BR;
&BR;
-Pictures~
&ref(server_front.jpg);
&ref(server_side.jpg);~
&ref(codereview.png);
&BR;
*Why? [#dd51ec12]
-This is a very powersaving server!
--The powersaving is the most important issue for server.~
&ref(powersaving.png);

*Using hardwares & softwares [#k6673c1e]
***Hardwares [#r1276cb5]
-[[Pandaboard x 6:http://pandaboard.org/]]
--[[Linaro/Ubuntu:http://www.linaro.org/downloads/]]

***Middleware [#v367ba79]
-[[Google App Engine:http://code.google.com/appengine]]
--Sample GAE Application
---[[Rietveld:http://code.google.com/intl/ja/appengine/articles/rietveld.html]]
---Code review system(ITS) for GAE
--Datastore Backend
---[[MySQL:http://www.mysql.com]]
--Memory cache
---[[Memcached:http://memcached.org]]
--Task Queue / Messaging
---[[RabbitMQ:http://www.rabbitmq.com]]
---[[Ejabberd:http://www.process-one.net/en/ejabberd]]
--HTTP Server via FastCGI
---[[NGINX:http://nginx.net/]]
---[[Apache2:http://httpd.apache.org/]]
---[[FastCGI:http://www.fastcgi.com]]
--Supervisor
---[[Supervisor:http://supervisord.org]]
--Load balancer
---Apache2ís load balancer

*How to setup [#b4562a9c]
+Setup Linaro/Ubuntu
++Please look at [[Linaro's homepage:http://www.linaro.org/downloads/]].
+Install softwares needed  by [[TyhoonAE:http://code.google.com/p/typhoonae/]] ((work on Linaro/Ubuntu for Pandaboard))
--You have to install as ''NOT'' root user.
---OpenJDK 6
---MySQL
---Python
---Erlang
---Apache2 & proxy
---gettext
---xsltproc
---expat1
++apt-get commands:
 $ sudo apt-get update
 $ sudo apt-get install openjdk-6-jdk mysql-server python-mysqldb libmysql++-dev libncurses5-dev libssl-dev python-dev python-setuptools libexpat1-dev gettext xsltproc erlang erlang-nox erlang-dev erlang-src apache2 libapache2-mod-proxy-html
+Build [[TyhoonAE:http://code.google.com/p/typhoonae/]]
--You have to install as ''NOT'' root user.
++Download [[typhoonae-buildout-0.2.0:http://typhoonae.googlecode.com/files/typhoonae-buildout-0.2.0.tar.gz]]
++Unzip to ''/home/linaro/tyhoonae''
++Edit 'buildout.cfg"
+++pcre's URL is wrong. Change to "http://vps.googlecode.com/files/pcre-8.02.tar.gz"
++Exec following commands:
 $ sudo python bootstrap.py
 $ ./bin/buildout
---If you have an error & stop command, you shuold try following things:
+++Stop "generate_app" part
---Edit "./parts/rabbitmq/Makefile"~
Change line:
 From:
 TARGETS=$(EBIN_DIR)/rabbit.app $(INCLUDE_DIR)/rabbit_framing.hrl $(BEAM_TARGETS) 
 To:
 TARGETS=$(INCLUDE_DIR)/rabbit_framing.hrl $(BEAM_TARGETS)
Delete line:
 $(EBIN_DIR)/rabbit.app: $(EBIN_DIR)/rabbit_app.in $(BEAM_TARGETS) generate_app
 	escript generate_app $(EBIN_DIR) $@ < $<
+++Stop "checking erl" part
--Edit "./eggs/rod.recipe.ejabberd-1.1.3-py2.7.egg/rod/recipe/ejabberd/__init__.py"~
Delete line:
 retcode = subprocess.call(cmd)
 if retcode != 0:
 	raise Exception("building ejabberd failed")
--Change files:
 wget http://www.noritsuna.com/download/buildout.cfg
 wget http://www.noritsuna.com/download/ejabberd-2.1.5.tar.gz
 cp ejabberd-2.1.5.tar.gz ./downloads/
+++If it stops other part, you shuold try again "./bin/buildout".
+Setup configs
++[[TyhoonAE:http://code.google.com/p/typhoonae/]]
+++Change "typhoonae.cfg"
 datastore = mysql
 
 mysql_db = mysql
 mysql_host = [MySQL server's IP Address]
 mysql_passwd = [MySQL root's password]
 mysql_user = root
++MySQL
+++Change "/etc/mysql/my.ini" ((This setting has some security issues. If you want to provide this server to Internet, you should research about the following things!!!))~
Delete line:
 bind-address = 127.0.0.1
+++Change grant connection limit
 mysql -u root -p
 grant all on *.* to root@"[your network address].%" identified by '[root password]' with grant option;
Ex.
 grant all on *.* to root@"192.168.1.%" identified by 'pass' with grant option;
+++If you can't connet to MySQL, you have to change MySQL's lib for Python.~
Add to "./eggs/MySQL_python-1.2.3c1-py2.7-linux-armv7l.egg/MySQLdb/connections.py"'s line 188:
 kwargs2['client_flag'] = client_flag
 kwargs2['db'] = 'mysql'
 kwargs2['host'] = '[MySQL server's IP address]'
 kwargs2['user'] = 'root'
 kwargs2['passwd'] = '[MySQL root password]'
++Apache
+++Enable some mobules:
 LoadModule proxy_module modules/mod_proxy.so 
 LoadModule proxy_balancer_module modules/mod_proxy_balancer.so 
 LoadModule proxy_connect_module modules/mod_proxy_connect.so 
 LoadModule proxy_ftp_module modules/mod_proxy_ftp.so 
 LoadModule proxy_http_module modules/mod_proxy_http.so 
 LoadModule rewrite_module modules/mod_rewrite.so
+++Edit "/etc/apache2/sites-available/001-default"~
Add following lines:
 ProxyRequests Off
 ProxyPass / balancer://cluster/ lbmethod=byrequests
 ProxyPassReverse / balancer://cluster/
 
 <Proxy *> 
 Order Deny,Allow 
 Allow from all 
 </Proxy> 
 <Proxy balancer://cluster/>
	BalancerMember http://[Panda server's IP address]/ loadfactor=10
	BalancerMember http://[Panda server's IP address]/ loadfactor=10
	BalancerMember http://[Panda server's IP address]/ loadfactor=10
 </Proxy>
***Install GAE application [#h89ced0a]
-Ex.Rietveld
--Get Rietveld for panda
 wget http://www.noritsuna.com/download/rietveld-panda.tar.gz
--Install Rietveld
 cd [TyphoonAE dir]
 ./bin/apptool  --datastore=mysql [Rietveld unziped dir]/rietveld
***Manage GAE server [#i7d746da]
-Start
 ./bin/supervisord
-Shutdown
 ./bin/supervisorctl shutdown
-Check status
 ./bin/supervisorctl

*Info [#kd2988ad]
***Contact us [#x3299774]
-info
--info atmark siprop.org
-Noritsuna
--noritsuna atmark siprop.org