From a835a4263e5a55be22d38b6ef6322ffebf8f33ce Mon Sep 17 00:00:00 2001 From: Mitchell Date: Sat, 17 Feb 2018 22:32:42 -0600 Subject: [PATCH] update readme - make open source --- README.md | 148 ++++-------------------- client/app/components/header/header.tsx | 5 +- server_config.md | 89 ++++++++++++++ 3 files changed, 118 insertions(+), 124 deletions(-) create mode 100644 server_config.md diff --git a/README.md b/README.md index d0ebb7f..b34ad6f 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,31 @@ # Classic WoW Forums +World of Warcraft forums as they were in 2005. -## Generate a new app -`mix phx.new myapp --module MyApp --no-brunch --no-html --database postgres` +I started working on this project to learn Elixir/Phoenix. +The goal was to make a forum that replicates +the World of Warcraft forums as they were back in 2005. +Currently the forums are fully functional and can be +seen at https://classicwowforums.com. + +Made with: +- Elixir/Phoenix +- React/Mobx +- Postgres + +## Config files +- all config files are in the config folder +- remove the .template from them +- create a new app in the battle.net api and add your keys ## Start the server + - Install dependencies with `mix deps.get` + - Create and migrate your database with `mix ecto.setup` + - Start server with `mix phx.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](http://www.phoenixframework.org/docs/deployment). +## Build the client +- `cd client` +- `yarn install` +- `yarn run dev` # Ecto @@ -25,57 +40,11 @@ Ready to run in production? Please [check our deployment guides](http://www.phoe - `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 +## Postgres in docker container ``` -sudo yum install epel-release -sudo yum update -sudo reboot +docker run --name postgres1 -p 5432:5432 -e POSTGRES_PASSWORD=postgres -d postgres ``` -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](https://github.com/jeremyjh/dialyxir/wiki/Phoenix-Dialyxir-Quickstart) -- Uses [ExGuard](https://github.com/slashmili/ex_guard) 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](https://linode.com/docs/databases/postgresql/how-to-install-postgresql-relational-databases-on-centos-7/) @@ -98,17 +67,6 @@ 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 - -- Building the client files fails with not enough ram -- It runs out of ram on a Centos vps so I needed to add more swap space -- https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-centos-7 - # Battlenet API Battlenet required https for a redirect for authentication. I use caddy for https proxy during development. @@ -122,59 +80,3 @@ https://localhost { } } ``` - -# Hosting on Vultr - -### Centos setup from scratch -[Enable private networking](https://www.vultr.com/docs/configuring-private-network) -``` -/etc/sysconfig/network-scripts/ifcfg-eth1 - -DEVICE=eth1 -ONBOOT=yes -NM_CONTROLLED=no -BOOTPROTO=static -IPADDR= -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@ 'su - postgres -c "pg_dump -U postgres myapp_prod"' >> "$(date +"%Y_%m_%d_%I_%M_%p")backup.sql" -``` diff --git a/client/app/components/header/header.tsx b/client/app/components/header/header.tsx index 91f22d8..0153c3e 100644 --- a/client/app/components/header/header.tsx +++ b/client/app/components/header/header.tsx @@ -39,7 +39,10 @@ export class Header extends React.Component {
- Home | Realms | Contact + Home + | Realms + | Contact + | Source
diff --git a/server_config.md b/server_config.md new file mode 100644 index 0000000..d64c901 --- /dev/null +++ b/server_config.md @@ -0,0 +1,89 @@ +# Issues encountered +- Building the client files fails with not enough ram +- It runs out of ram on a Centos vps so I needed to add more swap space +- https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-centos-7 + +# 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" +``` + +# Hosting on Vultr + +### Centos setup from scratch +[Enable private networking](https://www.vultr.com/docs/configuring-private-network) +``` +/etc/sysconfig/network-scripts/ifcfg-eth1 + +DEVICE=eth1 +ONBOOT=yes +NM_CONTROLLED=no +BOOTPROTO=static +IPADDR= +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@ 'su - postgres -c "pg_dump -U postgres myapp_prod"' >> "$(date +"%Y_%m_%d_%I_%M_%p")backup.sql" +```