IT/Community/WG/Discourse: Difference between revisions
No edit summary |
|||
| Line 57: | Line 57: | ||
|- | |- | ||
|} | |} | ||
== Discourse set-up == | |||
=== Install Discourse === | |||
# Update Ubuntu | |||
sudo apt-get update && sudo apt-get 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 Amazin 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 <pre>echo "done configuring web"</pre> | |||
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 | |||
<!--= HP Cloud Reference = | <!--= HP Cloud Reference = | ||
== Flavors == | == Flavors == | ||
Revision as of 10:46, 19 October 2014
| Module Name | Module Owner | Module Peers |
|---|---|---|
| Discourse | yalam96 | Tanner |
Summary
Test site on mozilla-community.org.
Documentation
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 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 Amazin 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
Request a category
Please visit The Community IT Request Form to request a category creation. You will need a bugzilla account for this.