Automatic startup methods: Difference between revisions

From diaspora* project wiki
(Replace unicorn with puma)
 
(13 intermediate revisions by 7 users not shown)
Line 1: Line 1:
This page is for listing alternative methods for starting up the Diaspora service automatical or in some manner other than calling the ./script/start
This page is for listing methods to automatically start diaspora* when your server starts.


== Init Scripts & Upstart ==
= Recommended: systemd =
* [http://anonscm.debian.org/cgit/pkg-ruby-extras/diaspora-installer.git/tree/debian/diaspora-installer.init Init script of debian-installer package]


Sample /etc/diaspora.conf required by the init script is given below
Open the following location in your favorite text editor


<code><pre>
{{#tag:syntaxhighlight|
export SERVERNAME=localhost
/etc/systemd/system/diaspora.service
export ENVIRONMENT_URL=https://localhost
|lang="bash"}}
export RAILS_ENV=production
export DB=postgres</pre></code>


* <del>[https://github.com/netom/diaspora-init diaspora-init on Github by netom]</del> [https://github.com/ur5/diaspora-init fork of dead repo]
and paste
* [https://github.com/jhass/old_diaspora_wiki/blob/master/Init-script-for-diaspora.md Init Script on OLD github page for diaspora]
 
* [http://stackoverflow.com/questions/9122488/how-to-allow-diaspora-to-start-when-server-boot-up Stack Overflow Ubuntu init script]
{{#tag:syntaxhighlight|
[Unit]
Description=Diaspora social network
After=network.target
 
[Service]
User=diaspora
WorkingDirectory=/home/diaspora/diaspora
ExecStart=/bin/bash -lc "script/server"
Restart=always
 
[Install]
WantedBy=multi-user.target
|lang="systemd"}}
 
into it.
 
When the file is saved, you can start your pod with
 
{{#tag:syntaxhighlight|
systemctl enable --now diaspora.service
|lang="bash"}}
 
The pod will automatically start again if you restart your server.
 
= Alternatives =
 
These are possible alternatives, use them only if you have a specific need.
 
== systemd with individual services ==
 
 
This configuration is based on a forum post of Benjamin Neff [https://discourse.diasporafoundation.org/t/installing-diaspora-on-debian-9/790/5]
 
<pre>cd /etc/systemd/system</pre>
 
Create the following files with you preferred text editor e.g. ''nano''
 
'''diaspora.target'''
 
<pre>
[Unit]
Description=Diaspora social network
Wants=postgresql.service
Wants=redis-server.service
After=redis-server.service
After=postgresql.service
 
[Install]
WantedBy=multi-user.target
</pre>
 
'''diaspora-web.service'''
 
<pre>
[Unit]
Description=Diaspora social network (puma)
PartOf=diaspora.target
StopWhenUnneeded=true
 
[Service]
User=diaspora
Environment=RAILS_ENV=production
WorkingDirectory=/home/diaspora/diaspora
PIDFile=/home/diaspora/diaspora/tmp/pids/web.pid
ExecStart=/bin/bash -lc "bin/bundle exec puma -C config/puma.rb"
ExecReload=/bin/bash -lc "bin/pumactl -F config/puma.rb restart"
ExecStop=/bin/bash -lc "bin/pumactl -F config/puma.rb stop"
Restart=always
 
[Install]
WantedBy=diaspora.target
</pre>
 
'''diaspora-sidekiq.service'''
 
<pre>
[Unit]
Description=Diaspora social network (sidekiq)
PartOf=diaspora.target
StopWhenUnneeded=true
 
[Service]
User=diaspora
Environment=RAILS_ENV=production
WorkingDirectory=/home/diaspora/diaspora
ExecStart=/bin/bash -lc "bin/bundle exec sidekiq"
Restart=always
 
[Install]
WantedBy=diaspora.target
</pre>
 
Now you have to enable all of them
 
<pre>systemctl enable diaspora.target diaspora-sidekiq.service diaspora-web.service</pre>
 
Start all services with
 
<pre>systemctl restart diaspora.target</pre>
 
You can check if puma and sidekiq work with
 
<pre>
systemctl status diaspora-web.service
systemctl status diaspora-sidekiq.service
</pre>
 
'''Hint:'''  The path '''''/lib/systemd/system/''''' is for unit-files installed from the system, you can create user-created units in '''''/etc/systemd/system/'''''.  Both locations work.
 
==== Other sources ====


== systemd ==
* [https://github.com/jhass/diaspora/blob/old_systemd/diaspora.service Old systemd unit starting script/server]
* [https://github.com/jhass/diaspora/blob/old_systemd/diaspora.service Old systemd unit starting script/server]
* [https://github.com/jhass/diaspora/tree/systemd/systemd modular systemd units] (running puma instead of unicorn and chruby instead of RVM)
* [https://github.com/jhass/diaspora/tree/systemd/systemd modular systemd units] (running chruby instead of RVM)


== daemontools ==
== daemontools ==
Line 27: Line 133:
* [https://github.com/diasporg/diaspora/blob/master/script/diaspora.god diasp.org god config]
* [https://github.com/diasporg/diaspora/blob/master/script/diaspora.god diasp.org god config]


== Passenger ==
All you need is the following snippet of Apache configuration in e.g. a <code><VirtualHost></code> block:
<code><pre>
DocumentRoot $diasporapath/public
PassengerAppRoot $diasporapath
PassengerAppEnv production
PassengerRuby $rubypath
</pre></code>
Replace <code>$diasporapath</code> with the path where you installed diaspora*, and replace <code>$rubypath</code> with the Ruby binary Passenger should use (probably what RVM installed, if you use RVM).


Note, however, that this does not automatically start Sidekiq. You need to do that yourself.
[[Category:Technical]]

Latest revision as of 23:39, 9 June 2024

This page is for listing methods to automatically start diaspora* when your server starts.

Recommended: systemd

Open the following location in your favorite text editor

/etc/systemd/system/diaspora.service

and paste

[Unit]
Description=Diaspora social network
After=network.target

[Service]
User=diaspora
WorkingDirectory=/home/diaspora/diaspora
ExecStart=/bin/bash -lc "script/server"
Restart=always

[Install]
WantedBy=multi-user.target

into it.

When the file is saved, you can start your pod with

systemctl enable --now diaspora.service

The pod will automatically start again if you restart your server.

Alternatives

These are possible alternatives, use them only if you have a specific need.

systemd with individual services

This configuration is based on a forum post of Benjamin Neff [1]

cd /etc/systemd/system

Create the following files with you preferred text editor e.g. nano

diaspora.target

[Unit]
Description=Diaspora social network
Wants=postgresql.service
Wants=redis-server.service
After=redis-server.service
After=postgresql.service

[Install]
WantedBy=multi-user.target

diaspora-web.service

[Unit]
Description=Diaspora social network (puma)
PartOf=diaspora.target
StopWhenUnneeded=true

[Service]
User=diaspora
Environment=RAILS_ENV=production
WorkingDirectory=/home/diaspora/diaspora
PIDFile=/home/diaspora/diaspora/tmp/pids/web.pid
ExecStart=/bin/bash -lc "bin/bundle exec puma -C config/puma.rb"
ExecReload=/bin/bash -lc "bin/pumactl -F config/puma.rb restart"
ExecStop=/bin/bash -lc "bin/pumactl -F config/puma.rb stop"
Restart=always

[Install]
WantedBy=diaspora.target

diaspora-sidekiq.service

[Unit]
Description=Diaspora social network (sidekiq)
PartOf=diaspora.target
StopWhenUnneeded=true

[Service]
User=diaspora
Environment=RAILS_ENV=production
WorkingDirectory=/home/diaspora/diaspora
ExecStart=/bin/bash -lc "bin/bundle exec sidekiq"
Restart=always

[Install]
WantedBy=diaspora.target

Now you have to enable all of them

systemctl enable diaspora.target diaspora-sidekiq.service diaspora-web.service

Start all services with

systemctl restart diaspora.target

You can check if puma and sidekiq work with

systemctl status diaspora-web.service
systemctl status diaspora-sidekiq.service

Hint: The path /lib/systemd/system/ is for unit-files installed from the system, you can create user-created units in /etc/systemd/system/. Both locations work.

Other sources

daemontools

god