2013-02-13 00:18:59 +08:00
# Discourse Advanced Developer Install Guide
2013-08-24 19:31:02 +08:00
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.
2013-02-13 00:18:59 +08:00
2016-06-02 02:42:05 +08:00
# Preparing a fresh Ubuntu install
2016-06-11 22:01:35 +08: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-02 02:42:05 +08:00
# Basics
whoami > /tmp/username
sudo add-apt-repository ppa:chris-lea/redis-server
sudo apt-get -yqq update
2016-06-03 01:06:04 +08:00
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
2016-06-02 02:42:05 +08:00
# Ruby
curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
2016-06-03 01:06:04 +08:00
curl -sSL https://get.rvm.io | bash -s stable
2016-06-02 02:42:05 +08:00
echo 'gem: --no-document' >> ~/.gemrc
2016-06-03 01:06:04 +08:00
# Logout and back in to activate RVM installation
2016-06-02 02:42:05 +08:00
rvm install 2.3.1
rvm --default use 2.3.1 # If this error out check https://rvm.io/integration/gnome-terminal
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-25 11:49:22 +08:00
psql -d discourse_development -c "CREATE EXTENSION hstore;"
psql -d discourse_development -c "CREATE EXTENSION pg_trgm;"
2016-06-03 01:06:04 +08:00
exit
2013-02-13 00:18:59 +08:00
2016-06-02 02:42:05 +08:00
# Node
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash
# exit the terminal and open it again
nvm install 6.2.0
nvm alias default 6.2.0
npm install -g svgo phantomjs-prebuilt
2013-02-13 00:18:59 +08:00
2014-06-04 07:18:32 +08:00
2016-06-02 02:42:05 +08:00
If everything goes alright, let's clone Discourse and start hacking:
2014-06-04 07:18:32 +08:00
2016-06-02 02:42:05 +08:00
git clone https://github.com/discourse/discourse.git ~/discourse
cd ~/discourse
bundle install
bundle exec rake db:create db:migrate db:test:prepare
2016-06-03 01:06:04 +08:00
bundle exec rake autospec # CTRL + C to stop; Optional
bundle exec rails s -b 0.0.0.0 # Open browser on http://localhost:3000 and you should see Discourse
2013-03-25 11:49:22 +08:00
2016-06-02 02:42:05 +08:00
Create a test account, and enable it with:
2014-07-01 22:12:52 +08:00
2016-06-02 02:42:05 +08:00
bundle exec rails c
u = User.find_by_id 1
u.activate
u.grant_admin!
exit
2014-07-01 22:12:52 +08:00
2016-06-02 02:42:05 +08:00
Discourse does a lot of stuff async, so it's better to run sidekiq even on development mode:
2013-03-25 11:49:22 +08:00
2016-06-02 02:42:05 +08:00
ruby $(mailcatcher) # open http://localhost:1080 to see the emails, stop with pkill -f mailcatcher
2016-06-21 05:34:39 +08:00
bundle exec sidekiq -q critical,low,default -d -l log/sidekiq.log # open http://localhost:3000/sidekiq to see the queue, stop with pkill -f sidekiq
2016-06-02 02:42:05 +08:00
bundle exec rails server
2013-03-25 11:49:22 +08:00
2016-06-02 02:42:05 +08:00
And happy hacking!