discourse/docs/DEVELOPER-ADVANCED.md

77 lines
3.1 KiB
Markdown
Raw Normal View History

# Discourse Advanced Developer Install Guide
This guide is aimed at advanced Rails developers who have installed their own Rails apps before. If you are new to Rails, you are likely much better off with our **[Discourse Vagrant Developer Guide](VAGRANT.md)**.
Note: If you are developing on a Mac, you will probably want to look at [these instructions](DEVELOPMENT-OSX-NATIVE.md) as well.
2016-06-01 14:42:05 -04:00
# Preparing a fresh Ubuntu install
2016-06-11 10:01:35 -04:00
To get your Ubuntu 16.04 LTS install up and running to develop Discourse and Discourse plugins follow the commands below. We assume an English install of Ubuntu.
2016-06-01 14:42:05 -04:00
# Basics
whoami > /tmp/username
sudo add-apt-repository ppa:chris-lea/redis-server
sudo apt-get -yqq update
sudo apt-get -yqq install python-software-properties vim curl expect debconf-utils git-core build-essential zlib1g-dev libssl-dev openssl libcurl4-openssl-dev libreadline6-dev libpcre3 libpcre3-dev imagemagick postgresql postgresql-contrib-9.5 libpq-dev postgresql-server-dev-9.5 redis-server advancecomp gifsicle jhead jpegoptim libjpeg-turbo-progs optipng pngcrush pngquant gnupg2
2016-06-01 14:42:05 -04:00
# Ruby
curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
curl -sSL https://get.rvm.io | bash -s stable
2016-06-01 14:42:05 -04:00
echo 'gem: --no-document' >> ~/.gemrc
# exit the terminal and open it again to activate RVM
rvm install 2.3.4
rvm --default use 2.3.4 # If this error out check https://rvm.io/integration/gnome-terminal
2016-06-01 14:42:05 -04:00
gem install bundler mailcatcher
# Postgresql
sudo su postgres
createuser --createdb --superuser -Upostgres $(cat /tmp/username)
psql -c "ALTER USER $(cat /tmp/username) WITH PASSWORD 'password';"
psql -c "create database discourse_development owner $(cat /tmp/username) encoding 'UTF8' TEMPLATE template0;"
psql -c "create database discourse_test owner $(cat /tmp/username) encoding 'UTF8' TEMPLATE template0;"
2013-03-24 23:49:22 -04:00
psql -d discourse_development -c "CREATE EXTENSION hstore;"
psql -d discourse_development -c "CREATE EXTENSION pg_trgm;"
exit
2016-06-01 14:42:05 -04:00
# Node
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
# exit the terminal and open it again to activate NVM
nvm install node
nvm alias default node
2016-06-01 14:42:05 -04:00
npm install -g svgo phantomjs-prebuilt
2014-06-03 19:18:32 -04:00
2016-06-01 14:42:05 -04:00
If everything goes alright, let's clone Discourse and start hacking:
2014-06-03 19:18:32 -04:00
2016-06-01 14:42:05 -04:00
git clone https://github.com/discourse/discourse.git ~/discourse
cd ~/discourse
bundle install
2017-07-31 05:17:56 -04:00
bundle exec rake db:migrate
RAILS_ENV=test bundle exec rake db:migrate
# run the specs (optional)
bundle exec rake autospec # CTRL + C to stop
# launch discourse
bundle exec rails s -b 0.0.0.0 # open browser on http://localhost:3000 and you should see Discourse
2013-03-24 23:49:22 -04:00
2016-06-01 14:42:05 -04:00
Create a test account, and enable it with:
2016-06-01 14:42:05 -04:00
bundle exec rails c
u = User.find(1)
2016-06-01 14:42:05 -04:00
u.activate
u.grant_admin!
exit
2016-06-01 14:42:05 -04:00
Discourse does a lot of stuff async, so it's better to run sidekiq even on development mode:
2013-03-24 23:49:22 -04:00
2016-06-01 14:42:05 -04:00
ruby $(mailcatcher) # open http://localhost:1080 to see the emails, stop with pkill -f mailcatcher
bundle exec sidekiq # open http://localhost:3000/sidekiq to see queues
2016-06-01 14:42:05 -04:00
bundle exec rails server
2013-03-24 23:49:22 -04:00
2016-06-01 14:42:05 -04:00
And happy hacking!