...
The JEDI web applications, https://experiments.jcsda.org and https://skylab.jcsda.org, run on two individual AWS EC2 instances in the jscda-noaa account in us-east-1. They are voila applications running on port 8866 on an nginx web server on ports 80/443. The web apps are simply python notebooks in the diag-plots repository with r2d2-client as the only JCSDA dependency. These packages are located in /home/ubuntu. A python virtual environment located in /home/ubuntu/venv_web_app is used to install the required python packages and execute the voila application as a service.
...
For activating the web app's virtual environment in /home/ubuntu/venv_web_app and exporting R2D2's environmental variables for the client's configuration, execute source /home/ubuntu/setup.sh.
| Code Block | ||||
|---|---|---|---|---|
| ||||
#!/bin/bash source /home/ubuntu/venv_web_app/bin/activate export R2D2_USER=r2d2-web-app export R2D2_HOST=aws-us-east-1 export R2D2_COMPILER=unknown export R2D2_API_KEY=6a8bacf2-d6ae-11f0-9286-06d3b1fbe489 export R2D2_LOG_LEVEL=SILENT |
...
The Nginx configuration files are located at /etc/nginx/sites-enabled/experiments.jcsda.org and /etc/nginx/sites-enabled/skylab.jcsda.org. Be sure to replace the word "experiments" with "skylab" for the other web app's file.
| Code Block | ||
|---|---|---|
| ||
server {
server_name experiments.jcsda.org;
proxy_buffering off;
location / {
proxy_pass http://localhost:8866;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
}
client_max_body_size 100M;
error_log /var/log/nginx/error.log;
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/experiments.jcsda.org/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/experiments.jcsda.org/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = experiments.jcsda.org) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name experiments.jcsda.org;
return 301 https://$host$request_uri;
# return 404; # managed by Certbot
} |
...
The Voila configuration files are located at /usr/lib/systemd/system/voila.service.
| Code Block | ||
|---|---|---|
| ||
[Unit] Description=Voila [Service] Type=simple PIDFile=/run/voila.pid ExecStart=/home/ubuntu/venv_web_app/bin/python3.10 -m voila --no-browser --show_traceback=False diag-plots/src/jedi_data_viewer/skylab_data_viewer.ipynb User=ubuntu WorkingDirectory=/home/ubuntu/ Restart=always RestartSec=10 [Install] WantedBy=multi-user.target |
...
The certificate should be automatically updated and managed via CertBot and Let's Encrypt. If you need to manually update the certificate you can follow this procedure.
...
| Code Block | ||
|---|---|---|
|
Run:
...
sudo certbot --nginx |
Installing Python 3.10 on Ubuntu 20.04
Restrictions on RPM Packages
...
| language | shell |
|---|
...
Updates to OS
| Code Block | ||
|---|---|---|
| ||
sudo apt update sudo apt upgrade sudo apt install build-essential libssl-dev libffi-dev |
...
| Code Block | ||
|---|---|---|
| ||
import ipywidgets as widgets
out = widgets.Output(layout={'border': '1px solid black'})
display(out)
from jedi_data_viewer_experiments import JediDataViewerExperiments
jedi_data_viewer_experiments = JediDataViewerExperiments(out)
with self._out: print('My message here') |
Web page fails to load
Issue: the web pages will fail to load/ timeout
Explanation: Each time the website is hit a new python kernel is opened and will stay open forever. Therefore, when the instance memory is full of these python kernels the page will go down.
Solution: Reboot the EC2 Instance (see procedure above)
Launch New Instance Running Voila and Nginx [OUTDATED]
Instructions from https://docs.google.com/document/d/1vqK-qAxBGt_I9j6VG1SSLtPhQp89PzV4Y32yuWLWbUg/edit
...