mirror of
https://github.com/ENSL/ensl.org.git
synced 2024-12-25 12:01:03 +00:00
Silence deprecation warning in production
Fix rbenv not being able to export to upstart via foreman
This commit is contained in:
parent
d28004b6dd
commit
960aab7aca
6 changed files with 43 additions and 18 deletions
22
INSTALL.md
22
INSTALL.md
|
@ -13,13 +13,17 @@ Create a deploy user. Disable password authentication and add it to the www-data
|
|||
sudo passwd -l deploy
|
||||
sudo usermod -a -G www-data deploy
|
||||
|
||||
Add the following to `/etc/sudoers` to allow the `deploy` user to manage nginx and foreman via sudo without a password
|
||||
Create a new upstart config and set permissions
|
||||
|
||||
touch /etc/init/ensl.conf
|
||||
chown deploy /etc/init/ensl.conf
|
||||
|
||||
Add the following to `/etc/sudoers` to allow the `deploy` user to manage nginx, rbenv and upstart via sudo without a password
|
||||
|
||||
# /etc/sudoers
|
||||
Cmnd_Alias START_FOREMAN = /sbin/start foreman
|
||||
|
||||
deploy ALL=NOPASSWD:START_FOREMAN
|
||||
deploy ALL=NOPASSWD:/etc/init.d/nginx
|
||||
deploy ALL=NOPASSWD:/etc/init.d/nginx
|
||||
deploy ALL=NOPASSWD:/home/deploy/.rbenv/bin/*
|
||||
deploy ALL=NOPASSWD:/usr/sbin/service ensl start, /usr/sbin/service ensl stop, /usr/sbin/service ensl restart
|
||||
|
||||
## Install MySQL & Memcached
|
||||
|
||||
|
@ -42,11 +46,14 @@ Switch user to deploy, and install rbenv
|
|||
su deploy
|
||||
cd ~
|
||||
git clone git://github.com/sstephenson/rbenv.git .rbenv
|
||||
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.profile
|
||||
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
|
||||
echo 'eval "$(rbenv init -)"' >> ~/.profile
|
||||
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
|
||||
exec $SHELL
|
||||
|
||||
git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
|
||||
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.profile
|
||||
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
|
||||
exec $SHELL
|
||||
|
||||
|
@ -56,6 +63,11 @@ Switch user to deploy, and install rbenv
|
|||
echo "gem: --no-ri --no-rdoc" > ~/.gemrc
|
||||
gem install bundler
|
||||
|
||||
Install the rbenv-sudo plugin
|
||||
|
||||
mkdir ~/.rbenv/plugins
|
||||
git clone git://github.com/dcarley/rbenv-sudo.git ~/.rbenv/plugins/rbenv-sudo
|
||||
|
||||
## Install the ENSL site
|
||||
|
||||
Create the `.env` file with the appropriate credentials.
|
||||
|
|
2
Procfile
2
Procfile
|
@ -1 +1 @@
|
|||
web: bundle exec unicorn -p $UNICORN_PORT -l $UNICORN_SOCKET -c ./config/unicorn.rb
|
||||
web: bundle exec unicorn -c ./config/unicorn.rb
|
|
@ -1,22 +1,28 @@
|
|||
lock '3.1.0'
|
||||
|
||||
set :application, 'ensl'
|
||||
set :deploy_user, 'deploy'
|
||||
set :pty, true
|
||||
|
||||
set :scm, :git
|
||||
set :repo_url, 'git@github.com:ENSL/ensl.org.git'
|
||||
set :keep_releases, 10
|
||||
|
||||
set :linked_files, %w{.env}
|
||||
set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system}
|
||||
set :normalize_asset_timestamps, %{public/images public/javascripts public/stylesheets}
|
||||
|
||||
set :rbenv_type, :user
|
||||
set :rbenv_ruby, '2.1.1'
|
||||
set :rbenv_sudo, "sudo /home/#{fetch(:deploy_user)}/.rbenv/bin/rbenv sudo"
|
||||
|
||||
set :linked_files, %w{.env}
|
||||
set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle
|
||||
public/system public/local public/uploads}
|
||||
|
||||
set :normalize_asset_timestamps, %{public/images public/javascripts public/stylesheets}
|
||||
|
||||
namespace :deploy do
|
||||
desc 'Restart application'
|
||||
task :restart do
|
||||
foreman.export
|
||||
foreman.restart
|
||||
invoke 'foreman:export'
|
||||
invoke 'foreman:restart'
|
||||
end
|
||||
|
||||
after :publishing, :restart
|
||||
|
@ -26,28 +32,30 @@ namespace :foreman do
|
|||
desc "Export the Procfile to Ubuntu's upstart scripts"
|
||||
task :export do
|
||||
on roles(:app) do |host|
|
||||
run "cd #{current_path} && #{sudo} foreman export upstart /etc/init -a #{app_name} -u #{user} -l #{fetch(:deploy_to)}/shared/log"
|
||||
within release_path do
|
||||
execute "#{fetch(:rbenv_sudo)} bundle exec foreman export upstart /etc/init -a #{fetch(:application)} -u #{fetch(:deploy_user)} -l #{fetch(:deploy_to)}/shared/log"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
desc "Start the application services"
|
||||
task :start do
|
||||
on roles(:app) do |host|
|
||||
run "#{sudo} service #{app_name} start"
|
||||
execute "sudo service #{fetch(:application)} start"
|
||||
end
|
||||
end
|
||||
|
||||
desc "Stop the application services"
|
||||
task :stop do
|
||||
on roles(:app) do |host|
|
||||
run "#{sudo} service #{app_name} stop"
|
||||
execute "sudo service #{fetch(:application)} stop"
|
||||
end
|
||||
end
|
||||
|
||||
desc "Restart the application services"
|
||||
task :restart do
|
||||
on roles(:app) do |host|
|
||||
run "#{sudo} service #{app_name} start || #{sudo} service #{app_name} restart"
|
||||
execute "sudo service #{fetch(:application)} start || #{sudo} service #{fetch(:application)} restart"
|
||||
end
|
||||
end
|
||||
end
|
|
@ -5,4 +5,6 @@ require 'exceptions'
|
|||
require 'extra'
|
||||
|
||||
Dotenv.load
|
||||
Ensl::Application.initialize!
|
||||
ActiveSupport::Deprecation.silenced = true if ['staging', 'production'].include?(ENV['RAILS_ENV'])
|
||||
|
||||
Ensl::Application.initialize!
|
||||
|
|
|
@ -2,6 +2,9 @@ worker_processes Integer(ENV['UNICORN_WORKERS'] || 3)
|
|||
timeout 30
|
||||
preload_app true
|
||||
|
||||
listen ENV['UNICORN_PORT']
|
||||
listen ENV['UNICORN_SOCKET']
|
||||
|
||||
before_fork do |server, worker|
|
||||
Signal.trap 'TERM' do
|
||||
puts 'Unicorn master intercepting TERM and sending myself QUIT instead'
|
||||
|
|
|
@ -60,7 +60,7 @@ Option.create!(option: "Option 1", poll: Poll.first)
|
|||
Option.create!(option: "Option 2", poll: Poll.first)
|
||||
|
||||
# Base Forums
|
||||
Forum.create!(title: "General Discussion", description: "Anything that doesn't belong in the other forums", catrgory_id: Category.where(domain: Category::DOMAIN_FORUMS).first)
|
||||
Forum.create!(title: "General Discussion", description: "Anything that doesn't belong in the other forums", category: Category.where(domain: Category::DOMAIN_FORUMS).first)
|
||||
|
||||
# Example Topic
|
||||
Topic.create!(title: "Hello World!", forum_id: Forum.first.id, user: User.first, first_post: "Hello World!")
|
||||
|
|
Loading…
Reference in a new issue