3.6 KiB
3.6 KiB
Install passenger (e.g. Ubuntu Trusty like this:)
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 \
--recv-keys 561F9B9CAC40B2F7
sudo apt-get install -y apt-transport-https ca-certificates
# Add APT repository
sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main > /etc/apt/sources.list.d/passenger.list'
sudo apt-get update
# Install Passenger + Nginx (try apache if you would rather not change
# nginx)
sudo apt-get install -y nginx-extras passenger
Setup Postgres
sudo apt-get install postgresql-9.4 #specify version!!
sudo -u postgres psql
postgres=# CREATE USER metamaps WITH PASSWORD 'mycoolpassword' CREATEDB;
postgres=# CREATE DATABASE metamap002_production OWNER metamaps;
postgres=# \q
Install system-wide rvm:
sudo gpg --keyserver hkp://keys.gnupg.net \
--recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
\curl -sSL https://get.rvm.io | sudo bash -s stable
echo "gem: --no-ri --no-rdoc" | sudo tee -a /etc/gemrc
Create user and setup gemsets for that user
sudo adduser --disabled-password metamaps
sudo adduser metamaps rvm
Clone github repo and install gems
sudo su - metamaps
rvm user gemsets
git clone https://github.com/metamaps/metamaps_gen002 \
--branch instance/mycoolinstance
rvm install $(cat metamaps_gen002/.ruby-version) #ensure ruby is installed
cd metamaps_gen002
gem install bundle
bundle install
Connect rails database
Run this in the metamaps_gen002 directory, still as metamaps:
cp .example-env .env
nano .env # fill in DB_* values, and realtime server at least. Ctrl+X to save/exit.
export RAILS_ENV=production
rake db:setup #create, load schema, seed
Now set up nginx - config stored on Linode, including relevant environment variables.
Get an SSL certificate and encrypt it for the realtime video.
And finally
passenger-config restart-app /home/metamaps/metamaps_gen002
If this command fails, it may be helpful for debugging to run a test server to see what problems show up:
RAILS_ENV=production rails server
Realtime server:
sudo aptitude install nodejs npm
sudo ln -s /usr/bin/nodejs /usr/bin/node
sudo npm install -g forever
(crontab -u metamaps -l 2>/dev/null; echo "@reboot $(which forever) --append -l /home/metamaps/logs/forever.realtime.log start /home/metamaps/metamaps_gen002/realtime/realtime-server.js") | crontab -u metamaps -
cd /home/metamaps/metamaps_gen002/realtime
npm install
mkdir -p /home/metamaps/logs
forever --append -l /home/metamaps/logs/forever.realtime.log \
start /home/metamaps/metamaps_gen002/realtime/realtime-server.js
Upstart service for delayed_worker:
Put the following code into /etc/init/metamaps_delayed_worker.conf
:
description "Delayed Jobs Worker for Metamaps"
start on runlevel [2345]
stop on runlevel [!2345]
setuid metamaps
setgid metamaps
chdir /home/metamaps/metamaps_gen002
env HOME=/home/metamaps
env PATH="/usr/local/rvm/gems/ruby-2.1.3@metamaps_gen002/bin:/usr/local/rvm/gems/ruby-2.1.3@global/bin:/usr/local/rvm/rubies/ruby-2.1.3/bin:/usr/local/rvm/bin:/usr/local/bin:/usr/bin:/bin"
env GEM_PATH="/usr/local/rvm/gems/ruby-2.1.3@metamaps_gen002:/usr/local/rvm/gems/ruby-2.1.3@global"
env RAILS_ENV="production"
respawn
respawn limit 3 30
exec bundle exec rake jobs:work
Then start the service and check the last ten lines of the log file to make sure it's running OK:
sudo service metamaps_delayed_job start
tail /var/log/upstart/metamaps_delayed_job.log