Commit 7f62c5bfc4501819593e1130d8eecaae5f932297

Authored by Antonio Terceiro
1 parent eb3d2e2c

debian: switch to unicorn

debian/apache2/conf.d/noosfero-cluster.conf
... ... @@ -1,8 +0,0 @@
1   -<Proxy balancer://noosfero>
2   - Include /etc/noosfero/apache/cluster.conf
3   - Order Allow,Deny
4   - Allow from All
5   -</Proxy>
6   -
7   -# vim: ft=apache
8   -
debian/apache2/virtualhost.conf
... ... @@ -15,7 +15,11 @@ RewriteRule ^/$ /index.html [QSA]
15 15 RewriteRule ^([^.]+)$ $1.html [QSA]
16 16  
17 17 RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
18   -RewriteRule ^.*$ balancer://noosfero%{REQUEST_URI} [P,QSA,L]
  18 +RewriteRule ^.*$ http://127.0.0.1:50000%{REQUEST_URI} [P,QSA,L]
  19 +<Proxy http://127.0.0.1:50000>
  20 + Order Allow,Deny
  21 + Allow from All
  22 +</Proxy>
19 23  
20 24 ErrorDocument 503 /503.html
21 25  
... ...
debian/control
... ... @@ -65,7 +65,7 @@ Depends: adduser,
65 65 ruby-whenever,
66 66 ruby-will-paginate (>= 2.3.12-1~),
67 67 tango-icon-theme,
68   - thin,
  68 + unicorn (>= 4.8),
69 69 ${misc:Depends}
70 70 Recommends: postgresql, postgresql-client
71 71 Description: free web-based platform for social networks
... ...
debian/noosfero-apache.install
1   -debian/apache2/conf.d/noosfero-cluster.conf etc/apache2/conf.d
2 1 debian/apache2/virtualhost.conf etc/noosfero/apache
3 2 debian/update-noosfero-apache usr/sbin
... ...
debian/noosfero.install
... ... @@ -19,7 +19,7 @@ debian/noosfero-check-dbconfig usr/sbin
19 19 debian/noosfero-console usr/sbin
20 20 debian/noosfero-runner usr/sbin
21 21 debian/noosfero.yml etc/noosfero
22   -debian/thin.yml etc/noosfero
  22 +debian/unicorn.rb etc/noosfero
23 23 doc usr/share/noosfero
24 24 doc/noosfero usr/share/noosfero/doc
25 25 etc/init.d/noosfero etc/init.d
... ...
debian/noosfero.links
1 1 var/tmp/noosfero usr/share/noosfero/tmp
2 2 var/log/noosfero usr/share/noosfero/log
3 3 etc/noosfero/database.yml usr/share/noosfero/config/database.yml
4   -etc/noosfero/thin.yml usr/share/noosfero/config/thin.yml
  4 +etc/noosfero/unicorn.rb usr/share/noosfero/config/unicorn.rb
5 5 etc/noosfero/plugins usr/share/noosfero/config/plugins
6 6 etc/noosfero/noosfero.yml usr/share/noosfero/config/noosfero.yml
7 7 etc/noosfero/local.rb usr/share/noosfero/config/local.rb
... ...
debian/noosfero.postinst
... ... @@ -10,23 +10,23 @@ makedir() {
10 10 }
11 11  
12 12  
13   -# migrate mongrel configuration to thin
14   -mongrel_config=/etc/noosfero/mongrel_cluster.yml
  13 +# migrate thin configuration to unicorn
  14 +unicorn_config=/etc/noosfero/unicorn.rb
15 15 thin_config=/etc/noosfero/thin.yml
16   -mongrel_orig_sha1=602c642c03f79349969c08330112a6f29d4c32aa
17   -if [ -r $mongrel_config ]; then
18   - mongrel_sha1=$(sha1sum $mongrel_config | awk '{print $1}')
19   - if [ "$mongrel_sha1" != "$mongrel_orig_sha1" ]; then
20   - port=$(awk '{ if ($1 == "port:") { print($2) } }' $mongrel_config)
21   - servers=$(awk '{ if ($1 == "servers:") { print($2) } }' $mongrel_config)
  16 +thin_orig_sha1=47cee6728a7896a13f4d66544086ab88b02e89a7
  17 +if [ -r $thin_config ]; then
  18 + thin_sha1=$(sha1sum $thin_config | awk '{print $1}')
  19 + if [ "$thin_sha1" != "$thin_orig_sha1" ]; then
  20 + port=$(awk '{ if ($1 == "port:") { print($2) } }' $thin_config)
  21 + servers=$(awk '{ if ($1 == "servers:") { print($2) } }' $thin_config)
22 22 if test -n "$port" && test "$port" -ne 50000 || test -n "$servers" && test "$servers" -ne 1 ; then
23   - # mongrel configuration was changed; update thin configuration
  23 + # thin configuration was changed; update unicorn configuration
24 24 # accordingly
25   - sed -i -e "s/port: .*/port: $port/" $thin_config
26   - sed -i -e "s/servers: .*/servers: $servers/" $thin_config
  25 + sed -i -e "s/listen.*/listen '127.0.0.1:$port'/" $unicorn_config
  26 + sed -i -e "s/worker_processes.*/worker_processes $servers/" $unicorn_config
27 27 fi
28 28 fi
29   - mv $mongrel_config $mongrel_config.bak
  29 + mv $thin_config $thin_config.bak
30 30 fi
31 31  
32 32 # create user noosfero in a portable way, while creating the log directory.
... ...
debian/thin.yml
... ... @@ -1,13 +0,0 @@
1   ----
2   -pid: tmp/pids/thin.pid
3   -address: 127.0.0.1
4   -user: noosfero
5   -timeout: 0
6   -port: 50000
7   -log: log/thin.log
8   -max_conns: 1024
9   -servers: 1
10   -max_persistent_conns: 512
11   -environment: production
12   -daemonize: true
13   -chdir: /usr/share/noosfero
debian/unicorn.rb 0 → 100644
... ... @@ -0,0 +1,3 @@
  1 +listen "127.0.0.1:50000"
  2 +
  3 +worker_processes `nproc`.to_i
... ...
debian/update-noosfero-apache
... ... @@ -2,20 +2,9 @@
2 2  
3 3 set -e
4 4  
5   -# automatically update configuration, but if package noosfero is also installed
  5 +# automatically update configuration, but only if package noosfero is also
  6 +# installed
6 7 if test -x /usr/share/noosfero/script/apacheconf; then
7   - datadir="/etc/noosfero/apache"
8   - mongrel_file="$datadir/mongrel.conf"
9   - cluster_file="$datadir/cluster.conf"
10   - if test -e "$cluster_file"; then
11   - echo "Overwriting $cluster_file ..."
12   - fi
13   - /usr/share/noosfero/script/apacheconf thin > "$cluster_file"
14   - if test -e "$mongrel_file"; then
15   - echo "Moving existing $mongrel_file away ..."
16   - mv "$mongrel_file" "$mongrel_file".bak
17   - (cd $datadir && ln -sf cluster.conf mongrel.conf)
18   - fi
19 8  
20 9 apache_site='/etc/apache2/sites-available/noosfero'
21 10 if ! test -e "$apache_site"; then
... ...
script/apacheconf
1 1 #!/usr/bin/env ruby
2 2  
3   -def mongrel_thin(config_file)
4   - require 'yaml'
5   - config = YAML.load_file(config_file)
6   - ip = config['address'] || '127.0.0.1'
7   - servers = config['servers'] || 1
8   - ports = port_range = config['port']..(config['port'] + servers - 1)
9   - ports.each do |port|
10   - puts "BalancerMember http://#{ip}:#{port}"
11   - end
12   -end
13   -
14 3 case ARGV.first
15   -when 'mongrel'
16   - mongrel_thin(File.dirname(__FILE__) + "/../config/mongrel_cluster.yml")
17   -when 'thin'
18   - mongrel_thin(File.dirname(__FILE__) + "/../config/thin.yml")
19 4 when 'virtualhosts'
20 5 require File.dirname(__FILE__) + '/../config/environment'
21 6 Environment.all.each do |environment|
... ... @@ -38,6 +23,6 @@ when &#39;virtualhosts&#39;
38 23 end
39 24 puts "# vim: ft=apache"
40 25 else
41   - puts "usage: %s mongrel|thin|virtualhosts" % $PROGRAM_NAME
  26 + puts "usage: %s virtualhosts" % $PROGRAM_NAME
42 27 exit 1
43 28 end
... ...
script/install-dependencies/debian-wheezy.sh
... ... @@ -72,8 +72,8 @@ run sudo apt-get -qy dist-upgrade
72 72  
73 73 run sudo apt-get -y install dctrl-tools
74 74  
75   -# *sigh* need ruby-rspec from backports
76   -run sudo apt-get -y install -t wheezy-backports ruby-rspec
  75 +# need these from backports
  76 +run sudo apt-get -y install -t wheezy-backports ruby-rspec unicorn
77 77  
78 78 # needed to run noosfero
79 79 packages=$(grep-dctrl -n -s Build-Depends,Depends,Recommends -S -X noosfero debian/control | sed -e '/^\s*#/d; s/([^)]*)//g; s/,\s*/\n/g' | grep -v 'memcached\|debconf\|dbconfig-common\|misc:Depends\|adduser\|mail-transport-agent')
... ...
util/debian-install/test
1 1 #!/bin/sh
2 2  
3 3 test_web_backend_running() {
4   - assertTrue 'Noosfero running' 'pgrep -u noosfero -f thin'
  4 + assertTrue 'Noosfero running' 'pgrep -u noosfero -f unicorn'
5 5 }
6 6  
7 7 test_delayed_job_running() {
... ...