server 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +20 -0
- data/README.md +4 -0
- data/bin/server +7 -0
- data/lib/classes/conf.rb +15 -0
- data/lib/classes/installed.rb +19 -0
- data/lib/classes/sys.rb +11 -0
- data/lib/packages/nginx.rb +15 -0
- data/lib/packages/phpfpm.rb +15 -0
- data/lib/packages/templates/haproxy.cfg.template +0 -0
- data/lib/packages/templates/memcached.conf.template +0 -0
- data/lib/packages/templates/nginx.conf.template +0 -0
- data/lib/packages/templates/php.ini.template +0 -0
- data/lib/packages/templates/phpfpm.conf.template +227 -0
- data/lib/packages/templates/redis.conf.template +0 -0
- data/lib/server.rb +63 -0
- data/lib/workflows/db.rb +16 -0
- data/lib/workflows/web.rb +18 -0
- metadata +61 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5ed2fa8117e796e3be6f47eca1f88f775c8fbe6e
|
4
|
+
data.tar.gz: 460760e5d05572c82cd3d42153ec3575c48c3c9b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e69ea915cf0250d49d11f8357fdf3d3b7638c9def9f0f7721964b7a4e0bcb788be8271207a4aaa3b8bad7bfd2c851f4f1f3ccb2a9f7aa7864455d7ca663ae671
|
7
|
+
data.tar.gz: 238d5b43606683fa6db11b99981c98c7c407e2fa79620afd225ac3991ad7ee7a56e5a1289f0b1787c43ebf0a5fbd38c8f9d9c496f7a772b4e7a46b6b06137136
|
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2014 Pierce Moore
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
6
|
+
this software and associated documentation files (the "Software"), to deal in
|
7
|
+
the Software without restriction, including without limitation the rights to
|
8
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
9
|
+
the Software, and to permit persons to whom the Software is furnished to do so,
|
10
|
+
subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
17
|
+
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
18
|
+
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
19
|
+
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
20
|
+
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
data/bin/server
ADDED
data/lib/classes/conf.rb
ADDED
data/lib/classes/sys.rb
ADDED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,227 @@
|
|
1
|
+
; Start a new pool named 'www'.
|
2
|
+
[www]
|
3
|
+
|
4
|
+
; The address on which to accept FastCGI requests.
|
5
|
+
; Valid syntaxes are:
|
6
|
+
; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific address on
|
7
|
+
; a specific port;
|
8
|
+
; 'port' - to listen on a TCP socket to all addresses on a
|
9
|
+
; specific port;
|
10
|
+
; '/path/to/unix/socket' - to listen on a unix socket.
|
11
|
+
; Note: This value is mandatory.
|
12
|
+
listen = 127.0.0.1:9000
|
13
|
+
|
14
|
+
; Set listen(2) backlog. A value of '-1' means unlimited.
|
15
|
+
; Default Value: -1
|
16
|
+
;listen.backlog = -1
|
17
|
+
|
18
|
+
; List of ipv4 addresses of FastCGI clients which are allowed to connect.
|
19
|
+
; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original
|
20
|
+
; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address
|
21
|
+
; must be separated by a comma. If this value is left blank, connections will be
|
22
|
+
; accepted from any ip address.
|
23
|
+
; Default Value: any
|
24
|
+
listen.allowed_clients = 127.0.0.1
|
25
|
+
|
26
|
+
; Set permissions for unix socket, if one is used. In Linux, read/write
|
27
|
+
; permissions must be set in order to allow connections from a web server. Many
|
28
|
+
; BSD-derived systems allow connections regardless of permissions.
|
29
|
+
; Default Values: user and group are set as the running user
|
30
|
+
; mode is set to 0666
|
31
|
+
;listen.owner = nobody
|
32
|
+
;listen.group = nobody
|
33
|
+
;listen.mode = 0666
|
34
|
+
|
35
|
+
; Unix user/group of processes
|
36
|
+
; Note: The user is mandatory. If the group is not set, the default user's group
|
37
|
+
; will be used.
|
38
|
+
; RPM: apache Choosed to be able to access some dir as httpd
|
39
|
+
user = apache
|
40
|
+
; RPM: Keep a group allowed to write in log dir.
|
41
|
+
group = apache
|
42
|
+
|
43
|
+
; Choose how the process manager will control the number of child processes.
|
44
|
+
; Possible Values:
|
45
|
+
; static - a fixed number (pm.max_children) of child processes;
|
46
|
+
; dynamic - the number of child processes are set dynamically based on the
|
47
|
+
; following directives:
|
48
|
+
; pm.max_children - the maximum number of children that can
|
49
|
+
; be alive at the same time.
|
50
|
+
; pm.start_servers - the number of children created on startup.
|
51
|
+
; pm.min_spare_servers - the minimum number of children in 'idle'
|
52
|
+
; state (waiting to process). If the number
|
53
|
+
; of 'idle' processes is less than this
|
54
|
+
; number then some children will be created.
|
55
|
+
; pm.max_spare_servers - the maximum number of children in 'idle'
|
56
|
+
; state (waiting to process). If the number
|
57
|
+
; of 'idle' processes is greater than this
|
58
|
+
; number then some children will be killed.
|
59
|
+
; Note: This value is mandatory.
|
60
|
+
pm = dynamic
|
61
|
+
|
62
|
+
; The number of child processes to be created when pm is set to 'static' and the
|
63
|
+
; maximum number of child processes to be created when pm is set to 'dynamic'.
|
64
|
+
; This value sets the limit on the number of simultaneous requests that will be
|
65
|
+
; served. Equivalent to the ApacheMaxClients directive with mpm_prefork.
|
66
|
+
; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP
|
67
|
+
; CGI.
|
68
|
+
; Note: Used when pm is set to either 'static' or 'dynamic'
|
69
|
+
; Note: This value is mandatory.
|
70
|
+
pm.max_children = 50
|
71
|
+
|
72
|
+
; The number of child processes created on startup.
|
73
|
+
; Note: Used only when pm is set to 'dynamic'
|
74
|
+
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
|
75
|
+
pm.start_servers = 5
|
76
|
+
|
77
|
+
; The desired minimum number of idle server processes.
|
78
|
+
; Note: Used only when pm is set to 'dynamic'
|
79
|
+
; Note: Mandatory when pm is set to 'dynamic'
|
80
|
+
pm.min_spare_servers = 5
|
81
|
+
|
82
|
+
; The desired maximum number of idle server processes.
|
83
|
+
; Note: Used only when pm is set to 'dynamic'
|
84
|
+
; Note: Mandatory when pm is set to 'dynamic'
|
85
|
+
pm.max_spare_servers = 35
|
86
|
+
|
87
|
+
; The number of requests each child process should execute before respawning.
|
88
|
+
; This can be useful to work around memory leaks in 3rd party libraries. For
|
89
|
+
; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
|
90
|
+
; Default Value: 0
|
91
|
+
;pm.max_requests = 500
|
92
|
+
|
93
|
+
; The URI to view the FPM status page. If this value is not set, no URI will be
|
94
|
+
; recognized as a status page. By default, the status page shows the following
|
95
|
+
; information:
|
96
|
+
; accepted conn - the number of request accepted by the pool;
|
97
|
+
; pool - the name of the pool;
|
98
|
+
; process manager - static or dynamic;
|
99
|
+
; idle processes - the number of idle processes;
|
100
|
+
; active processes - the number of active processes;
|
101
|
+
; total processes - the number of idle + active processes.
|
102
|
+
; The values of 'idle processes', 'active processes' and 'total processes' are
|
103
|
+
; updated each second. The value of 'accepted conn' is updated in real time.
|
104
|
+
; Example output:
|
105
|
+
; accepted conn: 12073
|
106
|
+
; pool: www
|
107
|
+
; process manager: static
|
108
|
+
; idle processes: 35
|
109
|
+
; active processes: 65
|
110
|
+
; total processes: 100
|
111
|
+
; By default the status page output is formatted as text/plain. Passing either
|
112
|
+
; 'html' or 'json' as a query string will return the corresponding output
|
113
|
+
; syntax. Example:
|
114
|
+
; http://www.foo.bar/status
|
115
|
+
; http://www.foo.bar/status?json
|
116
|
+
; http://www.foo.bar/status?html
|
117
|
+
; Note: The value must start with a leading slash (/). The value can be
|
118
|
+
; anything, but it may not be a good idea to use the .php extension or it
|
119
|
+
; may conflict with a real PHP file.
|
120
|
+
; Default Value: not set
|
121
|
+
pm.status_path = /fpm-status
|
122
|
+
|
123
|
+
; The ping URI to call the monitoring page of FPM. If this value is not set, no
|
124
|
+
; URI will be recognized as a ping page. This could be used to test from outside
|
125
|
+
; that FPM is alive and responding, or to
|
126
|
+
; - create a graph of FPM availability (rrd or such);
|
127
|
+
; - remove a server from a group if it is not responding (load balancing);
|
128
|
+
; - trigger alerts for the operating team (24/7).
|
129
|
+
; Note: The value must start with a leading slash (/). The value can be
|
130
|
+
; anything, but it may not be a good idea to use the .php extension or it
|
131
|
+
; may conflict with a real PHP file.
|
132
|
+
; Default Value: not set
|
133
|
+
ping.path = /fpm-ping
|
134
|
+
|
135
|
+
; This directive may be used to customize the response of a ping request. The
|
136
|
+
; response is formatted as text/plain with a 200 response code.
|
137
|
+
; Default Value: pong
|
138
|
+
;ping.response = pong
|
139
|
+
|
140
|
+
; The timeout for serving a single request after which the worker process will
|
141
|
+
; be killed. This option should be used when the 'max_execution_time' ini option
|
142
|
+
; does not stop script execution for some reason. A value of '0' means 'off'.
|
143
|
+
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
|
144
|
+
; Default Value: 0
|
145
|
+
;request_terminate_timeout = 0
|
146
|
+
|
147
|
+
; The timeout for serving a single request after which a PHP backtrace will be
|
148
|
+
; dumped to the 'slowlog' file. A value of '0s' means 'off'.
|
149
|
+
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
|
150
|
+
; Default Value: 0
|
151
|
+
;request_slowlog_timeout = 0
|
152
|
+
|
153
|
+
; The log file for slow requests
|
154
|
+
; Default Value: not set
|
155
|
+
; Note: slowlog is mandatory if request_slowlog_timeout is set
|
156
|
+
slowlog = /var/log/php-fpm/www-slow.log
|
157
|
+
|
158
|
+
; Set open file descriptor rlimit.
|
159
|
+
; Default Value: system defined value
|
160
|
+
;rlimit_files = 1024
|
161
|
+
|
162
|
+
; Set max core size rlimit.
|
163
|
+
; Possible Values: 'unlimited' or an integer greater or equal to 0
|
164
|
+
; Default Value: system defined value
|
165
|
+
;rlimit_core = 0
|
166
|
+
|
167
|
+
; Chroot to this directory at the start. This value must be defined as an
|
168
|
+
; absolute path. When this value is not set, chroot is not used.
|
169
|
+
; Note: chrooting is a great security feature and should be used whenever
|
170
|
+
; possible. However, all PHP paths will be relative to the chroot
|
171
|
+
; (error_log, sessions.save_path, ...).
|
172
|
+
; Default Value: not set
|
173
|
+
;chroot =
|
174
|
+
|
175
|
+
; Chdir to this directory at the start. This value must be an absolute path.
|
176
|
+
; Default Value: current directory or / when chroot
|
177
|
+
;chdir = /var/www
|
178
|
+
|
179
|
+
; Redirect worker stdout and stderr into main error log. If not set, stdout and
|
180
|
+
; stderr will be redirected to /dev/null according to FastCGI specs.
|
181
|
+
; Default Value: no
|
182
|
+
;catch_workers_output = yes
|
183
|
+
|
184
|
+
; Limits the extensions of the main script FPM will allow to parse. This can
|
185
|
+
; prevent configuration mistakes on the web server side. You should only limit
|
186
|
+
; FPM to .php extensions to prevent malicious users to use other extensions to
|
187
|
+
; exectute php code.
|
188
|
+
; Note: set an empty value to allow all extensions.
|
189
|
+
; Default Value: .php
|
190
|
+
; security.limit_extensions = .php .php3 .php4 .php5
|
191
|
+
|
192
|
+
; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from
|
193
|
+
; the current environment.
|
194
|
+
; Default Value: clean env
|
195
|
+
env[HOSTNAME] = $HOSTNAME
|
196
|
+
env[PATH] = /usr/local/bin:/usr/bin:/bin
|
197
|
+
env[TMP] = /tmp
|
198
|
+
env[TMPDIR] = /tmp
|
199
|
+
env[TEMP] = /tmp
|
200
|
+
env[SERVER_ENVIRONMENT] = {{SERVER_ENVIRONMENT}}
|
201
|
+
env[SERVER_NICKNAME] = {{SERVER_NICKNAME}}
|
202
|
+
|
203
|
+
; Additional php.ini defines, specific to this pool of workers. These settings
|
204
|
+
; overwrite the values previously defined in the php.ini. The directives are the
|
205
|
+
; same as the PHP SAPI:
|
206
|
+
; php_value/php_flag - you can set classic ini defines which can
|
207
|
+
; be overwritten from PHP call 'ini_set'.
|
208
|
+
; php_admin_value/php_admin_flag - these directives won't be overwritten by
|
209
|
+
; PHP call 'ini_set'
|
210
|
+
; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no.
|
211
|
+
|
212
|
+
; Defining 'extension' will load the corresponding shared extension from
|
213
|
+
; extension_dir. Defining 'disable_functions' or 'disable_classes' will not
|
214
|
+
; overwrite previously defined php.ini values, but will append the new value
|
215
|
+
; instead.
|
216
|
+
|
217
|
+
; Default Value: nothing is defined by default except the values in php.ini and
|
218
|
+
; specified at startup with the -d argument
|
219
|
+
;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
|
220
|
+
;php_flag[display_errors] = off
|
221
|
+
php_admin_value[error_log] = /var/log/php-fpm/5.5/www-error.log
|
222
|
+
php_admin_flag[log_errors] = on
|
223
|
+
php_admin_value[memory_limit] = 256M
|
224
|
+
|
225
|
+
; Set session path to a directory owned by process user
|
226
|
+
php_value[session.save_handler] = files
|
227
|
+
php_value[session.save_path] = /var/lib/php/5.5/session
|
File without changes
|
data/lib/server.rb
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'thor'
|
4
|
+
require 'highline/import'
|
5
|
+
require_relative 'classes/installed'
|
6
|
+
require_relative 'classes/conf'
|
7
|
+
require_relative 'classes/sys'
|
8
|
+
require_relative 'workflows/web'
|
9
|
+
require_relative 'workflows/db'
|
10
|
+
|
11
|
+
class Server < Thor
|
12
|
+
include Workflows
|
13
|
+
|
14
|
+
desc "build", "Build a general server type"
|
15
|
+
def build
|
16
|
+
choose do |menu|
|
17
|
+
|
18
|
+
menu.prompt = "What type of server is this going to be?"
|
19
|
+
|
20
|
+
menu.choice(:web) { Workflows::Web.start! }
|
21
|
+
menu.choice(:db) { Workflows::Db.start! }
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
desc "install", "Installs and configures packages"
|
27
|
+
def install
|
28
|
+
puts "Installing"
|
29
|
+
end
|
30
|
+
|
31
|
+
desc "configure", "Change the configuration of an existing package"
|
32
|
+
def configure
|
33
|
+
puts "Configuring"
|
34
|
+
end
|
35
|
+
|
36
|
+
desc "server", "Change general server/machine settings"
|
37
|
+
def server
|
38
|
+
puts "Server settings"
|
39
|
+
end
|
40
|
+
|
41
|
+
desc "ssh", "Manage authorized SSH keys"
|
42
|
+
def ssh
|
43
|
+
puts "SSH keys"
|
44
|
+
end
|
45
|
+
|
46
|
+
desc "stats", "View statistics for this machine"
|
47
|
+
def stats
|
48
|
+
puts "Machine stats"
|
49
|
+
end
|
50
|
+
|
51
|
+
desc "info", "Displays information about this machine"
|
52
|
+
def info
|
53
|
+
puts "Nginx path: #{Conf::nginx_path}"
|
54
|
+
puts "PHP-FPM path: #{Conf::phpfpm_path}"
|
55
|
+
puts "Yum package manager available" if Installed::yum?
|
56
|
+
puts "Brew package manager available" if Installed::brew?
|
57
|
+
puts "PHP-FPM installed" if Installed::phpfpm?
|
58
|
+
puts "Nginx installed" if Installed::nginx?
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
Server.start(ARGV)
|
data/lib/workflows/db.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'highline/import'
|
4
|
+
|
5
|
+
module Workflows
|
6
|
+
|
7
|
+
class Web
|
8
|
+
|
9
|
+
def self.start!
|
10
|
+
puts "Starting web workflow"
|
11
|
+
|
12
|
+
server_nickname = ask("What is the name of this server? ")
|
13
|
+
puts "Server nickname: #{server_nickname}"
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
metadata
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: server
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Pierce Moore
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-02-22 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description:
|
14
|
+
email: me@prex.io
|
15
|
+
executables:
|
16
|
+
- server
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- LICENSE
|
21
|
+
- README.md
|
22
|
+
- bin/server
|
23
|
+
- lib/classes/conf.rb
|
24
|
+
- lib/classes/installed.rb
|
25
|
+
- lib/classes/sys.rb
|
26
|
+
- lib/packages/nginx.rb
|
27
|
+
- lib/packages/phpfpm.rb
|
28
|
+
- lib/packages/templates/haproxy.cfg.template
|
29
|
+
- lib/packages/templates/memcached.conf.template
|
30
|
+
- lib/packages/templates/nginx.conf.template
|
31
|
+
- lib/packages/templates/php.ini.template
|
32
|
+
- lib/packages/templates/phpfpm.conf.template
|
33
|
+
- lib/packages/templates/redis.conf.template
|
34
|
+
- lib/server.rb
|
35
|
+
- lib/workflows/db.rb
|
36
|
+
- lib/workflows/web.rb
|
37
|
+
homepage: http://rubygems.org/gems/server
|
38
|
+
licenses:
|
39
|
+
- MIT
|
40
|
+
metadata: {}
|
41
|
+
post_install_message:
|
42
|
+
rdoc_options: []
|
43
|
+
require_paths:
|
44
|
+
- lib
|
45
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0'
|
50
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
requirements: []
|
56
|
+
rubyforge_project:
|
57
|
+
rubygems_version: 2.2.2
|
58
|
+
signing_key:
|
59
|
+
specification_version: 4
|
60
|
+
summary: Manage servers in a really awesome way. Like a boss.
|
61
|
+
test_files: []
|