deprec 1.6.0 → 1.7.0
Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,15 @@
|
|
1
|
+
== Slicehost extras
|
2
|
+
|
3
|
+
# A freshly built slice gives you the root account
|
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
|
9
|
+
cap setup_ssh_keys
|
10
|
+
cap install_rails_stack
|
11
|
+
cap setup
|
12
|
+
cap deploy_with_migrations
|
13
|
+
cap restart_apache
|
14
|
+
|
15
|
+
|
@@ -0,0 +1,172 @@
|
|
1
|
+
<pre>
|
2
|
+
---------------------------
|
3
|
+
deprec - Deployment Recipes
|
4
|
+
---------------------------
|
5
|
+
|
6
|
+
QUICKSTART
|
7
|
+
|
8
|
+
To get your rails app running on a stock standard Ubuntu 6.06 server:
|
9
|
+
|
10
|
+
cd /path/to/railsapp
|
11
|
+
deprec --apply-to . --name projectname --domain www.projectname.com
|
12
|
+
# edit config/deploy.rb to put in details of your subversion repository
|
13
|
+
cap install_rails_stack
|
14
|
+
cap setup
|
15
|
+
cap deploy_with_migrations
|
16
|
+
cap restart_apache
|
17
|
+
|
18
|
+
Read on for installation and usage instructions.
|
19
|
+
|
20
|
+
|
21
|
+
WHAT DEPREC IS
|
22
|
+
|
23
|
+
Deprec is a collection of automated recipes, written in ruby, for setting
|
24
|
+
up production ready rails servers. The idea is, even if it takes longer to
|
25
|
+
write a general recipe for your situation, rather than just doing it by hand,
|
26
|
+
it's well worth the effort because you get a reliable and reproducible
|
27
|
+
deployment that will work just as well even if it's 3am and a human would be
|
28
|
+
liable to make mistakes with live webservers.
|
29
|
+
|
30
|
+
You also get the advantage of a further set of conventions, which means that
|
31
|
+
other tools that you write can build on these conventions, in the same way
|
32
|
+
that the conventions that we already have amongst rails and capistrano users
|
33
|
+
benefit us when writing plugins and gems.
|
34
|
+
|
35
|
+
Deprec is designed to take a raw server, and set it up with current best
|
36
|
+
practices for a production web server. This currently means Apache 2.2 for
|
37
|
+
load balancing and static content, and Mongrel for serving rails. Other
|
38
|
+
alternatives can be added later, providing a convention over configuration
|
39
|
+
approach is followed. Version 1.0 of deprec contains recipes specifically
|
40
|
+
for default installations of Ubuntu 6.06 (server), although it also contains
|
41
|
+
tasks which will allow it to be used on slightly non-standard ubuntu
|
42
|
+
installations, such as those provided by slicehost.com.
|
43
|
+
|
44
|
+
Deprec has been tested on live VPS hosts with real production sites. It works
|
45
|
+
for me, if it doesn't work for you, then it's easy to extend.
|
46
|
+
|
47
|
+
|
48
|
+
WHAT DEPREC ISN'T
|
49
|
+
|
50
|
+
Deprec isn't an attempt to solve all problems on all servers. I am solving
|
51
|
+
my own deployment problems, and providing a general framework to help you
|
52
|
+
solve yours. Submissions of recipes for other linux distributions, and maybe
|
53
|
+
even other operating systems, will be accepted and included. If this is
|
54
|
+
popular, some work may be done to allow your own recipes to be managed as individual gems, dependent on the deprec gem.
|
55
|
+
|
56
|
+
|
57
|
+
CREDITS
|
58
|
+
|
59
|
+
Deprec is written and maintained by Mike Bailey <mike@bailey.net.au>.
|
60
|
+
More about me here: http://codemode.blogspot.com/
|
61
|
+
|
62
|
+
Deprec was inspired and uses the brilliantly executed Capistrano. Thanks Jamis!
|
63
|
+
|
64
|
+
After starting on this project I found myself reading and utilizing a lot of
|
65
|
+
code by Bradley Taylor, in particular the RailsMachine and VMbuilder gems.
|
66
|
+
|
67
|
+
Neil Wilson wrote three capistrano plugins that are used in this project.
|
68
|
+
|
69
|
+
I'd like to say a huge thanks to these guys for helping make my work easier!
|
70
|
+
|
71
|
+
For the first cut I have included all third party code in a directory within
|
72
|
+
the deprec gem, rather than link to the gems themselves. I made this decision
|
73
|
+
to prevent deprec from breaking due to a change in one of the other libraries.
|
74
|
+
|
75
|
+
Thanks to Craig Ambrose for help with testing, documentation and beer.
|
76
|
+
|
77
|
+
|
78
|
+
LICENCE
|
79
|
+
|
80
|
+
Deprec is licenced under the LGPL. This means that you can use it in commercial
|
81
|
+
or open source applications. More details found here:
|
82
|
+
http://www.gnu.org/licenses/lgpl.html
|
83
|
+
|
84
|
+
deprec - deployment recipes for capistrano
|
85
|
+
Copyright (C) 2006 Mike Bailey
|
86
|
+
|
87
|
+
This library is free software; you can redistribute it and/or
|
88
|
+
modify it under the terms of the GNU Lesser General Public
|
89
|
+
License as published by the Free Software Foundation; either
|
90
|
+
version 2.1 of the License, or (at your option) any later version.
|
91
|
+
|
92
|
+
This library is distributed in the hope that it will be useful,
|
93
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
94
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
95
|
+
Lesser General Public License for more details.
|
96
|
+
|
97
|
+
You should have received a copy of the GNU Lesser General Public
|
98
|
+
License along with this library; if not, write to the Free Software
|
99
|
+
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
100
|
+
|
101
|
+
|
102
|
+
USAGE
|
103
|
+
|
104
|
+
The following instructions describe how to use deprec. Please note that the
|
105
|
+
initial step, installing deprec on your workstation, will patch your copy of
|
106
|
+
capistrano to allow capistrano directives to be placed in a local configuration
|
107
|
+
file ~/.caprc. This patch has been accepted into capistrano and will be
|
108
|
+
available in a later release. The deprec_dotfiles command will not harm future
|
109
|
+
versions of capistrano that already contain this functionality.
|
110
|
+
|
111
|
+
Most of the magic of deprec occurs in the install_rails_stack section. This
|
112
|
+
builds the server, which developers previously had to do by hand, or find a
|
113
|
+
hosting company that did it for them. Once that is done, deprec also adds
|
114
|
+
application specific helper tasks, which are shown below in the "deploy a
|
115
|
+
rails app to hosts" section.
|
116
|
+
|
117
|
+
Please note that the "deprec --apply-to" command is much like the
|
118
|
+
"cap --apply-to" command, except that it creates a deploy.rb file in your
|
119
|
+
application's config directory with more available settings than capistrano
|
120
|
+
uses, because these settings can be used to configure the application specific
|
121
|
+
aspects of apache and mongrel.
|
122
|
+
|
123
|
+
Important Note:
|
124
|
+
Running "deprec --apply-to" currently overwrites your existing deploy.rb file.
|
125
|
+
If you have deployed the app elsewhere before, you may want to backup this file
|
126
|
+
so that you can refer to it when setting up your deprec generated deploy.rb.
|
127
|
+
Because deprec sets up the server, it can fill in more sensible defaults than
|
128
|
+
capistrano normally does, but there are still a few settings that you need to
|
129
|
+
set yourself. Future versions of deprec will not overwrite this file
|
130
|
+
automatically, but will move it out of the way first.
|
131
|
+
|
132
|
+
## install deprec on workstation
|
133
|
+
#
|
134
|
+
sudo gem install deprec -y # installs what you need
|
135
|
+
deprec_dotfiles # patches capistrano + creates your ~/.caprc
|
136
|
+
cap show_tasks # now you have deprec tasks included
|
137
|
+
|
138
|
+
|
139
|
+
## install rails stack
|
140
|
+
#
|
141
|
+
# this currently only works with ubuntu 6.06.1 server installed
|
142
|
+
# you need to have an account on this machine and sudo access
|
143
|
+
#
|
144
|
+
export HOSTS=r01,r02,r03 # define some hosts to mess with
|
145
|
+
cap setup_ssh_keys # copy out your public keys
|
146
|
+
cap install_rails_stack # install apache, rubygems, mongrel, rails, etc.
|
147
|
+
unset HOSTS # stop overriding cap's hosts list
|
148
|
+
|
149
|
+
|
150
|
+
## deploy a rails app to hosts
|
151
|
+
#
|
152
|
+
# setup dns for your domain or put an entry in /etc/hosts
|
153
|
+
cd /path/to/app
|
154
|
+
deprec --apply-to . --name bailey --domain bailey.net.au
|
155
|
+
cap setup
|
156
|
+
# put svn details in config/deploy.rb
|
157
|
+
# or run 'cap setup_scm' to import project
|
158
|
+
cap deploy_with_migrations
|
159
|
+
cap restart_apache
|
160
|
+
|
161
|
+
# update rails app on hosts
|
162
|
+
cap deploy
|
163
|
+
cap deploy_with_migrations
|
164
|
+
|
165
|
+
|
166
|
+
## some handy tools
|
167
|
+
#
|
168
|
+
cap show_tasks
|
169
|
+
cap disable_web, enable_web # puts up maintenance page
|
170
|
+
cap restart_mongrel_cluster # does what it says
|
171
|
+
|
172
|
+
</pre>
|
@@ -54,7 +54,9 @@ module Deprec
|
|
54
54
|
|
55
55
|
# create new user account on target system
|
56
56
|
def useradd(user, options={})
|
57
|
+
options[:shell] ||= '/bin/bash' # new accounts on ubuntu 6.06.1 have been getting /bin/sh
|
57
58
|
switches = ''
|
59
|
+
switches += " --shell=#{options[:shell]} " if options[:shell]
|
58
60
|
switches += ' --create-home ' unless options[:homedir] == false
|
59
61
|
switches += " --gid #{options[:group]} " unless options[:group].nil?
|
60
62
|
send(run_method, "grep '^#{user}:' /etc/passwd || sudo /usr/sbin/useradd #{switches} #{user}")
|
@@ -59,8 +59,10 @@ set :apache_server_name, domain
|
|
59
59
|
set :mongrel_address, apache_proxy_address
|
60
60
|
# set :mongrel_environment, "production"
|
61
61
|
# set :mongrel_config, "/etc/mongrel_cluster/#{application}.conf"
|
62
|
-
set :
|
63
|
-
set :
|
62
|
+
# set :mongrel_user_prefix, 'mongrel_'
|
63
|
+
# set :mongrel_user, mongrel_user_prefix + application
|
64
|
+
# set :mongrel_group_prefix, 'app_'
|
65
|
+
# set :mongrel_group, mongrel_group_prefix + application
|
64
66
|
|
65
67
|
# =============================================================================
|
66
68
|
# MYSQL OPTIONS
|
data/lib/deprec/recipes.rb
CHANGED
@@ -13,8 +13,12 @@ Capistrano.configuration(:must_exist).load do
|
|
13
13
|
set :user, (defined?(user) ? user : ENV['USER']) # user who is deploying
|
14
14
|
set :group, 'deploy' # deployment group
|
15
15
|
set :src_dir, (defined?(src_dir) ? src_dir : '/usr/local/src') # 3rd party src on servers
|
16
|
-
set :app_symlinks, nil
|
17
|
-
|
16
|
+
set :app_symlinks, nil
|
17
|
+
set :mongrel_user_prefix, 'mongrel_'
|
18
|
+
set :mongrel_user, lambda {mongrel_user_prefix + application}
|
19
|
+
set :mongrel_group_prefix, 'app_'
|
20
|
+
set :mongrel_group, lambda {mongrel_group_prefix + application}
|
21
|
+
|
18
22
|
desc <<-DESC
|
19
23
|
setup_rails_host takes a stock standard ubuntu 'dapper' 6.06.1 server
|
20
24
|
and installs everything needed to be a rails machine
|
@@ -67,7 +71,7 @@ Capistrano.configuration(:must_exist).load do
|
|
67
71
|
|
68
72
|
sudo "chgrp -R #{mongrel_group} #{tmp_dir} #{shared_dir}"
|
69
73
|
sudo "chmod 0775 #{tmp_dir} #{shared_dir}"
|
70
|
-
# set owner and group of
|
74
|
+
# set owner and group of mongrels file (if they exist)
|
71
75
|
files.each { |file|
|
72
76
|
sudo "chown #{mongrel_user} #{file} || exit 0"
|
73
77
|
sudo "chgrp #{mongrel_group} #{file} || exit 0"
|
@@ -180,7 +184,19 @@ Capistrano.configuration(:must_exist).load do
|
|
180
184
|
:dir => version,
|
181
185
|
:url => "http://www.apache.org/dist/httpd/#{version}.tar.gz",
|
182
186
|
:unpack => "tar zxf #{version}.tar.gz;",
|
183
|
-
:configure =>
|
187
|
+
:configure => %w{
|
188
|
+
./configure
|
189
|
+
--enable-proxy
|
190
|
+
--enable-proxy-balancer
|
191
|
+
--enable-proxy-http
|
192
|
+
--enable-rewrite
|
193
|
+
--enable-cache
|
194
|
+
--enable-headers
|
195
|
+
--enable-ssl
|
196
|
+
--enable-deflate
|
197
|
+
--with-included-apr
|
198
|
+
;
|
199
|
+
}.reject{|arg| arg.match '#'}.join(' '),
|
184
200
|
:make => 'make;',
|
185
201
|
:install => 'make install;',
|
186
202
|
:post_install => 'install -b support/apachectl /etc/init.d/httpd;'
|
@@ -200,7 +216,29 @@ Capistrano.configuration(:must_exist).load do
|
|
200
216
|
:dir => version,
|
201
217
|
:url => "http://www.php.net/distributions/#{version}.tar.gz",
|
202
218
|
:unpack => "tar zxf #{version}.tar.gz;",
|
203
|
-
:configure =>
|
219
|
+
:configure => %w{
|
220
|
+
./configure
|
221
|
+
--prefix=/usr/local/php
|
222
|
+
--with-apxs2=/usr/local/apache2/bin/apxs
|
223
|
+
--disable-ipv6
|
224
|
+
--enable-sockets
|
225
|
+
--enable-soap
|
226
|
+
--with-pcre-regex
|
227
|
+
--with-mysql
|
228
|
+
--with-zlib
|
229
|
+
--with-gettext
|
230
|
+
--with-sqlite
|
231
|
+
--enable-sqlite-utf8
|
232
|
+
--with-openssl
|
233
|
+
--with-mcrypt
|
234
|
+
--with-ncurses
|
235
|
+
--with-jpeg-dir=/usr
|
236
|
+
--with-gd
|
237
|
+
--with-ctype
|
238
|
+
--enable-mbstring
|
239
|
+
--with-curl==/usr/lib
|
240
|
+
;
|
241
|
+
}.reject{|arg| arg.match '#'}.join(' '),
|
204
242
|
:make => 'make;',
|
205
243
|
:install => 'make install;',
|
206
244
|
:post_install => ""
|
@@ -212,6 +250,52 @@ Capistrano.configuration(:must_exist).load do
|
|
212
250
|
deprec.append_to_file_if_missing('/usr/local/apache2/conf/httpd.conf', 'AddType application/x-httpd-php .php')
|
213
251
|
end
|
214
252
|
|
253
|
+
|
254
|
+
|
255
|
+
# move all memcache stuff to separate file
|
256
|
+
set :memcache_ip, '127.0.0.1'
|
257
|
+
set :memcache_port, 11211
|
258
|
+
set :memcache_memory, 256
|
259
|
+
|
260
|
+
# XXX needs thought/work
|
261
|
+
task :memcached_start do
|
262
|
+
run "memcached -d -m #{memcache_memory} -l #{memcache_ip} -p #{memcache_port}"
|
263
|
+
end
|
264
|
+
|
265
|
+
# XXX needs thought/work
|
266
|
+
task :memcached_stop do
|
267
|
+
run "killall memcached"
|
268
|
+
end
|
269
|
+
|
270
|
+
# XXX needs thought/work
|
271
|
+
task :memcached_restart do
|
272
|
+
memcached_stop
|
273
|
+
memcached_start
|
274
|
+
end
|
275
|
+
|
276
|
+
task :install_memcached do
|
277
|
+
version = 'memcached-1.2.2'
|
278
|
+
set :src_package, {
|
279
|
+
:file => version + '.tar.gz',
|
280
|
+
:md5sum => 'a08851f7fa7b15e92ee6320b7a79c321 memcached-1.2.2.tar.gz',
|
281
|
+
:dir => version,
|
282
|
+
:url => "http://www.danga.com/memcached/dist/#{version}.tar.gz",
|
283
|
+
:unpack => "tar zxf #{version}.tar.gz;",
|
284
|
+
:configure => %w{
|
285
|
+
./configure
|
286
|
+
--prefix=/usr/local
|
287
|
+
;
|
288
|
+
}.reject{|arg| arg.match '#'}.join(' '),
|
289
|
+
:make => 'make;',
|
290
|
+
:install => 'make install;',
|
291
|
+
:post_install => 'install -b support/apachectl /etc/init.d/httpd;'
|
292
|
+
}
|
293
|
+
apt.install( {:base => %w(libevent-dev)}, :stable )
|
294
|
+
deprec.download_src(src_package, src_dir)
|
295
|
+
deprec.install_from_src(src_package, src_dir)
|
296
|
+
end
|
297
|
+
|
298
|
+
|
215
299
|
desc "Setup public symlink directories"
|
216
300
|
task :setup_symlinks, :roles => [:app, :web] do
|
217
301
|
if app_symlinks
|
@@ -243,7 +327,7 @@ Capistrano.configuration(:must_exist).load do
|
|
243
327
|
|
244
328
|
task :setup_admin_account do
|
245
329
|
user = Capistrano::CLI.password_prompt "Enter userid for new user:"
|
246
|
-
deprec.useradd(user)
|
330
|
+
deprec.useradd(user, :shell => '/bin/bash')
|
247
331
|
puts "Setting pasword for new account"
|
248
332
|
sudo_with_input("passwd #{user}", /UNIX password/) # ??? how many versions of the prompt are there?
|
249
333
|
deprec.groupadd('admin')
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
|
|
3
3
|
specification_version: 1
|
4
4
|
name: deprec
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 1.
|
7
|
-
date: 2007-05-
|
6
|
+
version: 1.7.0
|
7
|
+
date: 2007-05-08 00:00:00 +10:00
|
8
8
|
summary: deployment recipes for capistrano
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -30,8 +30,9 @@ authors: []
|
|
30
30
|
|
31
31
|
files:
|
32
32
|
- bin/deprec
|
33
|
-
- docs/apache_config_options.txt
|
34
33
|
- docs/building_edge_capistrano.txt
|
34
|
+
- docs/old_homepage.txt
|
35
|
+
- docs/README.slicehost
|
35
36
|
- lib/deprec
|
36
37
|
- lib/deprec/capistrano_extensions
|
37
38
|
- lib/deprec/generators
|
@@ -1,101 +0,0 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
deprec
|
4
|
-
--enable-proxy
|
5
|
-
--enable-proxy-balancer
|
6
|
-
--enable-proxy-http
|
7
|
-
|
8
|
-
--enable-rewrite
|
9
|
-
--enable-cache
|
10
|
-
--enable-headers
|
11
|
-
|
12
|
-
--enable-ssl
|
13
|
-
--enable-deflate
|
14
|
-
--with-included-apr
|
15
|
-
|
16
|
-
new
|
17
|
-
--enable-proxy=shared
|
18
|
-
--enable-proxy-balancer=shared
|
19
|
-
--enable-proxy-http=shared
|
20
|
-
--enable-proxy-html=shared
|
21
|
-
|
22
|
-
--enable-rewrite
|
23
|
-
--enable-cache
|
24
|
-
--enable-headers
|
25
|
-
|
26
|
-
--enable-ssl=shared
|
27
|
-
--enable-deflate
|
28
|
-
--with-included-apr
|
29
|
-
|
30
|
-
--enable-so
|
31
|
-
--enable-cgi
|
32
|
-
--enable-info
|
33
|
-
--enable-mime-magic
|
34
|
-
--enable-usertrack
|
35
|
-
--enable-mem-cache
|
36
|
-
--enable-modules=all
|
37
|
-
--enable-mods-shared=all
|
38
|
-
--with-mpm=worker
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
Capistrano.configuration(:must_exist).load do
|
46
|
-
|
47
|
-
desc "Install full apache with mod_php and extras"
|
48
|
-
task :install_full_apache do
|
49
|
-
version = 'httpd-2.2.4'
|
50
|
-
set :src_package, {
|
51
|
-
:file => version + '.tar.gz',
|
52
|
-
:md5sum => '3add41e0b924d4bb53c2dee55a38c09e httpd-2.2.4.tar.gz',
|
53
|
-
:dir => version,
|
54
|
-
:url => "http://www.apache.org/dist/httpd/#{version}.tar.gz",
|
55
|
-
:unpack => "tar zxf #{version}.tar.gz;",
|
56
|
-
:configure => './configure --enable-so --enable-cgi --enable-info --enable-mime-magic --enable-usertrack --enable-deflate --enable-proxy=shared --enable-proxy-html=shared --enable-proxy-http=shared --enable-proxy-balancer=shared --enable-rewrite --enable-cache --enable-mem-cache --enable-ssl=shared --enable-headers --enable-modules=all --enable-mods-shared=all --with-included-apr --with-mpm=worker;',
|
57
|
-
:make => 'make;',
|
58
|
-
:install => 'make install;',
|
59
|
-
:post_install => 'install -b support/apachectl /etc/init.d/httpd;'
|
60
|
-
}
|
61
|
-
run "export CFLAGS=-O2;"
|
62
|
-
deprec.download_src(src_package, src_dir)
|
63
|
-
deprec.install_from_src(src_package, src_dir)
|
64
|
-
# ubuntu specific - should instead call generic name which can be picked up by different distros
|
65
|
-
send(run_method, "update-rc.d httpd defaults")
|
66
|
-
end
|
67
|
-
|
68
|
-
desc "Install PHP from source"
|
69
|
-
task :install_php_from_source do
|
70
|
-
version = 'php-5.2.1'
|
71
|
-
set :src_package, {
|
72
|
-
:file => version + '.tar.gz',
|
73
|
-
:dir => version,
|
74
|
-
:url => "http://ca.php.net/distributions/#{version}.tar.gz",
|
75
|
-
:unpack => "tar zxf #{version}.tar.gz;",
|
76
|
-
:configure => "./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --disable-ipv6 --enable-sockets --enable-soap --with-pcre-regex --with-mysql --with-zlib --with-gettext --with-sqlite --enable-sqlite-utf8 --with-openssl --with-mcrypt --with-ncurses --with-jpeg-dir=/usr --with-gd --with-ctype --enable-mbstring --with-curl==/usr/lib;",
|
77
|
-
:make => 'make;',
|
78
|
-
:install => 'make install;',
|
79
|
-
:post_install => ""
|
80
|
-
}
|
81
|
-
apt.install( {:base => %w(flex libcurl3 libcurl3-dev libmcrypt-dev libmysqlclient15-dev libncurses5-dev)}, :stable )
|
82
|
-
run "export CFLAGS=-O2;"
|
83
|
-
deprec.download_src(src_package, src_dir)
|
84
|
-
deprec.install_from_src(src_package, src_dir)
|
85
|
-
end
|
86
|
-
|
87
|
-
desc "Install apache, ruby, php, and server extras"
|
88
|
-
task :install_full_rails_stack do
|
89
|
-
setup_user_perms
|
90
|
-
enable_universe # we'll need some packages from the 'universe' repository
|
91
|
-
disable_cdrom_install # we don't want to have to insert cdrom
|
92
|
-
install_packages_for_rails # install packages that come with distribution
|
93
|
-
install_rubygems
|
94
|
-
install_gems
|
95
|
-
install_rmagick
|
96
|
-
install_postfix
|
97
|
-
install_full_apache
|
98
|
-
install_php_from_source # php must be installed after apache, needs 'apxs' in apache2/bin
|
99
|
-
end
|
100
|
-
|
101
|
-
end
|