Commit 0fde12117eb5d46e525a9b8ccba7ac50a8a818dc
1 parent
4f413490
Exists in
master
and in
1 other branch
- README.md update
Showing
1 changed file
with
41 additions
and
11 deletions
Show diff stats
README.md
| ... | ... | @@ -26,7 +26,7 @@ These can be installed for a single user (recommended), in a python virtual envi |
| 26 | 26 | pip install --user cherrypy mako markdown pyyaml pygments sqlalchemy bcrypt |
| 27 | 27 | ``` |
| 28 | 28 | |
| 29 | -#### Installing packages in a virtual environment | |
| 29 | +#### Installing packages in a virtual environment (alternative) | |
| 30 | 30 | |
| 31 | 31 | ```.bash |
| 32 | 32 | pyvenv-3.5 venv/perguntations # or other virtualenv directory |
| ... | ... | @@ -35,7 +35,7 @@ source venv/perguntations/bin/activate # activate virtualenv |
| 35 | 35 | pip install cherrypy mako markdown pyyaml pygments sqlalchemy bcrypt |
| 36 | 36 | ``` |
| 37 | 37 | |
| 38 | -#### Installing packages system wide | |
| 38 | +#### Installing packages system wide (alternative) | |
| 39 | 39 | |
| 40 | 40 | I personally prefer python packages to be installed for a single user, but if a system wide installation is required, it is probably better to use the operating system package manager instead of `pip`: |
| 41 | 41 | |
| ... | ... | @@ -53,7 +53,9 @@ where USERNAME is your account on bitbucket. |
| 53 | 53 | |
| 54 | 54 | ## Running a demo |
| 55 | 55 | |
| 56 | -The following commands show how to run a demonstration test: | |
| 56 | +The directory `demo` includes a demo test that can be used as a template for your own tests and questions. | |
| 57 | + | |
| 58 | +To run the demonstration test: | |
| 57 | 59 | |
| 58 | 60 | ```.bash |
| 59 | 61 | cd WHERE/YOU/INSTALLED/perguntations |
| ... | ... | @@ -62,14 +64,13 @@ cd WHERE/YOU/INSTALLED/perguntations |
| 62 | 64 | ./initdb.py students.csv # from CSV file |
| 63 | 65 | ./initdb.py --demo # initialize with fake students |
| 64 | 66 | ./initdb.py # empty |
| 65 | - | |
| 66 | 67 | mv students.db demo/ |
| 67 | 68 | |
| 69 | +# create directory to put the student's answered tests | |
| 70 | +mkdir demo/ans | |
| 71 | + | |
| 68 | 72 | # edit test configuration and check if everything looks right |
| 69 | 73 | vi demo/test.yaml |
| 70 | - | |
| 71 | -# edit server configuration and check if everything looks right | |
| 72 | -vi config/server.conf | |
| 73 | 74 | ``` |
| 74 | 75 | |
| 75 | 76 | We are now ready to run the server: |
| ... | ... | @@ -79,18 +80,47 @@ We are now ready to run the server: |
| 79 | 80 | ./serve.py demo/test.yaml # run demo test |
| 80 | 81 | ``` |
| 81 | 82 | |
| 82 | -Open the browser at `http://127.0.0.1:8080/` and login as user number `0` (administrator) and: | |
| 83 | +By default the server listens on all IPs of all network interfaces. | |
| 84 | +Open the browser at `http://127.0.0.1:8080/` and login as user number `0` (administrator) and choose any password. Then | |
| 83 | 85 | |
| 84 | 86 | 1. Authorize students by clicking the checkboxes. |
| 85 | 87 | 2. Open a different browser at `http://127.0.0.1:8080/` and login as one of the authorized students. Answer the questions and submit. |
| 86 | 88 | |
| 87 | -The server can be stoped from the terminal with <kbd>^C</kbd>. | |
| 89 | +The server can be stoped from the terminal with `^C`. | |
| 90 | + | |
| 91 | +## Running on port 80 | |
| 92 | + | |
| 93 | +Port 80 is reserved for the root user and and this software _should NOT be run as root_. Instead, the firewall should be configured to forward tcp traffic from port 80 to 8080 where the server is listening. The details depend on the operating system. | |
| 94 | + | |
| 95 | +### debian: | |
| 96 | + | |
| 97 | +```.bash | |
| 98 | +iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 8080 | |
| 99 | +``` | |
| 100 | + | |
| 101 | +Explanation: | |
| 102 | + - `-t nat` is the table consulted when a packet creates a new connection. | |
| 103 | + - `-I PREROUTING` inserts rules at the head of the chain. | |
| 104 | + - `-p tcp` selected protocol. | |
| 105 | + - `-s 0/0` source network address/mask. | |
| 106 | + - `-i eth0` interface via which the packet was received. | |
| 107 | + - `--dport 80` destination port. | |
| 108 | + - `-j REDIRECT` what to do when packet matches the rule. | |
| 109 | + - `--to-ports 8080` where to redirect the packets. | |
| 110 | + | |
| 111 | +### freebsd | |
| 112 | + | |
| 113 | +Todo... | |
| 114 | + | |
| 115 | +## Enabling SSL | |
| 116 | + | |
| 117 | +Todo... | |
| 88 | 118 | |
| 89 | 119 | ## Troubleshooting |
| 90 | 120 | |
| 91 | 121 | * The server tries to run `python3`. If only a `python3.5` command is available, you need to set the default python using the OS package manager or manually create a symbolic link: |
| 92 | - - macOS/macports: sudo port select --set python3 python35 | |
| 93 | - - FreeBSD 11: cd /usr/local/bin; ln -s python3.5 python3 | |
| 122 | + - macOS/macports: `sudo port select --set python3 python35` | |
| 123 | + - FreeBSD 11: `cd /usr/local/bin; ln -s python3.5 python3` | |
| 94 | 124 | |
| 95 | 125 | * If you are getting any `UnicodeEncodeError` type of errors that's because the terminal is not supporting UTF-8. Try running `locale` on the terminal and see if there is any error messages. Solutions: |
| 96 | 126 | - debian: fix it with `sudo dpkg-reconfigure locales`, select your UTF-8 locales and try again. | ... | ... |