cluster 0.6.5 → 0.7.0
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/.gitignore +6 -0
- data/Rakefile +1 -61
- data/cluster.gemspec +25 -0
- data/cluster_images.yml +2 -0
- data/etc/cluster_images.yml +2 -0
- data/examples/cacerts.pem +19 -0
- data/examples/credentials.yml +24 -0
- data/examples/monitor.god +88 -0
- data/examples/services.d/memcache/config.god +64 -0
- data/examples/services.d/memcache/memcached +12 -0
- data/examples/services.d/smtp/main.cf +55 -0
- data/examples/services.d/web/apache.d/balanced +29 -0
- data/examples/services.d/web/apache.d/config.sh +20 -0
- data/examples/services.d/web/apache.d/envvars +18 -0
- data/examples/services.d/web/apache.d/php.ini +1254 -0
- data/examples/services.d/web/apache.d/ports.conf +11 -0
- data/examples/services.d/web/apache.d/redirect +11 -0
- data/examples/services.d/web/apache.d/staging +29 -0
- data/examples/services.d/web/apache.tgz +0 -0
- data/examples/services.d/web/config.god +76 -0
- data/examples/services.d/web/users.sh +42 -0
- data/examples/users.sh +42 -0
- data/instance_setup.sh +184 -0
- data/lib/cluster.rb +11 -42
- data/lib/cluster/cli.rb +23 -15
- data/lib/cluster/infrastructures/amazon.rb +100 -62
- data/lib/cluster/infrastructures/amazon_instance.rb +11 -65
- data/lib/cluster/instance.rb +0 -4
- data/lib/cluster/version.rb +4 -16
- data/user_data_web.sh +96 -0
- metadata +82 -164
data/.gitignore
ADDED
data/Rakefile
CHANGED
@@ -4,66 +4,6 @@ require File.join(File.dirname(__FILE__), 'lib', PKG_NAME, 'version')
|
|
4
4
|
namespace :cluster do
|
5
5
|
desc "Display #{Cluster::NAME} current version."
|
6
6
|
task :version do
|
7
|
-
puts "#{Cluster::NAME} is at version #{Cluster
|
8
|
-
end
|
9
|
-
|
10
|
-
desc "Update the #{Cluster::NAME}.gem file at S3."
|
11
|
-
task :update => :package do
|
12
|
-
# Using right_aws directly to get around having to
|
13
|
-
# have a fantastic require structure to use the
|
14
|
-
# cluster tool itself to do this.
|
15
|
-
#
|
16
|
-
# Most particularly this means that error messages will
|
17
|
-
# show up...
|
18
|
-
require 'right_aws'
|
19
|
-
|
20
|
-
Rightscale::HttpConnection.params = Rightscale::HttpConnection.params.merge(:ca_file => File.expand_path(File.join(File.dirname(__FILE__), 'lib', 'cluster', 'infrastructures', 'aws-certificates.crt')))
|
21
|
-
|
22
|
-
oven = RightAws::S3.new(ENV['AMAZON_ACCESS_KEY_ID'], ENV['AMAZON_SECRET_ACCESS_KEY']).bucket(Cluster::BUCKET)
|
23
|
-
|
24
|
-
unless oven
|
25
|
-
STDERR.puts "Bucket by the name of #{Cluster::BUCKET} cannot be found or accessed."
|
26
|
-
exit 1
|
27
|
-
end
|
28
|
-
|
29
|
-
filename = File.join('pkg', "#{Cluster::NAME}-#{Cluster::Version::STRING}.gem")
|
30
|
-
file = open(filename)
|
31
|
-
oven.put("#{Cluster::NAME}.gem", file, {}, 'public-read')
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
# FIXME these RightAws calls could be refactored into one.
|
36
|
-
# Not only that but they should probably be using the cluster
|
37
|
-
# infrastructure...
|
38
|
-
namespace :images do
|
39
|
-
desc "List the current images used"
|
40
|
-
task :show do
|
41
|
-
require 'right_aws'
|
42
|
-
|
43
|
-
oven = RightAws::S3.new(ENV['AMAZON_ACCESS_KEY_ID'], ENV['AMAZON_SECRET_ACCESS_KEY']).bucket(Cluster::BUCKET)
|
44
|
-
|
45
|
-
unless oven
|
46
|
-
STDERR.puts "Bucket by the name of #{Cluster::BUCKET} cannot be found or accessed."
|
47
|
-
exit 1
|
48
|
-
end
|
49
|
-
|
50
|
-
filename = 'cluster_images.yml'
|
51
|
-
puts oven.get(filename)
|
52
|
-
end
|
53
|
-
|
54
|
-
desc "Update the ec2 base image data"
|
55
|
-
task :update do
|
56
|
-
require 'right_aws'
|
57
|
-
|
58
|
-
oven = RightAws::S3.new(ENV['AMAZON_ACCESS_KEY_ID'], ENV['AMAZON_SECRET_ACCESS_KEY']).bucket(Cluster::BUCKET)
|
59
|
-
|
60
|
-
unless oven
|
61
|
-
STDERR.puts "Bucket by the name of #{Cluster::BUCKET} cannot be found or accessed."
|
62
|
-
exit 1
|
63
|
-
end
|
64
|
-
|
65
|
-
filename = 'cluster_images.yml'
|
66
|
-
file = open(filename)
|
67
|
-
oven.put(filename, file, {}, 'public-read')
|
7
|
+
puts "#{Cluster::NAME} is at version #{Cluster.version}"
|
68
8
|
end
|
69
9
|
end
|
data/cluster.gemspec
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
PKG_NAME = ENV['PKG_NAME'] || 'cluster'
|
2
|
+
require File.join(File.dirname(__FILE__), 'lib', PKG_NAME, 'version')
|
3
|
+
|
4
|
+
Gem::Specification.new do |gem|
|
5
|
+
gem.version = Cluster.version.to_s
|
6
|
+
gem.name = Cluster::NAME
|
7
|
+
gem.executables = [Cluster::NAME]
|
8
|
+
gem.summary = %Q{Cluster control - manage many machines in many roles}
|
9
|
+
gem.description = %Q{You need to scale, you need control, you need feedback, you need monitoring. You get clustered!}
|
10
|
+
gem.email = [ Cluster::EMAIL ]
|
11
|
+
gem.authors = [ Cluster::AUTHOR ]
|
12
|
+
gem.has_rdoc = false
|
13
|
+
|
14
|
+
gem.files = `git ls-files`.split("\n")
|
15
|
+
gem.require_paths = ['lib']
|
16
|
+
|
17
|
+
gem.add_dependency "uuidtools", ">=2.1.1"
|
18
|
+
gem.add_dependency "right_aws"
|
19
|
+
# gem.add_dependency "ingamer_raws", ">= 2.1.0"
|
20
|
+
# gem.add_dependency "rake", ">=0.8.7"
|
21
|
+
# gem.add_dependency "god", ">=0.10.1"
|
22
|
+
# gem.add_dependency "capistrano", ">=2.5.18"
|
23
|
+
# gem.add_dependency "capistrano-ext", ">=1.2.1"
|
24
|
+
# gem.add_dependency "railsless-deploy", ">=1.0.0"
|
25
|
+
end
|
data/cluster_images.yml
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx
|
3
|
+
FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD
|
4
|
+
VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv
|
5
|
+
biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy
|
6
|
+
dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t
|
7
|
+
MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB
|
8
|
+
MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG
|
9
|
+
A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp
|
10
|
+
b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl
|
11
|
+
cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv
|
12
|
+
bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE
|
13
|
+
VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ
|
14
|
+
ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR
|
15
|
+
uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG
|
16
|
+
9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI
|
17
|
+
hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM
|
18
|
+
pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg==
|
19
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,24 @@
|
|
1
|
+
amazon:
|
2
|
+
user: 91*********
|
3
|
+
key: AKI**********
|
4
|
+
secret: U***************************
|
5
|
+
|
6
|
+
monitor:
|
7
|
+
email:
|
8
|
+
address: smtp.gmail.com
|
9
|
+
port: 587
|
10
|
+
domain: ingamersports.com
|
11
|
+
authentication: plain
|
12
|
+
user_name: dog@score345.com
|
13
|
+
password: *******
|
14
|
+
messages:
|
15
|
+
from: dog@ingamersports.com
|
16
|
+
contacts:
|
17
|
+
- name: alerts
|
18
|
+
email: alert@ingamersports.com
|
19
|
+
- name: panic
|
20
|
+
email: panic@ingamersports.com
|
21
|
+
group: emergency
|
22
|
+
- name: simon
|
23
|
+
email: sdeboer@ingamersports.com
|
24
|
+
group: person
|
@@ -0,0 +1,88 @@
|
|
1
|
+
#!/bin/env god -c
|
2
|
+
require 'rubygems'
|
3
|
+
require 'tlsmail'
|
4
|
+
require 'fileutils'
|
5
|
+
require 'cluster'
|
6
|
+
require 'cluster/infrastructures/amazon'
|
7
|
+
|
8
|
+
Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)
|
9
|
+
|
10
|
+
CREDENTIALS = ENV['CREDENTIALS'] || File.join(ENV['HOME'], '.cluster', 'credentials.yml')
|
11
|
+
|
12
|
+
credentials_file = File.expand_path(CREDENTIALS)
|
13
|
+
|
14
|
+
unless File.exists?(credentials_file)
|
15
|
+
$stderr.puts "Cannot find credentials for cluster : #{credentials_file} !"
|
16
|
+
exit 2
|
17
|
+
end
|
18
|
+
MONITOR_PATH = File.join File.dirname(credentials_file), 'services.d'
|
19
|
+
|
20
|
+
Cluster::Configuration[:credentials_file] = credentials_file
|
21
|
+
CLUSTER = Cluster.new(Amazon.new)
|
22
|
+
|
23
|
+
class UserService < God::Behavior
|
24
|
+
def before_start
|
25
|
+
service = self.watch.name[/^(\w+)-/, 1]
|
26
|
+
users_file = File.join(MONITOR_PATH, service, 'users.sh')
|
27
|
+
unless File.exists? users_file
|
28
|
+
FileUtils.mkdir_p File.dirname users_file
|
29
|
+
CLUSTER.retrieve service, 'users.sh', users_file
|
30
|
+
end
|
31
|
+
|
32
|
+
system(users_file) if File.exists? users_file
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
class ProjectService < God::Behavior
|
37
|
+
def before_start
|
38
|
+
service = self.watch.name[/^(\w+)-/, 1]
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
creds = YAML::load_file credentials_file
|
43
|
+
|
44
|
+
if creds.include? 'monitor'
|
45
|
+
moni = creds['monitor']
|
46
|
+
email = moni['email'].keys.inject({}) {|m, k|
|
47
|
+
m.merge k.to_sym => moni['email'][k]
|
48
|
+
}
|
49
|
+
God::Contacts::Email.server_settings = email
|
50
|
+
God::Contacts::Email.message_settings = {
|
51
|
+
:from => moni['messages']['from']
|
52
|
+
}
|
53
|
+
|
54
|
+
if moni.include? 'contacts'
|
55
|
+
for contact in moni['contacts']
|
56
|
+
God.contact(:email) {|c|
|
57
|
+
c.name = contact['name']
|
58
|
+
c.email = contact['email']
|
59
|
+
contact['group'] and (c.group = contact['group'])
|
60
|
+
}
|
61
|
+
end
|
62
|
+
else
|
63
|
+
God.contact(:email) {|c|
|
64
|
+
c.name = 'system notification'
|
65
|
+
c.email = moni['messages']['from']
|
66
|
+
}
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
CLUSTER.instance_state('configuring')
|
71
|
+
|
72
|
+
for service in CLUSTER.current('services')
|
73
|
+
monitor_file = File.join MONITOR_PATH, service, "config.god"
|
74
|
+
FileUtils.mkdir_p File.dirname(monitor_file)
|
75
|
+
begin
|
76
|
+
CLUSTER.retrieve service, 'config.god', monitor_file
|
77
|
+
rescue => err
|
78
|
+
applog(nil, :warn, "Service of #{service} does not appear to have a monitor configuration. Skipping!")
|
79
|
+
next
|
80
|
+
end
|
81
|
+
|
82
|
+
if File.readable? monitor_file
|
83
|
+
applog(nil, :info, "Loading monitor file #{monitor_file}")
|
84
|
+
load monitor_file
|
85
|
+
else
|
86
|
+
applog(nil, :warn, "Cannot find a monitor file for #{monitor_file}")
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
class MemcachedConfig < God::Behavior
|
2
|
+
def before_start
|
3
|
+
service = self.watch.name[/^(\w+)-?/, 1]
|
4
|
+
memcache_dir = File.join(MONITOR_PATH, service)
|
5
|
+
|
6
|
+
memcache_script = File.join(memcache_dir, service)
|
7
|
+
unless File.exists? memcache_script
|
8
|
+
FileUtils.mkdir_p memcache_dir unless File.exists? memcache_dir
|
9
|
+
CLUSTER.retrieve service, service, memcache_file
|
10
|
+
end
|
11
|
+
|
12
|
+
if File.exists? memcache_file
|
13
|
+
system "cd #{memcache_dir} && source #{memcache_file}"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def after_stop
|
18
|
+
service = self.watch.name[/^(\w+)-?/, 1]
|
19
|
+
CLUSTER.current('disable', service)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
God.watch do |w|
|
24
|
+
w.name = 'memcache'
|
25
|
+
w.interval = 120.seconds
|
26
|
+
memcache_script = File.join(MONITOR_PATH, 'memcache', 'memcached')
|
27
|
+
|
28
|
+
w.behavior(:memcache_config)
|
29
|
+
w.behavior(:clear_pid_file)
|
30
|
+
|
31
|
+
w.start = memcache_script
|
32
|
+
w.stop = 'killall memcached'
|
33
|
+
|
34
|
+
w.transition([:start, :restart], :up) {|on|
|
35
|
+
on.condition(:process_running) {|c|
|
36
|
+
c.running = true
|
37
|
+
c.notify = 'simon'
|
38
|
+
}
|
39
|
+
|
40
|
+
on.condition(:tries) {|c|
|
41
|
+
c.times = 5
|
42
|
+
c.transition = :start
|
43
|
+
}
|
44
|
+
}
|
45
|
+
|
46
|
+
w.transition(:up, :start) {|on|
|
47
|
+
on.condition(:process_exits) {|c|
|
48
|
+
c.notify = 'simon'
|
49
|
+
}
|
50
|
+
}
|
51
|
+
|
52
|
+
|
53
|
+
w.lifecycle {|on|
|
54
|
+
on.condition(:flapping) {|c|
|
55
|
+
c.to_state = [:start, :restart]
|
56
|
+
c.times = 5
|
57
|
+
c.within = 5.minutes
|
58
|
+
c.transition = :unmonitored
|
59
|
+
c.retry_in = 10.minutes
|
60
|
+
c.retry_times = 5
|
61
|
+
c.retry_within = 2.hours
|
62
|
+
}
|
63
|
+
}
|
64
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
creds="/home/${USER:-app}/.cluster/credentials.yml"
|
3
|
+
if [[ -e $creds ]]; then
|
4
|
+
machine=`cluster -c${creds} current dns`
|
5
|
+
fi
|
6
|
+
|
7
|
+
if [[ $machine == '' ]]; then
|
8
|
+
machine=`hostname -f`
|
9
|
+
fi
|
10
|
+
pid=/home/${USER:-app}/checkpoint/shared/pids
|
11
|
+
/usr/bin/memcached -d -P $pid -m 600 -l $machine
|
12
|
+
cluster current enable memcache
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
|
2
|
+
|
3
|
+
# Debian specific: Specifying a file name will cause the first
|
4
|
+
# line of that file to be used as the name. The Debian default
|
5
|
+
# is /etc/mailname.
|
6
|
+
#myorigin = /etc/mailname
|
7
|
+
|
8
|
+
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
|
9
|
+
biff = no
|
10
|
+
|
11
|
+
# appending .domain is the MUA's job.
|
12
|
+
append_dot_mydomain = no
|
13
|
+
|
14
|
+
# Uncomment the next line to generate "delayed mail" warnings
|
15
|
+
#delay_warning_time = 4h
|
16
|
+
|
17
|
+
readme_directory = no
|
18
|
+
|
19
|
+
# TLS parameters
|
20
|
+
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
|
21
|
+
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
|
22
|
+
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
|
23
|
+
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
|
24
|
+
|
25
|
+
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
|
26
|
+
# information on enabling SSL in the smtp client.
|
27
|
+
|
28
|
+
myhostname = domU-12-31-38-06-C0-72.compute-1.internal
|
29
|
+
alias_maps = hash:/etc/aliases
|
30
|
+
alias_database = hash:/etc/aliases
|
31
|
+
myorigin = /etc/mailname
|
32
|
+
mydestination =
|
33
|
+
relayhost = [smtp.gmail.com]:587
|
34
|
+
#mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
|
35
|
+
|
36
|
+
# FIXME this should be reset automatically using
|
37
|
+
#mynetworks = hash:/etc/postfix/network_table
|
38
|
+
mynetworks_style = class
|
39
|
+
mailbox_size_limit = 0
|
40
|
+
recipient_delimiter = +
|
41
|
+
inet_interfaces = all
|
42
|
+
default_transport = smtp
|
43
|
+
relay_transport = smtp
|
44
|
+
inet_protocols = all
|
45
|
+
|
46
|
+
# Added for sasl / gmail forwarding
|
47
|
+
# smtpd_tls_auth_only was changed from yes (and above)
|
48
|
+
smtpd_tls_auth_only = no
|
49
|
+
smtpd_use_tls=no
|
50
|
+
smtp_use_tls = yes
|
51
|
+
smtp_sasl_auth_enable = yes
|
52
|
+
smtp_sasl_password_maps = hash:/etc/postfix/sasl/passwd
|
53
|
+
smtp_sasl_security_options = noanonymous
|
54
|
+
smtp_sasl_tls_security_options = noanonymous
|
55
|
+
smtp_tls_CAfile = /etc/postfix/cacerts.pem
|
@@ -0,0 +1,29 @@
|
|
1
|
+
<VirtualHost *:3080>
|
2
|
+
ServerAdmin system@checkpoint.com
|
3
|
+
ServerName www.checkpointevents.com
|
4
|
+
ServerAlias *.checkpointevents.com
|
5
|
+
|
6
|
+
DocumentRoot /home/app/checkpoint/current/public
|
7
|
+
<Directory />
|
8
|
+
Options FollowSymLinks
|
9
|
+
AllowOverride None
|
10
|
+
</Directory>
|
11
|
+
<Directory /home/app/checkpoint/current/public>
|
12
|
+
Options Indexes FollowSymLinks MultiViews
|
13
|
+
AllowOverride All
|
14
|
+
Order allow,deny
|
15
|
+
allow from all
|
16
|
+
</Directory>
|
17
|
+
|
18
|
+
ErrorDocument 503 /system/maintenance.html
|
19
|
+
RewriteEngine On
|
20
|
+
RewriteCond %{REQUEST_URI} !.(css|gif|jpg|png)$
|
21
|
+
RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
|
22
|
+
RewriteCond %{SCRIPT_FILENAME} !maintenance.html
|
23
|
+
RewriteRule ^.*$ - [redirect=503,last]
|
24
|
+
|
25
|
+
LogLevel warn
|
26
|
+
|
27
|
+
ErrorLog /home/app/checkpoint/shared/log/balanced_error.log
|
28
|
+
CustomLog /home/app/checkpoint/shared/log/balanced_access.log combined
|
29
|
+
</VirtualHost>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
CONF=/etc/apache2
|
4
|
+
|
5
|
+
cp ports.conf $CONF
|
6
|
+
cp envvars $CONF
|
7
|
+
cp redirect $CONF/sites-available
|
8
|
+
cp balanced $CONF/sites-available
|
9
|
+
cp php.ini /etc/php5/apache2/php.ini
|
10
|
+
|
11
|
+
cd $CONF/sites-enabled
|
12
|
+
rm *
|
13
|
+
ln -sf ../sites-available/redirect 900-redirect
|
14
|
+
ln -sf ../sites-available/staging 250-staging
|
15
|
+
ln -sf ../sites-available/balanced 299-balanced
|
16
|
+
|
17
|
+
cd $CONF/mods-enabled
|
18
|
+
ln -sf ../mods-available/rewrite.load .
|
19
|
+
ln -sf ../mods-available/php5.load .
|
20
|
+
ln -sf ../mods-available/php5.conf .
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# envvars - default environment variables for apache2ctl
|
2
|
+
|
3
|
+
# Since there is no sane way to get the parsed apache2 config in scripts, some
|
4
|
+
# settings are defined via environment variables and then used in apache2ctl,
|
5
|
+
# /etc/init.d/apache2, /etc/logrotate.d/apache2, etc.
|
6
|
+
export APACHE_RUN_USER=www-data
|
7
|
+
export APACHE_RUN_GROUP=www-data
|
8
|
+
export APACHE_PID_FILE=/var/run/apache2.pid
|
9
|
+
|
10
|
+
## The locale used by some modules like mod_dav
|
11
|
+
export LANG=C
|
12
|
+
## Uncomment the following line to use the system default locale instead:
|
13
|
+
#. /etc/default/locale
|
14
|
+
|
15
|
+
export LANG
|
16
|
+
export CLUSTER_DB=`/var/lib/gems/1.8/bin/cluster -c/home/staging/.cluster/credentials.yml service -d database`
|
17
|
+
export CLUSTER_MEMCACHE=`/var/lib/gems/1.8/bin/cluster -c/home/staging/.cluster/credentials.yml services -d memcache`
|
18
|
+
export CLUSTER_SMTP=`/var/lib/gems/1.8/bin/cluster -c/home/staging/.cluster/credentials.yml service -d smtp`
|