From 2856dc076fd6d8a278c4cbe18010cfdfcd51f79c Mon Sep 17 00:00:00 2001 From: Matthew Scragg Date: Thu, 18 Sep 2014 10:13:33 -0500 Subject: [PATCH] Fixes #17 Fix bug with loading token Updated readme Remove realms-wiki bash script (redundant) Updated install.sh Using setuptools to create cli entry point Upstart script sets gid and uid --- README.md | 74 ++++++++++++++++++++++++----------- install.sh | 20 +++++----- realms-wiki | 11 ------ realms/modules/auth/models.py | 2 +- realms/modules/wiki/views.py | 3 +- 5 files changed, 65 insertions(+), 45 deletions(-) delete mode 100755 realms-wiki diff --git a/README.md b/README.md index 06d6ac0..9d3d62a 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ This domain is being used temporarily as a demo so expect it to change. ## Requirements - Python 2.7 - Git -- NodeJS (needed for bower/cleancss, distro packages shouldn't need this in future) +- NodeJS (needed for bower, distro packages shouldn't need this in future) **Optional** - Nginx (if you want proxy requests, this is recommended) @@ -34,24 +34,57 @@ This domain is being used temporarily as a demo so expect it to change. Anon or single user does not require a database. ## Installation -Install script only tested with Ubuntu 14.04. -Please refer to the script for package requisites if needed +### Ubuntu + +If you are using Ubuntu 14.04, you can use install.sh. + ``` git clone https://github.com/scragg0x/realms-wiki cd realms-wiki sudo bash install.sh ``` -**Nginx** +### OSX / Windows -```sudo apt-get install -y nginx``` +This app is designed to run in Linux and I recommend using Vagrant to install on OSX or Windows. + +### Vagrant + +Vagrantfile is included for development or running locally. +To get started with Vagrant, download and install Vagrant and Virtualbox for your platform with the links provided + +https://www.vagrantup.com/downloads.html +https://www.virtualbox.org/wiki/Downloads + +Then execute the following in the terminal: + + git clone https://github.com/scragg0x/realms-wiki + cd realms-wiki + vagrant up + vagrant ssh + realms-wiki dev + +Check ```http://127.0.0.1:5000/``` to make sure it's running. + +## Config and Setup + +You should be able to run this right out of the box with the default config values. +You may want to customize your app and the easiest way is the setup command. + + realms-wiki setup + +This will ask you questions and create a config.json file in the app root directory. +Of course you can manually edit this file as well. +Any config value set in config.json will override values set in ```realms/config/__init__.py``` + +## Nginx Setup + + sudo apt-get install -y nginx Create a file called realms.conf in /etc/nginx/conf.d -``` -/etc/nginx/conf.d/realms.conf -``` + sudo nano /etc/nginx/conf.d/realms.conf Put the following sample configuration in that file. @@ -61,6 +94,12 @@ Put the following sample configuration in that file. # Your domain here server_name wiki.example.org; + # Settings to by-pass for static files + location ^~ /static/ { + # Example: + root /full/path/to/realms/static/; + } + location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; @@ -74,10 +113,12 @@ Put the following sample configuration in that file. Test Nginx config -```sudo nginx -t``` + + sudo nginx -t Reload Nginx -```sudo service nginx reload``` + + sudo service nginx reload ## Running @@ -93,23 +134,12 @@ Current there are different ways. - Debug mode -```realms-wiki runserver``` +```realms-wiki dev``` Access from your browser http://localhost:5000 -## Vagrant - -Vagrantfile is included for development. - -``` -git clone https://github.com/scragg0x/realms-wiki -cd realms-wiki -vagrant up -vagrant ssh -realms-wiki runserver -``` ## Author diff --git a/install.sh b/install.sh index 9dccd7a..46d9b87 100755 --- a/install.sh +++ b/install.sh @@ -11,14 +11,17 @@ if [ -d "/vagrant" ]; then APP_USER="vagrant" fi -echo ${APP_DIR} -echo ${APP_USER} +if [ "${APP_USER}" == "root" ]; then + echo "Installing app as root is not recommended" + echo "Username is determined by owner of application directory." +fi echo "Provisioning..." - +sudo apt-get update +sudo apt-get install -y software-properties-common python-software-properties sudo add-apt-repository -y ppa:chris-lea/node.js sudo apt-get update -sudo apt-get install -y python build-essential git libpcre3-dev python-software-properties \ +sudo apt-get install -y python build-essential git libpcre3-dev \ python-pip python-virtualenv python-dev pkg-config curl libxml2-dev libxslt1-dev zlib1g-dev \ libffi-dev nodejs libyaml-dev @@ -47,18 +50,17 @@ sudo -iu ${APP_USER} bower --config.cwd=${APP_DIR} --config.directory=realms/sta sudo -iu ${APP_USER} virtualenv ${APP_DIR}/.venv -sudo -iu ${APP_USER} ${APP_DIR}/.venv/bin/pip install -r ${APP_DIR}/requirements.txt +sudo -iu ${APP_USER} ${APP_DIR}/.venv/bin/pip install ${APP_DIR} echo "Installing start scripts" -cat << EOF > /usr/local/bin/realms-wiki -#!/bin/bash -${APP_DIR}/.venv/bin/python ${APP_DIR}/manage.py "\$@" -EOF +sudo ln -s ${APP_DIR}/.venv/bin/realms-wiki /usr/local/bin/realms-wiki sudo chmod +x /usr/local/bin/realms-wiki cat << EOF > /etc/init/realms-wiki.conf description "Realms Wiki" author "scragg@gmail.com" +setuid ${APP_USER} +setgid ${APP_USER} start on runlevel [2345] stop on runlevel [!2345] respawn diff --git a/realms-wiki b/realms-wiki deleted file mode 100755 index b01cd85..0000000 --- a/realms-wiki +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -APP_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -APP_USER="$( stat -c '%U' ${APP_DIR} )" -CURRENT_USER=`whoami` - -if [ "${CURRENT_USER}" != "${APP_USER}" ]; then - echo "Warning: Running as ${CURRENT_USER}, app dir owned by ${APP_USER}" -fi - -${APP_DIR}/.venv/bin/python ${APP_DIR}/manage.py "$@" diff --git a/realms/modules/auth/models.py b/realms/modules/auth/models.py index a596880..727356c 100644 --- a/realms/modules/auth/models.py +++ b/realms/modules/auth/models.py @@ -15,7 +15,7 @@ def load_user(user_id): @login_manager.token_loader def load_token(token): # Load unsafe because payload is needed for sig - sig_okay, payload = URLSafeSerializer(None).load_unsafe(token) + sig_okay, payload = URLSafeSerializer(None).loads_unsafe(token) if not payload: return False diff --git a/realms/modules/wiki/views.py b/realms/modules/wiki/views.py index 99db906..b266d32 100644 --- a/realms/modules/wiki/views.py +++ b/realms/modules/wiki/views.py @@ -62,11 +62,10 @@ def edit(name): if edit_cname.lower() != cname.lower(): wiki.rename_page(cname, edit_cname) - """ wiki.write_page(edit_cname, request.form['content'], message=request.form['message'], - username=current_user.username)""" + username=current_user.username) else: if data: name = remove_ext(data['name'])