A web application to manage political party
app | ||
bin | ||
config | ||
db | ||
factories | ||
features | ||
fixtures | ||
lib | ||
log | ||
public | ||
script | ||
spec | ||
storage | ||
tmp | ||
vendor | ||
.gitignore | ||
.rubocop.yml | ||
.ruby-gemset | ||
.ruby-version | ||
.simplecov | ||
.travis.yml | ||
.yardopts | ||
Capfile | ||
CODE_OF_CONDUCT.md | ||
config.ru | ||
Gemfile | ||
Gemfile.lock | ||
LICENSE | ||
package-lock.json | ||
package.json | ||
Rakefile | ||
README.md |
Partynest
A web application to manage political party members and supporters.
Table of contents
Deploy
Tested with Ubuntu Server 18.04 LTS.
System packages
build-essential
gnupg2
liblzma-dev
libpq-dev
nodejs
npm
patch
zlib1g-dev
Ruby installation
Install Ruby system-wide with RVM:
gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
\curl -sSL https://get.rvm.io | sudo bash -s stable
Replace user
with the name of your current user:
sudo usermod -a -G rvm user
Log out from system, then log in again. Install Ruby and Bundler:
rvm install ruby-2.6.0
rvm use ruby-2.6.0
gem install bundler
Steps
- Create directory
/opt/partynest/
writable by deploy user - Copy file
config/master.key
to/opt/partynest/shared/config/
- Create PostgreSQL role
partynest
with passwordpassword
- Create PostgreSQL database
partynest_production
owned bypartynest
Example systemd services
Replace user
with the name of user and group
with the name of group
which you want an application to run as.
Web server
[Unit]
After=syslog.target network.target
Description=Partynest web server
[Service]
ExecStart=/usr/local/rvm/bin/rvm default do bundle exec puma --environment production
Group=group
Restart=always
RestartSec=1
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=partynest-web
Type=simple
User=user
WorkingDirectory=/opt/partynest/current
[Install]
WantedBy=multi-user.target
Job processing
[Unit]
After=syslog.target network.target
Description=Partynest job processing
[Service]
ExecStart=/usr/local/rvm/bin/rvm default do bundle exec sidekiq --environment production
Group=group
Restart=always
RestartSec=1
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=partynest-worker
Type=simple
User=user
WorkingDirectory=/opt/partynest/current
[Install]
WantedBy=multi-user.target