weapon 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/support/mina_unicorn/deploy.rb +120 -0
- data/lib/support/mina_unicorn/unicorn-nginx.conf +29 -0
- data/lib/support/mina_unicorn/unicorn.rb +35 -0
- data/lib/weapon.rb +34 -9
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3ae11859314f4c7c80d289abe0bc3e7fea5b6588
|
4
|
+
data.tar.gz: cb977737f96c51e8a27b997b2df534346dc15b9f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e250fb0c9fbedb9c4939de65fdc347406c6a454a991f7c5c960866acebb7556210c706c8209043ffc7caaf4f51569bbd10b8ebe7f107c2d9bd34a109b5d561d9
|
7
|
+
data.tar.gz: 40aa45a8e52a00ba1a74fa8053d82a57db40c20291f26feffdd77ea783719d47191017a7796200a59a82f31bf8ea48329309a3d05eaf46d8800c70134df60967
|
@@ -0,0 +1,120 @@
|
|
1
|
+
require 'mina/bundler'
|
2
|
+
require 'mina/rails'
|
3
|
+
require 'mina/git'
|
4
|
+
# require 'mina/rbenv' # for rbenv support. (http://rbenv.org)
|
5
|
+
require 'mina/rvm' # for rvm support. (http://rvm.io)
|
6
|
+
require 'mina/unicorn'
|
7
|
+
|
8
|
+
# Basic settings:
|
9
|
+
# domain - The hostname to SSH to.
|
10
|
+
# deploy_to - Path to deploy into.
|
11
|
+
# repository - Git repo to clone from. (needed by mina/git)
|
12
|
+
# branch - Branch name to deploy. (needed by mina/git)
|
13
|
+
|
14
|
+
set :user, 'user_name_fore_replace'
|
15
|
+
set :domain, 'domain_name_for_replace'
|
16
|
+
set :deploy_to, 'deploy_path_for_replace'
|
17
|
+
set :repository, 'repo_path_for_replace'
|
18
|
+
set :branch, 'master'
|
19
|
+
|
20
|
+
# For system-wide RVM install.
|
21
|
+
# set :rvm_path, '/usr/local/rvm/bin/rvm'
|
22
|
+
|
23
|
+
# Manually create these paths in shared/ (eg: shared/config/database.yml) in your server.
|
24
|
+
# They will be linked in the 'deploy:link_shared_paths' step.
|
25
|
+
set :shared_paths, ['config/database.yml', 'config/secrets.yml', 'log']
|
26
|
+
|
27
|
+
# Optional settings:
|
28
|
+
# set :user, 'foobar' # Username in the server to SSH to.
|
29
|
+
# set :port, '30000' # SSH port number.
|
30
|
+
# set :forward_agent, true # SSH forward_agent.
|
31
|
+
|
32
|
+
# This task is the environment that is loaded for most commands, such as
|
33
|
+
# `mina deploy` or `mina rake`.
|
34
|
+
task :environment do
|
35
|
+
# If you're using rbenv, use this to load the rbenv environment.
|
36
|
+
# Be sure to commit your .ruby-version or .rbenv-version to your repository.
|
37
|
+
# invoke :'rbenv:load'
|
38
|
+
|
39
|
+
# For those using RVM, use this to load an RVM version@gemset.
|
40
|
+
invoke :'rvm:use[ruby-2.0.0-p643@default]'
|
41
|
+
end
|
42
|
+
|
43
|
+
# Put any custom mkdir's in here for when `mina setup` is ran.
|
44
|
+
# For Rails apps, we'll make some of the shared paths that are shared between
|
45
|
+
# all releases.
|
46
|
+
task :setup => :environment do
|
47
|
+
queue! %[mkdir -p "#{deploy_to}/#{shared_path}/log"]
|
48
|
+
queue! %[chmod g+rx,u+rwx "#{deploy_to}/#{shared_path}/log"]
|
49
|
+
|
50
|
+
queue! %[mkdir -p "#{deploy_to}/#{shared_path}/config"]
|
51
|
+
queue! %[chmod g+rx,u+rwx "#{deploy_to}/#{shared_path}/config"]
|
52
|
+
|
53
|
+
queue! %[mkdir -p "#{deploy_to}/#{shared_path}/tmp/sockets"]
|
54
|
+
queue! %[chmod g+rx,u+rwx "#{deploy_to}/#{shared_path}/tmp/sockets"]
|
55
|
+
|
56
|
+
queue! %[mkdir -p "#{deploy_to}/#{shared_path}/tmp/pids"]
|
57
|
+
queue! %[chmod g+rx,u+rwx "#{deploy_to}/#{shared_path}/tmp/pids"]
|
58
|
+
|
59
|
+
queue! %[touch "#{deploy_to}/#{shared_path}/config/database.yml"]
|
60
|
+
queue! %[touch "#{deploy_to}/#{shared_path}/config/secrets.yml"]
|
61
|
+
queue %[echo "-----> Be sure to edit '#{deploy_to}/#{shared_path}/config/database.yml' and 'secrets.yml'."]
|
62
|
+
|
63
|
+
queue %[
|
64
|
+
repo_host=`echo $repo | sed -e 's/.*@//g' -e 's/:.*//g'` &&
|
65
|
+
repo_port=`echo $repo | grep -o ':[0-9]*' | sed -e 's/://g'` &&
|
66
|
+
if [ -z "${repo_port}" ]; then repo_port=22; fi &&
|
67
|
+
ssh-keyscan -p $repo_port -H $repo_host >> ~/.ssh/known_hosts
|
68
|
+
]
|
69
|
+
end
|
70
|
+
|
71
|
+
desc "Deploys the current version to the server."
|
72
|
+
task :deploy => :environment do
|
73
|
+
to :before_hook do
|
74
|
+
# Put things to run locally before ssh
|
75
|
+
end
|
76
|
+
deploy do
|
77
|
+
# Put things that will set up an empty directory into a fully set-up
|
78
|
+
# instance of your project.
|
79
|
+
invoke :'git:clone'
|
80
|
+
invoke :'deploy:link_shared_paths'
|
81
|
+
invoke :'bundle:install'
|
82
|
+
invoke :'rails:db_migrate'
|
83
|
+
invoke :'rails:assets_precompile'
|
84
|
+
invoke :'deploy:cleanup'
|
85
|
+
|
86
|
+
to :launch do
|
87
|
+
queue "mkdir -p #{deploy_to}/#{current_path}/tmp/"
|
88
|
+
queue "mkdir -p #{deploy_to}/#{current_path}/tmp/logs"
|
89
|
+
queue "mkdir -p #{deploy_to}/#{current_path}/tmp/pids"
|
90
|
+
queue "mkdir -p #{deploy_to}/#{current_path}/tmp/sockets"
|
91
|
+
queue "touch #{deploy_to}/#{current_path}/tmp/restart.txt"
|
92
|
+
invoke :'unicorn:restart'
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
desc "kill unicorn"
|
98
|
+
task :kill_unicorn do
|
99
|
+
queue "pkill -f app_name_for_replace"
|
100
|
+
end
|
101
|
+
|
102
|
+
desc "Shows logs."
|
103
|
+
task :logs do
|
104
|
+
queue %[cd #{deploy_to!}/current && tail -f log/production.log]
|
105
|
+
end
|
106
|
+
|
107
|
+
desc "Display the unicorn logs."
|
108
|
+
task :unicorn_logs do
|
109
|
+
queue 'echo "Contents of the unicorn log file are as follows:"'
|
110
|
+
queue "tail -f #{deploy_to}/current/log/unicorn.log"
|
111
|
+
end
|
112
|
+
|
113
|
+
# For help in making your deploy script, see the Mina documentation:
|
114
|
+
#
|
115
|
+
# - http://nadarei.co/mina
|
116
|
+
# - http://nadarei.co/mina/tasks
|
117
|
+
# - http://nadarei.co/mina/settings
|
118
|
+
# - http://nadarei.co/mina/helpers
|
119
|
+
|
120
|
+
|
@@ -0,0 +1,29 @@
|
|
1
|
+
upstream app_name_for_replace {
|
2
|
+
# Path to Unicorn SOCK file, as defined previously
|
3
|
+
server unix:/tmp/app_name_for_replace.unicorn.sock;
|
4
|
+
}
|
5
|
+
|
6
|
+
server {
|
7
|
+
|
8
|
+
|
9
|
+
listen 80;
|
10
|
+
server_name domain_name_for_replace;
|
11
|
+
|
12
|
+
# Application root, as defined previously
|
13
|
+
root /home/chuck/www/app_name_for_replace/current/public;
|
14
|
+
|
15
|
+
try_files $uri @app_name_for_replace;
|
16
|
+
access_log /var/log/nginx/app_name_for_replace_access.log;
|
17
|
+
error_log /var/log/nginx/app_name_for_replace_error.log;
|
18
|
+
|
19
|
+
location @app_name_for_replace{
|
20
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
21
|
+
proxy_set_header Host $http_host;
|
22
|
+
proxy_redirect off;
|
23
|
+
proxy_pass http://app_name_for_replace;
|
24
|
+
}
|
25
|
+
|
26
|
+
error_page 500 502 503 504 /500.html;
|
27
|
+
client_max_body_size 4G;
|
28
|
+
keepalive_timeout 10;
|
29
|
+
}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
app_path = File.expand_path( File.join(File.dirname(__FILE__), '..'))
|
2
|
+
worker_processes 2
|
3
|
+
timeout 180
|
4
|
+
listen '/tmp/app_name_for_replace.unicorn.sock'
|
5
|
+
pid "#{app_path}/tmp/pids/unicorn.pid"
|
6
|
+
stderr_path "log/unicorn.log"
|
7
|
+
stdout_path "log/unicorn.log"
|
8
|
+
|
9
|
+
before_fork do |server, worker|
|
10
|
+
if defined?(ActiveRecord::Base)
|
11
|
+
ActiveRecord::Base.connection.disconnect!
|
12
|
+
end
|
13
|
+
|
14
|
+
old_pid = "#{server.config[:pid]}.oldbin"
|
15
|
+
if File.exists?(old_pid) && server.pid != old_pid
|
16
|
+
begin
|
17
|
+
Process.kill("QUIT", File.read(old_pid).to_i)
|
18
|
+
rescue Errno::ENOENT, Errno::ESRCH
|
19
|
+
# someone else did our job for us
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
after_fork do |server, worker|
|
25
|
+
if defined?(ActiveRecord::Base)
|
26
|
+
ActiveRecord::Base.establish_connection
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
working_directory("#{app_path}")
|
31
|
+
puts app_path
|
32
|
+
|
33
|
+
before_exec do |server| # 修正无缝重启unicorn后更新的Gem未生效的问题,原因是config/boot.rb会优先从ENV中获取BUNDLE_GEMFILE,而无缝重启时ENV['BUNDLE_GEMFILE']的值并未被清除,仍指向旧目录的Gemfile
|
34
|
+
ENV["BUNDLE_GEMFILE"] = "#{app_path}/Gemfile"
|
35
|
+
end
|
data/lib/weapon.rb
CHANGED
@@ -34,28 +34,50 @@ class Weapon < Thor
|
|
34
34
|
end
|
35
35
|
|
36
36
|
|
37
|
-
desc "
|
38
|
-
def
|
37
|
+
desc "setup_mina_unicorn", "setup mina deploy and unicorn server"
|
38
|
+
def setup_mina_unicorn
|
39
39
|
makesure_in_git
|
40
|
+
|
41
|
+
gem 'mina-unicorn', require: false
|
42
|
+
gem 'unicorn'
|
43
|
+
run "bundle"
|
44
|
+
app_name = ask("input your app name, used to config unix sock file name: ")
|
45
|
+
|
46
|
+
copy_file 'support/mina_unicorn/unicorn.rb', 'config/unicorn.rb'
|
47
|
+
gsub_file "config/unicorn.rb", "app_name_for_replace", app_name
|
48
|
+
|
49
|
+
copy_file 'support/mina_unicorn/unicorn-nginx.conf', 'unicorn-nginx.conf'
|
50
|
+
gsub_file "config/unicorn.rb", "app_name_for_replace", app_name
|
51
|
+
|
52
|
+
domain_name = ask("input your domain name, used as nginx conf file's server_name, like www.example.com: ")
|
53
|
+
gsub_file "unicorn-nginx.conf", "app_name_for_replace", app_name
|
54
|
+
gsub_file "unicorn-nginx.conf", "domain_name_for_replace", domain_name
|
55
|
+
|
40
56
|
puts "setup mina deploy"
|
41
|
-
|
57
|
+
copy_file 'support/mina_unicorn/deploy.rb', 'config/deploy.rb'
|
58
|
+
|
59
|
+
gsub_file "config/deploy.rb", "app_name_for_replaceA", app_name
|
60
|
+
|
42
61
|
username = ask("input your user name on deploy host:")
|
43
|
-
|
62
|
+
gsub_file "config/deploy.rb", "user_name_fore_replace", username
|
63
|
+
|
44
64
|
domain = ask("input your deploy host, like example.com or 123.100.100.100:")
|
45
|
-
gsub_file "config/deploy.rb", "
|
65
|
+
gsub_file "config/deploy.rb", "domain_name_for_replace", domain
|
66
|
+
|
46
67
|
directory = ask("input your deploy directory:")
|
47
68
|
directory = directory.gsub(/\/$/, "")
|
48
|
-
gsub_file "config/deploy.rb", "
|
69
|
+
gsub_file "config/deploy.rb", "deploy_path_for_replace", directory
|
49
70
|
|
50
71
|
default_repo = `git remote -v`.split(' ')[1]
|
51
72
|
repository = ask("input your git remote url to pull from, default #{default_repo} ")
|
52
|
-
gsub_file "config/deploy.rb", "
|
73
|
+
gsub_file "config/deploy.rb", "repo_path_for_replace", (repository != "")?repository: default_repo
|
53
74
|
|
54
75
|
setup_dir_command = 'ssh ' + username + '@' + domain + " -t 'mkdir -p " + directory + ';chown -R ' + username + ' ' + directory + "'"
|
55
76
|
run setup_dir_command
|
56
77
|
|
57
78
|
run 'mina setup'
|
58
79
|
run 'scp config/database.yml ' + username + '@' + domain + ':' + directory + '/shared/config/'
|
80
|
+
run 'scp unicorn-nginx.conf ' + username + '@' + domain + ':' + '/etc/nginx/sites-enabled/#{app_name}.conf'
|
59
81
|
run 'mina deploy'
|
60
82
|
end
|
61
83
|
|
@@ -120,6 +142,8 @@ class Weapon < Thor
|
|
120
142
|
invoke :setup_settings_ui
|
121
143
|
end
|
122
144
|
|
145
|
+
|
146
|
+
|
123
147
|
desc "install_must_gems", "install must need gems like guard, guard-livereload, guard-rspec..."
|
124
148
|
def install_must_gems
|
125
149
|
makesure_in_git
|
@@ -142,9 +166,7 @@ class Weapon < Thor
|
|
142
166
|
gem 'mina', require: false
|
143
167
|
gem 'mina-multistage', require: false
|
144
168
|
gem 'mina-sidekiq', require: false
|
145
|
-
gem 'mina-unicorn', require: false
|
146
169
|
|
147
|
-
gem 'unicorn'
|
148
170
|
gem 'figaro'
|
149
171
|
gem 'whenever', '~> 0.9.2'
|
150
172
|
gem "rails-erd"
|
@@ -201,6 +223,9 @@ class Weapon < Thor
|
|
201
223
|
run "bundle"
|
202
224
|
run "guard init"
|
203
225
|
|
226
|
+
run "you might need to remove gem byebug, it might conflict with pry-byebug"
|
227
|
+
|
228
|
+
|
204
229
|
end
|
205
230
|
|
206
231
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: weapon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chuck.lei
|
@@ -84,6 +84,9 @@ files:
|
|
84
84
|
- lib/support/custom_i18n/show.html.slim
|
85
85
|
- lib/support/custom_i18n/zh-CN.yml
|
86
86
|
- lib/support/exception_slack_notify/exception_notification.rb
|
87
|
+
- lib/support/mina_unicorn/deploy.rb
|
88
|
+
- lib/support/mina_unicorn/unicorn-nginx.conf
|
89
|
+
- lib/support/mina_unicorn/unicorn.rb
|
87
90
|
- lib/support/rails_settings_ui/rails_settings_ui.rb
|
88
91
|
- lib/support/rails_settings_ui/setting.rb
|
89
92
|
- lib/weapon.rb
|