Add HTTPS file server Demo
The demo shows how to run the unmodified HTTPS file server with Occlum.
This commit is contained in:
parent
5f26bfc1fb
commit
ba6b4cc028
5
demo/https_server/.gitignore
vendored
Normal file
5
demo/https_server/.gitignore
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
mongoose_src/
|
||||||
|
deps/
|
||||||
|
occlum_workspace/
|
||||||
|
simplest_web_server_ssl
|
||||||
|
server.*
|
27
demo/https_server/README.md
Normal file
27
demo/https_server/README.md
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# Use Mongoose HTTPS file server with Occlum
|
||||||
|
|
||||||
|
This project demonstrates how to run a HTTPS file server with [Mongoose Embedded Web Server Library](https://github.com/cesanta/mongoose).
|
||||||
|
|
||||||
|
Step 1: Download and build Mongoose and OpenSSL, then build the sample HTTPS file server shipped with Mongoose's source code
|
||||||
|
```
|
||||||
|
./download_and_build_mongoose.sh
|
||||||
|
```
|
||||||
|
When completed, the resulting file server can be found at `./mongoose_src/examples/simplest_web_server_ssl/simplest_web_server_ssl`.
|
||||||
|
|
||||||
|
Step 2: You can run the HTTPS file server either on Occlum
|
||||||
|
```
|
||||||
|
./run_https_server_in_occlum.sh
|
||||||
|
```
|
||||||
|
or on Linux
|
||||||
|
```
|
||||||
|
./run_https_server_in_linux.sh
|
||||||
|
```
|
||||||
|
The HTTPS file server should now start to listen on port 8443 and serve HTTPS requests.
|
||||||
|
|
||||||
|
Step 3: To check whether the HTTPS server works, run
|
||||||
|
```
|
||||||
|
curl -k https://127.0.0.1:8443
|
||||||
|
```
|
||||||
|
in another terminal.
|
||||||
|
|
||||||
|
It is also possible to access the HTTPS server directly in a Web browser. But if you are testing in a Docker container, you won't be able to open the URL `https://127.0.0.1:8443` in a browser on the host OS. To fix this, you have to manually map port 8843 of the Docker container to a port on the host OS. Check out how to use [the `-p` argument of `docker run` command](https://docs.docker.com/engine/reference/commandline/run/).
|
29
demo/https_server/download_and_build_mongoose.sh
Executable file
29
demo/https_server/download_and_build_mongoose.sh
Executable file
@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# 1. Download and install OpenSSL 1.1.1
|
||||||
|
mkdir -p deps/openssl
|
||||||
|
pushd deps/openssl
|
||||||
|
git clone https://github.com/openssl/openssl .
|
||||||
|
git checkout tags/OpenSSL_1_1_1 -b OpenSSL_1_1_1
|
||||||
|
CC=occlum-gcc ./config \
|
||||||
|
--prefix=/usr/local/occlum/x86_64-linux-musl \
|
||||||
|
--openssldir=/usr/local/occlum/ssl \
|
||||||
|
--with-rand-seed=rdcpu \
|
||||||
|
no-zlib no-async no-tests \
|
||||||
|
-fPIC -pie
|
||||||
|
make -j
|
||||||
|
sudo make install
|
||||||
|
popd
|
||||||
|
|
||||||
|
# 2. Download Mongoose 6.15
|
||||||
|
mkdir -p mongoose_src
|
||||||
|
pushd mongoose_src
|
||||||
|
git clone https://github.com/cesanta/mongoose .
|
||||||
|
git checkout tags/6.15 -b 6.15
|
||||||
|
popd
|
||||||
|
|
||||||
|
# 3. Build the https server example in mongoose
|
||||||
|
pushd mongoose_src/examples/simplest_web_server_ssl
|
||||||
|
CC=occlum-gcc CFLAGS_EXTRA="-Wno-format-truncation -fPIC -pie" make
|
||||||
|
popd
|
11
demo/https_server/run_https_server_in_linux.sh
Executable file
11
demo/https_server/run_https_server_in_linux.sh
Executable file
@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
export LD_LIBRARY_PATH=/usr/local/occlum/x86_64-linux-musl/lib:$LD_LIBRARY_PATH
|
||||||
|
https_server=simplest_web_server_ssl
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# 1. Copy files
|
||||||
|
cp -f mongoose_src/examples/simplest_web_server_ssl/$https_server .
|
||||||
|
cp -rf mongoose_src/examples/simplest_web_server_ssl/server.* .
|
||||||
|
|
||||||
|
# 2. Run https_server
|
||||||
|
./$https_server
|
19
demo/https_server/run_https_server_in_occlum.sh
Executable file
19
demo/https_server/run_https_server_in_occlum.sh
Executable file
@ -0,0 +1,19 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
https_server=simplest_web_server_ssl
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# 1. Init Occlum Workspace
|
||||||
|
rm -rf occlum_workspace
|
||||||
|
mkdir occlum_workspace
|
||||||
|
cd occlum_workspace
|
||||||
|
occlum init
|
||||||
|
|
||||||
|
# 2. Copy files into Occlum Workspace and Build
|
||||||
|
cp ../mongoose_src/examples/simplest_web_server_ssl/$https_server image/bin
|
||||||
|
cp -r ../mongoose_src/examples/simplest_web_server_ssl/server.* image
|
||||||
|
cp /usr/local/occlum/x86_64-linux-musl/lib/libssl.so.1.1 image/lib
|
||||||
|
cp /usr/local/occlum/x86_64-linux-musl/lib/libcrypto.so.1.1 image/lib
|
||||||
|
occlum build
|
||||||
|
|
||||||
|
# 3. Run https_server
|
||||||
|
occlum run /bin/$https_server
|
Loading…
Reference in New Issue
Block a user