mirror of
https://github.com/viq/NewsBlur.git
synced 2025-04-13 09:38:09 +00:00
Adding dwww
This commit is contained in:
parent
b621dd738c
commit
22f187b616
4 changed files with 109 additions and 66 deletions
|
@ -10,17 +10,17 @@
|
||||||
|
|
||||||
- name: restart redis user
|
- name: restart redis user
|
||||||
become: yes
|
become: yes
|
||||||
command: docker restart redis_user
|
command: docker restart redis-user
|
||||||
listen: restart redis_user
|
listen: restart redis_user
|
||||||
- name: restart redis story
|
- name: restart redis story
|
||||||
become: yes
|
become: yes
|
||||||
command: docker restart redis_story
|
command: docker restart redis-story
|
||||||
listen: restart redis_story
|
listen: restart redis_story
|
||||||
- name: restart redis session
|
- name: restart redis session
|
||||||
become: yes
|
become: yes
|
||||||
command: docker restart redis_session
|
command: docker restart redis-session
|
||||||
listen: restart redis_session
|
listen: restart redis_session
|
||||||
- name: restart redis pubsub
|
- name: restart redis pubsub
|
||||||
become: yes
|
become: yes
|
||||||
command: docker restart redis_pubsub
|
command: docker restart redis-pubsub
|
||||||
listen: restart redis_pubsub
|
listen: restart redis_pubsub
|
||||||
|
|
|
@ -1,73 +1,114 @@
|
||||||
|
import base64
|
||||||
|
import concurrent
|
||||||
import datetime
|
import datetime
|
||||||
|
import random
|
||||||
|
import re
|
||||||
|
import socket
|
||||||
|
import ssl
|
||||||
import time
|
import time
|
||||||
|
import urllib.error
|
||||||
|
import urllib.parse
|
||||||
|
import urllib.request
|
||||||
|
import zlib
|
||||||
|
|
||||||
import redis
|
import redis
|
||||||
import requests
|
import requests
|
||||||
import random
|
from django.conf import settings
|
||||||
import zlib
|
|
||||||
import concurrent
|
|
||||||
import re
|
|
||||||
import ssl
|
|
||||||
import socket
|
|
||||||
import base64
|
|
||||||
import urllib.request, urllib.error, urllib.parse
|
|
||||||
from django.shortcuts import get_object_or_404
|
|
||||||
from django.shortcuts import render
|
|
||||||
from django.contrib.auth.decorators import login_required
|
|
||||||
from django.template.loader import render_to_string
|
|
||||||
from django.db import IntegrityError
|
|
||||||
from django.db.utils import DatabaseError
|
|
||||||
from django.db.models import Q
|
|
||||||
from django.views.decorators.cache import never_cache
|
|
||||||
from django.urls import reverse
|
|
||||||
from django.contrib.auth import login as login_user
|
from django.contrib.auth import login as login_user
|
||||||
from django.contrib.auth import logout as logout_user
|
from django.contrib.auth import logout as logout_user
|
||||||
|
from django.contrib.auth.decorators import login_required
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.http import HttpResponse, HttpResponseRedirect, HttpResponseForbidden, Http404, UnreadablePostError
|
from django.contrib.sites.models import Site
|
||||||
from django.conf import settings
|
|
||||||
from django.core.mail import EmailMultiAlternatives
|
from django.core.mail import EmailMultiAlternatives
|
||||||
from django.core.validators import validate_email
|
from django.core.validators import validate_email
|
||||||
from django.contrib.sites.models import Site
|
from django.db import IntegrityError
|
||||||
|
from django.db.models import Q
|
||||||
|
from django.db.utils import DatabaseError
|
||||||
|
from django.http import (
|
||||||
|
Http404,
|
||||||
|
HttpResponse,
|
||||||
|
HttpResponseForbidden,
|
||||||
|
HttpResponseRedirect,
|
||||||
|
UnreadablePostError,
|
||||||
|
)
|
||||||
|
from django.shortcuts import get_object_or_404, render
|
||||||
|
from django.template.loader import render_to_string
|
||||||
|
from django.urls import reverse
|
||||||
from django.utils import feedgenerator
|
from django.utils import feedgenerator
|
||||||
from django.utils.encoding import smart_str
|
from django.utils.encoding import smart_str
|
||||||
from mongoengine.queryset import OperationError
|
from django.views.decorators.cache import never_cache
|
||||||
from mongoengine.queryset import NotUniqueError
|
from mongoengine.queryset import NotUniqueError, OperationError
|
||||||
from apps.recommendations.models import RecommendedFeed
|
|
||||||
from apps.analyzer.models import MClassifierTitle, MClassifierAuthor, MClassifierFeed, MClassifierTag
|
from apps.analyzer.models import (
|
||||||
from apps.analyzer.models import apply_classifier_titles, apply_classifier_feeds
|
MClassifierAuthor,
|
||||||
from apps.analyzer.models import apply_classifier_authors, apply_classifier_tags
|
MClassifierFeed,
|
||||||
from apps.analyzer.models import get_classifiers_for_user, sort_classifiers_by_feed
|
MClassifierTag,
|
||||||
from apps.profile.models import Profile, MCustomStyling, MDashboardRiver
|
MClassifierTitle,
|
||||||
from apps.reader.models import UserSubscription, UserSubscriptionFolders, RUserStory, RUserUnreadStory, Feature
|
apply_classifier_authors,
|
||||||
from apps.reader.forms import SignupForm, LoginForm, FeatureForm
|
apply_classifier_feeds,
|
||||||
from apps.rss_feeds.models import MFeedIcon, MStarredStoryCounts, MSavedSearch
|
apply_classifier_tags,
|
||||||
|
apply_classifier_titles,
|
||||||
|
get_classifiers_for_user,
|
||||||
|
sort_classifiers_by_feed,
|
||||||
|
)
|
||||||
from apps.notifications.models import MUserFeedNotification
|
from apps.notifications.models import MUserFeedNotification
|
||||||
|
from apps.profile.models import MCustomStyling, MDashboardRiver, Profile
|
||||||
|
from apps.reader.forms import FeatureForm, LoginForm, SignupForm
|
||||||
|
from apps.reader.models import (
|
||||||
|
Feature,
|
||||||
|
RUserStory,
|
||||||
|
RUserUnreadStory,
|
||||||
|
UserSubscription,
|
||||||
|
UserSubscriptionFolders,
|
||||||
|
)
|
||||||
|
from apps.recommendations.models import RecommendedFeed
|
||||||
|
from apps.rss_feeds.models import MFeedIcon, MSavedSearch, MStarredStoryCounts
|
||||||
from apps.search.models import MUserSearch
|
from apps.search.models import MUserSearch
|
||||||
from apps.statistics.models import MStatistics, MAnalyticsLoader
|
from apps.statistics.models import MAnalyticsLoader, MStatistics
|
||||||
from apps.statistics.rstats import RStats
|
from apps.statistics.rstats import RStats
|
||||||
|
|
||||||
# from apps.search.models import SearchStarredStory
|
# from apps.search.models import SearchStarredStory
|
||||||
try:
|
try:
|
||||||
from apps.rss_feeds.models import Feed, MFeedPage, DuplicateFeed, MStory, MStarredStory
|
from apps.rss_feeds.models import (
|
||||||
|
DuplicateFeed,
|
||||||
|
Feed,
|
||||||
|
MFeedPage,
|
||||||
|
MStarredStory,
|
||||||
|
MStory,
|
||||||
|
)
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
from apps.social.models import MSharedStory, MSocialProfile, MSocialServices
|
|
||||||
from apps.social.models import MSocialSubscription, MActivity, MInteraction
|
|
||||||
from apps.categories.models import MCategory
|
|
||||||
from apps.social.views import load_social_page
|
|
||||||
from apps.rss_feeds.tasks import ScheduleImmediateFetches
|
|
||||||
from utils import json_functions as json
|
|
||||||
from utils.user_functions import get_user, ajax_login_required
|
|
||||||
from utils.user_functions import extract_user_agent
|
|
||||||
from utils.feed_functions import relative_timesince
|
|
||||||
from utils.story_functions import format_story_link_date__short
|
|
||||||
from utils.story_functions import format_story_link_date__long
|
|
||||||
from utils.story_functions import strip_tags
|
|
||||||
from utils import log as logging
|
|
||||||
from utils.view_functions import get_argument_or_404, render_to, is_true
|
|
||||||
from utils.view_functions import required_params
|
|
||||||
from utils.ratelimit import ratelimit
|
|
||||||
from vendor.timezones.utilities import localtime_for_timezone
|
|
||||||
import tweepy
|
import tweepy
|
||||||
|
|
||||||
|
from apps.categories.models import MCategory
|
||||||
|
from apps.rss_feeds.tasks import ScheduleImmediateFetches
|
||||||
|
from apps.social.models import (
|
||||||
|
MActivity,
|
||||||
|
MInteraction,
|
||||||
|
MSharedStory,
|
||||||
|
MSocialProfile,
|
||||||
|
MSocialServices,
|
||||||
|
MSocialSubscription,
|
||||||
|
)
|
||||||
|
from apps.social.views import load_social_page
|
||||||
|
from utils import json_functions as json
|
||||||
|
from utils import log as logging
|
||||||
|
from utils.feed_functions import relative_timesince
|
||||||
|
from utils.ratelimit import ratelimit
|
||||||
|
from utils.story_functions import (
|
||||||
|
format_story_link_date__long,
|
||||||
|
format_story_link_date__short,
|
||||||
|
strip_tags,
|
||||||
|
)
|
||||||
|
from utils.user_functions import ajax_login_required, extract_user_agent, get_user
|
||||||
|
from utils.view_functions import (
|
||||||
|
get_argument_or_404,
|
||||||
|
is_true,
|
||||||
|
render_to,
|
||||||
|
required_params,
|
||||||
|
)
|
||||||
|
from vendor.timezones.utilities import localtime_for_timezone
|
||||||
|
|
||||||
BANNED_URLS = [
|
BANNED_URLS = [
|
||||||
"brentozar.com",
|
"brentozar.com",
|
||||||
]
|
]
|
||||||
|
@ -75,6 +116,7 @@ ALLOWED_SUBDOMAINS = [
|
||||||
'dev',
|
'dev',
|
||||||
'www',
|
'www',
|
||||||
'hwww',
|
'hwww',
|
||||||
|
'dwww',
|
||||||
# 'beta', # Comment to redirect beta -> www, uncomment to allow beta -> staging (+ dns changes)
|
# 'beta', # Comment to redirect beta -> www, uncomment to allow beta -> staging (+ dns changes)
|
||||||
'staging',
|
'staging',
|
||||||
'hstaging',
|
'hstaging',
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
replicaof {{ inventory_hostname|regex_replace('\-?\d+', '')|regex_replace('hdb\-', 'db-')|regex_replace('db-redis-session', 'db-redis-sessions') }}.service.nyc1.consul 6379
|
replicaof {{ inventory_hostname|regex_replace('\-?\d+', '')|regex_replace('hdb\-', 'db-') }}.service.nyc1.consul {{ redis_port }}
|
||||||
|
|
|
@ -103,7 +103,7 @@ resource "digitalocean_droplet" "www" {
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "digitalocean_droplet" "app-django" {
|
resource "digitalocean_droplet" "app-django" {
|
||||||
count = 9
|
count = 0
|
||||||
image = var.droplet_os
|
image = var.droplet_os
|
||||||
name = "app-django${count.index + 1}"
|
name = "app-django${count.index + 1}"
|
||||||
region = var.droplet_region
|
region = var.droplet_region
|
||||||
|
@ -121,7 +121,7 @@ resource "digitalocean_droplet" "app-django" {
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "digitalocean_droplet" "app-counts" {
|
resource "digitalocean_droplet" "app-counts" {
|
||||||
count = 2
|
count = 0
|
||||||
image = var.droplet_os
|
image = var.droplet_os
|
||||||
name = "app-counts${count.index + 1}"
|
name = "app-counts${count.index + 1}"
|
||||||
region = var.droplet_region
|
region = var.droplet_region
|
||||||
|
@ -139,7 +139,7 @@ resource "digitalocean_droplet" "app-counts" {
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "digitalocean_droplet" "app-push" {
|
resource "digitalocean_droplet" "app-push" {
|
||||||
count = 2
|
count = 0
|
||||||
image = var.droplet_os
|
image = var.droplet_os
|
||||||
name = "app-push${count.index + 1}"
|
name = "app-push${count.index + 1}"
|
||||||
region = var.droplet_region
|
region = var.droplet_region
|
||||||
|
@ -157,7 +157,7 @@ resource "digitalocean_droplet" "app-push" {
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "digitalocean_droplet" "app-refresh" {
|
resource "digitalocean_droplet" "app-refresh" {
|
||||||
count = 8
|
count = 0
|
||||||
image = var.droplet_os
|
image = var.droplet_os
|
||||||
name = "app-refresh${count.index + 1}"
|
name = "app-refresh${count.index + 1}"
|
||||||
region = var.droplet_region
|
region = var.droplet_region
|
||||||
|
@ -228,7 +228,7 @@ resource "digitalocean_droplet" "discovery" {
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "digitalocean_droplet" "node-text" {
|
resource "digitalocean_droplet" "node-text" {
|
||||||
count = 4
|
count = 0
|
||||||
image = var.droplet_os
|
image = var.droplet_os
|
||||||
name = contains([0], count.index) ? "node-text" : "node-text${count.index + 1}"
|
name = contains([0], count.index) ? "node-text" : "node-text${count.index + 1}"
|
||||||
region = var.droplet_region
|
region = var.droplet_region
|
||||||
|
@ -246,7 +246,7 @@ resource "digitalocean_droplet" "node-text" {
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "digitalocean_droplet" "node-socket" {
|
resource "digitalocean_droplet" "node-socket" {
|
||||||
count = 2
|
count = 0
|
||||||
image = var.droplet_os
|
image = var.droplet_os
|
||||||
name = "node-socket${count.index + 1}"
|
name = "node-socket${count.index + 1}"
|
||||||
region = var.droplet_region
|
region = var.droplet_region
|
||||||
|
@ -264,7 +264,7 @@ resource "digitalocean_droplet" "node-socket" {
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "digitalocean_droplet" "node-favicons" {
|
resource "digitalocean_droplet" "node-favicons" {
|
||||||
count = 2
|
count = 0
|
||||||
image = var.droplet_os
|
image = var.droplet_os
|
||||||
name = "node-favicons${count.index + 1}"
|
name = "node-favicons${count.index + 1}"
|
||||||
region = var.droplet_region
|
region = var.droplet_region
|
||||||
|
@ -282,7 +282,7 @@ resource "digitalocean_droplet" "node-favicons" {
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "digitalocean_droplet" "node-images" {
|
resource "digitalocean_droplet" "node-images" {
|
||||||
count = 2
|
count = 0
|
||||||
image = var.droplet_os
|
image = var.droplet_os
|
||||||
name = "node-images${count.index + 1}"
|
name = "node-images${count.index + 1}"
|
||||||
region = var.droplet_region
|
region = var.droplet_region
|
||||||
|
@ -310,6 +310,7 @@ resource "digitalocean_volume" "node_page_volume" {
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "digitalocean_droplet" "node-page" {
|
resource "digitalocean_droplet" "node-page" {
|
||||||
|
count = 0
|
||||||
image = var.droplet_os
|
image = var.droplet_os
|
||||||
name = "node-page"
|
name = "node-page"
|
||||||
region = var.droplet_region
|
region = var.droplet_region
|
||||||
|
@ -384,7 +385,7 @@ resource "digitalocean_droplet" "db-redis-sessions" {
|
||||||
resource "digitalocean_droplet" "db-redis-story" {
|
resource "digitalocean_droplet" "db-redis-story" {
|
||||||
count = 1
|
count = 1
|
||||||
image = var.droplet_os
|
image = var.droplet_os
|
||||||
name = "db-redis-story${count.index + 2}"
|
name = "db-redis-story${count.index + 1}"
|
||||||
region = var.droplet_region
|
region = var.droplet_region
|
||||||
# size = contains([1], count.index) ? "m-8vcpu-64gb" : var.redis_story_droplet_size
|
# size = contains([1], count.index) ? "m-8vcpu-64gb" : var.redis_story_droplet_size
|
||||||
size = var.redis_story_droplet_size
|
size = var.redis_story_droplet_size
|
||||||
|
@ -596,7 +597,7 @@ resource "digitalocean_droplet" "db-sentry" {
|
||||||
|
|
||||||
# apd -l "task-celery4*" --tags stop; servers=$(for i in {39..48}; do echo -n "-target=\"digitalocean_droplet.task-celery[$i]\" " ; done); tf apply -refresh=false `eval echo $servers`
|
# apd -l "task-celery4*" --tags stop; servers=$(for i in {39..48}; do echo -n "-target=\"digitalocean_droplet.task-celery[$i]\" " ; done); tf apply -refresh=false `eval echo $servers`
|
||||||
resource "digitalocean_droplet" "task-celery" {
|
resource "digitalocean_droplet" "task-celery" {
|
||||||
count = 79
|
count = 0
|
||||||
image = var.droplet_os
|
image = var.droplet_os
|
||||||
name = format("task-celery%02v", count.index + 1)
|
name = format("task-celery%02v", count.index + 1)
|
||||||
region = var.droplet_region
|
region = var.droplet_region
|
||||||
|
@ -615,7 +616,7 @@ resource "digitalocean_droplet" "task-celery" {
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "digitalocean_droplet" "task-work" {
|
resource "digitalocean_droplet" "task-work" {
|
||||||
count = 3
|
count = 0
|
||||||
image = var.droplet_os
|
image = var.droplet_os
|
||||||
name = "task-work${count.index + 1}"
|
name = "task-work${count.index + 1}"
|
||||||
region = var.droplet_region
|
region = var.droplet_region
|
||||||
|
|
Loading…
Add table
Reference in a new issue