Deploying Serum Site
Friday, 8 May 2020
It’s has been a long time since i’m doing a blog, also writing some experiment results or technical tutorial. Now, i’m back. Currently, i’m starting to know more about functional programming and Elixir (because of work). So, i decided to also write this blog using Elixir. More precisely using Serum. Serum is a simple static generator written in Elixir. I don’t need the functionality of Phoenix for just a simple blog. I’ll show you the way on how to deploy Serum
asdf : the multiple runtime version manager
Do you run multiple runtime system for your work ? You maybe run several version of Ruby, multiple version of Python, and also Rust on your machine. Fear not, there is now a single runtime manager for all those languages. Its written on shell script and can be extended with multiple plugins to support your preferred language and runtime environment. It’s called asdf
So, before i start using Elixir and Serum, i installed this manager on the machine with i’m working with as the server for this blog. Here are the steps you need to deploy asdf into your box.
install the dependencies
sudo apt install curl git
clone asdf latest branch
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.7.8
add asdf to our shell
add the following to your ./bashrc
. $HOME/.asdf/asdf.sh
. $HOME/.asdf/completions/asdf.bash
restart your shell or just sourced your ./bashrc
source ~/.bashrc
deploying elixir using asdf
elixir and BEAM vm also can be managed using asdf.
install asdf erlang/otp plugin and elixir plugin
asdf plugin add erlang
asdf plugin add elixir
install BEAM vm and erlang/otp runtime using asdf
asdf install erlang 22.3.3 + install elixir using asdf -
asdf install elixir 1.10.3-otp-22
creating your serum site
serum is really easy to install, because its already wrapped into Hex package
install serum as mix archive
mix archive.install hex serum_new
initiate your site
mix serum.new $HOME/segmentationfault_xyz
fetch the dependencies
cd $HOME/segmentationfault_xyz
mix deps.get && mix compile
start to write content
- post in form of pages are located under /pages directory
- blog posts are located under /posts directory. write a post in a form of markdown document formatted add a theme into your site
add a theme as dependency on your mix.exs file
defp deps do [ {:serum, "~> 1.4"}, {:serum_theme_essence, "~> 1.0"} ] end
in order to check your post, you can run a serum server on your box
$ mix serum.server --port 8080
build your site
MIX_ENV=prod mix serum.build
- all site structure and assets will be put under /site directory. you can serve this directory using web server such as nginx
- done. enjoy!
Note : this site structure is put under this github repository.