1
0
mirror of https://github.com/mgerb/classic-wow-forums synced 2026-01-09 00:42:47 +00:00

Classic WoW Forums

Generate a new app

mix phx.new myapp --module MyApp --no-brunch --no-html --database postgres

Start the server

  • Install dependencies with mix deps.get
  • Create and migrate your database with mix ecto.create && mix ecto.migrate
  • Start Phoenix endpoint with mix phx.server

Production

Ready to run in production? Please check our deployment guides.

Ecto

Create new database table

  • mix ecto.gen.migration create_user
  • mix ecto.migrate

Production

  • MIX_ENV=prod mix ecto.create
  • MIX_ENV=prod mix ecto.migrate
  • PORT=80 MIX_ENV=prod mix run priv/repo/seeds.exs
  • PORT=80 MIX_ENV=prod mix phx.server

Installing Elixir on Centos 7

Update the system

sudo yum install epel-release
sudo yum update
sudo reboot

Install Erlang

wget https://packages.erlang-solutions.com/erlang/esl-erlang/FLAVOUR_1_general/esl-erlang_20.2.2-1~centos~7_amd64.rpm
sudo rpm -Uvh ./esl-erlang_20.2.2-1~centos~7_amd64.rpm
sudo yum install erlang

Install Elixir

mkdir -p /usr/bin/elixir
sudo wget https://github.com/elixir-lang/elixir/releases/download/v1.5.2/Precompiled.zip
sudo yum install unzip
sudo unzip Precompiled.zip
export PATH=$PATH:/usr/bin/elixir/bin

Might have to install GCC - needed for comonin/argon2

yum group install "Development Tools"

Installing Elixir on C9

# for some reason C9 complains this file is missing when it tries to remove couchdb
sudo touch /etc/init.d/couchdb

sudo apt-get install inotify-tools
wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb && sudo dpkg -i erlang-solutions_1.0_all.deb
wget http://packages.erlang-solutions.com/ubuntu/erlang_solutions.asc
sudo apt-key add erlang_solutions.asc
sudo apt-get update
sudo apt-get install esl-erlang
sudo apt-get install elixir
mix local.hex

Using Dialyzer for type checking

  • Setup with Phoenix
  • Uses ExGuard to run every time a file is changed.
  • Run mix guard to start watching files.
  • Check out .exguard.exs for configuration.

Postgres setup

Setup on Centos7

Change password to postgres user

sudo -u user_name psql db_name

or 

ALTER USER postgres WITH PASSWORD 'new_password';

Edit /var/lib/pgsql/data/pg_hba.conf

local   all   all   trust
systemctl restart postgresql

Postgres in docker container

docker run --name postgres1 -p 5432:5432 -e POSTGRES_PASSWORD=postgres -d postgres

Issues encountered

Battlenet API

Battlenet required https for a redirect for authentication. I use caddy for https proxy during development.

Caddyfile

https://localhost {
        tls self_signed
        proxy / http://localhost:8080 {
                transparent
                websocket
        }
}

Hosting on Vultr

Centos setup from scratch

Enable private networking

/etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=<ip>
NETMASK=<netmask>
IPV6INIT=no
    MTU=1450

Disable firewalld (make sure firewall is enabled in vultr config)

systemctl disable firewalld

Install and start postgresql

sudo yum install postgresql-server postgresql-contrib
sudo postgresql-setup initdb
sudo systemctl start postgresql
sudo systemctl enable postgresql

Configure user

sudo passwd postgres
su postgres
psql -d template1 -c "ALTER USER postgres WITH PASSWORD 'newpassword';"

Allow connections on all interfaces

/var/lib/pgsql/data/postgresql.conf

listen_address='*'
/var/lib/pgsql/data/pg_hba.conf

host    all     all     0.0.0.0/0        md5

Database backup script

ssh -i ./prod_ssh_key root@<addr> 'su - postgres -c "pg_dump -U postgres myapp_prod"' >> "$(date +"%Y_%m_%d_%I_%M_%p")backup.sql"
Description
No description provided
Readme 2 MiB
Languages
Elixir 48%
TypeScript 42.2%
CSS 7.5%
JavaScript 1.3%
HTML 0.3%
Other 0.7%