/askapp

Discussion board and q&a system

Primary LanguagePythonApache License 2.0Apache-2.0

Django based discussion board and a Q&A system

Run project in Docker

The easiest way to check out askapp is to run it's dockerized version:

  • make sure you have Docker installed
  • run docker-compose up from the project folder This will run the project available at http://localhost:8000. It already has an admin user "askapp" with password "askapp"

Steps to deploy a project:

  • git clone https://github.com/BanzaiTokyo/askapp.git <project_dir>
  • cd <project_dir>
  • sudo pip -r requirements.txt
  • create .env file with your credentials of format VARIABLE_NAME=VALUE. See list of variables below.
  • create database in MySQL
  • python manage.py migrate
  • python manage.py createsuperuser
  • python manage.py collectstatic
  • add a cron job python manage.py calculate_scores daily or hourly

Enabling login with Google

Go to https://console.developers.google.com/, create a new project Go to "Credentials" on left side menu, create new via "OAuth Client ID" option, specify site root url (http://127.0.0.1:8000 for local or Docker installation ) for "Authorized Javascript origins" and (http://127.0.0.1:8000/accounts/google/login/callback/) for "Authorized redirect URL". Go to site admin -> "social accounts" -> "social applications", open or create social application named Google, add "client id" and "secret key" obtained from Google Oauth client. Add site to "chosen sites", save changes.

Environment variables:

DB_HOST - database hostname
DB_NAME - database name
DB_USER, DB_PASSWORD - MySQL credentials
DB_PASSWORD - database user password
EMAIL_HOST - SMTP server address
EMAIL_ADDRESS, EMAIL_HOST_PASSWORD - SMTP credentials
GOOGLE_API_KEY - a key for Youtube API to pull description for Youtube videos
RECAPTCHA_PRIVATE_KEY and RECAPTCHA_PUBLIC_KEY - Google reCaptcha's secret/site keys. Read more at https://www.google.com/recaptcha/admin
GOOGLE_ANALYTICS_ID - optional, Google Analytics ID to collect site statistics

How to get Google API Key

There are numerous tutorials how to do that, for example https://www.slickremix.com/docs/get-api-key-for-youtube/ or https://www.yotuwp.com/how-to-get-youtube-api-key/

Peculiarities when deploying to a Django instance from Bitnami hosted on AWS

Additional steps:

  • cp ../Project/conf ./
  • sed -i 's|Project/Project|<project_dir>/askapp|g' *
  • sed -i 's|Project|<project_dir>|g' *
  • sed -i 's|wsgi-djangostack |wsgi-djangostack user=bitnami group=bitnami|' conf/httpd-app.conf
  • sudo echo Include "$(readlink -f conf/httpd-prefix.conf)" >> ~/stack/apache2/conf/bitnami/bitnami-apps-prefix.conf
  • sudo /opt/bitnami/ctlscript.sh restart apache
  • mkdir askapp/media
  • sudo chmod 755 askapp/media
  • mkdir -p /var/tmp/askapp_cache