merged chanegs
This commit is contained in:
commit
1ddf23a848
|
@ -13,4 +13,4 @@ ENV NODE_ENV development
|
|||
# Port 3000 for server
|
||||
# Port 35729 for livereload
|
||||
EXPOSE 3000 35729
|
||||
CMD ["grunt default"]
|
||||
CMD ["grunt"]
|
||||
|
|
12
README.md
12
README.md
|
@ -55,13 +55,18 @@ $ grunt build
|
|||
|
||||
Create your .env file. It should look like this
|
||||
```
|
||||
MAILER_EMAIL_ID=example@test.com
|
||||
GOOGLE_ANALYTICS_ID=yourGAID
|
||||
PRERENDER_TOKEN=yourPrerender.ioToken
|
||||
COVERALLS_REPO_TOKEN=yourCoveralls.ioToken
|
||||
MAILER_EMAIL_ID=SMTP_Injection
|
||||
MAILER_FROM=noreply@yourdomain.com
|
||||
MAILER_PASSWORD=yourmandrillapikey
|
||||
MAILER_SERVICE_PROVIDER=Mandrill
|
||||
MAILER_PASSWORD=your_sparkpost_apikey
|
||||
MAILER_SERVICE_PROVIDER=SparkPost
|
||||
BASE_URL=yourdomain.com
|
||||
```
|
||||
|
||||
Currenty we are using Raven and Sentry [https://www.getsentry.com](https://www.getsentry.com) for error logging. To use it you must provide a valid private DSN key in your .env file and a public DSN key in app/views/layout.index.html
|
||||
|
||||
Create this directory or you will get errors.
|
||||
|
||||
```
|
||||
|
@ -73,6 +78,7 @@ Edit the 'env' config in gruntfile.js to make sure your .env file is being used.
|
|||
To run development version:
|
||||
|
||||
```$ grunt default```
|
||||
|
||||
To run production version:
|
||||
|
||||
```$ grunt production```
|
||||
|
|
|
@ -96,14 +96,14 @@
|
|||
{% endif %}
|
||||
|
||||
<script>
|
||||
// Raven.config('http://db01e03015ce48e2b68240ea8254b17c@sentry.polydaic.com/1', {
|
||||
// // Raven settings
|
||||
// })
|
||||
// .setUser({
|
||||
// "id": "SERVER_RENDERED_ID",
|
||||
// "email": "SERVER_RENDERED_EMAIL"
|
||||
// })
|
||||
// .install()
|
||||
Raven.config('http://825fefd6b4ed4a4da199c1b832ca845c@sentry.tellform.com/2', {
|
||||
// Raven settings
|
||||
})
|
||||
.setUser({
|
||||
"id": "SERVER_RENDERED_ID",
|
||||
"email": "SERVER_RENDERED_EMAIL"
|
||||
})
|
||||
.install()
|
||||
</script>
|
||||
|
||||
<!-- [if lt IE 9]>
|
||||
|
@ -115,6 +115,16 @@
|
|||
</section>
|
||||
<![endif] -->
|
||||
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
||||
|
||||
ga('create', '{{google_analytics_id}}', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
|
3
config/env/all.js
vendored
3
config/env/all.js
vendored
|
@ -2,6 +2,7 @@
|
|||
|
||||
module.exports = {
|
||||
app: {
|
||||
google_analytics_id: process.env.GOOGLE_ANALYTICS_ID || '',
|
||||
title: 'TellForm',
|
||||
description: 'Opensource form builder alternative to TypeForm',
|
||||
keywords: 'typeform, pdfs, forms, opensource, formbuilder, google forms, nodejs',
|
||||
|
@ -18,7 +19,7 @@ module.exports = {
|
|||
},
|
||||
|
||||
//Sentry DSN Client Key
|
||||
DSN: 'http://db01e03015ce48e2b68240ea8254b17c:5d878e9bb6c6488fbb70fb81295ee700@sentry.polydaic.com/1',
|
||||
DSN: process.env.RAVEN_DSN || '',
|
||||
|
||||
// The secret should be set to a non-guessable string that
|
||||
// is used to compute a session hash
|
||||
|
|
|
@ -38,10 +38,10 @@ module.exports = function(db) {
|
|||
});
|
||||
|
||||
// Setting application local variables
|
||||
app.locals.google_analytics_id = config.app.google_analytics_id;
|
||||
app.locals.title = config.app.title;
|
||||
app.locals.description = config.app.description;
|
||||
app.locals.keywords = config.app.keywords;
|
||||
app.locals.facebookAppId = config.facebook.clientID;
|
||||
|
||||
app.locals.bowerJSFiles = config.getBowerJSAssets();
|
||||
app.locals.bowerCssFiles = config.getBowerCSSAssets();
|
||||
|
|
|
@ -3,25 +3,20 @@ version: '2'
|
|||
services:
|
||||
db:
|
||||
image: mongo:3.2
|
||||
command: ['bash', '-c', 'mongod --storageEngine wiredTiger'] #['mongod', '--storageEngine', 'wiredTiger']
|
||||
volumes:
|
||||
- mongo-data-wt:/data/db
|
||||
#- /tmp/etc:/etc
|
||||
networks:
|
||||
- back-tier
|
||||
- mongo-data-wt:/data/db
|
||||
web:
|
||||
build:
|
||||
context: .
|
||||
build: .
|
||||
volumes:
|
||||
- .:/usr/src/app
|
||||
ports:
|
||||
- "3000:3000"
|
||||
- "35729:35729"
|
||||
networks:
|
||||
- back-tier
|
||||
environment:
|
||||
DB_1_PORT_27017_TCP_ADDR: db
|
||||
PORT: 3000
|
||||
links:
|
||||
- db
|
||||
volumes:
|
||||
mongo-data-wt:
|
||||
driver: local
|
||||
networks:
|
||||
back-tier:
|
||||
driver: bridge
|
||||
|
|
|
@ -1,13 +1,10 @@
|
|||
Installing Sentry Server
|
||||
------------------------
|
||||
#Installing Sentry Server
|
||||
|
||||
TellForm is an opensource *form builder* that can create stunning forms from PDFs or from scratch
|
||||
|
||||
## Before You Begin
|
||||
### Before You Begin
|
||||
Make sure you understand what sentry server does. You can view documentation for sentry server [here](https://sentry.readthedocs.org/). This document was written for a server running *Ubuntu 14.04 LTS server* (we used Azure).
|
||||
|
||||
|
||||
## Prerequisites
|
||||
### Prerequisites
|
||||
Make sure you have these installed:
|
||||
* apt-get
|
||||
* python2.7
|
||||
|
@ -15,236 +12,238 @@ Make sure you have these installed:
|
|||
|
||||
|
||||
|
||||
## Installation Steps
|
||||
### Installation Steps
|
||||
1. Add non-root user.
|
||||
```
|
||||
sudo adduser sentry
|
||||
sudo adduser sentry sudo
|
||||
```
|
||||
```
|
||||
sudo adduser sentry
|
||||
sudo adduser sentry sudo
|
||||
```
|
||||
|
||||
2. Update all apt-get packages
|
||||
```
|
||||
sudo apt-get update
|
||||
sudo apt-get dist-upgrade
|
||||
sudo apt-get autoremove
|
||||
sudo apt-get install libxml2-dev libxslt1-dev libffi-dev
|
||||
sudo reboot
|
||||
```
|
||||
```
|
||||
sudo apt-get update
|
||||
sudo apt-get dist-upgrade
|
||||
sudo apt-get autoremove
|
||||
sudo apt-get install libxml2-dev libxslt1-dev libffi-dev libpq-dev python-dev
|
||||
sudo reboot
|
||||
```
|
||||
|
||||
3. Install easy_install and pip
|
||||
```
|
||||
wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
|
||||
sudo easy_install pip
|
||||
```
|
||||
```
|
||||
wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
|
||||
sudo easy_install pip
|
||||
```
|
||||
|
||||
4. Install virtualenv and virtualenvwrapper
|
||||
```
|
||||
sudo pip install virtualenv
|
||||
```
|
||||
4. Install virtualenv and lmxl
|
||||
```
|
||||
sudo pip install virtualenv
|
||||
sudo pip install lxml
|
||||
```
|
||||
|
||||
5. Install Sentry and Setup
|
||||
```
|
||||
# make server directory
|
||||
mkdir ~/SentryServer; cd ~/SentryServer;
|
||||
# make virtualenv
|
||||
virtualenv ./
|
||||
#activate virtualenv
|
||||
source ./bin/activate
|
||||
```
|
||||
# make server directory
|
||||
mkdir ~/SentryServer; cd ~/SentryServer;
|
||||
# make virtualenv
|
||||
virtualenv ./
|
||||
#activate virtualenv
|
||||
source ./bin/activate
|
||||
|
||||
# install sentry and its postgresql dependencies
|
||||
pip install -U sentry[postgres]
|
||||
```
|
||||
# install sentry and its postgresql dependencies
|
||||
pip install -U sentry[postgres]
|
||||
```
|
||||
|
||||
6. Install postgresql
|
||||
```
|
||||
# install postgres
|
||||
sudo apt-get install postgresql postgresql-contrib libpq-dev
|
||||
```
|
||||
# install postgres
|
||||
sudo apt-get install postgresql postgresql-contrib libpq-dev
|
||||
|
||||
# install postgres adminpack
|
||||
sudo -u postgres psql
|
||||
CREATE EXTENSION "adminpack";
|
||||
\q
|
||||
```
|
||||
# install postgres adminpack
|
||||
sudo -u postgres psql
|
||||
CREATE EXTENSION "adminpack";
|
||||
\q
|
||||
```
|
||||
|
||||
7. Setup postgresql DB
|
||||
```
|
||||
# change postgres password & create database
|
||||
sudo passwd postgres
|
||||
sudo su - postgres
|
||||
psql -d template1 -c "ALTER USER postgres WITH PASSWORD 'changeme';"
|
||||
createdb sentry
|
||||
createuser sentry_user --pwprompt
|
||||
psql -d template1 -U postgres
|
||||
GRANT ALL PRIVILEGES ON DATABASE sentry to sentry_user;
|
||||
\q
|
||||
exit
|
||||
```
|
||||
```
|
||||
# change postgres password & create database
|
||||
sudo passwd postgres
|
||||
sudo su - postgres
|
||||
psql -d template1 -c "ALTER USER postgres WITH PASSWORD 'changeme';"
|
||||
createdb sentry
|
||||
createuser sentry_user --pwprompt
|
||||
psql -d template1 -U postgres
|
||||
GRANT ALL PRIVILEGES ON DATABASE sentry to sentry_user;
|
||||
\q
|
||||
exit
|
||||
```
|
||||
|
||||
8. Setup Sentry Configuration
|
||||
```
|
||||
# initialize conf file
|
||||
sentry init
|
||||
```
|
||||
# initialize conf file
|
||||
sentry init
|
||||
|
||||
#edit sentry configuration
|
||||
vim ~/.sentry/sentry.conf.py
|
||||
```
|
||||
#edit sentry configuration
|
||||
vim ~/.sentry/sentry.conf.py
|
||||
```
|
||||
|
||||
The following are the contents of my sentry.conf.py file (replace name, user and password with your that of your DB)
|
||||
The following are the contents of my sentry.conf.py file (replace name, user and password with your that of your DB)
|
||||
|
||||
```
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.postgresql_psycopg2',
|
||||
'NAME': 'sentry',
|
||||
'USER': 'sentry_user',
|
||||
'PASSWORD': 'your_password',
|
||||
'HOST': 'localhost',
|
||||
}
|
||||
}
|
||||
# No trailing slash!
|
||||
SENTRY_URL_PREFIX = 'http://sentry.example.com'
|
||||
```
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.postgresql_psycopg2',
|
||||
'NAME': 'sentry',
|
||||
'USER': 'sentry_user',
|
||||
'PASSWORD': 'your_password',
|
||||
'HOST': 'localhost',
|
||||
}
|
||||
}
|
||||
# No trailing slash!
|
||||
SENTRY_URL_PREFIX = 'http://sentry.example.com'
|
||||
|
||||
SENTRY_WEB_HOST = '0.0.0.0'
|
||||
SENTRY_WEB_PORT = 9000
|
||||
SENTRY_WEB_OPTIONS = {
|
||||
'workers': 3, # the number of gunicorn workers
|
||||
'secure_scheme_headers': {'X-FORWARDED-PROTO': 'https'}, # detect HTTPS mode from X-Forwarded-Proto header
|
||||
}
|
||||
SENTRY_WEB_HOST = '0.0.0.0'
|
||||
SENTRY_WEB_PORT = 9000
|
||||
SENTRY_WEB_OPTIONS = {
|
||||
'workers': 3, # the number of gunicorn workers
|
||||
'secure_scheme_headers': {'X-FORWARDED-PROTO': 'https'}, # detect HTTPS mode from X-Forwarded-Proto header
|
||||
}
|
||||
|
||||
#CONFIGURE REDIS
|
||||
SENTRY_REDIS_OPTIONS = {
|
||||
'hosts': {
|
||||
0: {
|
||||
'host': '127.0.0.1',
|
||||
'port': 6379,
|
||||
'timeout': 3,
|
||||
#'password': 'redis auth password'
|
||||
}
|
||||
}
|
||||
}
|
||||
#CONFIGURE REDIS
|
||||
SENTRY_REDIS_OPTIONS = {
|
||||
'hosts': {
|
||||
0: {
|
||||
'host': '127.0.0.1',
|
||||
'port': 6379,
|
||||
'timeout': 3,
|
||||
#'password': 'redis auth password'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#CONFIGURE OUTGOING MAIL
|
||||
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
|
||||
EMAIL_USE_TLS = True
|
||||
EMAIL_HOST = 'smtp.gmail.com'
|
||||
EMAIL_PORT = 587
|
||||
EMAIL_HOST_USER = 'your_gmail_username@gmail.com'
|
||||
EMAIL_HOST_PASSWORD = 'your_gmail_password'
|
||||
DEFAULT_FROM_EMAIL = 'testing@testing.com
|
||||
```
|
||||
#CONFIGURE OUTGOING MAIL
|
||||
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
|
||||
EMAIL_USE_TLS = True
|
||||
EMAIL_HOST = 'smtp.gmail.com'
|
||||
EMAIL_PORT = 587
|
||||
EMAIL_HOST_USER = 'your_gmail_username@gmail.com'
|
||||
EMAIL_HOST_PASSWORD = 'your_gmail_password'
|
||||
DEFAULT_FROM_EMAIL = 'testing@testing.com
|
||||
```
|
||||
|
||||
9. Setup Database and Start Sentry
|
||||
```
|
||||
#install and run redis-server
|
||||
wget http://download.redis.io/releases/redis-stable.tar.gz
|
||||
tar xzf redis-stable.tar.gz
|
||||
cd redis-stable
|
||||
make
|
||||
make test
|
||||
sudo make install
|
||||
cd utils
|
||||
sudo ./install_server.sh
|
||||
```
|
||||
#install and run redis-server
|
||||
wget http://download.redis.io/releases/redis-stable.tar.gz
|
||||
tar xzf redis-stable.tar.gz
|
||||
cd redis-stable
|
||||
make
|
||||
make test
|
||||
sudo make install
|
||||
cd utils
|
||||
sudo ./install_server.sh
|
||||
|
||||
#Go back to app directory
|
||||
cd ~/SentryServer
|
||||
sudo service redis_6379 start
|
||||
#Go back to app directory
|
||||
cd ~/SentryServer
|
||||
sudo service redis_6379 start
|
||||
|
||||
# set up databse
|
||||
sentry upgrade
|
||||
# set up databse
|
||||
sentry upgrade
|
||||
|
||||
# let's try it out!
|
||||
sentry start
|
||||
```
|
||||
# let's try it out!
|
||||
sentry start
|
||||
```
|
||||
|
||||
10. Install nginx
|
||||
|
||||
```
|
||||
# install nginx
|
||||
sudo apt-get install nginx
|
||||
```
|
||||
# install nginx
|
||||
sudo apt-get install nginx
|
||||
|
||||
# remove the default symbolic link
|
||||
sudo rm /etc/nginx/sites-enabled/default
|
||||
# remove the default symbolic link
|
||||
sudo rm /etc/nginx/sites-enabled/default
|
||||
|
||||
# create a new blank config, and make a symlink to it
|
||||
sudo touch /etc/nginx/sites-available/sentry
|
||||
cd /etc/nginx/sites-enabled
|
||||
sudo ln -s ../sites-available/sentry
|
||||
# create a new blank config, and make a symlink to it
|
||||
sudo touch /etc/nginx/sites-available/sentry
|
||||
cd /etc/nginx/sites-enabled
|
||||
sudo ln -s ../sites-available/sentry
|
||||
|
||||
# edit the nginx configuration file
|
||||
sudo vim /etc/nginx/sites-available/sentry
|
||||
```
|
||||
*Here are the contents of my nginx file:*
|
||||
```
|
||||
server {
|
||||
# listen on port 80
|
||||
listen 80;
|
||||
# edit the nginx configuration file
|
||||
sudo vim /etc/nginx/sites-available/sentry
|
||||
```
|
||||
*Here are the contents of my nginx file:*
|
||||
```
|
||||
server {
|
||||
# listen on port 80
|
||||
listen 80;
|
||||
|
||||
# for requests to these domains
|
||||
server_name yourdomain.com www.yourdomain.com;
|
||||
# for requests to these domains
|
||||
server_name yourdomain.com www.yourdomain.com;
|
||||
|
||||
# keep logs in these files
|
||||
access_log /var/log/nginx/sentry.access.log;
|
||||
error_log /var/log/nginx/sentry.error.log;
|
||||
# keep logs in these files
|
||||
access_log /var/log/nginx/sentry.access.log;
|
||||
error_log /var/log/nginx/sentry.error.log;
|
||||
|
||||
# You need this to allow users to upload large files
|
||||
# See http://wiki.nginx.org/HttpCoreModule#client_max_body_size
|
||||
# I'm not sure where it goes, so I put it in twice. It works.
|
||||
client_max_body_size 0;
|
||||
# You need this to allow users to upload large files
|
||||
# See http://wiki.nginx.org/HttpCoreModule#client_max_body_size
|
||||
# I'm not sure where it goes, so I put it in twice. It works.
|
||||
client_max_body_size 0;
|
||||
|
||||
location / {
|
||||
proxy_pass http://localhost:9000;
|
||||
proxy_redirect off;
|
||||
location / {
|
||||
proxy_pass http://localhost:9000;
|
||||
proxy_redirect off;
|
||||
|
||||
proxy_read_timeout 5m;
|
||||
proxy_read_timeout 5m;
|
||||
|
||||
# make sure these HTTP headers are set properly
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
}
|
||||
}
|
||||
```
|
||||
# make sure these HTTP headers are set properly
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
11. Start the worker processes
|
||||
```
|
||||
# restart nginx
|
||||
sudo service nginx restart
|
||||
```
|
||||
# restart nginx
|
||||
sudo nginx -t
|
||||
sudo service nginx reload
|
||||
|
||||
#start sentry
|
||||
sentry celery worker -B
|
||||
```
|
||||
#start sentry
|
||||
sentry celery worker -B
|
||||
```
|
||||
|
||||
12. Install and Configure supervisord
|
||||
```
|
||||
pip install supervisord
|
||||
sudo echo_supervisord_conf > ~/SentryServer/etc/supervisord.conf
|
||||
```
|
||||
pip install supervisord
|
||||
sudo echo_supervisord_conf > ~/SentryServer/etc/supervisord.conf
|
||||
|
||||
#Edit yuour supervisord Config
|
||||
vim /etc/supervisord.conf
|
||||
```
|
||||
#Edit yuour supervisord Config
|
||||
vim /etc/supervisord.conf
|
||||
```
|
||||
|
||||
Configuration file should look like this
|
||||
```
|
||||
[program:sentry-web]
|
||||
directory=~/SentryServer/
|
||||
command=~/SentryServer/bin/sentry start
|
||||
autostart=true
|
||||
autorestart=true
|
||||
redirect_stderr=true
|
||||
stdout_logfile=syslog
|
||||
stderr_logfile=syslog
|
||||
Configuration file should look like this
|
||||
```
|
||||
[program:sentry-web]
|
||||
directory=~/SentryServer/
|
||||
command=~/SentryServer/bin/sentry start
|
||||
autostart=true
|
||||
autorestart=true
|
||||
redirect_stderr=true
|
||||
stdout_logfile=syslog
|
||||
stderr_logfile=syslog
|
||||
|
||||
[program:sentry-worker]
|
||||
directory=~/SentryServer/
|
||||
command=~/SentryServer/bin/sentry celery worker -B
|
||||
autostart=true
|
||||
autorestart=true
|
||||
redirect_stderr=true
|
||||
stdout_logfile=syslog
|
||||
stderr_logfile=syslog
|
||||
```
|
||||
[program:sentry-worker]
|
||||
directory=~/SentryServer/
|
||||
command=~/SentryServer/bin/sentry celery worker -B
|
||||
autostart=true
|
||||
autorestart=true
|
||||
redirect_stderr=true
|
||||
stdout_logfile=syslog
|
||||
stderr_logfile=syslog
|
||||
```
|
||||
|
||||
13. Run Server (with supervisord)
|
||||
```
|
||||
supervisord
|
||||
```
|
||||
```
|
||||
supervisord
|
||||
```
|
||||
|
|
|
@ -10,11 +10,23 @@
|
|||
"ref" : "origin/master",
|
||||
"repo" : "git@github.com:whitef0x0/tellform.git",
|
||||
"path" : "/opt/deploy",
|
||||
"post-deploy" : "npm install && bower install --allow-root && pm2 startOrRestart ecosystem.json --env production",
|
||||
"post-deploy" : "npm install && bower install && pm2 startOrRestart ecosystem.json --env production",
|
||||
"env" : {
|
||||
"NODE_ENV": "production",
|
||||
"BASE_URL": "stage.tellform.com"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"prod" : {
|
||||
"user" : "polydaic",
|
||||
"host" : "159.203.33.182",
|
||||
"ref" : "origin/master",
|
||||
"repo" : "git@github.com:whitef0x0/tellform.git",
|
||||
"path" : "/opt/deploy",
|
||||
"post-deploy" : "npm install && bower install && pm2 startOrRestart ecosystem.json --env production",
|
||||
"env" : {
|
||||
"NODE_ENV": "production",
|
||||
"BASE_URL": "admin.tellform.com"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "TellForm",
|
||||
"description": "Opensource alternative to TypeForm",
|
||||
"version": "1.2.1",
|
||||
"version": "1.3.0",
|
||||
"homepage": "https://github.com/whitef0x0/tellform",
|
||||
"authors": [
|
||||
"David Baldwynn <polydaic@gmail.com> (http://baldwynn.me)"
|
||||
|
|
Loading…
Reference in a new issue