Polishing up after git mess...

This commit is contained in:
Alec Leamas 2010-10-20 20:19:49 +02:00
parent 961510a8ed
commit 03f637eca9
14 changed files with 73 additions and 140 deletions

View file

@ -7,6 +7,7 @@ default:
debug: false debug: false
socket_debug : false socket_debug : false
socket_host: 0.0.0.0 socket_host: 0.0.0.0
socket_pidfile: "log/diaspora-wsd.pid"
socket_port: 8080 socket_port: 8080
socket_collection_name: 'websocket' socket_collection_name: 'websocket'
pubsub_server: 'https://pubsubhubbub.appspot.com/' pubsub_server: 'https://pubsubhubbub.appspot.com/'
@ -18,7 +19,7 @@ default:
smtp_authentication: 'plain' smtp_authentication: 'plain'
smtp_username: 'no-reply@example.com' smtp_username: 'no-reply@example.com'
smtp_password: 'secret' smtp_password: 'secret'
development: development:

View file

@ -12,11 +12,11 @@ aimed for packaging purposes.
Prerequisites: Prerequisites:
- ruby-1.8, rubygem, git and rake as described in - ruby-1.8, rubygem, git and rake as described in
http://github.com/diaspora/diaspora/wiki/Rpm-installation-on-fedora [RPM installation Fedora](http://github.com/diaspora/diaspora/wiki/Rpm-installation-on-fedora)
or http://github.com/diaspora/diaspora/wiki/Installing-on-CentOS-Fedora or [Installing-on-CentOS-Fedora](http://github.com/diaspora/diaspora/wiki/Installing-on-CentOS-Fedora)
- A personal environment to build RPM:s, also described in - A personal environment to build RPM:s, also described in
http://github.com/diaspora/diaspora/wiki/Rpm-installation-on-fedora [RPM installation Fedora](http://github.com/diaspora/diaspora/wiki/Rpm-installation-on-fedora)
Install g++ (possibly unnnecessary?): Install g++ (possibly unnnecessary?):
% yum install gcc-c++ % yum install gcc-c++
@ -46,7 +46,7 @@ Start development server:
cd /usr/share/diaspora/master cd /usr/share/diaspora/master
./script/server ./script/server
See http://github.com/diaspora/diaspora/wiki/Using-apache for See [Using Apache](http://github.com/diaspora/diaspora/wiki/Using-apache) for
apache/passenger setup. After configuration, start with: apache/passenger setup. After configuration, start with:
/sbin/service diaspora-wsd start /sbin/service diaspora-wsd start
/sbin/service httpd restart /sbin/service httpd restart
@ -120,7 +120,8 @@ directory, copy-paste previous version nr. It will be updated.
This has been confirmed to start up and provide basic functionality both using This has been confirmed to start up and provide basic functionality both using
the thin webserver and apache passenger, on 32/64 bit systems and in the the thin webserver and apache passenger, on 32/64 bit systems and in the
mock build environment. mock build environment. Irregular nightly builds are available form time to time
at [ftp://mumin.dnsalias.net/pub/leamas/diaspora/builds](ftp://mumin.dnsalias.net/pub/leamas/diaspora/builds)
#### Implementation #### Implementation

View file

@ -39,10 +39,11 @@ else
exit 1 exit 1
fi fi
# %attr(0777, diaspora, diaspora) doesn't work in specfile due to umask 022.
chmod 777 /var/lib/diaspora/uploads
chown -R diaspora /var/log/diaspora chown -R diaspora /var/log/diaspora
sed -i '/socket_pidfile:/s|:.*|: /var/run/diaspora/diaspora-wsd.pid|' \
config/app_config.yml
hostname=$( awk '/pod_url:/ { print $2; exit }' <config/app_config.yml) hostname=$( awk '/pod_url:/ { print $2; exit }' <config/app_config.yml)
if [ -n "$arg_hostname" ]; then if [ -n "$arg_hostname" ]; then

View file

@ -33,9 +33,9 @@ cd /usr/share/diaspora
RETVAL=0 RETVAL=0
prog="Diaspora websocket server" prog="Diaspora websocket server"
exec="script/websocket_server.rb" exec="script/websocket_server.rb"
pidfile="/var/run/diaspora-wsd" pidfile="/var/run/diaspora/diaspora-wsd"
lockfile="/var/lock/subsys/diaspora-wsd" lockfile="/var/lock/subsys/diaspora-wsd"
logfile=/var/log/diaspora-wsd.log logfile="/var/log/diaspora/diaspora-wsd.log"
[ -n "$OPTIONS" ] && OPTIONS=" $OPTIONS" [ -n "$OPTIONS" ] && OPTIONS=" $OPTIONS"
ruby_cmd="ruby -C $PWD $exec$OPTIONS" ruby_cmd="ruby -C $PWD $exec$OPTIONS"

View file

@ -77,6 +77,7 @@ mkdir -p $RPM_BUILD_ROOT/%{_localstatedir}/lib/diaspora/tmp
cp %SOURCE2 $RPM_BUILD_ROOT/%{_datadir}/diaspora cp %SOURCE2 $RPM_BUILD_ROOT/%{_datadir}/diaspora
mkdir -p $RPM_BUILD_ROOT/%{_localstatedir}/log/diaspora mkdir -p $RPM_BUILD_ROOT/%{_localstatedir}/log/diaspora
mkdir -p $RPM_BUILD_ROOT/%{_localstatedir}/run/diaspora
mkdir -p $RPM_BUILD_ROOT/%{_localstatedir}/lib/diaspora/uploads mkdir -p $RPM_BUILD_ROOT/%{_localstatedir}/lib/diaspora/uploads
mkdir -p $RPM_BUILD_ROOT/%{_localstatedir}/lib/diaspora/tmp mkdir -p $RPM_BUILD_ROOT/%{_localstatedir}/lib/diaspora/tmp
@ -94,6 +95,8 @@ find -L $RPM_BUILD_ROOT/%{_datadir}/diaspora -type f \
cat files >> dirs && mv -f dirs files cat files >> dirs && mv -f dirs files
sed -i -e '\|.*/master/config.ru"$|d' \ sed -i -e '\|.*/master/config.ru"$|d' \
-e '\|.*/master/config/environment.rb"$|d' \ -e '\|.*/master/config/environment.rb"$|d' \
-e '\|.*/run/diaspora"$|d' \
-e '\|.*/pkg/fedora/dist"$|d' \
-e 's|%{buildroot}||' -e 's|//|/|' -e '/""/d' \ -e 's|%{buildroot}||' -e 's|//|/|' -e '/""/d' \
files files
@ -101,6 +104,7 @@ sed -i -e '\|.*/master/config.ru"$|d' \
%post wsd %post wsd
/sbin/chkconfig --add diaspora-wsd || : /sbin/chkconfig --add diaspora-wsd || :
%preun wsd %preun wsd
if [ $1 -eq 0 ] ; then if [ $1 -eq 0 ] ; then
service diaspora-wsd stop &>/dev/null || : service diaspora-wsd stop &>/dev/null || :
@ -117,9 +121,11 @@ rm -fr $RPM_BUILD_ROOT
%doc AUTHORS README.md GNU-AGPL-3.0 COPYRIGHT README-Fedora.md %doc AUTHORS README.md GNU-AGPL-3.0 COPYRIGHT README-Fedora.md
%attr(-, diaspora, diaspora) %{_datadir}/diaspora/master/config.ru %attr(-, diaspora, diaspora) %{_datadir}/diaspora/master/config.ru
%attr(-, diaspora, diaspora) %{_datadir}/diaspora/master/config/environment.rb %attr(-, diaspora, diaspora) %{_datadir}/diaspora/master/config/environment.rb
%attr(-, diaspora, diaspora) %{_datadir}/diaspora/master/pkg/fedora/dist
%attr(-, diaspora, diaspora) %{_localstatedir}/log/diaspora %attr(-, diaspora, diaspora) %{_localstatedir}/log/diaspora
%attr(-, diaspora, diaspora) %{_localstatedir}/lib/diaspora/uploads %attr(-, diaspora, diaspora) %{_localstatedir}/lib/diaspora/uploads
%attr(-, diaspora, diaspora) %{_localstatedir}/lib/diaspora/tmp %attr(-, diaspora, diaspora) %{_localstatedir}/lib/diaspora/tmp
%attr(-, diaspora, diaspora) %{_localstatedir}/run/diaspora
%{_datadir}/diaspora/master/tmp %{_datadir}/diaspora/master/tmp
%{_datadir}/diaspora/master/public/uploads %{_datadir}/diaspora/master/public/uploads

0
pkg/fedora/dist/.gitkeep vendored Normal file
View file

View file

@ -181,7 +181,6 @@ function make_bundle()
# Usage: make_bundle [ commit, defaults to HEAD] # Usage: make_bundle [ commit, defaults to HEAD]
# #
{ {
set -x
checkout ${1:-'HEAD'} >/dev/null checkout ${1:-'HEAD'} >/dev/null
bundle_id=$( git_id dist/diaspora/Gemfile) bundle_id=$( git_id dist/diaspora/Gemfile)
bundle_name="diaspora-bundle-$VERSION-$bundle_id" bundle_name="diaspora-bundle-$VERSION-$bundle_id"

View file

@ -5,6 +5,7 @@ work as a first step towards packaging, but should be usable as is.
### Synopsis ### Synopsis
Bootstrap the distribution from git: Bootstrap the distribution from git:
% sudo apt-get install git-core % sudo apt-get install git-core
% git clone git://github.com/diaspora/diaspora.git % git clone git://github.com/diaspora/diaspora.git
@ -34,13 +35,18 @@ The normal procedure to update is to just
$ ./make-dist.sh bundle $ ./make-dist.sh bundle
$ ./make-dist.sh source $ ./make-dist.sh source
And then use diaspora-install and diaspora-install-bundle as above. and then use diaspora-install and diaspora-install-bundle as above.
It's necessary to always have the correct bundle. The *./make-dist.sh bundle* It's necessary to always have the correct bundle. The *./make-dist.sh bundle*
above will use a cached bundle if it's still valid, else build a new. above will use a cached bundle if it's still valid, else build a new.
In most cases only source will need to be built, which is fast. In most cases only source will need to be built, which is fast.
### Notes ### Notes
The diaspora websocket service can be comtrolled through upstart.
To start/stop:
% sudo service diaspora-wsd start
% sudo service diaspora-wsd stop
./make-dist.sh bundle|source occasionally fails on bad Gemfile.lock. The ./make-dist.sh bundle|source occasionally fails on bad Gemfile.lock. The
root cause is a bad Gemfile.lock in the git repo. Possible fixes includes root cause is a bad Gemfile.lock in the git repo. Possible fixes includes
using a older version known to work: using a older version known to work:
@ -51,16 +57,6 @@ or forcing a complete update of Gemfile.lock using 'bundle update' (a
potentially problematic operation): potentially problematic operation):
% ./make-dist.sh -f bundle % ./make-dist.sh -f bundle
./make-dist.sh bundle|source occasionally fails on bad Gemfile.lock. The
root cause is a bad Gemfile.lock in the git repo. Possible fixes includes
using a older version known to work:
% ./make-dist.sh -c c818885b6 bundle
% ./make-dist.sh -c c818885b6 source
or forcing a complete update of Gemfile.lock using 'bundle update' (a
potential problematic operation):
% ./make-dist.sh -f bundle
The application lives in /usr/share/diaspora/master. All writable areas The application lives in /usr/share/diaspora/master. All writable areas
(log, uploads, tmp) are links to /var/lib/diaspora. The config file lives (log, uploads, tmp) are links to /var/lib/diaspora. The config file lives
in /etc/diaspora. All files in /usr/share are read-only, owned by root. in /etc/diaspora. All files in /usr/share are read-only, owned by root.
@ -79,19 +75,11 @@ dependencies lives in the application - nothing is installed by user or
on system level. on system level.
This has been tested on a Ubuntu 32-bit 10.10 , clean server and on 10.04 This has been tested on a Ubuntu 32-bit 10.10 , clean server and on 10.04
Lucid desktop, also clean installation. Lucid desktop, also clean installation. Irregular nightly builds are
available from time to time at
[ftp://mumin.dnsalias.net/pub/leamas/diaspora/builds](ftp://mumin.dnsalias.net/pub/leamas/diaspora/builds)
mongodb is having problems occasionally. Sometimes the dependencies are not mongodb is having problems occasionally. Sometimes the dependencies are not
installed, and mongod refuses to start. invoke */usr/bin/mongod -f installed, and mongod refuses to start. invoke */usr/bin/mongod -f
/etc/mongodb.conf* to test. The lockfile /var/lib/mongodb/mongod.conf is /etc/mongodb.conf* to test. The lockfile /var/lib/mongodb/mongod.conf is
also a potential problem. Remove to make it start again. also a potential problem. Remove to make it start again.
The diaspora-wsd is just placeholder FTM, it does **not** work.

View file

@ -30,9 +30,8 @@ sed -i '/BUNDLE_PATH/s|:.*|: /usr/lib/diaspora-bundle/bundle|' \
cp master/GNU-AGPL-3.0 master/COPYRIGHT master/README.md master/AUTHORS . cp master/GNU-AGPL-3.0 master/COPYRIGHT master/README.md master/AUTHORS .
cp master/config/app_config.yml.example ./app_config.yml cp master/config/app_config.yml.example ./app_config.yml
cp master/pkg/ubuntu/diaspora-wsd /etc/init.d cp master/pkg/ubuntu/diaspora-wsd.conf /etc/init
sed -i '/^cd /s|.*|cd /usr/share/diaspora/master|' /etc/init.d/diaspora-wsd
cp master/pkg/ubuntu/diaspora.logrotate /etc/logrotate.d/diaspora cp master/pkg/ubuntu/diaspora.logrotate /etc/logrotate.d/diaspora
@ -41,8 +40,8 @@ cp master/pkg/ubuntu/diaspora-setup .
mkdir -p /var/log/diaspora mkdir -p /var/log/diaspora
mkdir -p /var/lib/diaspora/uploads mkdir -p /var/lib/diaspora/uploads
mkdir -p /var/lib/diaspora/tmp mkdir -p /var/lib/diaspora/tmp
mkdir -p /var/run/diaspora
mkdir -p /etc/diaspora mkdir -p /etc/diaspora
mkdir -p /usr/share/diaspora/master/pkg/ubuntu/dist
ln -sf /var/log/diaspora ./master/log ln -sf /var/log/diaspora ./master/log
cp master/config/app_config.yml.example /etc/diaspora/app_config.yml cp master/config/app_config.yml.example /etc/diaspora/app_config.yml
@ -65,5 +64,6 @@ chown diaspora:diaspora /var/log/diaspora
chown diaspora:diaspora /var/lib/diaspora/uploads chown diaspora:diaspora /var/lib/diaspora/uploads
chown diaspora:diaspora /var/lib/diaspora/tmp chown diaspora:diaspora /var/lib/diaspora/tmp
chown diaspora:diaspora /var/lib/diaspora chown diaspora:diaspora /var/lib/diaspora
chown diaspora:diaspora /var/run/diaspora
chown diaspora:diaspora /usr/share/diaspora/master/pkg/ubuntu/dist chown diaspora:diaspora /usr/share/diaspora/master/pkg/ubuntu/dist

View file

@ -43,9 +43,11 @@ else
exit 1 exit 1
fi fi
chmod 777 /var/lib/diaspora/uploads
chown -R diaspora /var/log/diaspora chown -R diaspora /var/log/diaspora
sed -i '/socket_pidfile:/s|:.*|: /var/run/diaspora/diaspora-wsd.pid|' \
config/app_config.yml
hostname=$( awk '/pod_url:/ { print $2; exit }' <config/app_config.yml) hostname=$( awk '/pod_url:/ { print $2; exit }' <config/app_config.yml)
if [ -n "$arg_hostname" ]; then if [ -n "$arg_hostname" ]; then

View file

@ -1,102 +0,0 @@
#!/bin/bash
#
# /etc/rc.d/init.d/diaspora-wsd
#
# SHOULD start the diaspora websocket daemon, but it doesn't. No way.
#
# chkconfig: - 80 80
# description: Diaspora websocket daemon
### BEGIN INIT INFO
# Provides: diaspora-wsd
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Should-Start: $remote_fs
# Should-Stop: $remote_fs
# Default-Start:
# Default-Stop: 0 1 2 3 4 5 6
# Short-Description: start and stop Diaspora websocket server
# Description: The websocket server provides websocket services for
# diaspora.
### END INIT INFO
# Source function library.
. /etc/init.d/functions
if [ -f /etc/sysconfig/diaspora-wsd -a $UID -eq 0 ]; then
. /etc/sysconfig/diaspora-wsd
fi
# Note: this line is patched by installation scripts.
cd /usr/share/diaspora
RETVAL=0
prog="Diaspora websocket server"
exec="script/websocket_server.rb"
pidfile="/var/run/diaspora-wsd"
lockfile="/var/lock/subsys/diaspora-wsd"
logfile=/var/log/diaspora-wsd.log
[ -n "$OPTIONS" ] && OPTIONS=" $OPTIONS"
ruby_cmd="ruby -C $PWD $exec$OPTIONS"
start() {
[ $UID -eq 0 ] || exit 4
[ -f $exec ] || exit 5
echo -n $"Starting $prog: "
daemon --pidfile $pidfile "$ruby_cmd >>$logfile 2>&1 &"
RETVAL=$?
echo
if test $RETVAL = 0; then
touch $lockfile
pgrep -f "$ruby_cmd" > $pidfile || {
echo "Warning: cannot find running diaspora-webserver"
exit 7
}
fi
}
stop() {
[ $UID -eq 0 ] || exit 4
echo -n $"Stopping $prog: "
killproc -p $pidfile $exec
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -f $lockfile
echo
}
#
# See how we were called.
#
case "$1" in
start)
start
;;
stop)
stop
;;
force-reload|restart)
stop
sleep 1
start
RETVAL=$?
;;
condrestart|try-restart)
if [ -f $lockfile ]; then
stop
sleep 3
start
fi
;;
status)
status -p $pidfile $exec
RETVAL=$?
;;
*)
echo $"Usage: $0 {condrestart|try-restart|start|stop|restart|force-reload|status}"
RETVAL=2
[ "$1" = 'usage' ] && RETVAL=0
esac
exit $RETVAL

View file

@ -0,0 +1,17 @@
# Ubuntu upstart file at /etc/init/diaspora-wsd.conf
start on runlevel [5]
stop on runlevel [06]
script
if [ -f /etc/default/diaspora ]; then
. /etc/default/diaspora;
fi;
cd /usr/share/diaspora/master;
start-stop-daemon --start \
--chuid diaspora:diaspora \
--chdir $PWD \
--exec "/usr/local/bin/bundle" \
-- exec ruby -C $PWD script/websocket_server.rb;
end script

0
pkg/ubuntu/dist/.gitkeep vendored Normal file
View file

View file

@ -5,6 +5,25 @@
require File.dirname(__FILE__) + '/../config/environment' require File.dirname(__FILE__) + '/../config/environment'
require File.dirname(__FILE__) + '/../lib/diaspora/websocket' require File.dirname(__FILE__) + '/../lib/diaspora/websocket'
at_exit do
begin
File.delete(PID_FILE)
rescue
puts 'Cannot remove pidfile: ' + (PID_FILE ? PID_FILE : "NIL")
end
end
def write_pidfile
begin
f = File.open(PID_FILE, "w")
f.write(Process.pid)
f.close
rescue => e
puts "Can't write to pidfile!"
puts e.inspect
end
end
CHANNEL = Magent::GenericChannel.new('websocket') CHANNEL = Magent::GenericChannel.new('websocket')
def process_message def process_message
if CHANNEL.queue_count > 0 if CHANNEL.queue_count > 0
@ -36,7 +55,8 @@ begin
ws.onclose { Diaspora::WebSocket.unsubscribe(ws.request['Path'].gsub('/',''), sid) } ws.onclose { Diaspora::WebSocket.unsubscribe(ws.request['Path'].gsub('/',''), sid) }
} }
end end
PID_FILE = APP_CONFIG[:socket_pidfile]
write_pidfile
puts "Websocket server started." puts "Websocket server started."
process_message process_message
} }