IT/Community/WG/Discourse: Difference between revisions

From MozillaWiki
< IT‎ | Community
Jump to navigation Jump to search
m (minor edits)
Line 8: Line 8:
=Summary=
=Summary=


[http://discourse.mozilla-community.org/ Test site] on mozilla-community.org.
[https://discourse.mozilla-community.org/ Test site] on mozilla-community.org.


= Documentation =
= Documentation =
Line 26: Line 26:
Webheads are automatically scaled depending on demand. To find instances, search for <i>aws:autoscaling:groupName : csa-discourse-production-as</i>.
Webheads are automatically scaled depending on demand. To find instances, search for <i>aws:autoscaling:groupName : csa-discourse-production-as</i>.


=== Postgresql ===
=== PostgreSQL ===
* '''Version:''' 9.3.3
* '''Version:''' 9.3.3


Line 60: Line 60:
=== Install Discourse ===
=== Install Discourse ===
   # Update Ubuntu
   # Update Ubuntu
   sudo apt-get update && sudo apt-get upgrade     
   sudo apt-get update && sudo apt-get dist-upgrade     
    
    
   # Install Docker and git
   # Install Docker and git
Line 91: Line 91:
     DISCOURSE_SMTP_PORT: 587
     DISCOURSE_SMTP_PORT: 587
     DISCOURSE_SMTP_USER_NAME: USERNAME # Change this to the Amazon SES username
     DISCOURSE_SMTP_USER_NAME: USERNAME # Change this to the Amazon SES username
     DISCOURSE_SMTP_PASSWORD: PASSWORD # Change this to the Amazin SES password
     DISCOURSE_SMTP_PASSWORD: PASSWORD # Change this to the Amazon SES password
     # New Relic
     # New Relic
     NEW_RELIC_LICENSE_KEY: 123456789abcdef # Add a NR key
     NEW_RELIC_LICENSE_KEY: 123456789abcdef # Add a NR key
Line 154: Line 154:


=== Bootstrap Discourse ===
=== Bootstrap Discourse ===
To bootstrap Discourse, run
To bootstrap Discourse, enter the /var/discourse directory, and then run


   ./launcher bootstrap app
   ./launcher bootstrap app

Revision as of 21:01, 19 October 2014

Module Name Module Owner Module Peers
Discourse yalam96 Tanner

Summary

Test site on mozilla-community.org.

Documentation

Architectural overview

Overview

  • Hosting Provider: AWS
  • Compute Region (AZ): US East (N. Virginia)
  • Discourse Version: tests-passed

Monitoring

Instances

All images for webheads are based on ubuntu-precise-12.04-amd64-server-20131003 (ami-acf9cde9).

Webheads

Webheads are automatically scaled depending on demand. To find instances, search for aws:autoscaling:groupName : csa-discourse-production-as.

PostgreSQL

  • Version: 9.3.3


Name Service Flavor Volume Availability Zone
pgshared-production-c postgresql db.t1.micro 300GB us-east-1c

Note: Can only be accessed from inside the CSA VPC.

Redis

  • Version: 2.8.6
Node Cluster Service Flavor Availability Zone
0001 csa-discourse-prod Redis cache.t1.micro us-east-1d

Discourse set-up

Install Discourse

 # Update Ubuntu
 sudo apt-get update && sudo apt-get dist-upgrade    
 
 # Install Docker and git
 wget -qO- https://get.docker.io/ | sh
 
 # Create the directory for Discourse and clone the repo into it
 mkdir /var/discourse
 git clone https://github.com/discourse/discourse_docker.git /var/discourse
 cd /var/discourse
 
 # Copy the web example config
 cp samples/web_only.yml containers/app.yml

Edit app.yml

Open containers/app.yml in your favourite text editor and add/edit the following lines. Note that this is not the full file and YML is sensitive to indentation.

 params:
   version: tests-passed
 env:
   DISCOURSE_DEVELOPER_EMAILS:  # For new instances, add an email address that you will use to sign up to discourse
   DISCOURSE_DB_PASSWORD: PASSWORD # Change this to the password for the database
   DISCOURSE_DB_POOL: 15
   DISCOURSE_DB_HOST: 'pgshared-db.mofoprod.net' # You will most likely be using this server
   DISCOURSE_DB_USERNAME: 'USERNAME' # Change this to the username that can access your database
   DISCOURSE_DB_NAME: 'DBNAME' # Change this to the name of the database for this instance
   DISCOURSE_HOSTNAME: 'HOSTNAME' # Change this to the domain that Discourse will run under
   DISCOURSE_REDIS_HOST: REDIS_HOST # Change this to the URL of the redis server
   # don't forget to set mail
   DISCOURSE_SMTP_ADDRESS: ADDRESS # Change this to the SES 
   DISCOURSE_SMTP_PORT: 587
   DISCOURSE_SMTP_USER_NAME: USERNAME # Change this to the Amazon SES username
   DISCOURSE_SMTP_PASSWORD: PASSWORD # Change this to the Amazon SES password
   # New Relic
   NEW_RELIC_LICENSE_KEY: 123456789abcdef # Add a NR key
   NEW_RELIC_APP_NAME: communityit-NAME # Change NAME to something that can identify this Discourse instance
   # disable the annoying mini profiler
   DISCOURSE_ENABLE_MINI_PROFILER: false

In the same file, find the line

           - git clone https://github.com/discourse/docker_manager.git

Add the following two lines right after the line

           - git clone https://github.com/vikhyat/discourse-persona.git
           - git clone https://github.com/davidcelis/new_relic-discourse.git

Edit web.template.yml

Open templates/web.template.yml in your favourite text editor and add/edit the following lines. Note that this is not the full file and YML is sensitive to indentation.

Find the exec block with the command

echo "done configuring web"

Before this block, add the following block. Remember to change HOSTNAME to the hostname of the Discourse instance.

   - replace:
       filename: "/etc/nginx/conf.d/discourse.conf"
       from: "server {"
       to: |+
         server {
         #Messy hack to force SSL on only the hostname, not IPs so ELB and Icinga work.
         set $use_https NO;
         if ($host ~* 'HOSTNAME') {
             set $use_https A;
         }
         if ($http_x_forwarded_proto != 'https') {
             set $use_https "${use_https}B";
         }
         if ($use_https = AB) {
             rewrite ^ https://$host$request_uri? permanent;
         }

After the edit it should look similar to this:

   - replace:
       filename: "/etc/nginx/conf.d/discourse.conf"
       from: "server {"
       to: |+
         server {
         #Messy hack to force SSL on only the hostname, not IPs so ELB and Icinga work.
         set $use_https NO;
         if ($host ~* 'discourse.mozilla-community.org') {
             set $use_https A;
         }
         if ($http_x_forwarded_proto != 'https') {
             set $use_https "${use_https}B";
         }
         if ($use_https = AB) {
             rewrite ^ https://$host$request_uri? permanent;
         }
 
 
   - exec:
       cmd: echo "done configuring web"
       hook: web_config

Bootstrap Discourse

To bootstrap Discourse, enter the /var/discourse directory, and then run

 ./launcher bootstrap app

This will take a few minutes. If all goes well, you can start Discourse.

 ./launcher start app


Request a category

Please visit The Community IT Request Form to request a category creation. You will need a bugzilla account for this.