added nginx+gunicorn+gevent support
This commit is contained in:
Родитель
824d3b84bf
Коммит
9d2e997ebf
|
@ -0,0 +1,25 @@
|
|||
user nginx;
|
||||
worker_processes 5;
|
||||
worker_rlimit_nofile 30000;
|
||||
error_log /var/log/nginx/error.log;
|
||||
pid /var/run/nginx.pid;
|
||||
|
||||
events {
|
||||
worker_connections 10000;
|
||||
}
|
||||
|
||||
|
||||
http {
|
||||
server {
|
||||
listen 80 default;
|
||||
keepalive_timeout 120;
|
||||
tcp_nodelay on;
|
||||
location / {
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_redirect off;
|
||||
proxy_pass http://localhost:5000;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,169 @@
|
|||
#
|
||||
# linkdrop - Pylons development environment configuration
|
||||
#
|
||||
# The %(here)s variable will be replaced with the parent directory of this file
|
||||
#
|
||||
[DEFAULT]
|
||||
debug = true
|
||||
# Uncomment and replace with the address which should receive any error reports
|
||||
#email_to = you@yourdomain.com
|
||||
smtp_server = localhost
|
||||
error_email_from = paste@localhost
|
||||
test_shortener = no
|
||||
|
||||
bitly.userid = linkdrop
|
||||
bitly.key = R_9d8dc7f30887c45eb7b3719d71251006
|
||||
|
||||
oauth_failure = /auth.html#oauth_failure
|
||||
oauth_success = /auth.html#oauth_success
|
||||
|
||||
oauth.twitter.com.consumer_key = Z2EEt5NCkwkfPCMhUq5Ew
|
||||
oauth.twitter.com.consumer_secret = EWQhLT1l4vn4ezehtKwcHPUF4XLaVs1zZrqMY5YjtE
|
||||
oauth.twitter.com.request = https://twitter.com/oauth/request_token
|
||||
oauth.twitter.com.access = https://twitter.com/oauth/access_token
|
||||
oauth.twitter.com.authorize = https://twitter.com/oauth/authenticate
|
||||
|
||||
# This is a 'raindrop' app currently owned by markh. By necessity it is
|
||||
# configured to use a redirect URL back to the default host and port specified
|
||||
# below for this server.
|
||||
oauth.facebook.com.app_id = 163981616966631
|
||||
oauth.facebook.com.app_secret = 78e3bd4ab991ccf50fb9220452eb30b4
|
||||
oauth.facebook.com.scope = publish_stream,offline_access,user_groups
|
||||
oauth.facebook.com.authorize = https://graph.facebook.com/oauth/authorize
|
||||
oauth.facebook.com.access = https://graph.facebook.com/oauth/access_token
|
||||
|
||||
# XXX This will not work without registering a domain! See README
|
||||
oauth.google.com.consumer_key = linkdrop.caraveo.com
|
||||
oauth.google.com.consumer_secret = 8qsv6nqw6KPbrFFPRyK9fvOw
|
||||
oauth.google.com.scope = https://mail.google.com/ http://www.google.com/m8/feeds/
|
||||
|
||||
# Register with Yahoo! at https://developer.apps.yahoo.com/projects
|
||||
# Yahoo scope is embeded in the consumer_key and is selected at registration time
|
||||
# You will need to setup an application with Yahoo on a domain where you can
|
||||
# upload an html file in order to verify the application. once verified,
|
||||
# also set verified = 1
|
||||
oauth.yahoo.com.consumer_key = dj0yJmk9TjFpSlVBcmY2Q2pnJmQ9WVdrOWQwUjVVVFJKTkdVbWNHbzlNVEF6TnpZME1ERTJNZy0tJnM9Y29uc3VtZXJzZWNyZXQmeD1hZg--
|
||||
oauth.yahoo.com.consumer_secret = a47367578f07e3ea1ddb045b3003a9c7d95a5f69
|
||||
oauth.yahoo.com.app_id = wDyQ4I4e
|
||||
# set to true if you have completed domain verification with Yahoo
|
||||
oauth.yahoo.com.verified = 1
|
||||
|
||||
oauth.linkedin.com.consumer_key = sz-cmZ24vIXHAK_3NCsNTsF57F3wrgi0uT0vr5NC6hmXWAdmVSFrGcKUNBqDgjP5
|
||||
oauth.linkedin.com.consumer_secret = RfvZProhTuRAjuOA8EBm7PVfhZO31W2QdLHGd12nfh7hpAwc7VuZiG15pEwFhRRh
|
||||
oauth.linkedin.com.request = https://api.linkedin.com/uas/oauth/requestToken
|
||||
oauth.linkedin.com.access = https://api.linkedin.com/uas/oauth/accessToken
|
||||
oauth.linkedin.com.authorize = https://api.linkedin.com/uas/oauth/authorize
|
||||
|
||||
[server:main]
|
||||
use = egg:gunicorn#main
|
||||
host = 127.0.0.1
|
||||
port = 5000
|
||||
workers = 5
|
||||
worker_class = gevent
|
||||
|
||||
[filter-app:main]
|
||||
use = egg:Beaker#beaker_session
|
||||
next = csrf
|
||||
beaker.session.key = linkdrop
|
||||
beaker.session.secret = secret
|
||||
beaker.session.timeout = 600
|
||||
|
||||
# XXX file sessions are slow, should change to memcached or database. be sure
|
||||
# to set lock_dir below if using memcached
|
||||
|
||||
beaker.session.type = memory
|
||||
#beaker.session.type = ext:memcached
|
||||
#beaker.session.url = 127.0.0.1:11211
|
||||
#beaker.session.type = ext:database
|
||||
#beaker.session.url = mysql+mysqldb://linkdrop:linkdrop@localhost/linkdrop
|
||||
|
||||
# If you'd like to fine-tune the individual locations of the cache data dirs
|
||||
# for the Cache data, or the Session saves, un-comment the desired settings
|
||||
# here:
|
||||
beaker.cache.data_dir = %(here)s/data/cache
|
||||
beaker.session.data_dir = %(here)s/data/sessions
|
||||
beaker.session.lock_dir = %(here)s/data/sessions/lock
|
||||
|
||||
[filter-app:csrf]
|
||||
use = egg:linkdrop#csrf
|
||||
# allow access to account api's for oauth, which will not have csrf token
|
||||
# be sure to use the FULL path
|
||||
csrf.unprotected_path = /api/account
|
||||
next = sessioned
|
||||
|
||||
[composite:sessioned]
|
||||
use = egg:Paste#urlmap
|
||||
/ = home
|
||||
/api = api
|
||||
|
||||
[app:home]
|
||||
use = egg:linkdrop#static
|
||||
document_root = %(here)s/web
|
||||
|
||||
[app:api]
|
||||
use = egg:linkdrop
|
||||
full_stack = true
|
||||
static_files = false
|
||||
# if we've configured beaker as a filter-app then don't enable it
|
||||
# in the pylons middleware, it will just be a duplication.
|
||||
session_middleware = false
|
||||
|
||||
cache_dir = %(here)s/data
|
||||
|
||||
# SQLAlchemy database URL
|
||||
sqlalchemy.url = sqlite:///%(here)s/development.db
|
||||
#sqlalchemy.url = mysql+mysqldb://linkdrop:linkdrop@localhost/linkdrop
|
||||
|
||||
# SQLAlchemy migration
|
||||
# if managed, the migration repository is here
|
||||
migrate.repository = %(here)s/changes
|
||||
# automatically do database upgrades
|
||||
migrate.auto = 1
|
||||
|
||||
# WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT*
|
||||
# Debug mode will enable the interactive debugging tool, allowing ANYONE to
|
||||
# execute malicious code after an exception is raised.
|
||||
#set debug = false
|
||||
|
||||
# Logging configuration
|
||||
[loggers]
|
||||
keys = root, routes, linkdrop, sqlalchemy
|
||||
|
||||
[handlers]
|
||||
keys = console
|
||||
|
||||
[formatters]
|
||||
keys = generic
|
||||
|
||||
[logger_root]
|
||||
level = INFO
|
||||
handlers = console
|
||||
|
||||
[logger_routes]
|
||||
level = INFO
|
||||
handlers =
|
||||
qualname = routes.middleware
|
||||
# "level = DEBUG" logs the route matched and routing variables.
|
||||
|
||||
[logger_linkdrop]
|
||||
level = DEBUG
|
||||
handlers =
|
||||
qualname = linkdrop
|
||||
|
||||
[logger_sqlalchemy]
|
||||
level = INFO
|
||||
handlers =
|
||||
qualname = sqlalchemy.engine
|
||||
# "level = INFO" logs SQL queries.
|
||||
# "level = DEBUG" logs SQL queries and results.
|
||||
# "level = WARN" logs neither. (Recommended for production systems.)
|
||||
|
||||
[handler_console]
|
||||
class = StreamHandler
|
||||
args = (sys.stderr,)
|
||||
level = NOTSET
|
||||
formatter = generic
|
||||
|
||||
[formatter_generic]
|
||||
format = %(asctime)s,%(msecs)03d %(levelname)-5.5s [%(name)s] [%(threadName)s] %(message)s
|
||||
datefmt = %H:%M:%S
|
Загрузка…
Ссылка в новой задаче