Quote entire Ubuntu install guide
This commit is contained in:
parent
89df580560
commit
0836d1a9ac
|
@ -1,396 +1,396 @@
|
||||||
> # Warning: This Guide is Deprecated
|
# Warning: This Guide is Deprecated
|
||||||
> We only support Docker based installs now. Please see [our **official install guide**](https://github.com/discourse/discourse/blob/master/docs/INSTALL.md) for supported install instructions.
|
We only support Docker based installs now. Please see [our **official install guide**](https://github.com/discourse/discourse/blob/master/docs/INSTALL.md) for supported install instructions.
|
||||||
|
|
||||||
# Discourse Ubuntu Install Guide
|
> # Discourse Ubuntu Install Guide
|
||||||
|
|
||||||
## Recommended Server Hardware
|
> ## Recommended Server Hardware
|
||||||
|
|
||||||
- 2 GB of RAM
|
> - 2 GB of RAM
|
||||||
- 2 GB of swap
|
> - 2 GB of swap
|
||||||
- 2 processor cores
|
> - 2 processor cores
|
||||||
|
|
||||||
With 2 GB of memory and dual cores, you can run two instances of the thin server (`NUM_WEBS=2`), and easily host anything but the largest of forums.
|
> With 2 GB of memory and dual cores, you can run two instances of the thin server (`NUM_WEBS=2`), and easily host anything but the largest of forums.
|
||||||
|
|
||||||
1 GB of memory, 3 GB of swap and a single core CPU are the minimums for a steady state, running Discourse forum – but it's simpler to just throw a bit more hardware at the problem if you can, particularly during the install.
|
> 1 GB of memory, 3 GB of swap and a single core CPU are the minimums for a steady state, running Discourse forum – but it's simpler to just throw a bit more hardware at the problem if you can, particularly during the install.
|
||||||
|
|
||||||
## Install Ubuntu Server 12.04 LTS (or later) with the package groups:
|
> ## Install Ubuntu Server 12.04 LTS (or later) with the package groups:
|
||||||
|
|
||||||
Yes, you can in theory pick the distro of your choice, but to keep this guide sane, we're picking one, and it's Ubuntu. Feel free to substitute the distro of your choice, the steps are mostly the same.
|
> Yes, you can in theory pick the distro of your choice, but to keep this guide sane, we're picking one, and it's Ubuntu. Feel free to substitute the distro of your choice, the steps are mostly the same.
|
||||||
|
|
||||||
![screenshot of package group selection screen](https://raw.github.com/discourse/discourse-docimages/master/install/ubuntu%20-%20install%20-%20software%20selection.png)
|
> ![screenshot of package group selection screen](https://raw.github.com/discourse/discourse-docimages/master/install/ubuntu%20-%20install%20-%20software%20selection.png)
|
||||||
|
|
||||||
* Basic Ubuntu server
|
> * Basic Ubuntu server
|
||||||
* OpenSSH server
|
> * OpenSSH server
|
||||||
* Mail server
|
> * Mail server
|
||||||
* PostgreSQL database (9.1+)
|
> * PostgreSQL database (9.1+)
|
||||||
|
|
||||||
You may be working on an already-installed or automatically deployed system, in which case you can install them afterwards:
|
> You may be working on an already-installed or automatically deployed system, in which case you can install them afterwards:
|
||||||
|
|
||||||
# Run these commands as your normal login (e.g. "michael")
|
> # Run these commands as your normal login (e.g. "michael")
|
||||||
sudo apt-get update && sudo apt-get -y upgrade
|
> sudo apt-get update && sudo apt-get -y upgrade
|
||||||
sudo tasksel install openssh-server
|
> sudo tasksel install openssh-server
|
||||||
sudo tasksel install mail-server
|
> sudo tasksel install mail-server
|
||||||
sudo tasksel install postgresql-server
|
> sudo tasksel install postgresql-server
|
||||||
|
|
||||||
### Configure the mail server:
|
> ### Configure the mail server:
|
||||||
|
|
||||||
![screenshot of mail server type configuration screen](https://raw.github.com/discourse/discourse-docimages/master/install/ubuntu%20-%20install%20-%20mail_1%20system%20type.png)
|
> ![screenshot of mail server type configuration screen](https://raw.github.com/discourse/discourse-docimages/master/install/ubuntu%20-%20install%20-%20mail_1%20system%20type.png)
|
||||||
|
|
||||||
In our example setup, we're going to configure as a 'Satellite system', forwarding all mail to our egress servers for delivery. You'll probably want to do that unless you're handling mail on the same machine as the Discourse software.
|
> In our example setup, we're going to configure as a 'Satellite system', forwarding all mail to our egress servers for delivery. You'll probably want to do that unless you're handling mail on the same machine as the Discourse software.
|
||||||
|
|
||||||
![screenshot of mail name configuration screen](https://raw.github.com/discourse/discourse-docimages/master/install/ubuntu%20-%20install%20-%20mail_2%20mailname.png)
|
> ![screenshot of mail name configuration screen](https://raw.github.com/discourse/discourse-docimages/master/install/ubuntu%20-%20install%20-%20mail_2%20mailname.png)
|
||||||
|
|
||||||
You probably want to configure your 'mail name' to be the base name of your domain. Note that this does not affect any email sent out by Discourse itself, just unqualified mail generated by systems programs.
|
> You probably want to configure your 'mail name' to be the base name of your domain. Note that this does not affect any email sent out by Discourse itself, just unqualified mail generated by systems programs.
|
||||||
|
|
||||||
![screenshot of relay host configuration screen](https://raw.github.com/discourse/discourse-docimages/master/install/ubuntu%20-%20install%20-%20mail_3%20relayconfig.png)
|
> ![screenshot of relay host configuration screen](https://raw.github.com/discourse/discourse-docimages/master/install/ubuntu%20-%20install%20-%20mail_3%20relayconfig.png)
|
||||||
|
|
||||||
If you have a mail server responsible for handling the egress of email from your network, enter it here. Otherwise, leave it blank.
|
> If you have a mail server responsible for handling the egress of email from your network, enter it here. Otherwise, leave it blank.
|
||||||
|
|
||||||
## Additional system packages
|
> ## Additional system packages
|
||||||
|
|
||||||
Install necessary packages:
|
> Install necessary packages:
|
||||||
|
|
||||||
# Run these commands as your normal login (e.g. "michael")
|
> # Run these commands as your normal login (e.g. "michael")
|
||||||
sudo apt-get -y install build-essential libssl-dev libyaml-dev git libtool libxslt-dev libxml2-dev libpq-dev gawk curl pngcrush imagemagick python-software-properties
|
> sudo apt-get -y install build-essential libssl-dev libyaml-dev git libtool libxslt-dev libxml2-dev libpq-dev gawk curl pngcrush imagemagick python-software-properties
|
||||||
|
|
||||||
# If you're on Ubuntu >= 12.10, change:
|
> # If you're on Ubuntu >= 12.10, change:
|
||||||
# python-software-properties to software-properties-common
|
> # python-software-properties to software-properties-common
|
||||||
|
|
||||||
## Caching: Redis
|
> ## Caching: Redis
|
||||||
|
|
||||||
Redis is a networked, in memory key-value store cache. Without the Redis caching layer, we'd have to go to the database a lot more often for common information and the site would be slower as a result.
|
> Redis is a networked, in memory key-value store cache. Without the Redis caching layer, we'd have to go to the database a lot more often for common information and the site would be slower as a result.
|
||||||
|
|
||||||
Be sure to install the latest stable Redis, as the package in the distro may be a bit old:
|
> Be sure to install the latest stable Redis, as the package in the distro may be a bit old:
|
||||||
|
|
||||||
sudo apt-add-repository -y ppa:rwky/redis
|
> sudo apt-add-repository -y ppa:rwky/redis
|
||||||
sudo apt-get update
|
> sudo apt-get update
|
||||||
sudo apt-get install redis-server
|
> sudo apt-get install redis-server
|
||||||
|
|
||||||
## Web Server: nginx
|
> ## Web Server: nginx
|
||||||
|
|
||||||
nginx is used for:
|
> nginx is used for:
|
||||||
|
|
||||||
* reverse proxy (i.e. load balancer)
|
> * reverse proxy (i.e. load balancer)
|
||||||
* static asset serving (since you don't want to do that from ruby)
|
> * static asset serving (since you don't want to do that from ruby)
|
||||||
* anonymous user cache
|
> * anonymous user cache
|
||||||
|
|
||||||
At Discourse, we recommend the latest version of nginx (we like the new and
|
> At Discourse, we recommend the latest version of nginx (we like the new and
|
||||||
shiny). To install on Ubuntu:
|
> shiny). To install on Ubuntu:
|
||||||
|
|
||||||
# Run these commands as your normal login (e.g. "michael")
|
> # Run these commands as your normal login (e.g. "michael")
|
||||||
# Remove any existing versions of nginx
|
> # Remove any existing versions of nginx
|
||||||
sudo apt-get remove '^nginx.*$'
|
> sudo apt-get remove '^nginx.*$'
|
||||||
|
|
||||||
# Setup a sources.list.d file for the nginx repository
|
> # Setup a sources.list.d file for the nginx repository
|
||||||
cat << 'EOF' | sudo tee /etc/apt/sources.list.d/nginx.list
|
> cat << 'EOF' | sudo tee /etc/apt/sources.list.d/nginx.list
|
||||||
deb http://nginx.org/packages/ubuntu/ precise nginx
|
> deb http://nginx.org/packages/ubuntu/ precise nginx
|
||||||
deb-src http://nginx.org/packages/ubuntu/ precise nginx
|
> deb-src http://nginx.org/packages/ubuntu/ precise nginx
|
||||||
EOF
|
> EOF
|
||||||
|
|
||||||
# Add nginx key
|
> # Add nginx key
|
||||||
curl http://nginx.org/keys/nginx_signing.key | sudo apt-key add -
|
> curl http://nginx.org/keys/nginx_signing.key | sudo apt-key add -
|
||||||
|
|
||||||
# install nginx
|
> # install nginx
|
||||||
sudo apt-get update && sudo apt-get -y install nginx
|
> sudo apt-get update && sudo apt-get -y install nginx
|
||||||
|
|
||||||
## Install Ruby with RVM
|
> ## Install Ruby with RVM
|
||||||
|
|
||||||
### RVM : Single-user installation
|
> ### RVM : Single-user installation
|
||||||
|
|
||||||
We recommend installing RVM isolated to a single user's environment.
|
> We recommend installing RVM isolated to a single user's environment.
|
||||||
|
|
||||||
## Discourse setup
|
> ## Discourse setup
|
||||||
|
|
||||||
Create Discourse user:
|
> Create Discourse user:
|
||||||
|
|
||||||
# Run these commands as your normal login (e.g. "michael")
|
> # Run these commands as your normal login (e.g. "michael")
|
||||||
sudo adduser --shell /bin/bash --gecos 'Discourse application' discourse
|
> sudo adduser --shell /bin/bash --gecos 'Discourse application' discourse
|
||||||
sudo install -d -m 755 -o discourse -g discourse /var/www/discourse
|
> sudo install -d -m 755 -o discourse -g discourse /var/www/discourse
|
||||||
|
|
||||||
Give Postgres database rights to the `discourse` user:
|
> Give Postgres database rights to the `discourse` user:
|
||||||
|
|
||||||
# Run these commands as your normal login (e.g. "michael")
|
> # Run these commands as your normal login (e.g. "michael")
|
||||||
sudo -u postgres createuser -s discourse
|
> sudo -u postgres createuser -s discourse
|
||||||
# If you will be using password authentication on your database, only
|
> # If you will be using password authentication on your database, only
|
||||||
# necessary if the database will be on a remote host
|
> # necessary if the database will be on a remote host
|
||||||
sudo -u postgres psql -c "alter user discourse password 'todayisagooddaytovi';"
|
> sudo -u postgres psql -c "alter user discourse password 'todayisagooddaytovi';"
|
||||||
|
|
||||||
Change to the 'discourse' user:
|
> Change to the 'discourse' user:
|
||||||
|
|
||||||
# Run this command as your normal login (e.g. "michael"), further commands should be run as 'discourse'
|
> # Run this command as your normal login (e.g. "michael"), further commands should be run as 'discourse'
|
||||||
sudo su - discourse
|
> sudo su - discourse
|
||||||
|
|
||||||
Install RVM
|
> Install RVM
|
||||||
|
|
||||||
# As 'discourse'
|
> # As 'discourse'
|
||||||
# Install RVM
|
> # Install RVM
|
||||||
\curl -s -S -L https://get.rvm.io | bash -s stable
|
> \curl -s -S -L https://get.rvm.io | bash -s stable
|
||||||
|
|
||||||
# Refresh your profile
|
> # Refresh your profile
|
||||||
. ~/.rvm/scripts/rvm
|
> . ~/.rvm/scripts/rvm
|
||||||
|
|
||||||
Install missing packages
|
> Install missing packages
|
||||||
|
|
||||||
# Install necessary packages for building ruby (this will only work if
|
> # Install necessary packages for building ruby (this will only work if
|
||||||
# you've given discourse sudo permissions, which is *not* the default)
|
> # you've given discourse sudo permissions, which is *not* the default)
|
||||||
# rvm requirements
|
> # rvm requirements
|
||||||
|
|
||||||
# NOTE: rvm will tell you which packages you (or your sysadmin) need
|
> # NOTE: rvm will tell you which packages you (or your sysadmin) need
|
||||||
# to install during this step. As discourse does not have sudo
|
> # to install during this step. As discourse does not have sudo
|
||||||
# permissions (likely the case), run:
|
> # permissions (likely the case), run:
|
||||||
|
|
||||||
rvm --autolibs=read-fail requirements
|
> rvm --autolibs=read-fail requirements
|
||||||
|
|
||||||
# For instance, if prompted with `libreadline6-dev libsqlite3-dev sqlite3 autoconf' etc
|
> # For instance, if prompted with `libreadline6-dev libsqlite3-dev sqlite3 autoconf' etc
|
||||||
# Install the missing packages with this command, run as your user:
|
> # Install the missing packages with this command, run as your user:
|
||||||
# sudo apt-get install libreadline6-dev libsqlite3-dev sqlite3 autoconf
|
> # sudo apt-get install libreadline6-dev libsqlite3-dev sqlite3 autoconf
|
||||||
# Repeat the autolibs test until you see "Requirements installation successful"
|
> # Repeat the autolibs test until you see "Requirements installation successful"
|
||||||
|
|
||||||
|
|
||||||
Build and install ruby
|
> Build and install ruby
|
||||||
|
|
||||||
rvm install 2.0.0
|
> rvm install 2.0.0
|
||||||
|
|
||||||
# Use installed ruby as default
|
> # Use installed ruby as default
|
||||||
rvm use 2.0.0 --default
|
> rvm use 2.0.0 --default
|
||||||
|
|
||||||
# Install bundler
|
> # Install bundler
|
||||||
gem install bundler
|
> gem install bundler
|
||||||
|
|
||||||
Continue with Discourse installation
|
> Continue with Discourse installation
|
||||||
|
|
||||||
# Pull down the latest code
|
> # Pull down the latest code
|
||||||
# Now would be a great time to consider [forking](https://help.github.com/articles/fork-a-repo), if want to work from your own copy of discourse
|
> # Now would be a great time to consider [forking](https://help.github.com/articles/fork-a-repo), if want to work from your own copy of discourse
|
||||||
#If you don't need to customize your installation, and want less hassle upgrading clone from Discourse's repo
|
> #If you don't need to customize your installation, and want less hassle upgrading clone from Discourse's repo
|
||||||
git clone git://github.com/discourse/discourse.git /var/www/discourse
|
> git clone git://github.com/discourse/discourse.git /var/www/discourse
|
||||||
cd /var/www/discourse
|
> cd /var/www/discourse
|
||||||
|
|
||||||
# To run on the most recent numbered release instead of bleeding-edge:
|
> # To run on the most recent numbered release instead of bleeding-edge:
|
||||||
#git checkout latest-release
|
> #git checkout latest-release
|
||||||
|
|
||||||
# Install necessary gems
|
> # Install necessary gems
|
||||||
bundle install --deployment --without test
|
> bundle install --deployment --without test
|
||||||
|
|
||||||
_If you have errors building the native extensions, ensure you have sufficient free system memory. 1GB with no swap isn't enough, we recommend having 2GB as a minimum._
|
> _If you have errors building the native extensions, ensure you have sufficient free system memory. 1GB with no swap isn't enough, we recommend having 2GB as a minimum._
|
||||||
|
|
||||||
Configure Discourse:
|
> Configure Discourse:
|
||||||
|
|
||||||
# Run these commands as the discourse user
|
> # Run these commands as the discourse user
|
||||||
cd /var/www/discourse/config
|
> cd /var/www/discourse/config
|
||||||
cp discourse_quickstart.conf discourse.conf
|
> cp discourse_quickstart.conf discourse.conf
|
||||||
cp discourse.pill.sample discourse.pill
|
> cp discourse.pill.sample discourse.pill
|
||||||
|
|
||||||
Editing /var/www/discourse/config/discourse.conf:
|
> Editing /var/www/discourse/config/discourse.conf:
|
||||||
|
|
||||||
Database/Hostname:
|
> Database/Hostname:
|
||||||
- change database username/password if appropriate
|
> - change database username/password if appropriate
|
||||||
- change `hostname` to the name you'll use to access the Discourse site, e.g. "forum.example.com"
|
> - change `hostname` to the name you'll use to access the Discourse site, e.g. "forum.example.com"
|
||||||
|
|
||||||
Redis:
|
> Redis:
|
||||||
- no changes if this is the only application using redis, but have a look
|
> - no changes if this is the only application using redis, but have a look
|
||||||
|
|
||||||
E-mail:
|
> E-mail:
|
||||||
- browse through all the settings and be sure to add your mail server SMTP settings so outgoing mail can be sent (we recommend [Mandrill](https://mandrillapp.com))
|
> - browse through all the settings and be sure to add your mail server SMTP settings so outgoing mail can be sent (we recommend [Mandrill](https://mandrillapp.com))
|
||||||
- If your users will come from "internal" [private unroutable IPs](https://en.wikipedia.org/wiki/Private_network) like 10.x.x.x or 192.168.x.x please [see this topic](http://meta.discourse.org/t/all-of-my-internal-users-show-as-coming-from-127-0-0-1/6607).
|
> - If your users will come from "internal" [private unroutable IPs](https://en.wikipedia.org/wiki/Private_network) like 10.x.x.x or 192.168.x.x please [see this topic](http://meta.discourse.org/t/all-of-my-internal-users-show-as-coming-from-127-0-0-1/6607).
|
||||||
|
|
||||||
Editing: /var/www/discourse/config/discourse.pill
|
> Editing: /var/www/discourse/config/discourse.pill
|
||||||
- change application name from 'discourse' if necessary
|
> - change application name from 'discourse' if necessary
|
||||||
- Ensure appropriate Bluepill.application line is uncommented
|
> - Ensure appropriate Bluepill.application line is uncommented
|
||||||
|
|
||||||
Initialize the database:
|
> Initialize the database:
|
||||||
|
|
||||||
# Run these commands as the discourse user
|
> # Run these commands as the discourse user
|
||||||
# The database name here should match the production one in database.yml
|
> # The database name here should match the production one in database.yml
|
||||||
cd /var/www/discourse
|
> cd /var/www/discourse
|
||||||
createdb discourse_prod
|
> createdb discourse_prod
|
||||||
RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ENV=production bundle exec rake db:migrate
|
> RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ENV=production bundle exec rake db:migrate
|
||||||
RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ENV=production bundle exec rake assets:precompile
|
> RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ENV=production bundle exec rake assets:precompile
|
||||||
|
|
||||||
Not english? Set the default language as appropriate:
|
> Not english? Set the default language as appropriate:
|
||||||
|
|
||||||
# Run these commands as the discourse user
|
> # Run these commands as the discourse user
|
||||||
cd /var/www/discourse
|
> cd /var/www/discourse
|
||||||
RAILS_ENV=production bundle exec rails c
|
> RAILS_ENV=production bundle exec rails c
|
||||||
SiteSetting.default_locale = 'fr'
|
> SiteSetting.default_locale = 'fr'
|
||||||
|
|
||||||
# Not sure if your locale is supported? Check at the rails console:
|
> # Not sure if your locale is supported? Check at the rails console:
|
||||||
LocaleSiteSetting.values
|
> LocaleSiteSetting.values
|
||||||
=> ["cs", "da", "de", "en", "es", "fr", "id", "it", "nb_NO", "nl", "pt", "ru", "sv", "zh_CN", "zh_TW"]
|
> => ["cs", "da", "de", "en", "es", "fr", "id", "it", "nb_NO", "nl", "pt", "ru", "sv", "zh_CN", "zh_TW"]
|
||||||
|
|
||||||
## nginx setup
|
> ## nginx setup
|
||||||
|
|
||||||
# Run these commands as your normal login (e.g. "michael")
|
> # Run these commands as your normal login (e.g. "michael")
|
||||||
sudo cp /var/www/discourse/config/nginx.global.conf /etc/nginx/conf.d/local-server.conf
|
> sudo cp /var/www/discourse/config/nginx.global.conf /etc/nginx/conf.d/local-server.conf
|
||||||
sudo cp /var/www/discourse/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf
|
> sudo cp /var/www/discourse/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf
|
||||||
|
|
||||||
If Discourse will be the only site served by nginx, disable the nginx default
|
> If Discourse will be the only site served by nginx, disable the nginx default
|
||||||
site:
|
> site:
|
||||||
|
|
||||||
- `sudo mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.disabled`
|
> - `sudo mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.disabled`
|
||||||
- Otherwise, only `server_name`s configured below in `discourse.conf` will be passed to Discourse.
|
> - Otherwise, only `server_name`s configured below in `discourse.conf` will be passed to Discourse.
|
||||||
|
|
||||||
Edit /etc/nginx/conf.d/discourse.conf
|
> Edit /etc/nginx/conf.d/discourse.conf
|
||||||
|
|
||||||
- edit `server_name`. Example: `server_name cain.discourse.org test.cain.discourse.org;`
|
> - edit `server_name`. Example: `server_name cain.discourse.org test.cain.discourse.org;`
|
||||||
- change socket count depending on your NUM_WEB count
|
> - change socket count depending on your NUM_WEB count
|
||||||
- change socket paths if Discourse is installed to a different location
|
> - change socket paths if Discourse is installed to a different location
|
||||||
- modify root location if Discourse is installed to a different location
|
> - modify root location if Discourse is installed to a different location
|
||||||
|
|
||||||
Reload nginx by running
|
> Reload nginx by running
|
||||||
|
|
||||||
# Run as your normal login (e.g. "michael")
|
> # Run as your normal login (e.g. "michael")
|
||||||
sudo /etc/init.d/nginx reload
|
> sudo /etc/init.d/nginx reload
|
||||||
|
|
||||||
## Bluepill setup
|
> ## Bluepill setup
|
||||||
|
|
||||||
Configure Bluepill:
|
> Configure Bluepill:
|
||||||
|
|
||||||
# Run these commands as the discourse user
|
> # Run these commands as the discourse user
|
||||||
gem install bluepill
|
> gem install bluepill
|
||||||
echo 'alias bluepill="NOEXEC_DISABLE=1 bluepill --no-privileged -c ~/.bluepill"' >> ~/.bash_aliases
|
> echo 'alias bluepill="NOEXEC_DISABLE=1 bluepill --no-privileged -c ~/.bluepill"' >> ~/.bash_aliases
|
||||||
rvm wrapper $(rvm current) bootup bluepill
|
> rvm wrapper $(rvm current) bootup bluepill
|
||||||
rvm wrapper $(rvm current) bootup bundle
|
> rvm wrapper $(rvm current) bootup bundle
|
||||||
|
|
||||||
Start Discourse:
|
> Start Discourse:
|
||||||
|
|
||||||
# Run these commands as the discourse user
|
> # Run these commands as the discourse user
|
||||||
RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ROOT=/var/www/discourse RAILS_ENV=production NUM_WEBS=2 bluepill --no-privileged -c ~/.bluepill load /var/www/discourse/config/discourse.pill
|
> RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ROOT=/var/www/discourse RAILS_ENV=production NUM_WEBS=2 bluepill --no-privileged -c ~/.bluepill load /var/www/discourse/config/discourse.pill
|
||||||
|
|
||||||
Add the Bluepill startup to crontab.
|
> Add the Bluepill startup to crontab.
|
||||||
|
|
||||||
# Run these commands as the discourse user
|
> # Run these commands as the discourse user
|
||||||
crontab -e
|
> crontab -e
|
||||||
|
|
||||||
Add the following lines:
|
> Add the following lines:
|
||||||
|
|
||||||
@reboot RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ROOT=/var/www/discourse RAILS_ENV=production NUM_WEBS=2 /home/discourse/.rvm/bin/bootup_bluepill --no-privileged -c ~/.bluepill load /var/www/discourse/config/discourse.pill
|
> @reboot RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ROOT=/var/www/discourse RAILS_ENV=production NUM_WEBS=2 /home/discourse/.rvm/bin/bootup_bluepill --no-privileged -c ~/.bluepill load /var/www/discourse/config/discourse.pill
|
||||||
|
|
||||||
## Log rotation setup
|
> ## Log rotation setup
|
||||||
|
|
||||||
# Disabled for now - log rotation isn't *quite* complete
|
> # Disabled for now - log rotation isn't *quite* complete
|
||||||
#0 0 * * * /usr/sbin/logrotate /var/www/discourse/config/logrotate.conf
|
> #0 0 * * * /usr/sbin/logrotate /var/www/discourse/config/logrotate.conf
|
||||||
|
|
||||||
## Email setup
|
> ## Email setup
|
||||||
|
|
||||||
IMPORTANT: Discourse relies heavily on email. If your email configuration is not correct, you will effectively have a broken forum.
|
> IMPORTANT: Discourse relies heavily on email. If your email configuration is not correct, you will effectively have a broken forum.
|
||||||
Please, head over to our [Mail Setup Guide](https://github.com/discourse/discourse/blob/master/docs/INSTALL-email.md) to find out more information on how to properly setup emails.
|
> Please, head over to our [Mail Setup Guide](https://github.com/discourse/discourse/blob/master/docs/INSTALL-email.md) to find out more information on how to properly setup emails.
|
||||||
|
|
||||||
Congratulations! You've got Discourse installed and running!
|
> Congratulations! You've got Discourse installed and running!
|
||||||
|
|
||||||
## Administrator account
|
> ## Administrator account
|
||||||
|
|
||||||
Now make yourself an administrator account. Browse to your Discourse instance
|
> Now make yourself an administrator account. Browse to your Discourse instance
|
||||||
and create an account by logging in normally, then run the commands:
|
> and create an account by logging in normally, then run the commands:
|
||||||
|
|
||||||
# Run these commands as the discourse user
|
> # Run these commands as the discourse user
|
||||||
cd /var/www/discourse
|
> cd /var/www/discourse
|
||||||
RAILS_ENV=production bundle exec rails c
|
> RAILS_ENV=production bundle exec rails c
|
||||||
|
|
||||||
# Administratorize yourself:
|
> # Administratorize yourself:
|
||||||
# (in rails console)
|
> # (in rails console)
|
||||||
> me = User.find_by_username_or_email('myemailaddress@me.com')
|
> > me = User.find_by_username_or_email('myemailaddress@me.com')
|
||||||
> me.activate # use this in case you haven't configured your mail server and therefore can't receive the activation mail.
|
> > me.activate # use this in case you haven't configured your mail server and therefore can't receive the activation mail.
|
||||||
> me.admin = true
|
> > me.admin = true
|
||||||
> me.save
|
> > me.save
|
||||||
|
|
||||||
# Mark yourself as the 'system user':
|
> # Mark yourself as the 'system user':
|
||||||
# (in rails console)
|
> # (in rails console)
|
||||||
> SiteSetting.site_contact_username = me.username
|
> > SiteSetting.site_contact_username = me.username
|
||||||
|
|
||||||
At this point we recommend you start going through the various items in the
|
> At this point we recommend you start going through the various items in the
|
||||||
[Discourse Admin Quick Start Guide](https://github.com/discourse/discourse/wiki/The-Discourse-Admin-Quick-Start-Guide)
|
> [Discourse Admin Quick Start Guide](https://github.com/discourse/discourse/wiki/The-Discourse-Admin-Quick-Start-Guide)
|
||||||
to further prepare your site for users.
|
> to further prepare your site for users.
|
||||||
|
|
||||||
## Site localization
|
> ## Site localization
|
||||||
|
|
||||||
Custom assets such as images should be placed somewhere under:
|
> Custom assets such as images should be placed somewhere under:
|
||||||
|
|
||||||
/var/www/discourse/public/
|
> /var/www/discourse/public/
|
||||||
|
|
||||||
For example, create a `local` directory and place it into:
|
> For example, create a `local` directory and place it into:
|
||||||
|
|
||||||
/var/www/discourse/public/uploads/local/michael.png
|
> /var/www/discourse/public/uploads/local/michael.png
|
||||||
|
|
||||||
The corresponding site setting is:
|
> The corresponding site setting is:
|
||||||
|
|
||||||
logo_small_url: /uploads/local/michael.png
|
> logo_small_url: /uploads/local/michael.png
|
||||||
|
|
||||||
## Updating Discourse
|
> ## Updating Discourse
|
||||||
|
|
||||||
# Run these commands as the discourse user
|
> # Run these commands as the discourse user
|
||||||
bluepill stop
|
> bluepill stop
|
||||||
bluepill quit
|
> bluepill quit
|
||||||
# Back up your install
|
> # Back up your install
|
||||||
DATESTAMP=$(TZ=UTC date +%F-%T)
|
> DATESTAMP=$(TZ=UTC date +%F-%T)
|
||||||
pg_dump --no-owner --clean discourse_prod | gzip -c > ~/discourse-db-$DATESTAMP.sql.gz
|
> pg_dump --no-owner --clean discourse_prod | gzip -c > ~/discourse-db-$DATESTAMP.sql.gz
|
||||||
tar cfz ~/discourse-dir-$DATESTAMP.tar.gz -C /var/www discourse
|
> tar cfz ~/discourse-dir-$DATESTAMP.tar.gz -C /var/www discourse
|
||||||
# get the latest Discourse code
|
> # get the latest Discourse code
|
||||||
cd /var/www/discourse
|
> cd /var/www/discourse
|
||||||
git checkout master
|
> git checkout master
|
||||||
git pull
|
> git pull
|
||||||
git fetch --tags
|
> git fetch --tags
|
||||||
# To run on the latest numbered release instead of bleeding-edge:
|
> # To run on the latest numbered release instead of bleeding-edge:
|
||||||
#git checkout latest-release
|
> #git checkout latest-release
|
||||||
#
|
> #
|
||||||
# Follow the section below titled:
|
> # Follow the section below titled:
|
||||||
# "Check sample configuration files for new settings"
|
> # "Check sample configuration files for new settings"
|
||||||
#
|
> #
|
||||||
bundle install --without test --deployment
|
> bundle install --without test --deployment
|
||||||
RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ENV=production bundle exec rake db:migrate
|
> RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ENV=production bundle exec rake db:migrate
|
||||||
RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ENV=production bundle exec rake assets:precompile
|
> RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ENV=production bundle exec rake assets:precompile
|
||||||
# restart bluepill
|
> # restart bluepill
|
||||||
crontab -l
|
> crontab -l
|
||||||
# Here, run the command to start bluepill.
|
> # Here, run the command to start bluepill.
|
||||||
# Get it from the crontab output above.
|
> # Get it from the crontab output above.
|
||||||
|
|
||||||
### Check sample configuration files for new settings
|
> ### Check sample configuration files for new settings
|
||||||
|
|
||||||
Check the sample configuration files provided in the repo with the ones being used for additional recommended settings and merge those in:
|
> Check the sample configuration files provided in the repo with the ones being used for additional recommended settings and merge those in:
|
||||||
|
|
||||||
# Run these commands as the discourse user
|
> # Run these commands as the discourse user
|
||||||
cd /var/www/discourse
|
> cd /var/www/discourse
|
||||||
diff -u config/discourse_defaults.conf config/discourse.conf
|
> diff -u config/discourse_defaults.conf config/discourse.conf
|
||||||
|
|
||||||
#### Example 1
|
> #### Example 1
|
||||||
|
|
||||||
$ diff -u config/discourse.pill.sample config/discourse.pill
|
> $ diff -u config/discourse.pill.sample config/discourse.pill
|
||||||
--- config/discourse.pill.sample 2013-07-15 17:38:06.501507001 +0000
|
> --- config/discourse.pill.sample 2013-07-15 17:38:06.501507001 +0000
|
||||||
+++ config/discourse.pill 2013-07-05 06:38:27.133506896 +0000
|
> +++ config/discourse.pill 2013-07-05 06:38:27.133506896 +0000
|
||||||
@@ -46,7 +46,7 @@
|
> @@ -46,7 +46,7 @@
|
||||||
|
|
||||||
app.working_dir = rails_root
|
> app.working_dir = rails_root
|
||||||
sockdir = "#{rails_root}/tmp/sockets"
|
> sockdir = "#{rails_root}/tmp/sockets"
|
||||||
- File.directory? sockdir or FileUtils.mkdir_p sockdir
|
> - File.directory? sockdir or FileUtils.mkdir_p sockdir
|
||||||
+ File.directory? sockdir or Dir.mkdir sockdir
|
> + File.directory? sockdir or Dir.mkdir sockdir
|
||||||
num_webs.times do |i|
|
> num_webs.times do |i|
|
||||||
app.process("thin-#{i}") do |process|
|
> app.process("thin-#{i}") do |process|
|
||||||
|
|
||||||
This change reflects us switching to using `FileUtils.mkdir_p` instead of `Dir.mkdir`.
|
> This change reflects us switching to using `FileUtils.mkdir_p` instead of `Dir.mkdir`.
|
||||||
|
|
||||||
#### Example 2
|
> #### Example 2
|
||||||
|
|
||||||
$ diff -u config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf
|
> $ diff -u config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf
|
||||||
--- config/nginx.sample.conf 2013-07-15 17:38:06.521507000 +0000
|
> --- config/nginx.sample.conf 2013-07-15 17:38:06.521507000 +0000
|
||||||
+++ /etc/nginx/conf.d/discourse.conf 2013-07-15 17:52:46.649507024 +0000
|
> +++ /etc/nginx/conf.d/discourse.conf 2013-07-15 17:52:46.649507024 +0000
|
||||||
@@ -12,17 +12,18 @@
|
> @@ -12,17 +12,18 @@
|
||||||
gzip_min_length 1000;
|
> gzip_min_length 1000;
|
||||||
gzip_types application/json text/css application/x-javascript;
|
> gzip_types application/json text/css application/x-javascript;
|
||||||
|
|
||||||
- server_name enter.your.web.hostname.here;
|
> - server_name enter.your.web.hostname.here;
|
||||||
+ server_name webtier.discourse.org;
|
> + server_name webtier.discourse.org;
|
||||||
|
|
||||||
sendfile on;
|
> sendfile on;
|
||||||
|
|
||||||
keepalive_timeout 65;
|
> keepalive_timeout 65;
|
||||||
- client_max_body_size 2m;
|
> - client_max_body_size 2m;
|
||||||
location / {
|
> location / {
|
||||||
root /home/discourse/discourse/public;
|
> root /home/discourse/discourse/public;
|
||||||
|
|
||||||
This change reflects a change in placeholder information plus (importantly)
|
> This change reflects a change in placeholder information plus (importantly)
|
||||||
adding the `client_max_body_size 2m;` directive to the nginx configuration.
|
> adding the `client_max_body_size 2m;` directive to the nginx configuration.
|
||||||
This change should also be made to your production file.
|
> This change should also be made to your production file.
|
||||||
|
|
||||||
## Security
|
> ## Security
|
||||||
|
|
||||||
We take security very seriously at Discourse, and all our code is 100% open source and peer reviewed.
|
> We take security very seriously at Discourse, and all our code is 100% open source and peer reviewed.
|
||||||
Please read [our security guide](https://github.com/discourse/discourse/blob/master/docs/SECURITY.md) for an overview of security measures in Discourse.
|
> Please read [our security guide](https://github.com/discourse/discourse/blob/master/docs/SECURITY.md) for an overview of security measures in Discourse.
|
||||||
|
|
Loading…
Reference in New Issue