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,7 +26,7 @@ These can be installed for a single user (recommended), in a python virtual envi | ||
26 | pip install --user cherrypy mako markdown pyyaml pygments sqlalchemy bcrypt | 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 | ```.bash | 31 | ```.bash |
32 | pyvenv-3.5 venv/perguntations # or other virtualenv directory | 32 | pyvenv-3.5 venv/perguntations # or other virtualenv directory |
@@ -35,7 +35,7 @@ source venv/perguntations/bin/activate # activate virtualenv | @@ -35,7 +35,7 @@ source venv/perguntations/bin/activate # activate virtualenv | ||
35 | pip install cherrypy mako markdown pyyaml pygments sqlalchemy bcrypt | 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 | 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`: | 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,7 +53,9 @@ where USERNAME is your account on bitbucket. | ||
53 | 53 | ||
54 | ## Running a demo | 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 | ```.bash | 60 | ```.bash |
59 | cd WHERE/YOU/INSTALLED/perguntations | 61 | cd WHERE/YOU/INSTALLED/perguntations |
@@ -62,14 +64,13 @@ cd WHERE/YOU/INSTALLED/perguntations | @@ -62,14 +64,13 @@ cd WHERE/YOU/INSTALLED/perguntations | ||
62 | ./initdb.py students.csv # from CSV file | 64 | ./initdb.py students.csv # from CSV file |
63 | ./initdb.py --demo # initialize with fake students | 65 | ./initdb.py --demo # initialize with fake students |
64 | ./initdb.py # empty | 66 | ./initdb.py # empty |
65 | - | ||
66 | mv students.db demo/ | 67 | mv students.db demo/ |
67 | 68 | ||
69 | +# create directory to put the student's answered tests | ||
70 | +mkdir demo/ans | ||
71 | + | ||
68 | # edit test configuration and check if everything looks right | 72 | # edit test configuration and check if everything looks right |
69 | vi demo/test.yaml | 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 | We are now ready to run the server: | 76 | We are now ready to run the server: |
@@ -79,18 +80,47 @@ We are now ready to run the server: | @@ -79,18 +80,47 @@ We are now ready to run the server: | ||
79 | ./serve.py demo/test.yaml # run demo test | 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 | 1. Authorize students by clicking the checkboxes. | 86 | 1. Authorize students by clicking the checkboxes. |
85 | 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. | 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 | ## Troubleshooting | 119 | ## Troubleshooting |
90 | 120 | ||
91 | * 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: | 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 | * 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: | 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 | - debian: fix it with `sudo dpkg-reconfigure locales`, select your UTF-8 locales and try again. | 126 | - debian: fix it with `sudo dpkg-reconfigure locales`, select your UTF-8 locales and try again. |