kstrano 1.0.12 → 1.1.0.alpha.1

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.
data/lib/kstrano.rb CHANGED
@@ -1,93 +1,141 @@
1
- # PHP binary to execute
2
- set :php_bin, "php"
3
-
4
- set :copy_vendors, true
1
+ require "#{File.dirname(__FILE__)}/helpers/git_helper.rb"
2
+ require "#{File.dirname(__FILE__)}/helpers/kuma_helper.rb"
5
3
 
6
- set :force_schema, false
7
- set :force_migrations, false
4
+ require 'new_relic/recipes'
5
+ require 'new_relic/agent'
8
6
 
9
7
  set :webserver_user, "www-data"
10
8
  set :permission_method, :acl
11
9
  set :server_name, nil
12
10
  set :port, 22
11
+ set :shared_files, false
12
+ set :shared_children, false
13
13
 
14
- set :dump_assetic_assets, true
15
- set :interactive_mode, false
16
- set :clear_controllers, false # set this by default to false, because it's quiet dangerous for existing projects. You need to make sure it doesn't delete your app.php
17
-
18
- require "#{File.dirname(__FILE__)}/helpers/git_helper.rb"
19
- require "#{File.dirname(__FILE__)}/helpers/kuma_helper.rb"
20
- require 'rexml/document'
21
- require 'etc'
22
- require 'new_relic/recipes'
23
- require 'new_relic/agent'
24
14
 
25
15
  namespace :files do
26
16
  namespace :move do
27
17
 
28
18
  desc "Rsync uploaded files from online to local"
29
19
  task :to_local do
30
- Kumastrano.say "Copying files"
31
- log = `rsync -qazhL --progress --del --rsh=/usr/bin/ssh -e "ssh -p #{port}" --exclude "*bak" --exclude "*~" --exclude ".*" #{domain}:#{current_path}/web/uploads/* web/uploads/`
32
- Kumastrano.say log
20
+ KStrano.say "Copying files"
21
+ log = `rsync -qazhL --progress --del --rsh=/usr/bin/ssh -e "ssh -p #{port}" --exclude "*bak" --exclude "*~" --exclude ".*" #{domain}:#{current_path}/#{uploaded_files_path}/* #{uploaded_files_path}/`
22
+ KStrano.say log
33
23
  end
34
24
 
35
25
  end
36
26
  end
37
27
 
38
- namespace :database do
39
- namespace :move do
40
- desc "DISABLED"
41
- task :to_remote, :roles => :db, :only => { :primary => true } do
42
- Kumastrano.say "This feature is DISABLED!"
43
- exit
28
+ namespace :kuma do
29
+
30
+ # modified version from capifony
31
+ desc "Symlinks static directories and static files that need to remain between deployments"
32
+ task :share_childs, :roles => :app, :except => { :no_release => true } do
33
+ if shared_children
34
+ shared_children.each do |link|
35
+ run "#{try_sudo} mkdir -p #{shared_path}/#{link}"
36
+ run "#{try_sudo} sh -c 'if [ -d #{release_path}/#{link} ] ; then rm -rf #{release_path}/#{link}; fi'"
37
+ run "#{try_sudo} ln -nfs #{shared_path}/#{link} #{release_path}/#{link}"
38
+ end
39
+ end
40
+
41
+ if shared_files
42
+ shared_files.each do |link|
43
+ link_dir = File.dirname("#{shared_path}/#{link}")
44
+ run "#{try_sudo} mkdir -p #{link_dir}"
45
+ run "#{try_sudo} touch #{shared_path}/#{link}"
46
+ run "#{try_sudo} ln -nfs #{shared_path}/#{link} #{release_path}/#{link}"
47
+ end
44
48
  end
45
49
  end
46
- end
47
50
 
48
- namespace :kuma do
51
+ # modified version from capifony
52
+ desc "Sets permissions for writable_dirs folders as described in the Symfony documentation"
53
+ task :set_permissions, :roles => :app, :except => { :no_release => true } do
54
+ if writable_dirs && permission_method
55
+ dirs = []
49
56
 
50
- namespace :ssh_socket do
57
+ writable_dirs.each do |link|
58
+ if shared_children && shared_children.include?(link)
59
+ absolute_link = shared_path + "/" + link
60
+ else
61
+ absolute_link = latest_release + "/" + link
62
+ end
51
63
 
52
- task :fix do
53
- sudo "chmod 777 -R `dirname $SSH_AUTH_SOCK`"
54
- end
64
+ dirs << absolute_link
65
+ end
55
66
 
56
- task :unfix do
57
- sudo "chmod 775 -R `dirname $SSH_AUTH_SOCK`"
67
+ methods = {
68
+ :chmod => [
69
+ "chmod +a \"#{user} allow delete,write,append,file_inherit,directory_inherit\" %s",
70
+ "chmod +a \"#{webserver_user} allow delete,write,append,file_inherit,directory_inherit\" %s"
71
+ ],
72
+ :acl => [
73
+ "setfacl -R -m u:#{user}:rwX -m u:#{webserver_user}:rwX %s",
74
+ "setfacl -dR -m u:#{user}:rwx -m u:#{webserver_user}:rwx %s"
75
+ ],
76
+ :chown => ["chown #{webserver_user} %s"]
77
+ }
78
+
79
+ if methods[permission_method]
80
+ if fetch(:use_sudo, false)
81
+ methods[permission_method].each do |cmd|
82
+ sudo sprintf(cmd, dirs.join(' '))
83
+ end
84
+ elsif permission_method == :chown
85
+ puts " You can't use chown method without sudoing"
86
+ else
87
+ dirs.each do |dir|
88
+ is_owner = (capture "`echo stat #{dir} -c %U`").chomp == user
89
+ if is_owner && permission_method != :chown
90
+ methods[permission_method].each do |cmd|
91
+ try_sudo sprintf(cmd, dir)
92
+ end
93
+ else
94
+ puts " #{dir} is not owned by #{user} or you are using 'chown' method without ':use_sudo'"
95
+ end
96
+ end
97
+ end
98
+ else
99
+ puts " Permission method '#{permission_method}' does not exist.".yellow
100
+ end
58
101
  end
59
-
60
102
  end
61
103
 
62
104
  desc "Show log of what changed compared to the deployed version"
63
105
  task :changelog do
64
106
  if releases.length > 0
65
- Kumastrano::GitHelper.fetch
107
+ KStrano::GitHelper.fetch
66
108
  changelog = `git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --no-merges #{current_revision.strip}..#{real_revision.strip}`
67
109
 
68
110
  if current_revision.strip == real_revision.strip && changelog.strip.empty?
69
111
  changelog = "No changes found!"
70
112
  end
71
113
 
72
- Kumastrano.say "Changelog of what will be deployed to #{domain}"
73
- Kumastrano.say changelog, ''
114
+ KStrano.say "Changelog of what will be deployed to #{domain}"
115
+ KStrano.say changelog, ''
116
+ end
117
+ end
118
+
119
+ namespace :ssh_socket do
120
+ task :fix do
121
+ sudo "chmod 777 -R `dirname $SSH_AUTH_SOCK`"
122
+ end
123
+ task :unfix do
124
+ sudo "chmod 775 -R `dirname $SSH_AUTH_SOCK`"
74
125
  end
75
126
  end
76
127
 
77
128
 
78
129
  namespace :sync do
79
-
80
130
  desc "sync the database and rsync the files"
81
131
  task :to_local do
82
132
  files.move.to_local
83
- Kumastrano.say "Copying database"
133
+ KStrano.say "Copying database"
84
134
  database.move.to_local
85
135
  end
86
-
87
136
  end
88
137
 
89
138
  namespace :fix do
90
-
91
139
  desc "Run fixcron for the current project"
92
140
  task :cron do
93
141
  sudo "sh -c 'if [ -f /opt/kDeploy/tools/fixcron.py ] ; then cd /opt/kDeploy/tools/; python fixcron.py #{application}; fi'"
@@ -97,51 +145,10 @@ namespace :kuma do
97
145
  task :perms do
98
146
  sudo "sh -c 'if [ -f /opt/kDeploy/tools/fixperms.py ] ; then cd /opt/kDeploy/tools/; python fixperms.py #{application}; fi'"
99
147
  end
100
-
101
- end
102
-
103
- namespace :fpm do
104
-
105
- desc "Reload PHP5 fpm"
106
- task :reload do
107
- sudo "/etc/init.d/php5-fpm reload"
108
- end
109
-
110
- desc "Restart PHP5 fpm"
111
- task :restart do
112
- sudo "/etc/init.d/php5-fpm restart"
113
- end
114
-
115
- end
116
-
117
- namespace :apc do
118
-
119
- desc "Prepare for APC cache clear"
120
- task :prepare_clear do
121
- server_project_name = "#{server_name}"
122
- if server_project_name.nil? || server_project_name.empty?
123
- server_project_name = domain.split('.')[0]
124
- end
125
- sudo "sh -c 'if [ ! -f /home/projects/#{server_project_name}/site/apcclear.php ]; then curl https://raw.github.com/Kunstmaan/kStrano/master/config/apcclear.php > /home/projects/#{server_project_name}/site/apcclear.php; fi'"
126
- sudo "chmod 777 /home/projects/#{server_project_name}/site/apcclear.php"
127
- end
128
-
129
- desc "Clear the APC cache"
130
- task :clear do
131
- hostname = "#{domain}"
132
- server_project_name = "#{server_name}"
133
- if !server_project_name.nil? && !server_project_name.empty?
134
- hostname = "#{server_project_name}.#{hostname}"
135
- end
136
- sudo "curl http://#{hostname}/apcclear.php"
137
- end
138
-
139
148
  end
140
-
141
149
  end
142
150
 
143
151
  namespace :deploy do
144
-
145
152
  task :create_symlink, :except => { :no_release => true } do
146
153
  on_rollback do
147
154
  if previous_release
@@ -152,53 +159,20 @@ namespace :deploy do
152
159
  end
153
160
  try_sudo "ln -sfT #{latest_release} #{current_path}"
154
161
  end
155
-
156
- desc "Deploy and run pending migrations"
157
- task :migrations, :roles => :app, :except => { :no_release => true }, :only => { :primary => true } do
158
- set :force_migrations, true
159
- deploy.update
160
- deploy.restart
161
- end
162
-
163
- desc "Deploy without copying the vendors from a previous install"
164
- task :clean, :roles => :app, :except => { :no_release => true } do
165
- set :copy_vendors, false
166
- deploy.update
167
- deploy.restart
168
- end
169
-
170
- namespace :prefer do
171
-
172
- desc "Deploy without copying the vendors from a previous install and use composer option --prefer-source"
173
- task :source, :roles => :app, :except => { :no_release => true } do
174
- set :composer_options, "--no-scripts --verbose --prefer-source --optimize-autoloader"
175
- deploy.clean
176
- end
177
-
178
- end
179
-
180
- namespace :schema do
181
-
182
- desc "Deploy and update the schema"
183
- task :update, :roles => :app, :except => { :no_release => true }, :only => { :primary => true } do
184
- set :force_schema, true
185
- deploy.update
186
- deploy.restart
187
- end
188
-
189
- end
190
-
191
162
  end
192
163
 
193
- # make it possible to run schema:update and migrations:migrate at the right place in the flow
194
- after "symfony:bootstrap:build" do
195
- if model_manager == "doctrine"
196
- if force_schema
197
- symfony.doctrine.schema.update
164
+ namespace :frontend do
165
+ namespace :npm do
166
+ desc "Install the node modules"
167
+ task :install do
168
+ run "#{try_sudo} -i sh -c 'cd #{latest_release} && npm install'"
198
169
  end
170
+ end
199
171
 
200
- if force_migrations
201
- symfony.doctrine.migrations.migrate
172
+ namespace :bower do
173
+ desc "Install the javascript vendors"
174
+ task :install do
175
+ run "#{try_sudo} -i sh -c 'cd #{latest_release} && bower install'"
202
176
  end
203
177
  end
204
178
  end
@@ -217,11 +191,6 @@ after "symfony:composer:update", "kuma:ssh_socket:unfix"
217
191
  after "symfony:composer:install", "kuma:ssh_socket:unfix"
218
192
  after "symfony:composer:dump_autoload", "kuma:ssh_socket:unfix"
219
193
 
220
- # set the right permissions on the vendor folder ...
221
- after "symfony:composer:copy_vendors" do
222
- sudo "sh -c 'if [ -d #{latest_release}/vendor ] ; then chown -R #{application}:#{application} #{latest_release}/vendor; fi'"
223
- end
224
-
225
194
  # Before update_code:
226
195
  ## Make the cached_copy readable for the current user
227
196
  before "deploy:update_code" do
@@ -239,21 +208,16 @@ end
239
208
  ## Fix the permissions of the latest release, so that it's readable for the project user
240
209
  before "deploy:finalize_update" do
241
210
  on_rollback { sudo "rm -rf #{release_path}; true" } # by default capistrano will use the run command, but everything has project user rights in our server setup, so use try_sudo in stead of run.
242
- sudo "sh -c 'if [ ! -f #{release_path}/app/config/parameters.ini ] && [ ! -f #{release_path}/app/config/parameters.yml ] ; then if [ -f #{release_path}/paramDecode ] ; then chmod -R ug+rx #{latest_release}/paramDecode && cd #{release_path} && ./paramDecode; elif [ -f #{release_path}/param ] ; then chmod -R ug+rx #{latest_release}/param && cd #{release_path} && ./param decode; fi; fi'"
243
211
  sudo "chown -R #{application}:#{application} #{latest_release}"
244
212
  sudo "setfacl -R -m group:admin:rwx #{latest_release}"
245
213
  end
246
214
 
247
- before "deploy:finalize_update", "kuma:apc:prepare_clear"
248
- after "deploy:finalize_update", "kuma:apc:clear"
249
- after "deploy:create_symlink", "kuma:apc:clear"
250
-
251
215
  before "deploy:update" do
252
- Kumastrano.say "executing ssh-add"
216
+ KStrano.say "executing ssh-add"
253
217
  %x(ssh-add)
254
218
 
255
219
  kuma.changelog
256
- if !Kumastrano.ask "Are you sure you want to continue deploying?", "y"
220
+ if !KStrano.ask "Are you sure you want to continue deploying?", "y"
257
221
  exit
258
222
  end
259
223
  end
@@ -0,0 +1,18 @@
1
+ module KStrano
2
+ module Drupal
3
+ def self.load_into(configuration)
4
+ configuration.load do
5
+
6
+ load_paths.push File.expand_path('../', __FILE__)
7
+ load 'kstrano'
8
+
9
+ ## Custom stuff here
10
+
11
+ end
12
+ end
13
+ end
14
+ end
15
+
16
+ if Capistrano::Configuration.instance
17
+ KStrano::Drupal.load_into(Capistrano::Configuration.instance)
18
+ end
@@ -0,0 +1,18 @@
1
+ module KStrano
2
+ module Magento
3
+ def self.load_into(configuration)
4
+ configuration.load do
5
+
6
+ load_paths.push File.expand_path('../', __FILE__)
7
+ load 'kstrano'
8
+
9
+ ## Custom stuff here
10
+
11
+ end
12
+ end
13
+ end
14
+ end
15
+
16
+ if Capistrano::Configuration.instance
17
+ KStrano::Magento.load_into(Capistrano::Configuration.instance)
18
+ end
@@ -0,0 +1,50 @@
1
+ require 'railsless-deploy'
2
+
3
+ module KStrano
4
+ module Play
5
+ def self.load_into(configuration)
6
+ configuration.load do
7
+
8
+ load_paths.push File.expand_path('../', __FILE__)
9
+ load 'kstrano'
10
+
11
+ namespace :deploy do
12
+ desc "Updates latest release source path"
13
+ task :finalize_update, :roles => :app, :except => { :no_release => true } do
14
+ run "#{try_sudo} chmod -R g+w #{latest_release}" if fetch(:group_writable, true)
15
+ run "#{try_sudo} chmod u+rx #{latest_release}/start.sh"
16
+ run "#{try_sudo} chmod u+rx #{latest_release}/stop.sh"
17
+
18
+ kuma::share_childs
19
+
20
+ play::package
21
+ end
22
+ end
23
+
24
+ namespace :play do
25
+ desc "Build the app"
26
+ task :package do
27
+ try_sudo "bash -c 'PATH=$PATH:/home/projects/#{application}/play/default:. && cd #{latest_release} && play clean compile stage'"
28
+ end
29
+
30
+ desc "Start the server"
31
+ task :start do
32
+ try_sudo "bash -ic 'cd #{current_path} && PLAY_ENV=#{env} ./start.sh'"
33
+ end
34
+
35
+ desc "Stop the server"
36
+ task :stop do
37
+ try_sudo "bash -c 'cd #{current_path} && ./stop.sh'"
38
+ end
39
+ end
40
+
41
+ after "deploy", "play:stop", "play:start"
42
+
43
+ end
44
+ end
45
+ end
46
+ end
47
+
48
+ if Capistrano::Configuration.instance
49
+ KStrano::Play.load_into(Capistrano::Configuration.instance)
50
+ end
@@ -0,0 +1,156 @@
1
+ require 'railsless-deploy'
2
+ require 'capifony_symfony2'
3
+ require "#{File.dirname(__FILE__)}/helpers/kuma_helper.rb"
4
+
5
+ module KStrano
6
+ module Symfony2
7
+ def self.load_into(configuration)
8
+ configuration.load do
9
+
10
+ load_paths.push File.expand_path('../', __FILE__)
11
+ load 'kstrano'
12
+
13
+ set :php_bin, "php"
14
+
15
+ set :copy_vendors, true
16
+
17
+ set :force_schema, false
18
+ set :force_migrations, false
19
+
20
+ set :dump_assetic_assets, true
21
+ set :interactive_mode, false
22
+ set :clear_controllers, false # set this by default to false, because it's quiet dangerous for existing projects. You need to make sure it doesn't delete your app.php
23
+
24
+ set (:symfony_env_prod) {"#{env}"}
25
+
26
+ set :uploaded_files_path, 'web/uploads'
27
+
28
+ set :npm_install, true
29
+ set :bower_install, true
30
+
31
+ namespace :database do
32
+ namespace :move do
33
+ desc "DISABLED"
34
+ task :to_remote, :roles => :db, :only => { :primary => true } do
35
+ KStrano.say "This feature is DISABLED!"
36
+ exit
37
+ end
38
+ end
39
+ end
40
+
41
+ namespace :kuma do
42
+ namespace :fpm do
43
+ desc "Reload PHP5 fpm"
44
+ task :reload do
45
+ sudo "/etc/init.d/php5-fpm reload"
46
+ end
47
+
48
+ desc "Restart PHP5 fpm"
49
+ task :restart do
50
+ sudo "/etc/init.d/php5-fpm restart"
51
+ end
52
+ end
53
+
54
+ namespace :apc do
55
+ desc "Prepare for APC cache clear"
56
+ task :prepare_clear do
57
+ server_project_name = "#{server_name}"
58
+ if server_project_name.nil? || server_project_name.empty?
59
+ server_project_name = domain.split('.')[0]
60
+ end
61
+ sudo "sh -c 'if [ ! -f /home/projects/#{server_project_name}/site/apcclear.php ]; then curl https://raw.github.com/Kunstmaan/kStrano/master/config/apcclear.php > /home/projects/#{server_project_name}/site/apcclear.php; fi'"
62
+ sudo "chmod 777 /home/projects/#{server_project_name}/site/apcclear.php"
63
+ end
64
+
65
+ desc "Clear the APC cache"
66
+ task :clear do
67
+ hostname = "#{domain}"
68
+ server_project_name = "#{server_name}"
69
+ if !server_project_name.nil? && !server_project_name.empty?
70
+ hostname = "#{server_project_name}.#{hostname}"
71
+ end
72
+ sudo "curl http://#{hostname}/apcclear.php"
73
+ sudo "pkill -QUIT -e -f \"^php-fpm: pool #{application} \" "
74
+ end
75
+ end
76
+ end
77
+
78
+ namespace :deploy do
79
+ desc "Deploy and run pending migrations"
80
+ task :migrations, :roles => :app, :except => { :no_release => true }, :only => { :primary => true } do
81
+ set :force_migrations, true
82
+ deploy.update
83
+ deploy.restart
84
+ end
85
+
86
+ desc "Deploy without copying the vendors from a previous install"
87
+ task :clean, :roles => :app, :except => { :no_release => true } do
88
+ set :copy_vendors, false
89
+ deploy.update
90
+ deploy.restart
91
+ end
92
+
93
+ namespace :prefer do
94
+ desc "Deploy without copying the vendors from a previous install and use composer option --prefer-source"
95
+ task :source, :roles => :app, :except => { :no_release => true } do
96
+ set :composer_options, "--no-scripts --verbose --prefer-source --optimize-autoloader"
97
+ deploy.clean
98
+ end
99
+
100
+ end
101
+
102
+ namespace :schema do
103
+ desc "Deploy and update the schema"
104
+ task :update, :roles => :app, :except => { :no_release => true }, :only => { :primary => true } do
105
+ set :force_schema, true
106
+ deploy.update
107
+ deploy.restart
108
+ end
109
+ end
110
+ end
111
+
112
+ # make it possible to run schema:update and migrations:migrate at the right place in the flow
113
+ after "symfony:bootstrap:build" do
114
+ if model_manager == "doctrine"
115
+ if force_schema
116
+ symfony.doctrine.schema.update
117
+ end
118
+
119
+ if force_migrations
120
+ symfony.doctrine.migrations.migrate
121
+ end
122
+ end
123
+ end
124
+
125
+ # set the right permissions on the vendor folder ...
126
+ after "symfony:composer:copy_vendors" do
127
+ sudo "sh -c 'if [ -d #{latest_release}/vendor ] ; then chown -R #{application}:#{application} #{latest_release}/vendor; fi'"
128
+ end
129
+
130
+ before "deploy:finalize_update" do
131
+ sudo "sh -c 'if [ ! -f #{release_path}/app/config/parameters.ini ] && [ ! -f #{release_path}/app/config/parameters.yml ] ; then if [ -f #{release_path}/paramDecode ] ; then chmod -R ug+rx #{latest_release}/paramDecode && cd #{release_path} && ./paramDecode; elif [ -f #{release_path}/param ] ; then chmod -R ug+rx #{latest_release}/param && cd #{release_path} && ./param decode; fi; fi'"
132
+ end
133
+
134
+ ["symfony:composer:install", "symfony:composer:update", "symfony:vendors:install", "symfony:vendors:upgrade"].each do |action|
135
+ after action do |variable|
136
+ if npm_install
137
+ end
138
+
139
+ if bower_install
140
+ frontend.bower.install
141
+ end
142
+ end
143
+ end
144
+
145
+ before "deploy:finalize_update", "kuma:apc:prepare_clear"
146
+ after "deploy:finalize_update", "kuma:apc:clear"
147
+ after "deploy:create_symlink", "kuma:apc:clear"
148
+
149
+ end
150
+ end
151
+ end
152
+ end
153
+
154
+ if Capistrano::Configuration.instance
155
+ KStrano::Symfony2.load_into(Capistrano::Configuration.instance)
156
+ end
@@ -0,0 +1,37 @@
1
+ # Main
2
+ set :application, ""
3
+ set :use_sudo, true
4
+ set :admin_runner, ""
5
+ set :keep_releases, 5
6
+ default_run_options[:pty] = true
7
+
8
+ # Stages
9
+ set :stage_dir, ""
10
+ set :stages, %w{production staging}
11
+ set :default_stage, "production"
12
+ require 'capistrano/ext/multistage'
13
+
14
+ set :deploy_to, "/home/projects/#{application}/data/"
15
+ set (:domain) {"#{domain}"} # domain is defined in the stage config
16
+
17
+ role(:web) { domain } # Your HTTP server, Apache/etc
18
+ role(:app, :primary => true) { domain } # This may be the same as your `Web` server
19
+ role(:db, :primary => true) { domain } # This is where the migrations will run
20
+
21
+ # Git
22
+ set :repository, `git config remote.origin.url`.strip # fetch the repository from git
23
+ set :scm, :git
24
+ ssh_options[:forward_agent] = true # http://help.github.com/deploy-with-capistrano/
25
+ set :deploy_via, :remote_cache #only keeps an online cache
26
+ set :branch, "master"
27
+
28
+ set :newrelic_appname, "" # The name of the application in newrelic
29
+ set :newrelic_license_key, "" # The license key can be found under 'Account settings'
30
+
31
+ # Logging
32
+ # - IMPORTANT = 0
33
+ # - INFO = 1
34
+ # - DEBUG = 2
35
+ # - TRACE = 3
36
+ # - MAX_LEVEL = 3
37
+ logger.level = Logger::MAX_LEVEL
@@ -0,0 +1,5 @@
1
+ set :env, "prod"
2
+ set :domain, ""
3
+ set :port, 9999
4
+
5
+ set :branch, "master"
@@ -0,0 +1,4 @@
1
+ set :env, "staging"
2
+ set :domain, ""
3
+
4
+ set :branch, "staging"
@@ -0,0 +1,2 @@
1
+ set :writable_dirs, ["logs", "pids"]
2
+ set :shared_children, ["logs", "pids"]
@@ -0,0 +1,14 @@
1
+ #!/bin/bash
2
+
3
+ if [ -z "$PLAY_ENV" ]; then
4
+ PLAY_ENV="prod"
5
+ fi
6
+
7
+ START_PARAMETERS="-Dpidfile.path=./pids/play.pid -Dconfig.resource=$PLAY_ENV.conf -Dlogger.resource=$PLAY_ENV-logger.xml"
8
+ if [ -f "newrelic/newrelic.jar" ]; then
9
+ START_PARAMETERS="$START_PARAMETERS -javaagent:newrelic/newrelic.jar -Dnewrelic.bootstrap_classpath=true"
10
+ else
11
+ echo "no newrelic.jar file found!"
12
+ fi
13
+
14
+ nohup bash -c "target/start $START_PARAMETERS $* &>> ./logs/$PLAY_ENV.log" &
@@ -0,0 +1,11 @@
1
+ #!/bin/bash
2
+
3
+ pid=`cat ./pids/play.pid 2> /dev/null`
4
+
5
+ if [ "$pid" == "" ]; then
6
+ echo '{{application_name}} is not running'; exit 0;
7
+ fi
8
+
9
+ echo "Stopping {{application_name}} ($pid) ..."
10
+
11
+ kill -SIGTERM $pid"
@@ -0,0 +1,9 @@
1
+ <?php
2
+ if (in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', '::1', @$_SERVER['SERVER_ADDR']))) {
3
+ apc_clear_cache();
4
+ apc_clear_cache('user');
5
+ apc_clear_cache('opcode');
6
+ echo json_encode(array('success' => true));
7
+ } else {
8
+ die('SUPER TOP SECRET');
9
+ }