deprec 1.7.1 → 1.8.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/docs/README.quickstart +47 -0
- data/docs/README.slicehost +11 -16
- data/docs/README.svn_trac +19 -0
- data/lib/deprec/capistrano_extensions/cli_extensions.rb +35 -0
- data/lib/deprec/capistrano_extensions/deprec_extensions.rb +3 -3
- data/lib/deprec/generators/deprec/templates/deploy.rb +1 -0
- data/lib/deprec/recipes.rb +17 -130
- data/lib/deprec/recipes/apache.rb +91 -0
- data/lib/deprec/recipes/memcache.rb +45 -0
- data/lib/deprec/recipes/svn.rb +108 -37
- data/lib/deprec/recipes/trac.rb +83 -2
- data/lib/deprec/{recipes/templates → templates}/postfix_main.conf +0 -0
- data/lib/deprec/templates/trac.ini.erb +106 -0
- data/lib/deprec/third_party/railsmachine/recipes/apache.rb +6 -1
- data/lib/deprec/third_party/railsmachine/recipes/mysql.rb +8 -2
- data/lib/deprec/third_party/railsmachine/recipes/templates/httpd-ssl.conf +1 -1
- data/lib/deprec/third_party/railsmachine/recipes/templates/httpd.conf +1 -1
- metadata +10 -9
- data/docs/old_homepage.txt +0 -172
- data/lib/deprec/recipes/templates/interfaces.rhtml +0 -19
- data/lib/deprec/recipes/templates/test_template.rhtml +0 -1
- data/lib/deprec/recipes/wordpress.rb +0 -23
- data/lib/deprec/third_party/railsmachine/recipes/svn.rb +0 -45
@@ -0,0 +1,47 @@
|
|
1
|
+
== deprec quickstart (with svn, trac and deployment to apache/mongrel/mysql)
|
2
|
+
|
3
|
+
Here are instructions that will take a fresh install of Ubuntu Dapper (6.06.1 server), create a working rails app, create an SVN repository and trac installation for it and deploy it using apache, mongrel and mysql.
|
4
|
+
|
5
|
+
All commands below are run on your local host. You will *never* be requested
|
6
|
+
to log into the remote server manually. Capistrano does all the work.
|
7
|
+
|
8
|
+
- Mike
|
9
|
+
|
10
|
+
|
11
|
+
# Install deprec on workstation
|
12
|
+
sudo gem install deprec --include-dependencies
|
13
|
+
echo 'require "deprec/recipes"' >> ~/.caprc
|
14
|
+
echo 'ssh_options[:keys] = %w(~/.ssh/id_dsa)' >> ~/.caprc
|
15
|
+
echo 'ssh_options[:paranoid] = false' >> ~/.caprc
|
16
|
+
echo 'ssh_options[:forward_agent] = true' >> ~/.caprc
|
17
|
+
|
18
|
+
# Create rails project on workstation and configure for deprec
|
19
|
+
# (alternatively use an existing project)
|
20
|
+
rails example
|
21
|
+
cd example
|
22
|
+
./script/generate scaffold_resource person name:string age:integer
|
23
|
+
deprec --apply-to . --name example --domain www.example.com
|
24
|
+
|
25
|
+
# NOTE! Use following two commands if you only have 'root' account on server
|
26
|
+
# Some VPS services provide you with this when you sign up
|
27
|
+
cap change_root_password_as_root # '_as_root' means run this as 'root' user
|
28
|
+
cap setup_admin_account_as_root
|
29
|
+
|
30
|
+
# Copy your ssh keys to remote server to avoid having to type passwords
|
31
|
+
cap setup_ssh_keys
|
32
|
+
|
33
|
+
# Install all required software on remote server
|
34
|
+
cap install_rails_stack svn_install trac_install
|
35
|
+
|
36
|
+
# Import application into subversion respository and setup trac
|
37
|
+
cap svn_setup
|
38
|
+
cap trac_setup
|
39
|
+
cap trac_user_add # this command allows you to create other trac users
|
40
|
+
cap trac_start # trac is now available on http://www.example.com:9000/
|
41
|
+
cap trac_stop # if you had the need
|
42
|
+
|
43
|
+
# Deploy application
|
44
|
+
cap setup
|
45
|
+
cap deploy_with_migrations
|
46
|
+
cap apache_restart
|
47
|
+
# application is now running on http://www.example.com/people
|
data/docs/README.slicehost
CHANGED
@@ -1,19 +1,14 @@
|
|
1
|
-
== Slicehost
|
1
|
+
== Slicehost specific notes for deprec
|
2
2
|
|
3
|
-
#
|
4
|
-
# This creates a user account with sudo access
|
5
|
-
# The '_as_root' means 'log in as root to do this'
|
6
|
-
#
|
7
|
-
export HOSTS=deptest.deprecated.org
|
8
|
-
cap setup_admin_account_as_root # XXX echo new username
|
9
|
-
cap setup_ssh_keys # XXX do for others also
|
10
|
-
cap install_rails_stack
|
11
|
-
cap install_php
|
12
|
-
cap setup
|
13
|
-
cap deploy_with_migrations
|
14
|
-
cap restart_apache
|
3
|
+
# Slicehost provides you with root login and password for your slice.
|
15
4
|
|
16
|
-
#
|
17
|
-
cap
|
18
|
-
cap svn_setup_repos
|
5
|
+
# Change the root password!
|
6
|
+
cap change_root_password_as_root # '_as_root' means run this as 'root' user
|
19
7
|
|
8
|
+
# Create an account with sudo access
|
9
|
+
cap setup_admin_account_as_root
|
10
|
+
|
11
|
+
# Copy your ssh keys to remote server to avoid having to type passwords
|
12
|
+
cap setup_ssh_keys
|
13
|
+
|
14
|
+
now read README.quickstart
|
@@ -0,0 +1,19 @@
|
|
1
|
+
== svn and trac
|
2
|
+
|
3
|
+
Installs subversion and trac software on server.
|
4
|
+
Creates subversion repository on server and imports project.
|
5
|
+
Sets up trac installation for project.
|
6
|
+
|
7
|
+
role :scm, 'deptest.deprecated.org'
|
8
|
+
|
9
|
+
# install packages
|
10
|
+
cap apache_install svn_install trac_install
|
11
|
+
|
12
|
+
# import project
|
13
|
+
cap svn_import_project
|
14
|
+
cap trac_init
|
15
|
+
cap trac_start
|
16
|
+
|
17
|
+
# your project will be viewable at http://yourdomain:8000/
|
18
|
+
# you can add other users with 'cap trac_user_add'
|
19
|
+
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Capistrano
|
2
|
+
# The CLI class encapsulates the behavior of capistrano when it is invoked
|
3
|
+
# as a command-line utility. This allows other programs to embed ST and
|
4
|
+
# preserve it's command-line semantics.
|
5
|
+
class CLI
|
6
|
+
|
7
|
+
# Prompt for a password using echo suppression.
|
8
|
+
def self.password_prompt(prompt="Password: ")
|
9
|
+
sync = STDOUT.sync
|
10
|
+
begin
|
11
|
+
with_echo do
|
12
|
+
STDOUT.sync = true
|
13
|
+
print(prompt)
|
14
|
+
STDIN.gets.chomp
|
15
|
+
end
|
16
|
+
ensure
|
17
|
+
STDOUT.sync = sync
|
18
|
+
puts
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.prompt(prompt="Password: ")
|
23
|
+
sync = STDOUT.sync
|
24
|
+
begin
|
25
|
+
STDOUT.sync = true
|
26
|
+
print(prompt)
|
27
|
+
STDIN.gets.chomp
|
28
|
+
ensure
|
29
|
+
STDOUT.sync = sync
|
30
|
+
puts
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
@@ -2,10 +2,10 @@
|
|
2
2
|
require 'capistrano'
|
3
3
|
|
4
4
|
module Deprec
|
5
|
-
DEPREC_TEMPLATES_BASE = File.join(File.dirname(__FILE__), '..', '
|
5
|
+
DEPREC_TEMPLATES_BASE = File.join(File.dirname(__FILE__), '..', 'templates')
|
6
6
|
|
7
7
|
def render_template_to_file(template_name, destination_file_name, templates_dir = DEPREC_TEMPLATES_BASE)
|
8
|
-
template_name += '.conf' if File.extname(template_name) == ''
|
8
|
+
template_name += '.conf' if File.extname(template_name) == '' # XXX this to be removed
|
9
9
|
|
10
10
|
file = File.join(templates_dir, template_name)
|
11
11
|
buffer = render :template => File.read(file)
|
@@ -21,7 +21,7 @@ module Deprec
|
|
21
21
|
# XXX if options[:requires_sudo] and :use_sudo then use sudo
|
22
22
|
sudo <<-END
|
23
23
|
sh -c '
|
24
|
-
grep "#{value}" #{filename} > /dev/null 2>&1 ||
|
24
|
+
grep -F "#{value}" #{filename} > /dev/null 2>&1 ||
|
25
25
|
test ! -f #{filename} ||
|
26
26
|
echo "#{value}" >> #{filename}
|
27
27
|
'
|
data/lib/deprec/recipes.rb
CHANGED
@@ -1,15 +1,19 @@
|
|
1
1
|
require 'deprec/recipes/ssh'
|
2
2
|
require 'deprec/recipes/svn'
|
3
|
+
require 'deprec/recipes/trac'
|
3
4
|
require 'deprec/recipes/ubuntu'
|
5
|
+
require 'deprec/recipes/apache'
|
6
|
+
require 'deprec/recipes/memcache'
|
4
7
|
require 'deprec/third_party/mongrel_cluster/recipes'
|
5
8
|
require 'deprec/third_party/vmbuilder/plugins'
|
6
9
|
require 'deprec/third_party/railsmachine/recipes/apache'
|
7
10
|
require 'deprec/third_party/railsmachine/recipes/mysql'
|
11
|
+
require 'deprec/capistrano_extensions/cli_extensions.rb'
|
8
12
|
require 'deprec/capistrano_extensions/deprec_extensions.rb'
|
9
13
|
require 'deprec/capistrano_extensions/actor_extensions.rb'
|
10
14
|
|
11
15
|
Capistrano.configuration(:must_exist).load do
|
12
|
-
set :application, lambda {
|
16
|
+
set :application, lambda { Capistrano::CLI.prompt "Enter application name: " }
|
13
17
|
set :user, (defined?(user) ? user : ENV['USER']) # user who is deploying
|
14
18
|
set :group, 'deploy' # deployment group
|
15
19
|
set :src_dir, (defined?(src_dir) ? src_dir : '/usr/local/src') # 3rd party src on servers
|
@@ -30,7 +34,7 @@ Capistrano.configuration(:must_exist).load do
|
|
30
34
|
install_packages_for_rails # install packages that come with distribution
|
31
35
|
install_rubygems
|
32
36
|
install_gems
|
33
|
-
|
37
|
+
apache_install
|
34
38
|
end
|
35
39
|
|
36
40
|
desc <<-DESC
|
@@ -70,7 +74,7 @@ Capistrano.configuration(:must_exist).load do
|
|
70
74
|
files = ["#{deploy_to}/shared/log/mongrel.log", "#{deploy_to}/shared/log/#{rails_env}.log"]
|
71
75
|
|
72
76
|
sudo "chgrp -R #{mongrel_group} #{tmp_dir} #{shared_dir}"
|
73
|
-
sudo "chmod
|
77
|
+
sudo "chmod -R g+w #{tmp_dir} #{shared_dir}"
|
74
78
|
# set owner and group of mongrels file (if they exist)
|
75
79
|
files.each { |file|
|
76
80
|
sudo "chown #{mongrel_user} #{file} || exit 0"
|
@@ -175,132 +179,6 @@ Capistrano.configuration(:must_exist).load do
|
|
175
179
|
gem.upgrade
|
176
180
|
gem.update_system
|
177
181
|
end
|
178
|
-
|
179
|
-
task :install_apache do
|
180
|
-
version = 'httpd-2.2.4'
|
181
|
-
set :src_package, {
|
182
|
-
:file => version + '.tar.gz',
|
183
|
-
:md5sum => '3add41e0b924d4bb53c2dee55a38c09e httpd-2.2.4.tar.gz',
|
184
|
-
:dir => version,
|
185
|
-
:url => "http://www.apache.org/dist/httpd/#{version}.tar.gz",
|
186
|
-
:unpack => "tar zxf #{version}.tar.gz;",
|
187
|
-
:configure => %w(
|
188
|
-
./configure
|
189
|
-
--enable-mods-shared=all
|
190
|
-
--enable-proxy
|
191
|
-
--enable-proxy-balancer
|
192
|
-
--enable-proxy-http
|
193
|
-
--enable-rewrite
|
194
|
-
--enable-cache
|
195
|
-
--enable-headers
|
196
|
-
--enable-ssl
|
197
|
-
--enable-deflate
|
198
|
-
--with-included-apr #_so_this_recipe_doesn't_break_when_rerun
|
199
|
-
--enable-dav #_for_subversion_
|
200
|
-
--enable-so #_for_subversion_
|
201
|
-
;
|
202
|
-
).reject{|arg| arg.match '#'}.join(' '),
|
203
|
-
:make => 'make;',
|
204
|
-
:install => 'make install;',
|
205
|
-
:post_install => 'install -b support/apachectl /etc/init.d/httpd;'
|
206
|
-
}
|
207
|
-
apt.install( {:base => %w(zlib1g-dev zlib1g openssl libssl-dev)}, :stable )
|
208
|
-
deprec.download_src(src_package, src_dir)
|
209
|
-
deprec.install_from_src(src_package, src_dir)
|
210
|
-
# ubuntu specific - should instead call generic name which can be picked up by different distros
|
211
|
-
send(run_method, "update-rc.d httpd defaults")
|
212
|
-
end
|
213
|
-
|
214
|
-
desc "Install PHP from source"
|
215
|
-
task :install_php do
|
216
|
-
version = 'php-5.2.2'
|
217
|
-
set :src_package, {
|
218
|
-
:file => version + '.tar.gz',
|
219
|
-
:md5sum => '7a920d0096900b2b962b21dc5c55fe3c php-5.2.2.tar.gz',
|
220
|
-
:dir => version,
|
221
|
-
:url => "http://www.php.net/distributions/#{version}.tar.gz",
|
222
|
-
:unpack => "tar zxf #{version}.tar.gz;",
|
223
|
-
:configure => %w(
|
224
|
-
./configure
|
225
|
-
--prefix=/usr/local/php
|
226
|
-
--with-apxs2=/usr/local/apache2/bin/apxs
|
227
|
-
--disable-ipv6
|
228
|
-
--enable-sockets
|
229
|
-
--enable-soap
|
230
|
-
--with-pcre-regex
|
231
|
-
--with-mysql
|
232
|
-
--with-zlib
|
233
|
-
--with-gettext
|
234
|
-
--with-sqlite
|
235
|
-
--enable-sqlite-utf8
|
236
|
-
--with-openssl
|
237
|
-
--with-mcrypt
|
238
|
-
--with-ncurses
|
239
|
-
--with-jpeg-dir=/usr
|
240
|
-
--with-gd
|
241
|
-
--with-ctype
|
242
|
-
--enable-mbstring
|
243
|
-
--with-curl==/usr/lib
|
244
|
-
;
|
245
|
-
).reject{|arg| arg.match '#'}.join(' '),
|
246
|
-
:make => 'make;',
|
247
|
-
:install => 'make install;',
|
248
|
-
:post_install => ""
|
249
|
-
}
|
250
|
-
apt.install( {:base => %w(zlib1g-dev zlib1g openssl libssl-dev
|
251
|
-
flex libcurl3 libcurl3-dev libmcrypt-dev libmysqlclient15-dev libncurses5-dev
|
252
|
-
libxml2-dev libjpeg62-dev libpng12-dev)}, :stable )
|
253
|
-
run "export CFLAGS=-O2;"
|
254
|
-
deprec.download_src(src_package, src_dir)
|
255
|
-
deprec.install_from_src(src_package, src_dir)
|
256
|
-
deprec.append_to_file_if_missing('/usr/local/apache2/conf/httpd.conf', 'AddType application/x-httpd-php .php')
|
257
|
-
end
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
# move all memcache stuff to separate file
|
262
|
-
set :memcache_ip, '127.0.0.1'
|
263
|
-
set :memcache_port, 11211
|
264
|
-
set :memcache_memory, 256
|
265
|
-
|
266
|
-
# XXX needs thought/work
|
267
|
-
task :memcached_start do
|
268
|
-
run "memcached -d -m #{memcache_memory} -l #{memcache_ip} -p #{memcache_port}"
|
269
|
-
end
|
270
|
-
|
271
|
-
# XXX needs thought/work
|
272
|
-
task :memcached_stop do
|
273
|
-
run "killall memcached"
|
274
|
-
end
|
275
|
-
|
276
|
-
# XXX needs thought/work
|
277
|
-
task :memcached_restart do
|
278
|
-
memcached_stop
|
279
|
-
memcached_start
|
280
|
-
end
|
281
|
-
|
282
|
-
task :install_memcached do
|
283
|
-
version = 'memcached-1.2.2'
|
284
|
-
set :src_package, {
|
285
|
-
:file => version + '.tar.gz',
|
286
|
-
:md5sum => 'a08851f7fa7b15e92ee6320b7a79c321 memcached-1.2.2.tar.gz',
|
287
|
-
:dir => version,
|
288
|
-
:url => "http://www.danga.com/memcached/dist/#{version}.tar.gz",
|
289
|
-
:unpack => "tar zxf #{version}.tar.gz;",
|
290
|
-
:configure => %w{
|
291
|
-
./configure
|
292
|
-
--prefix=/usr/local
|
293
|
-
;
|
294
|
-
}.reject{|arg| arg.match '#'}.join(' '),
|
295
|
-
:make => 'make;',
|
296
|
-
:install => 'make install;',
|
297
|
-
:post_install => 'install -b support/apachectl /etc/init.d/httpd;'
|
298
|
-
}
|
299
|
-
apt.install( {:base => %w(libevent-dev)}, :stable )
|
300
|
-
deprec.download_src(src_package, src_dir)
|
301
|
-
deprec.install_from_src(src_package, src_dir)
|
302
|
-
end
|
303
|
-
|
304
182
|
|
305
183
|
desc "Setup public symlink directories"
|
306
184
|
task :setup_symlinks, :roles => [:app, :web] do
|
@@ -332,7 +210,7 @@ Capistrano.configuration(:must_exist).load do
|
|
332
210
|
end
|
333
211
|
|
334
212
|
task :setup_admin_account do
|
335
|
-
user = Capistrano::CLI.
|
213
|
+
user = Capistrano::CLI.prompt "Enter userid for new user: "
|
336
214
|
deprec.useradd(user, :shell => '/bin/bash')
|
337
215
|
puts "Setting pasword for new account"
|
338
216
|
sudo_with_input("passwd #{user}", /UNIX password/) # ??? how many versions of the prompt are there?
|
@@ -344,6 +222,15 @@ Capistrano.configuration(:must_exist).load do
|
|
344
222
|
task :setup_admin_account_as_root do
|
345
223
|
as_root { setup_admin_account }
|
346
224
|
end
|
225
|
+
|
226
|
+
desc "Change password for the root account"
|
227
|
+
task :change_root_password do
|
228
|
+
sudo_with_input("passwd root", /UNIX password/) # ??? how many versions of the prompt are there?
|
229
|
+
end
|
230
|
+
|
231
|
+
task :change_root_password_as_root do
|
232
|
+
as_root { change_root_password }
|
233
|
+
end
|
347
234
|
|
348
235
|
|
349
236
|
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
Capistrano.configuration(:must_exist).load do
|
2
|
+
|
3
|
+
task :install_apache do # deprecated
|
4
|
+
apache_install
|
5
|
+
end
|
6
|
+
|
7
|
+
task :apache_install do
|
8
|
+
version = 'httpd-2.2.4'
|
9
|
+
set :src_package, {
|
10
|
+
:file => version + '.tar.gz',
|
11
|
+
:md5sum => '3add41e0b924d4bb53c2dee55a38c09e httpd-2.2.4.tar.gz',
|
12
|
+
:dir => version,
|
13
|
+
:url => "http://www.apache.org/dist/httpd/#{version}.tar.gz",
|
14
|
+
:unpack => "tar zxf #{version}.tar.gz;",
|
15
|
+
:configure => %w(
|
16
|
+
./configure
|
17
|
+
--enable-mods-shared=all
|
18
|
+
--enable-proxy
|
19
|
+
--enable-proxy-balancer
|
20
|
+
--enable-proxy-http
|
21
|
+
--enable-rewrite
|
22
|
+
--enable-cache
|
23
|
+
--enable-headers
|
24
|
+
--enable-ssl
|
25
|
+
--enable-deflate
|
26
|
+
--with-included-apr #_so_this_recipe_doesn't_break_when_rerun
|
27
|
+
--enable-dav #_for_subversion_
|
28
|
+
--enable-so #_for_subversion_
|
29
|
+
;
|
30
|
+
).reject{|arg| arg.match '#'}.join(' '),
|
31
|
+
:make => 'make;',
|
32
|
+
:install => 'make install;',
|
33
|
+
:post_install => 'install -b support/apachectl /etc/init.d/httpd;'
|
34
|
+
}
|
35
|
+
apt.install( {:base => %w(zlib1g-dev zlib1g openssl libssl-dev)}, :stable )
|
36
|
+
deprec.download_src(src_package, src_dir)
|
37
|
+
deprec.install_from_src(src_package, src_dir)
|
38
|
+
# ubuntu specific - should instead call generic name which can be picked up by different distros
|
39
|
+
send(run_method, "update-rc.d httpd defaults")
|
40
|
+
end
|
41
|
+
|
42
|
+
task :install_php do # deprecated
|
43
|
+
php_install
|
44
|
+
end
|
45
|
+
|
46
|
+
desc "Install PHP from source"
|
47
|
+
task :php_install do
|
48
|
+
version = 'php-5.2.2'
|
49
|
+
set :src_package, {
|
50
|
+
:file => version + '.tar.gz',
|
51
|
+
:md5sum => '7a920d0096900b2b962b21dc5c55fe3c php-5.2.2.tar.gz',
|
52
|
+
:dir => version,
|
53
|
+
:url => "http://www.php.net/distributions/#{version}.tar.gz",
|
54
|
+
:unpack => "tar zxf #{version}.tar.gz;",
|
55
|
+
:configure => %w(
|
56
|
+
./configure
|
57
|
+
--prefix=/usr/local/php
|
58
|
+
--with-apxs2=/usr/local/apache2/bin/apxs
|
59
|
+
--disable-ipv6
|
60
|
+
--enable-sockets
|
61
|
+
--enable-soap
|
62
|
+
--with-pcre-regex
|
63
|
+
--with-mysql
|
64
|
+
--with-zlib
|
65
|
+
--with-gettext
|
66
|
+
--with-sqlite
|
67
|
+
--enable-sqlite-utf8
|
68
|
+
--with-openssl
|
69
|
+
--with-mcrypt
|
70
|
+
--with-ncurses
|
71
|
+
--with-jpeg-dir=/usr
|
72
|
+
--with-gd
|
73
|
+
--with-ctype
|
74
|
+
--enable-mbstring
|
75
|
+
--with-curl==/usr/lib
|
76
|
+
;
|
77
|
+
).reject{|arg| arg.match '#'}.join(' '),
|
78
|
+
:make => 'make;',
|
79
|
+
:install => 'make install;',
|
80
|
+
:post_install => ""
|
81
|
+
}
|
82
|
+
apt.install( {:base => %w(zlib1g-dev zlib1g openssl libssl-dev
|
83
|
+
flex libcurl3 libcurl3-dev libmcrypt-dev libmysqlclient15-dev libncurses5-dev
|
84
|
+
libxml2-dev libjpeg62-dev libpng12-dev)}, :stable )
|
85
|
+
run "export CFLAGS=-O2;"
|
86
|
+
deprec.download_src(src_package, src_dir)
|
87
|
+
deprec.install_from_src(src_package, src_dir)
|
88
|
+
deprec.append_to_file_if_missing('/usr/local/apache2/conf/httpd.conf', 'AddType application/x-httpd-php .php')
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|