-
Notifications
You must be signed in to change notification settings - Fork 2
jasharpe/taugame
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
*** Requirements Python 2.7 (for argparse module) http://www.python.org/ Tornado Web Server http://www.tornadoweb.org/ SQLAlchemy http://www.sqlalchemy.org/ **** Install requirements with MacPorts sudo port install python27 py27-tornado py27-sqlalchemy *** Running Before running the first time, to set up necessary files run: python2.7 setup.py Then edit secrets.py to add the missing fields. Then, to run locally for development: sudo python2.7 tau.py --debug --port=8000 --ssl_port=8001 To build and run with Docker (experimental): docker build -t websockettau . && docker run --rm -p 8000:8000 -p 8001:8001 websockettau To avoid having to rebuild the docker container on every change, you can run from your work directory: docker run --rm -p 8000:8000 -p 8001:8001 -v $PWD:/live -w /live websockettau To run against a test version of a mysql db: docker run --rm -p 8000:8000 -p 8001:8001 -v $PWD:/live -w /live -e db=mysql -e mysql_password=$MYSQL_PASSWORD -e mysql_addr=$LOCAL_IP_FROM_IFCONFIG:3306 -e db_name=tau_game_2 websockettau python ./tau.py --debug --port=8000 Connect to actual mysql for testing by running the proxy: curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64 ./cloud_sql_proxy -instances=tau-game:us-central1:tau-game-db=tcp:0.0.0.0:3306 Root access is required to bind to port 80 which is the default, so using ports 8000 and 8001 avoids this. The --debug flag allows the use of ^C to kill the server (very handy for restarting it during development). For other options, type: python2.7 tau.py --help *** Adding a new game type (as of July 15, 2012) - Implement the rules in game.py. - Add a name mapping to static/game_list.js. - Add a name mapping and URL mapping to tau.py. - Add a name mapping to constants.py. - Add a rules description and name mapping to templates/about.html. - (Sometimes applicable) Add changes to playing area in static/tau.js. - (If adding new cards) Make the following updates: static/tau.js: getImgClass(), get_card_number() static/styles.css: new class similar to .regularTau, .projectiveTau, etc. How to set up Fedora 16 server: $ ssh root@... $ passwd # to set password to something sane $ yum install git $ yum install python $ yum install gcc-c++ $ git clone https://github.com/jasharpe/websockettau.git # install tornado $ wget https://pypi.python.org/packages/source/t/tornado/tornado-4.0.2.tar.gz $ tar xvzf tornado-4.0.2.tar.gz $ cd tornado-4.0.2 $ python setup.py build $ sudo python setup.py install # install backports $ cd ~ && wget https://pypi.python.org/packages/source/b/backports.ssl_match_hostname/backports.ssl_match_hostname-3.4.0.2.tar.gz $ tar -zxvf backports.ssl_match_hostname-3.4.0.2.tar.gz $ cd backports.ssl_match_hostname-3.4.0.2 $ python setup.py install # install pip $ sudo yum install python-pip # install certifi $ pip-python install certifi # install sqlalchemy $ yum install python-sqlalchemy # create secrets.py # Get google client id and secret from https://console.developers.google.com/project/apps~tau-game/apiui/credential $ cd ~/websockettau && cat > secrets.py cookie_secret = "SOME STRING HERE" client_id = "GOOGLE CLIENT ID" client_secret = "GOOGLE CLIENT SECRET" # Set up certificates by creating localhost.crt certificate, and put in websockettau directory. # Open ports, add to /etc/sysconfig/iptables: # -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT # -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT $ ./restart.sh # Set up ntp, so that time stays up to date (otherwise backups will fail when the clock skew gets too high!) $ yum install ntp $ ntpd # setup automatic backups to S3 $ yum install s3cmd $ s3cmd --configure # follow the prompts... # test that backups will work properly $ ./run_backup # verify that the backup appears in S3 # set up automatic backups. s3_crontab is a template. Modify it to suit you. $ crontab s3_crontab ### How to set up GCP instance 1. Create GCP project. 2. Upload Docker image to GCR (called `gcr.io/$PROJECT/websockettau`). Probably requires enabling the GCR API: ``` docker build -t gcr.io/tau-game/websockettau . docker push gcr.io/tau-game/websockettau ``` 3. Enable Stackdriver Logging API. 4. Create a GCP instance that runs the container uploaded (or do via the UI), and populates the environment variables needed by db.py.
About
Web Socket Tau
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published