peppyheppy-cpanel-passenger 0.0.2 → 0.0.3.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/README.rdoc +12 -2
- data/lib/cpanel_passenger.rb +1 -1
- data/lib/cpanel_passenger/cli.rb +64 -15
- metadata +1 -1
data/README.rdoc
CHANGED
@@ -4,17 +4,27 @@
|
|
4
4
|
|
5
5
|
== DESCRIPTION:
|
6
6
|
|
7
|
-
This gem consists of a single script that enables a cpanel account to run a Ruby on Rails App. Many more improvements could/should be made to handle more cases.
|
7
|
+
This gem consists of a single script that enables a cpanel account to run a Ruby on Rails App. Many more improvements could/should be made to handle more cases.
|
8
|
+
|
9
|
+
Originally I was going to do a lot more with this, but then decided that I didn't need to for my needs.
|
8
10
|
|
9
11
|
== FEATURES/PROBLEMS:
|
10
12
|
|
11
13
|
* It currently configures a Passenger enabled Apache web server for the provided rails app
|
12
|
-
* It doesn't do anything else at the moment
|
14
|
+
* It doesn't do anything else at the moment
|
13
15
|
|
14
16
|
== SYNOPSIS:
|
15
17
|
|
18
|
+
- Generate/Setup Config (simple)
|
16
19
|
cpanel-passenger --username=peppyheppy --path=/home/peppyheppy/rails_app
|
17
20
|
|
21
|
+
- View previously generated config
|
22
|
+
cpanel_passenger --username=peppyheppy --path=/home/peppyheppy/rails_app --show-current-config
|
23
|
+
|
24
|
+
- Add Additional Custom Passenger Configurations
|
25
|
+
cpanel-passenger --username=peppyheppy --path=/home/peppyheppy/rails_app --misc-config="PassengerMaxRequests 100,PassengerStatThrottleRate 2"
|
26
|
+
(see http://www.modrails.com/documentation/Users guide.html for more parameters)
|
27
|
+
|
18
28
|
== REQUIREMENTS:
|
19
29
|
|
20
30
|
Must be run as root since it will modify the Apache httpd.conf files.
|
data/lib/cpanel_passenger.rb
CHANGED
data/lib/cpanel_passenger/cli.rb
CHANGED
@@ -1,13 +1,19 @@
|
|
1
1
|
require 'optparse'
|
2
2
|
require 'ftools'
|
3
|
+
require 'fileutils'
|
3
4
|
|
4
5
|
module CpanelPassenger
|
5
6
|
class CLI
|
7
|
+
|
6
8
|
def self.execute(stdout, arguments=[])
|
7
9
|
|
8
10
|
options = {
|
9
11
|
:username => nil,
|
10
|
-
:path => nil
|
12
|
+
:path => nil,
|
13
|
+
:maxpoolsize => nil,
|
14
|
+
:poolidletime => nil,
|
15
|
+
:showcurrentconfig => nil,
|
16
|
+
:miscconfig => nil
|
11
17
|
}
|
12
18
|
mandatory_options = %w( username path )
|
13
19
|
|
@@ -20,11 +26,24 @@ module CpanelPassenger
|
|
20
26
|
Options are:
|
21
27
|
BANNER
|
22
28
|
opts.separator ""
|
29
|
+
opts.on("-c", "--show-current-config",
|
30
|
+
"Show the current config for an account; requires -u and -p") { |arg| options[:showcurrentconfig] = true }
|
23
31
|
opts.on("-p", "--path=PATH", String,
|
24
|
-
"The absolute path to your rails application root (ex: /home/username/blog)"
|
25
|
-
"Default: ~") { |arg| options[:path] = arg }
|
32
|
+
"The absolute path to your rails application root (ex: /home/username/blog/current)") { |arg| options[:path] = arg }
|
26
33
|
opts.on("-u", "--username=USERNAME", String,
|
27
|
-
"Your cpanel account username (ex:
|
34
|
+
"Your cpanel account username (ex: peppyhep)") { |arg| options[:username] = arg.strip }
|
35
|
+
opts.on("-d", "--domain=domain", String,
|
36
|
+
"The domain for this username (ex: peppyheppy.com)") { |arg| options[:domain] = arg.strip }
|
37
|
+
opts.on("-s", "--max-pool-size=SIZE", String,
|
38
|
+
"Value for PassengerMaxPoolSize which is used for setting",
|
39
|
+
"the max number of application instances") { |arg| options[:maxpoolsize] = arg.strip }
|
40
|
+
opts.on("-t", "--pool-idle-time=TIME", String,
|
41
|
+
"Value for PassengerPoolIdleTime which sets the idle time",
|
42
|
+
"for an application instance before it shuts down") { |arg| options[:poolidletime] = arg.strip }
|
43
|
+
opts.on("-m", "--misc-config='OPV V,OPT V'", String,
|
44
|
+
"List of comma-delimited Passenger configuration parameters with values;",
|
45
|
+
"don't forget to to wrap multiple arguments in quotes.",
|
46
|
+
"(PassengerParam1 1,PassengerParam2 99)") { |arg| options[:miscconfig] = arg.split(',').map { |config| "#{config.strip}\n" } unless arg.nil? }
|
28
47
|
opts.on("-h", "--help",
|
29
48
|
"Show this help message.") { stdout.puts opts; exit }
|
30
49
|
opts.parse!(arguments)
|
@@ -36,24 +55,54 @@ module CpanelPassenger
|
|
36
55
|
|
37
56
|
username = options[:username]
|
38
57
|
rails_app_path = options[:path]
|
58
|
+
apache_config_root = '/usr/local/apache/conf'
|
59
|
+
apache_userdata_config_root = "#{apache_config_root}/userdata/std/2"
|
39
60
|
|
40
61
|
stdout.puts "* Setting up Rails app in Apache config for user"
|
41
62
|
raise "Path is required!" unless File.directory?(rails_app_path) or File.directory?("#{rails_app_path}/public")
|
42
63
|
raise "Script needed for overriding or appending vhost includes is not found, do you have cpanel installed?" unless File.exists?("/scripts/ensure_vhost_includes")
|
43
|
-
|
44
|
-
|
45
|
-
|
64
|
+
|
65
|
+
unless File.directory?("#{apache_userdata_config_root}/#{username}")
|
66
|
+
raise "Apache is not yet configured for your virtual host configurations... please provide the domain (-d/--domain)" unless options[:domain]
|
67
|
+
stdout.puts "* Making required apache config dirs."
|
68
|
+
config_path = "#{apache_userdata_config_root}/#{username}/#{options[:domain]}"
|
69
|
+
FileUtils::mkdir_p(config_path)
|
70
|
+
path_to_config = config_path + "/rails.conf"
|
71
|
+
end
|
46
72
|
|
47
|
-
stdout.puts "*
|
48
|
-
|
49
|
-
file.write "# line added by cpanel passenger script\n"
|
50
|
-
file.write "DocumentRoot #{rails_app_path}/public"
|
51
|
-
file.close
|
73
|
+
stdout.puts "* Fetching info from httpd.conf"
|
74
|
+
path_to_config ||= File.new("/usr/local/apache/conf/httpd.conf").readlines.grep(/userdata\/.*\/#{username}/).first.strip[/\/usr\/.*[*]/].chop + "rails.conf"
|
52
75
|
|
53
|
-
|
54
|
-
|
76
|
+
unless options[:showcurrentconfig]
|
77
|
+
stdout.puts "* Creating configs for #{username}"
|
78
|
+
file = File.open(path_to_config, "w+")
|
79
|
+
file.write "# line added by cpanel passenger script\n"
|
80
|
+
file.write "DocumentRoot #{rails_app_path}/public\n"
|
81
|
+
# optionsal parameters
|
82
|
+
unless options[:maxpoolsize].nil?
|
83
|
+
file.write "PassengerMaxPoolSize #{options[:maxpoolsize]}\n" if options[:maxpoolsize].to_i > 0
|
84
|
+
end
|
85
|
+
unless options[:poolidletime].nil?
|
86
|
+
file.write "PassengerPoolIdleTime #{options[:poolidletime]}\n" if options[:poolidletime].to_i > 0
|
87
|
+
end
|
88
|
+
# misc parameters
|
89
|
+
unless options[:miscconfig].nil? or options[:miscconfig].size == 0
|
90
|
+
options[:miscconfig].each { |config| file.write("#{config}\n") }
|
91
|
+
end
|
92
|
+
file.close
|
93
|
+
stdout.puts "* Enabling the configs for #{username}"
|
94
|
+
`/scripts/ensure_vhost_includes --user=#{username}`
|
55
95
|
|
56
|
-
|
96
|
+
stdout.puts "* Done. You can view the config changes in #{path_to_config}"
|
97
|
+
else
|
98
|
+
if File.exists?(path_to_config)
|
99
|
+
puts "---- CONFIG ----"
|
100
|
+
File.new(path_to_config).each { |line| puts line }
|
101
|
+
puts "---- EOF CONFIG ----"
|
102
|
+
else
|
103
|
+
puts "Passenger is not configured for this username."
|
104
|
+
end
|
105
|
+
end
|
57
106
|
end
|
58
107
|
end
|
59
108
|
end
|