This commit is contained in:
Nicolas Bally 2019-05-23 18:12:31 +02:00
parent a083b44f7d
commit 0a9e54a482
8 changed files with 110 additions and 3 deletions

View File

@ -30,10 +30,12 @@ require "capistrano/rvm"
# require "capistrano/rbenv" # require "capistrano/rbenv"
# require "capistrano/chruby" # require "capistrano/chruby"
require "capistrano/rails/assets" require "capistrano/rails/assets"
require 'capistrano/nginx' #require 'capistrano/nginx'
require "capistrano/bundler" require "capistrano/bundler"
require "capistrano/rails/migrations" require "capistrano/rails/migrations"
# require "capistrano/passenger" # require "capistrano/passenger"
# Load custom tasks from `lib/capistrano/tasks` if you have any defined # Load custom tasks from `lib/capistrano/tasks` if you have any defined
Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r } Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r }

11
Gemfile
View File

@ -8,7 +8,7 @@ gem 'rails', '~> 6.0.0.rc1'
# Use sqlite3 as the database for Active Record # Use sqlite3 as the database for Active Record
gem 'mysql2' gem 'mysql2'
# Use Puma as the app server # Use Puma as the app server
gem 'puma', '~> 3.11'
# Use SCSS for stylesheets # Use SCSS for stylesheets
gem 'sass-rails', '~> 5' gem 'sass-rails', '~> 5'
# Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker # Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker
@ -36,9 +36,17 @@ gem 'bootsnap', '>= 1.4.2', require: false
group :development, :test do group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console # Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
end
group :production do
gem 'unicorn'
end end
group :development do group :development do
gem 'puma', '~> 3.11'
# Access an interactive console on exception pages or by calling 'console' anywhere in the code. # Access an interactive console on exception pages or by calling 'console' anywhere in the code.
gem 'web-console', '>= 3.3.0' gem 'web-console', '>= 3.3.0'
gem 'listen', '>= 3.0.5', '< 3.2' gem 'listen', '>= 3.0.5', '< 3.2'
@ -91,5 +99,6 @@ group :development do
gem 'capistrano-bundler', '~> 1.1', require: false gem 'capistrano-bundler', '~> 1.1', require: false
gem "capistrano-rvm", group: :development gem "capistrano-rvm", group: :development
gem 'capistrano3-nginx', '~> 2.0', group: :development gem 'capistrano3-nginx', '~> 2.0', group: :development
end end

View File

@ -179,6 +179,7 @@ GEM
kaminari (>= 0.13.0) kaminari (>= 0.13.0)
rails rails
kaminari-core (1.1.1) kaminari-core (1.1.1)
kgio (2.11.2)
less (2.6.0) less (2.6.0)
commonjs (~> 0.2.7) commonjs (~> 0.2.7)
less-rails (4.0.0) less-rails (4.0.0)
@ -250,6 +251,7 @@ GEM
method_source method_source
rake (>= 0.8.7) rake (>= 0.8.7)
thor (>= 0.20.3, < 2.0) thor (>= 0.20.3, < 2.0)
raindrops (0.19.0)
rake (12.3.2) rake (12.3.2)
rb-fsevent (0.10.3) rb-fsevent (0.10.3)
rb-inotify (0.10.0) rb-inotify (0.10.0)
@ -313,6 +315,9 @@ GEM
tzinfo (1.2.5) tzinfo (1.2.5)
thread_safe (~> 0.1) thread_safe (~> 0.1)
unicode_utils (1.4.0) unicode_utils (1.4.0)
unicorn (5.5.1)
kgio (~> 2.6)
raindrops (~> 0.7)
web-console (4.0.0) web-console (4.0.0)
actionview (>= 6.0.0.a) actionview (>= 6.0.0.a)
activemodel (>= 6.0.0.a) activemodel (>= 6.0.0.a)
@ -378,6 +383,7 @@ DEPENDENCIES
turbolinks (~> 5) turbolinks (~> 5)
twitter-bootstrap-rails twitter-bootstrap-rails
tzinfo-data tzinfo-data
unicorn
web-console (>= 3.3.0) web-console (>= 3.3.0)
webdrivers webdrivers
webpacker (~> 4.0) webpacker (~> 4.0)

View File

@ -10,3 +10,6 @@ set :domain, 'quartz-www02.sysnove.net'
set :rvm_ruby_version, '2.6.0' # use the same ruby as used locally for deployment set :rvm_ruby_version, '2.6.0' # use the same ruby as used locally for deployment
set :rvm_autolibs_flag, "read-only" set :rvm_autolibs_flag, "read-only"
#set :nginx_template, "#{stage_config_path}/nginx.conf.erb"

View File

@ -0,0 +1,23 @@
upstream qi6_app_unicorn {
server unix:/srv/www/web/qi6_app/shared/unicorn.sock fail_timeout=0;
}
server {
listen [::]:80;
server_name qi6_app.quartz.xyz ;
root /srv/www/web/qi6_app/current/public;
try_files $uri/index.html $uri @unicorn;
location @unicorn {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://qi6_app_unicorn;
proxy_read_timeout 6000;
}
error_page 500 502 503 504 /500.html;
client_max_body_size 4G;
keepalive_timeout 6000;
}

View File

@ -5,7 +5,7 @@ server "quartz.snlab.fr", user: "web", roles: %w{web app db}
set :branch, ENV["REVISION"] || ENV["BRANCH_NAME"] || "master" set :branch, ENV["REVISION"] || ENV["BRANCH_NAME"] || "master"
puts stage_config_path puts stage_config_path
set :nginx_template, "#{stage_config_path}/#{fetch :stage}/nginx.conf.erb" #set :nginx_template, "#{stage_config_path}/#{fetch :stage}/nginx.conf.erb"
# server-based syntax # server-based syntax
# ====================== # ======================
@ -72,3 +72,50 @@ append :linked_files, "config/master.key"
# auth_methods: %w(publickey password) # auth_methods: %w(publickey password)
# # password: "please use keys" # # password: "please use keys"
# } # }
set :pty, true
set :ssh_options, {:forward_agent => true}
namespace :deploy do
before :starting, :ensure_user do
#on roles(:app) do
# sudo "cp #{current_path}/config/env_init #{deploy_to}env_init"
# end
#puts "A"
end
before :finishing, :make_unicorn do
puts "FINISHIG"
on roles(:app) do
sudo "cp #{current_path}/config/env_init #{deploy_to}env_init"
sudo "sudo systemctl enable quartz_app@#{fetch(:application)}"
sudo "systemctl stop quartz_app@#{fetch(:application)}"
sudo "systemctl start quartz_app@#{fetch(:application)}"
sudo "rm -rf /etc/nginx/sites-enabled/#{fetch(:application)}"
sudo "ln -s #{current_path}/config/nginx.conf /etc/nginx/sites-enabled/#{fetch(:application)} "
sudo "service nginx reload"
end
#sudo "sudo systemctl enable quartz_app@#{application}"
# sudo "systemctl stop quartz_app@#{application}"
# sudo "systemctl start quartz_app@#{application}"
end
end

7
config/env_init Normal file
View File

@ -0,0 +1,7 @@
APP_RUBY=2.6.0
ENV=production
APP_ROOT=/srv/www/web/qi6_app/current/
GEM_HOME=/srv/www/web/.rvm/gems/ruby-$APP_RUBY
UNICORN_OPTS="-D -E ${ENV} -c ${APP_ROOT}/config/unicorn.rb"

10
config/unicorn.rb Normal file
View File

@ -0,0 +1,10 @@
@rails_app = "qi6_app"
working_directory "/srv/www/web/#{@rails_app}/current"
pid "/srv/www/web/#{@rails_app}/shared/unicorn.pid"
stderr_path "/srv/www/web/#{@rails_app}/shared/log/unicorn.log"
stdout_path "/srv/www/web/#{@rails_app}/shared/log/unicorn.log"
listen "/srv/www/web/#{@rails_app}/shared/unicorn.sock"
worker_processes 4
timeout 9999