Files
BeetRoundServer/README.md

125 lines
2.7 KiB
Markdown

# BeetRoundServer
To start your Phoenix server:
- Run `mix setup` to install and setup dependencies
- Start Phoenix endpoint with `mix phx.server` or inside IEx with `iex -S mix phx.server`
Now you can visit [`localhost:4000`](http://localhost:4000) from your browser.
Ready to run in production? Please [check our deployment guides](https://hexdocs.pm/phoenix/deployment.html).
# Deployment on new uberspace asteroid
## Initial deployment
### Add subdomain
uberspace web domain add beetround.example.com
### Init database
Follow guide to initialize postgresql database:
https://lab.uberspace.de/guide_postgresql/
#### Configure database
createuser beetround_admin -P
createdb --encoding=UTF8 --owner=beetround_admin --template=template0 beetround_server
## Configure Elixir/Phoenix
uberspace tools version use erlang 27
## Build & run BeetRound
cd ~/
mkdir develop
git clone https://git.working-copy.org/bent/BeetRoundServer.git
cd develop
export MIX_ENV=prod
mix deps.get
mix phx.gen.secret
export SECRET_KEY_BASE=<SECRET_KEY>
export DATABASE_URL=ecto://beetround_admin:<DB_PASSWORD>@localhost/beetround_server
mix assets.deploy #throws "'mix tailwind beet_round_server --minify' exited with 1" error
Workaround: copy assets from develop machine
mix compile
PHX_HOST=beetround.example.com PORT=4005 mix ecto.migrate
### Create webbackend
uberspace web backend set beetround.example.com --http --port 4005
#### Test backend
PHX_HOST=beetround.example.com PORT=4005 mix phx.server
#### Create mix release
mix release
### Create service
nvim ~/etc/services.d/beetround_server.ini
```
[program:beetround_server]
command=%(ENV_HOME)s/develop/BeetRoundServer/_build/prod/rel/beet_round_server/bin/beet_round_server
directory=%(ENV_HOME)s/develop/BeetRoundServer
autostart=true
autorestart=true
startsecs=60
environment =
MAIL_RELAY="<UBERSPACE_ASTEROID>.uberspace.de",
MAIL_ADDRESS="<MAIL_ADDRESS>",
MAIL_PW="<MAIL_PASSWORD>",
PHX_HOST="beetround.example.com",
MIX_ENV=prod,
PORT=4005,
DATABASE_URL="ecto://beetround_admin:<DB_PASSWORD>@localhost/beetround_server",
SECRET_KEY_BASE=<SECRET_KEY>
```
supervisorctl reread
supervisorctl update
supervisorctl status
## Updates (TODO old content. needs to be adjusted/checked)
Steps on develop environment:
- create new release version (with git flow)
- push main branch to repo
Steps on server:
- cd develop/SplitPot/
- pull main branch
- mix deps.get --only prod
- MIX_ENV=prod mix assets.deploy
- export BUILD_DATE="DD.MM.YYYY"
- MIX_ENV=prod mix release
- supervisorctl stop splitpot_server
- DB migrations
- export DATABASE_URL=...
- export SECRET_BASE_KEY=...
- MIX_ENV=prod mix ecto.migrate
- supervisorctl start splitpot_server