Commit 77ef8d7abf14fcb986a510116dfd316fda9e020a

Authored by Miguel Barão
1 parent d23257c6
Exists in master and in 1 other branch dev

- updated README.md documentation to the new tornado server.

Showing 1 changed file with 36 additions and 21 deletions   Show diff stats
@@ -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