This commit is contained in:
邱博亞 2023-12-23 13:31:27 +08:00
parent 04623bcca1
commit e60fe9212b
1 changed files with 9 additions and 5 deletions

View File

@ -35,7 +35,7 @@ namespace :exec_commands do
@command_trans = {}
@command_relations = {"upgrade_site"=>'git fetch origin && rails runner "a=Admin::SitesController.new;a.git_reset(%w(origin)[0],%w(update)[0]);while(1) do (Multithread.where(key: %w(update_manager)[0],status: %w(finish)[0]).count!=0 ? break : nil) end;sleep(5)"',
"bundle_update"=>"bundle update && kill -s USR2 `cat tmp/pids/unicorn.pid`",
"restart_site"=>"kill -s TERM `fuser tmp/pids/unicorn.sock tmp/sockets/unicorn.sock tmp/unicorn.sock`;bundle exec unicorn_rails -c config/unicorn.rb -D -E {{rails_env}}",
"restart_site"=>"kill -s TERM `fuser tmp/pids/unicorn.sock tmp/sockets/unicorn.sock tmp/unicorn.sock`; {{rvm}} use `cat .ruby-version` && bundle exec unicorn_rails -c config/unicorn.rb -D -E {{rails_env}}",
"get_template"=>"mongo --eval 'db.sites.find().pretty()[0][\"template\"]' {{db_name}} --quiet"}
@preserve_output = ["get_template"]
@command_relations.each do |k,v|
@ -43,7 +43,7 @@ namespace :exec_commands do
end
rails_envs = ["production", "development"]
rails_envs.each do |env|
@command_relations["start_site_in_env,#{env}"] = "kill -s TERM `fuser tmp/pids/unicorn.sock tmp/sockets/unicorn.sock tmp/unicorn.sock`;bundle exec unicorn_rails -c config/unicorn.rb -D -E #{env}"
@command_relations["start_site_in_env,#{env}"] = "kill -s TERM `fuser tmp/pids/unicorn.sock tmp/sockets/unicorn.sock tmp/unicorn.sock`; {{rvm}} use `cat .ruby-version` && bundle exec unicorn_rails -c config/unicorn.rb -D -E #{env}"
@command_relations["start_site_in_env\\,#{env}"] = @command_relations["start_site_in_env,#{env}"]
@command_trans["start_site_in_env,#{env}"] = I18n.t("client_management.start_site_in_env",{:env=>env})
@command_trans["start_site_in_env\\,#{env}"] = @command_trans["start_site_in_env,#{env}"]
@ -71,6 +71,10 @@ namespace :exec_commands do
system("ssh-add \"$HOME/.ssh/id_rsa\"")
end
Net::SSH.start(ip , user , { password: password, port: server_port}) do |ssh|
rvm_path = ssh.exec!("which rvm").to_s.strip
if rvm_path.blank?
rvm_path = "/home/#{args.user}/.rvm/bin/rvm"
end
@site_construct.update!(:infos=>[]) rescue nil
if args.type == 'close_site'
exec_ssh_command_by_sudo_and_see_output(ssh,"chmod 777 #{@site_construct.path}/#{@site_construct.site_name} -R",false)
@ -97,7 +101,7 @@ namespace :exec_commands do
@site_construct.update(:rails_env=>rails_env)
update_infos_for_exec("Starting site to #{rails_env}")
outputs = exec_ssh_command_by_sudo_and_see_output(ssh,"sudo -p 'sudo password:' chmod 777 #{@site_construct.path}/#{@site_construct.site_name} -R",false)
output = exec_ssh_command_by_sudo_and_see_output(ssh,"bash -l -c 'cd #{@site_construct.path}/#{@site_construct.site_name}\nkill -s TERM `fuser tmp/unicorn.sock`\nsudo -p \"sudo password:\" kill -s TERM `sudo -p \"sudo password:\" fuser tmp/unicorn.sock`\nsudo -p \"sudo password:\" rm -f tmp/pids/unicorn.pid\nbundle exec unicorn_rails -c config/unicorn.rb -D -E #{rails_env}\n'",false)
output = exec_ssh_command_by_sudo_and_see_output(ssh,"bash -l -c 'cd #{@site_construct.path}/#{@site_construct.site_name}\nkill -s TERM `fuser tmp/unicorn.sock`\nsudo -p \"sudo password:\" kill -s TERM `sudo -p \"sudo password:\" fuser tmp/unicorn.sock`\nsudo -p \"sudo password:\" rm -f tmp/pids/unicorn.pid\n '#{rvm_path}' use `cat .ruby-version`\nbundle exec unicorn_rails -c config/unicorn.rb -D -E #{rails_env}\n'",false)
if output.include? "bundle install"
update_infos_for_exec("Not yet bundle install")
outputs = exec_ssh_command_by_sudo_and_see_output(ssh,"bash -l -c 'cd #{@site_construct.path}/#{@site_construct.site_name};bundle install'")
@ -107,7 +111,7 @@ namespace :exec_commands do
@site_construct.update(:status =>"error")
break
else
exec_ssh_command_by_sudo_and_see_output(ssh,"bundle exec unicorn_rails -c config/unicorn.rb -D -E #{rails_env}",false)
exec_ssh_command_by_sudo_and_see_output(ssh,"'#{rvm_path}' use `cat .ruby-version` && bundle exec unicorn_rails -c config/unicorn.rb -D -E #{rails_env}",false)
end
end
update_infos_for_exec("Finish starting #{@site_construct.site_name}")
@ -148,7 +152,7 @@ namespace :exec_commands do
update_flag = 2 #Not logging commands result
end
end
command = command.gsub("{{#{k}}}",v)
command = command.gsub("{{#{k}}}",v).gsub('{{rvm}}', "'#{rvm_path}'")
@command_i18n = @command_i18n.gsub("{{#{k}}}",@command_trans[k])
end
if @commands_i18n