Commit 77ef8d7abf14fcb986a510116dfd316fda9e020a
1 parent
d23257c6
Exists in
master
and in
1 other branch
- updated README.md documentation to the new tornado server.
Showing
1 changed file
with
36 additions
and
21 deletions
Show diff stats
README.md
| @@ -10,8 +10,9 @@ | @@ -10,8 +10,9 @@ | ||
| 10 | 10 | ||
| 11 | The webserver is a python application and requires `python3.6` and `pip` to be installed, plus the following additional packages: | 11 | The webserver is a python application and requires `python3.6` and `pip` to be installed, plus the following additional packages: |
| 12 | 12 | ||
| 13 | -- CherryPy | ||
| 14 | -- Mako | 13 | +- ~~CherryPy~~ |
| 14 | +- ~~Mako~~ | ||
| 15 | +- tornado | ||
| 15 | - Markdown | 16 | - Markdown |
| 16 | - PyYAML | 17 | - PyYAML |
| 17 | - Pygments | 18 | - Pygments |
| @@ -23,7 +24,7 @@ These can be installed for a single user (recommended), in a python virtual envi | @@ -23,7 +24,7 @@ These can be installed for a single user (recommended), in a python virtual envi | ||
| 23 | #### Installing packages for a single user (recommended) | 24 | #### Installing packages for a single user (recommended) |
| 24 | 25 | ||
| 25 | ```.bash | 26 | ```.bash |
| 26 | -pip install --user cherrypy mako markdown pyyaml pygments sqlalchemy bcrypt | 27 | +pip3 install --user tornado markdown pyyaml pygments sqlalchemy bcrypt |
| 27 | ``` | 28 | ``` |
| 28 | 29 | ||
| 29 | #### Installing packages in a virtual environment (alternative) | 30 | #### Installing packages in a virtual environment (alternative) |
| @@ -32,7 +33,7 @@ pip install --user cherrypy mako markdown pyyaml pygments sqlalchemy bcrypt | @@ -32,7 +33,7 @@ pip install --user cherrypy mako markdown pyyaml pygments sqlalchemy bcrypt | ||
| 32 | pyvenv-3.6 venv/perguntations # or other virtualenv directory | 33 | pyvenv-3.6 venv/perguntations # or other virtualenv directory |
| 33 | source venv/perguntations/bin/activate # activate virtualenv | 34 | source venv/perguntations/bin/activate # activate virtualenv |
| 34 | 35 | ||
| 35 | -pip install cherrypy mako markdown pyyaml pygments sqlalchemy bcrypt | 36 | +pip3 install tornado markdown pyyaml pygments sqlalchemy bcrypt |
| 36 | ``` | 37 | ``` |
| 37 | 38 | ||
| 38 | #### Installing packages system wide (alternative) | 39 | #### Installing packages system wide (alternative) |
| @@ -42,7 +43,9 @@ I personally prefer python packages to be installed for a single user, but if a | @@ -42,7 +43,9 @@ I personally prefer python packages to be installed for a single user, but if a | ||
| 42 | - Linux: apt-get, etc | 43 | - Linux: apt-get, etc |
| 43 | - macOS: macports, etc | 44 | - macOS: macports, etc |
| 44 | 45 | ||
| 45 | -### Installing perguntations | 46 | +### Install and setup perguntations |
| 47 | + | ||
| 48 | +There is no installer, pip or otherwise. It's still in development and has to be run from sources. Use `git` to get the sources: | ||
| 46 | 49 | ||
| 47 | ```.bash | 50 | ```.bash |
| 48 | cd WHERE/TO/PUT/THE/SOFTWARE | 51 | cd WHERE/TO/PUT/THE/SOFTWARE |
| @@ -51,6 +54,25 @@ git clone https://USERNAME@bitbucket.org/USERNAME/perguntations.git | @@ -51,6 +54,25 @@ git clone https://USERNAME@bitbucket.org/USERNAME/perguntations.git | ||
| 51 | 54 | ||
| 52 | where USERNAME is your account on bitbucket. | 55 | where USERNAME is your account on bitbucket. |
| 53 | 56 | ||
| 57 | +The server will run an https server and requires valid certificates. | ||
| 58 | +To generate certificates, there are two possibilities: public server with static IP address or a private server. | ||
| 59 | + | ||
| 60 | +#### Generating certificates for a public server | ||
| 61 | + | ||
| 62 | +For a public server, `letsencrypt` will allow a certificate to be generated. | ||
| 63 | + | ||
| 64 | +TODO: explain... | ||
| 65 | + | ||
| 66 | +Copy certificates `cert.crt` and `cert.key` to the `perguntations/certs/` directory. | ||
| 67 | + | ||
| 68 | +#### Generating self-signed certificates | ||
| 69 | + | ||
| 70 | +Self-signed certificates are not certified by a recognised authority and browsers will complain that the certificate is not trusted. | ||
| 71 | + | ||
| 72 | +TODO: explain... | ||
| 73 | + | ||
| 74 | +Copy certificates `cert.crt` and `cert.key` to the `perguntations/certs/` directory. | ||
| 75 | + | ||
| 54 | ## Running a demo | 76 | ## Running a demo |
| 55 | 77 | ||
| 56 | The directory `demo` includes a demo test that can be used as a template for your own tests and questions. | 78 | The directory `demo` includes a demo test that can be used as a template for your own tests and questions. |
| @@ -63,10 +85,10 @@ cd WHERE/YOU/INSTALLED/perguntations | @@ -63,10 +85,10 @@ cd WHERE/YOU/INSTALLED/perguntations | ||
| 63 | # create and initialize database using one of the following methods: | 85 | # create and initialize database using one of the following methods: |
| 64 | ./initdb.py students.csv # from CSV file | 86 | ./initdb.py students.csv # from CSV file |
| 65 | ./initdb.py --demo # initialize with fake students | 87 | ./initdb.py --demo # initialize with fake students |
| 66 | -./initdb.py # empty | 88 | +./initdb.py # only adds the administrator account |
| 67 | mv students.db demo/ | 89 | mv students.db demo/ |
| 68 | 90 | ||
| 69 | -# create directory to put the student's answered tests | 91 | +# create directory to save the student's tests |
| 70 | mkdir demo/ans | 92 | mkdir demo/ans |
| 71 | 93 | ||
| 72 | # edit test configuration and check if everything looks right | 94 | # edit test configuration and check if everything looks right |
| @@ -80,17 +102,17 @@ We are now ready to run the server: | @@ -80,17 +102,17 @@ We are now ready to run the server: | ||
| 80 | ./serve.py demo/test.yaml # run demo test | 102 | ./serve.py demo/test.yaml # run demo test |
| 81 | ``` | 103 | ``` |
| 82 | 104 | ||
| 83 | -By default the server listens on port 8080 and 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 | 105 | +By default the server listens on port 8443 and on all IPs of all network interfaces. |
| 106 | +Open the browser at `http://127.0.0.1:8443/` and login as user number `0` (administrator) and choose any password. Then | ||
| 85 | 107 | ||
| 86 | 1. Authorize students by clicking the checkboxes. | 108 | 1. Authorize students by clicking the checkboxes. |
| 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. | 109 | +2. Open a different browser at `http://127.0.0.1:8443/` and login as one of the authorized students. Answer the questions and submit. |
| 88 | 110 | ||
| 89 | The server can be stoped from the terminal with `^C`. | 111 | The server can be stoped from the terminal with `^C`. |
| 90 | 112 | ||
| 91 | -## Running on port 80 | 113 | +## Running on lower ports 80 or 443 |
| 92 | 114 | ||
| 93 | -Ports 80 and 443 are 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. | 115 | +Ports 80 and 443 are 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 443 to 8443 where the server is listening. The details depend on the operating system. |
| 94 | 116 | ||
| 95 | ### debian: | 117 | ### debian: |
| 96 | 118 | ||
| @@ -132,16 +154,9 @@ Edit `rc.conf` | @@ -132,16 +154,9 @@ Edit `rc.conf` | ||
| 132 | 154 | ||
| 133 | Reboot. | 155 | Reboot. |
| 134 | 156 | ||
| 135 | -## Enabling SSL | ||
| 136 | - | ||
| 137 | -Todo... | ||
| 138 | - | ||
| 139 | ## Troubleshooting | 157 | ## Troubleshooting |
| 140 | 158 | ||
| 141 | -* The server tries to run `python3`. If only a `python3.6` command is available, you need to set the default python using the OS package manager or manually create a symbolic link: | ||
| 142 | - - macOS/macports: `sudo port select --set python3 python36` | ||
| 143 | - - FreeBSD 11: `cd /usr/local/bin; ln -s python3.6 python3` | ||
| 144 | - | 159 | +* The server tries to run `python3.6` so this command must be accessible from user accounts. |
| 145 | * If you are getting any `UnicodeEncodeError` type of errors that's because the terminal is not supporting UTF-8. This error may occur when a unicode character is printed to the screen by the server or, when running question generator or correction scripts, a message is piped between the server and the scripts that includes unicode characters. | 160 | * If you are getting any `UnicodeEncodeError` type of errors that's because the terminal is not supporting UTF-8. This error may occur when a unicode character is printed to the screen by the server or, when running question generator or correction scripts, a message is piped between the server and the scripts that includes unicode characters. |
| 146 | Try running `locale` on the terminal and see if there are any error messages. Solutions: | 161 | Try running `locale` on the terminal and see if there are any error messages. Solutions: |
| 147 | - debian: fix it with `sudo dpkg-reconfigure locales`, select your UTF-8 locales and try again. | 162 | - debian: fix it with `sudo dpkg-reconfigure locales`, select your UTF-8 locales and try again. |
| @@ -162,4 +177,4 @@ Try running `locale` on the terminal and see if there are any error messages. So | @@ -162,4 +177,4 @@ Try running `locale` on the terminal and see if there are any error messages. So | ||
| 162 | 177 | ||
| 163 | ### Contacts ### | 178 | ### Contacts ### |
| 164 | 179 | ||
| 165 | -* Miguel Barão mjsb@di.uevora.pt | ||
| 166 | \ No newline at end of file | 180 | \ No newline at end of file |
| 181 | +* Miguel Barão mjsb@uevora.pt | ||
| 167 | \ No newline at end of file | 182 | \ No newline at end of file |