Skip to content

Latest commit

 

History

History
107 lines (70 loc) · 1.49 KB

README.md

File metadata and controls

107 lines (70 loc) · 1.49 KB

apache-rs

Rust FFI for creating Apache httpd modules.

There is a bundled example implementing mod_hello from the Apache httpd documentation: https://httpd.apache.org/docs/2.4/developer/modguide.html.

Setup

bindgen

https://rust-lang.github.io/rust-bindgen/requirements.html

  • Install system packages
sudo apt install llvm-dev libclang-dev clang

Apache httpd

  • Install system packages
sudo apt install apache2-dev libapr1-dev

Build

FFI

  • Build project
cargo build
cargo test --lib

Apache httpd module

  • Build Apache httpd module mod_hello
cd examples/mod_hello/
cargo build

Test

Locally

  • Build and install modules
cd examples/mod_hello/
cargo build
sudo apxs -i -a -n example ./target/debug/libmod_hello.so
cd examples/mod_sum/
cargo build
sudo apxs -i -a -n sum ./target/debug/libmod_sum.so
  • Add module configurations
sudo tee /etc/apache2/mods-available/hello.conf > /dev/null <<EOT
<IfModule hello_module>
    <Location "/hello">
        SetHandler hello-handler
    </Location>
</IfModule>
EOT
sudo a2enmod hello
sudo tee /etc/apache2/mods-available/sum.conf > /dev/null <<EOT
<IfModule sum_module>
    AddHandler sum-handler .sum
</IfModule>
EOT
sudo a2enmod sum
  • Restart Apache httpd to load configuration
sudo systemctl restart apache2